HUOXIU

RAG の技術的なジレンマ: ベクトル埋め込みのみに頼ると信頼できないのはなぜですか?

編集者注:ベクトル埋め込み技術は、宣伝されているほど正確に情報を検索・理解するのに役立つのでしょうか?検索拡張(RAG)技術の信頼性は本当に私たちが想像するほど高いのでしょうか?

本稿では、RAG技術の最も重大な技術的弱点、すなわちベクトル埋め込みにおける意味的マッチングの信頼性を明らかにします。著者らは、単に批判するのではなく、実用的な解決策を提示しています。それは、ベクトル埋め込みを唯一の検索基準としてではなく、同義語検索などの従来の手法と組み合わせて検索結果の最適化ツールとして用いることです。

この記事は原著者の見解を表明したものであり、Baihai IDP はそれを翻訳して転載しただけです。

著者 | マイケル・ウッド

編纂者:岳陽

RAGシステムにおける中心的なタスクは、クエリコンテンツとの類似度が最も高い保存情報を見つけることです。しかし、ベクトル類似度検索ではこれを達成できないため、RAGは実用化において課題に直面しています。

01 間違ったツールの選択

RAGが実稼働環境で失敗するのは、情報の類似性を測定するためにベクトル埋め込みを使用していることに起因しますが、これは明らかに適切な選択ではありません。簡単な例でこれを説明しましょう。3つの単語があるとします。

  • 女王
  • ルーラー

「王」と「支配者」は同一人物を指す場合があり(したがって同義語とみなすことができます)、しかし「王」と「女王」は明らかに異なる人物を指しています。類似度をパーセンテージで測ると、「王/支配者」はより高い類似度スコアを持つべきであり、「王/女王」は0のスコアを持つべきです。

つまり、クエリが「王」に関する場合、「女王」に関する情報を含むテキスト断片は関連性がないはずですが、「統治者」に関する情報を含むテキスト断片は関連性がある可能性があります。しかし、ベクトル埋め込みは、「女王」は「統治者」よりも「王」との関連性が高いことを示唆しています。以下は、OpenAIのADA-002埋め込みモデルを使用した場合の「女王」と「統治者」と「王」のベクトル類似度スコアです。

  • 女王:92%
  • 支配者: 83%

つまり、「王」に関する情報を検索する場合、システムは「統治者」よりも「女王」に関するテキスト スニペットを優先して表示します。これは、後者の内容の方が関連性が高い可能性がある一方で、「女王」に関する情報はまったく無関係である可能性があるにもかかわらずです。

02 ベクトル埋め込みは、「誰が、何を、いつ、どこで、どのように」といった質問を扱うのには適していません。

ベクトル埋め込みの問題は、人物 (王など) に関連する単語だけでなく、他の物に関連する単語でも発生します。

猫の特徴に関するクエリを考えてみましょう。理論的には、犬について言及しているテキストの類似度はゼロである一方、猫について言及しているテキストの類似度は非常に高いはずです。しかし、ベクトル埋め込みはここでも誤った結果をもたらします。

  • 犬: 86%
  • ネコ科:85%

スコアの差はわずか 1% ですが、それでも犬について論じたテキストがネコ科動物について論じたテキストよりも優先されることになります。これは明らかに不合理です。犬について論じたテキストはクエリとまったく無関係ですが、ネコ科動物について論じたテキストは非常に関連性が高いからです。

絶対同義語とは、全く同じ意味を持つ単語のことです。しかし、絶対同義語を扱う場合でも、ベクトル埋め込みは同義語ではない単語を誤って優先してしまうことがあります。次の例は、この点をさらに示しています。

「ビッグアップル」はニューヨーク市の愛称です。例えば、スーザンはニュージャージー州在住で、地元のレストランや美術館など、様々な場所での体験をブログに綴っています。ある投稿で、スーザンは「ビッグアップル」で結婚式を挙げたと書いています。すると、ウェブサイトの訪問者がチャットボットに「スーザンはニューヨークに行ったことがありますか?」と尋ねると、疑問が湧きます。

