まいど
AIソリューション事業部の花島です。
最近、チャットボットの回答でどうやったら数字を含めた検索に対して良い回答ができるかを考えています。
ベクトル検索は数字が苦手なんです。Revealing the Numeracy Gap: An Empirical Investigation of Text Embedding Modelsの論文の4.2 Main Resultsに以下記載されています。
The retrieval accuracy, averaged over the 13 embedding models under evaluation, is merely 0.54, slightly above random guessing (0.5). We believe this is mainly because current embedding model training practices typically focus on capturing semantic similarities or differences at the sentence or paragraph level, with fine-grained but potentially important details, such as numbers as part of the text, often overlooked. This aligns with Liu et al. (2024), who find that embedding models generally fall short in distinguishing nuanced differences between texts.
Deeplで翻訳しました。
評価対象の13の埋め込みモデルで平均した検索精度はわずか0.54であり、ランダム推測(0.5)をわずかに上回る程度である。これは主に、現在の埋め込みモデル訓練手法が文や段落レベルでの意味的類似性・相違の捕捉に重点を置く一方で、テキスト内の数字など、細かくて重要な詳細がしばしば見落とされるためと考えられる。これはLiu et al. (2024)の知見と一致しており、同研究では埋め込みモデルがテキスト間の微妙な差異を区別する能力に概して不足があると指摘されている。
現在の埋め込みモデル訓練手法が文や段落レベルでの意味的類似性・相違の捕捉に重点を置く一方で、テキスト内の数字など、細かくて重要な詳細がしばしば見落とされる
それを言っちゃあおしめえよという感じです。。。。
ベクトルと一緒に保存されているメタで検索する??とも思いましたが、
やはり、そろそろMCPを導入し、RAGではなく、検索をMCPで強化したいと思いました。
そしたら、Vercelの以下の記事を見つけました。
The second wave of MCP: Building for LLMs, not developers
MCPといえばだいたいWEB検索しますとか天気のAPIを使いましたとかAPIの置き換えの例え話がメインです。
MCPはツールなので、小さく作るのが正解かなぁと思っていたんですが、Vercel曰く、そうじゃないと。
MCP works best when tools handle complete user intentions rather than exposing individual API operations.
MCPは、個々のAPI操作をツールと使用するのではなく、ツールがユーザーの意図全体を処理する場合に最も効果を発揮する。
理由としてはLLMがコンテキストや状態の管理があり、会話を踏まえ、適切な順番で適切なツールを使うことが難しいと。
納得。
1つのワークフローとして各処理を内包し、制御された状態でツールとして使う。
この記事がなかったら、Google Drive、DB検索を別々でMCPで作ることを考えていたと思います。
検索を一つのワークフローとしてその中で適切なものを選ぶよう実装した方が良い。
MCPの開発の粒度は意識したいと思いました。
LLMが何を使うかを判断するためのMCPのtoolのdescriptionも重要です。
一つのAPIの説明ではなく、ユーザーの課題、目的を解決するツールのdescription、切り分けが必要だと思いました。
AIの開発はプロンプトも重要であり、descriptionも重要。
最近、プロンプトもAIで作るという流れがあり、プロンプトもAIがやってくれるとなっていますが、ありきたりの指示だとありきたりのプロンプトができあがります。
ちゃんとユーザーの課題、目的を踏まえた上でプロンプト、指示をすることが大事。
課題をヒアリングし、この課題を解決する言語化、思考がますます重要になってきていると感じています。
そもそも、AI開発はプログラミング言語だけではなく、プロンプト等の自然言語の合わせ技なので、当たり前といえば当たり前なのですが。この2つを同時に使って開発を行うというのが難しい。プログラムを変えるか?プロンプトを変えるか?とそういえばこの判断は今までの開発ではないなぁと。。。
AIも使う人で差が出ているのは痛感し、ここも大きく違うのではと思いました。
引用記事
Revealing the Numeracy Gap: An Empirical Investigation of Text Embedding Models
The second wave of MCP: Building for LLMs, not developers