高度なRAG手法は、常に優れているわけではない。特定の条件下で、より優れているだけだ。
高度なRAG手法は、無料のアップグレードではありません。トレードオフを伴うツールです。
Anthropicのドキュメントを使用して、RAGパイプライン上で5つの検索手法をテストしました。どの手法が、その複雑さを正当化できるのか(本当にその複雑さに見合う価値があるのか)を確認したかったのです。
以下がその結果です:
• Dense Retrieval: ベースライン。うまく機能するが、正確な用語を見逃すことがある。 • Hybrid Search: Dense検索とキーワード検索を併用する。Dense検索が見逃す正確な用語を見つけられるが、結果の重み付けを正しく行わないと、シグナルが消失してしまう。 • Reranking: クロスエンコーダーを使用して候補のスコアを付ける。正しいチャンクが検索結果の下位に埋もれている場合に有効である。 • HyDE: 仮説的な回答を用いてデータを検索する。これは危険だ。カジュアルなクエリには役立つが、直接的なクエリに対してはすべてを台無しにする。あるテストでは、Recall(再現率)が0.80から0.17まで低下した。 • Contextual Retrieval: チャンクに要約を追加する。短いチャンクには有効だが、LLMの利用料金が増大する。
最大の教訓はHyDEについてです。これは「設定したら終わり」というツールではありません。ユーザーのクエリとドキュメントが「異なる言語」を話している場合にのみ使用すべきです。いつ使用するかを判断するためのルーターが必要です。
また、測定についても教訓を得ました。
評価にRagasを使ってみましたが、遅すぎました。失敗した呼び出しの再試行に何時間も費やしてしまったのです。そこで、独自の非同期ハーネス(async harness)を構築することにしました。その結果、評価時間は11時間から221秒へと短縮されました。
AIツールをブラックボックスとして扱わないでください。ツールが遅かったり失敗したりする場合は、その背後にある数学的ロジックを確認してください。必要であれば、独自のソリューションを構築しましょう。
仕事とは、単に新しい機能を追加することではありません。どの機能がシステムに導入される価値があるのかを測定することこそが、重要な仕事なのです。
各手法の使用タイミングのまとめ:
- Hybrid: クエリが正確なパラメータに依存している場合に使用する。
- HyDE: クエリの表現が不適切な場合に使用する。
- Reranking: 検索結果が広範すぎて不正確な場合に使用する。
- Contextual: チャンクにコンテキストが不足している場合に使用する。
「state of the art(最先端)」を追いかけるのはやめましょう。自分の結果を測定することから始めてください。
Source: https://dev.to/yogesh23012001/advanced-rag-techniques-arent-better-theyre-better-sometimes-4m2o
Optional learning community: https://t.me/GyaanSetuAi
