フレクトのクラウドblog re:newal

http://blog.flect.co.jp/cloud/からさらに引っ越しています

マルチモーダル LLM と OCR + LLM を比較してみる

こんにちは。エンジニアの山下です。今回は OCR について書こうと思います。

OCR は画像中の文字を文字データに変換するシステムの総称で、DX の前段階にあたるペーパーレスの推進などの文脈でしばしば見かけます。昨今の AI ブームの恩恵を受けて OCR の精度は非常に高くなっており、実際、以下のように粗悪な質の画像であってもそれなりの精度で機能します。

しかし、DX の前段階という文脈では、単に OCR の読み取り精度が高いだけでは十分とは言えません。というのは、多くの場合、OCR の出力は構造化されたデータではなく、読み取った文字列を列挙しただけのデータ片になりがちだからです。

以下に実際の OCR の出力から一部を抜粋したものを示します。

金額
NO.
数量
単価
10,000
1
1,000
2
0000002 · 用紙2
15
500

この問題は特に表データなどを含む画像において顕著で、これではデータに十分な質を要求する DX の第一歩としては不十分と言わざるを得ないでしょう。

この問題への対処方法の1つに OCR の出力を LLM を使って整理するという方法があります。非構造化データの構造化は LLM が得意とする仕事の1つなので、それなりの精度で紙データを適切な電子データに変換できそうという期待があります。

一方で、LLM を使うのであれば、マルチモーダル LLM を使って画像を直接 LLM に入力して電子データに変換するという方法も考えられます。OCR の出力を受け取るパイプラインを構築せずに済むので、開発工数上はこちらの方が有利そうですね。

こうして LLM を使った紙データの電子データ化の方法が2つ挙がったわけですが、2つ並ぶとどちらの方法がよいのかが気になるところです。というわけで、今回はこの2つの方法を比較検証してみます。

続きを読む

Einstein Copilot で商談案件のリスクを評価する

こんにちは。エンジニアの山下です。

今回は Einstein Copilot のユースケースの一例として、Einstein Copilot を使って商談案件のリスクの評価を行う方法について書きたいと思います。

商談案件の状況の追跡は Salesforce をはじめとする CRM プラットフォームが取り組む大きな課題の1つです。商談案件を管理する立場にある人、特に複数の案件を管理する立場にある人には、案件の状況を手早く確認し、かつ介入が必要かどうかを正確に判断できるような手段が欲しいという強いニーズがあります。

実はこのニーズには Eisntein Copilot がピタリと嵌まります。抽象的な状況の要約は LLM が最も得意とするタスクの1つであり、また Salesforce のサービス故に要約の元データとなる各種レコードへのアクセスも容易だからです。

Einstein Copilot を使うと、案件の状況確認が以下のように実施できます。*1

商談案件の詳細を追跡することなく、必要な情報のみを手軽に抽出できるという点がミソです。観点を指定して要約が行える LLM の強みがでていますね。

というわけで、早速実装方法の話に入っていこうと思います。

*1:画像に登場する企業名等は LLM で生成した架空のものになります。

続きを読む

Einstein Copilot と Data Cloud Vector Database を連携する

こんにちは。エンジニアの山下です。

今回は Einstein Copilot と Data Cloud Vector Database を連携する方法について書こうと思います。

Einstein Copilot は Salesforce が提供する LLM によるアシスタントサービスで、チャットベースで LLM に指示を行うことで、自然言語によるレコード検索やメールの文面の下書きなどを行なうことができます。地味に手間のかかる作業を LLM に一任できるため、Salesforce を普段使いする人に重宝されそうなサービスです。

Einstein Copilot の微妙な点は、デフォルトで搭載されている検索機能が CRM レコードのみを対象としており、Data Cloud のデータを検索するためには利用することができないことです。

Data Cloud に取り込んだ外部データを Einstein Copilot で扱えるようになれば、任意のデータを活用した、より柔軟な CRM 活動が行えるようになりそうな気がします。実際、そのシナジーについては Salesforce公式の記事 でも「最も強力な例の1つ」として紹介されているほどで、外部に活用可能なデータがある場合、連携しない理由はほとんどないと言ってもよいのではないでしょうか。

というわけで、何とか連携したいよねという話になるのですが、残念なことに、これらのサービスの連携方法についての公式情報はほとんどなく、あったとしても概ね「頑張って APEX で連携してください」という内容に留まっています。

しかし、せっかく可能性がありそうなものを放っておくのはもったいないので、本記事で具体的な連携手順を紹介し、このギャップを埋めたいと思います。

続きを読む

Salesforce Data Cloud の Amazon SageMaker モデルの呼び出し機能を検証する

こんにちは。エンジニアの山下です。

今回は Salesforce Data Cloud と Amazon SageMaker の連携機能について書きたいと思います。

やること

今回は Data Cloud と SageMaker の連携機能を検証するわけですが、実はこの検証に SageMaker は使用しません。本記事のタイトルにも SageMaker のモデルを呼び出すとは一言も書いていなかったりします。

要するにこういうことです。今回は SageMaker のエンドポイントを装ったダミーのサービスを立ち上げて Data Cloud に接続します。そしてダミーのサービスから適当な結果を返して Data Cloud がちゃんとそれを処理してくれることを確認します。つまり SageMaker のエンドポイントをスタブ化するということですね。

このような検証方法を取るのにはそれなりの理由があるのですが、その理由については後ほど説明したいと思います。

続きを読む

組合せ最適化問題の解法に強化学習を応用する

こんにちは. 研究開発室の牧野*1です. Operations Research (OR)のビジネス活用について研究を行なっています. 本稿ではORの文脈で現れる組合せ最適化問題 (Combinatorial Optimization, CO)の解法として強化学習(Reinforcement Learning, RL)を応用する研究分野(Neural Combinatorial Optimization, NCO)について紹介します. また, この分野の研究をまとめたライブラリであるRL4COを使用して簡単なデモを行います. 本稿の構成は次の通りです.

*1:2022年度新卒入社. 学生時代は理論物理, 特に物性理論と呼ばれる分野で研究をしていました.

続きを読む

Einstein Discovery で行ったマッチング処理の結果を Einstein Next Best Action のレコメンデーションとして表示する

こんにちは。エンジニアの山下です。

前回の記事 で Einstein Discovery と Einstein Next Best Action の連携方法の一例として、Einstein Discovery の推論結果を元に Einstein Next Best Action のレコメンデーションの出し分けを行う方法を紹介しました。

今回はもう少し進んだ例として、Einstein Discovery で行ったマッチング処理の結果を Einstein Next Best Action のレコメンデーションとして表示する方法について書こうと思います。

続きを読む

Einstein Discovery と Einstein Next Best Action を連携する

こんにちは。エンジニアの山下です。

今回は Salesforce の Einstein Discovery と Einstein Next Best Action を連携させ、Lightning Page 上で統計手法ベースのレコメンデーションの出し分けを行う方法について書こうと思います。

続きを読む