残念ながら、スーザンの結婚について触れた投稿よりも先に、ニュージャージーに関するコンテンツが大量に表示されてしまいます。なぜでしょうか?ベクトル埋め込みの観点から見ると、「ニュージャージー」は「ビッグアップル」よりも「ニューヨーク」に意味的に近いからです。

  • ニューヨーク
  • ニュージャージー州: 90%
  • ビッグアップル:89%

「ニュージャージー」に関する投稿の数から判断すると、「ビッグアップル」への言及は、チャットボットが取得した数百の候補の中から見落とされる可能性があります。これは、人物(キングなど)や他の食べ物(猫など)を処理する場合と同様に、位置情報(ニューヨークなど)を処理する際にもベクトル埋め込みが失敗する可能性があることを示唆しています。

実際、ベクトル埋め込みでは、動作操作を扱う際にも問題が発生します。

  • ケーキを焼く
  • パイを焼く:93%
  • チョコレートケーキを作る:92%

たとえば、「ケーキを焼く」ことを説明するテキスト (スコア 93%) は、「チョコレート ケーキを作る」ことを説明するテキスト (スコア 92%) よりも優先される可能性があります。これは、前者がクエリとまったく無関係であるのに対し、後者が直接関連している場合でも当てはまります。

上記の例は、ベクトル類似度がコンテンツの類似性を測定する信頼できる方法ではないことを示しています。ベクトル類似度は、人物(例:王様)、物(例:猫)、場所(例:ニューヨーク)だけでなく、動作(例:ケーキを焼く)にも適していません。言い換えれば、ベクトル埋め込みは、人物、物、場所、動作の類似度の割合に関する質問に答える際には信頼性に欠けます。言い換えれば、ベクトル埋め込みには、人々が尋ねる可能性のあるほぼすべての種類の質問に対応する上で、固有の限界があるということです。

03 RAG愛好家が語る真実

上記の例はフィルタリングされているのか、あるいはパーセンテージスコアは本当に重要なのか疑問に思うかもしれません。RAGの誤解を招く説明と実際の動作を比較してみましょう。

  • RAGに関する誤解を招く説明は以下の通りです。「RAGは、数百万ものテキスト断片のベクトル埋め込みをベクトルデータベースに保存します。次に、ユーザークエリのベクトル埋め込みを取得し、コサイン類似度アルゴリズムを用いて最も一致する上位3つの断片を見つけ、これらの断片とユーザークエリを大規模言語モデル(LLM)に送信します。」これは「高速、正確、かつスケーラブル」なソリューションであると謳われています(40万人以上の学習実績を持つ著名なAI研究者による引用です。下記参照)。
  • しかし、最も高度な RAG は実際には次のように動作します。数千のドキュメントのベクトルをベクトル データベースに読み込み、約 50,000 文字のテキスト フラグメントを取得し、それをユーザー クエリとともに LLM に送信します。その結果、信頼性の低いチャットボット (F1 スコアが 50 未満など) が生成されます。

2024年9月3日に公開されたOP-RAG[1]を例に挙げましょう。

OP-RAG は Nvidia の 3 人の研究者による研究の成果であり、この研究は高く評価されている研究者による成果です。

上のグラフに示されている結果を見てみましょう。これらはEN.QAデータセットに基づく評価データです。データセットの最初の2つの質問は次のとおりです。

  • ウォーキング・デッドシーズン8の最終話はいつ放送されますか?
  • ギリシャ神話の春の女神は誰ですか?

これらの質問への回答は簡潔で、複雑な説明は必要ありません。さらに、このデータセットはWikipediaコーパス全体のわずか3.8%を占めるに過ぎません。

Nvidia の豊富なリソース、中程度のデータセットのサイズ、および比較的短い回答にもかかわらず、研究者は新しい RAG 方式を使用してユーザークエリとともに 48K のテキストフラグメントを送信することで、以前の最先端技術を破り、F1 スコア 47.25 を達成しました (送信されるコンテンツが少ない場合、F1 スコアは低くなります)。

Nvidiaの研究者たちは、25倍ものベクトルを保存して、最初の3つのマッチで常に適切な答えを見つけることができたはずだと気づかなかったのでしょうか?もちろん、そうではありません。実際、RAGは現実世界ではそのように動作しません。同様に、2024年11月1日にリリースされたNvidiaのLongRAG[2]はその好例です。

04 より大規模な LLM でも状況を救うことはできませんでした。

2024年10月にDatabricks[3]が発表した研究結果を見てみましょう。

80%を超える精度を達成するには、RAGはOpenAIのo1モデルに64K文字のテキストセグメントを送信する必要があります。GPT-4o、GPT-4 Turbo、Claude-3.5 Sonnetなどの他のモデルはこの基準を満たしていません。しかし、o1モデルの結果には多くの問題が存在します。

まず、持続的に高い割合で幻覚が発生します。

第二に、短いコンテンツを処理する場合でも、o1 の速度は耐え難いほど遅いです。64KB のテキストを処理するのは、到底許容できないほど遅いです。

さらに、o1 を稼働させるコストもかなりの出費になります。

さらに懸念されるのは、業界の噂によれば、今後発売される新モデルではパフォーマンスが大幅に向上しないということだ。Anthropic 社は新モデルの発売を無期限に延期した。

たとえ大規模なモデルで問題を解決できたとしても、速度とコストは増大します。つまり、実用化するには遅すぎて高価すぎるのです。企業は、信頼性の低い回答を一つ出すだけでも1分近くかかるチャットボットに、人間よりも高い料金を支払う意思があるでしょうか?

これがRAGの現状です。これは依存ベクトル埋め込みの結果です。

05 自分を責めないでください。問題は彼らにあります。

この記事を書いたのは、フォーラムで多くのデータサイエンティストやプログラマーが、自分が間違いを犯したと思い込み、自分自身を疑っていることに気づいたからです。たいていの場合、誰かが熱心に一連の解決策を提案します。例えば、並べ替え、クエリ文の書き換え、BM25アルゴリズムの使用、ナレッジグラフの構築などです。偶然に解決策が見つかることを期待してのことです。

問題は、何千人もの人々が根本的に間違ったことを学んでいることです。以下は、40万人を育成してきた企業の共同創業者が2024年10月に改訂した書籍からの抜粋です。

RAG は、LLM コンテキスト ウィンドウに一度に読み込むことができない大量のデータが含まれ、高速応答と低レイテンシが求められるシナリオに最適です。

RAG システムは現在、多くの一般的なフレームワークですでに使用されている標準アーキテクチャを備えているため、開発者がゼロから始める必要がなくなります。

データがベクトル埋め込みに変換されると、ベクトルデータベースは類似アイテムを迅速に見つけることができます。これは、類似アイテムがベクトル空間内に近接したベクトルとして存在するためです。これをベクトルストア(つまり、ベクトルを格納する場所)と呼びます。セマンティック検索はベクトルストアで実行され、ユーザーのクエリの埋め込みベクトルと格納データの埋め込みベクトルを比較することで、ユーザーのクエリの意味を理解します。これにより、ユーザーのクエリで使用されるキーワードや検索対象のデータの種類に関係なく、検索結果の関連性と精度が保証されます。

数学的原理によれば、ベクトル埋め込み技術は類似度のパーセンテージを比較することで情報を見つけるわけではない。ユーザーのクエリの真の意図を理解することはできない。最も単純なユーザークエリであっても、検索結果の関連性を保証することはできず、「ユーザーのクエリで使用されたキーワードや検索されたデータの種類に関わらず」、ましてや保証することはできない。

OP-RAGの研究論文が示すように、ベクトル検索で400個のデータブロックを取得しても、大規模言語モデル(LLM)は最も基本的なテストで関連情報を見つけられない確率が50%を超えます。それにもかかわらず、教科書ではデータサイエンティストに次のように説明しています。「実際には、ウェブサイト全体またはコースのコンテンツ全体をDeep Lake(ベクトルデータベース)にアップロードして、数千のドキュメントを検索することができます。…回答を生成するには、ユーザーの質問に最も一致する上位k個(例えば上位3個)のデータブロックを抽出し、それらをプロンプトに整理して、温度パラメータを0としてモデルに送信します。」

教科書では、ベクトル埋め込み技術は「何百万もの文書」を保存し、ユーザーのクエリに対する回答を最も関連性の高い上位3つのデータブロックから見つけることができるほど強力であると教えられることがよくありますが、数学的な原理と引用されている研究に基づくと、この主張は明らかに不正確です。

06 100%正確な回答への道

この問題を解決する鍵は、ベクトル埋め込み技術だけに頼らないことにあります。

しかし、これはベクトル埋め込みが無価値であることを意味するわけではありません。決してそうではありません!ベクトル埋め込みは自然言語処理(NLP)の分野で重要な役割を果たしています。

例えば、ベクトル埋め込みは多義語を扱うための強力なツールです。「glasses(グラス)」という単語を例に挙げると、これは日常的に使用するコップと顔にかける眼鏡の両方を指すことができます。

例えば、「ジュリア・ロバーツはどんなメガネをかけているの?」と聞かれたとします。ベクトル埋め込み技術により、メガネに関する情報がグラスに関する情報よりも上位に表示されるため、セマンティック処理能力が発揮されます。

ChatGPTの登場は、データサイエンスコミュニティに決して楽観的ではない変化を引き起こしました。同義語、下位語、上位語、ホロニムといった重要なNLPツールは軽視され、チャットボットクエリへの重点が移行しました。

大規模言語モデル(LLM)は、NLPの特定の側面を間違いなく簡素化します。しかし、現在、LLMとともに、貴重な技術も放棄されているように思われます。

LLM とベクトル埋め込み技術は NLP における重要な技術ですが、完全なソリューションではありません。

例えば、多くの企業は、チャットボットが必要な商品リストを表示できないと訪問者が離脱してしまうことに気づいています。この問題を解決するため、これらの企業は従来のキーワード検索を同義語ベースの検索に置き換えようとしています。

同義語ベースの検索は、確かにキーワード検索では見落とされがちな商品を発見できる可能性を秘めていますが、それには代償が伴います。言葉の多義性により、訪問者が本当に求めている情報が、関連性の低い情報に埋もれてしまうことがよくあります。例えば、グラスを探している訪問者は、長々とした眼鏡のリストを目にするかもしれません。

このような状況に直面しても、完全に拒否する必要はありません。ベクトル埋め込み技術は実際に役立つ可能性があります。ベクトル埋め込みに全面的に依存するのではなく、検索結果を最適化するツールとして活用すべきです。同義語ベースの検索を基盤として、ベクトル埋め込みは最も関連性の高い結果を上位に表示するために役立ちます。

読んでくれてありがとう!

このブログを楽しんで、新しいことを学んでいただければ幸いです。

著者について

マイケル・ウッド

AIエンジニア兼フルスタック開発者。

個人サイト: https://michaelcalvinwood.net。

終わり

今週のインタラクティブコンテンツ🍻

❓ベクトル埋め込みに完全に依存しない場合、RAGシステムは他にどのような情報検索最適化パスを採用できると思いますか?技術的なアイデアがあれば、ぜひ共有してください。

🔗記事内のリンク🔗

[1]https://arxiv.org/html/2409.01666v1

[2]https://arxiv.org/html/2410.18050v2

[3]https://www.databricks.com/blog/long-context-rag-capabilities-openai-o1-and-google-gemini

オリジナルリンク:

https://blog.cubed.run/the-insanity-of-relying-on-vector-embeddings-why-rag-fails-be73554490b2