エージェント型RAGは単一の検索をループに置き換える。モデルが検索し、読み、さらに必要だと判断し、再び検索し、満足するまでそれを繰り返す。各ホップは完全なモデルの往復に検索を加えたものであり、各ホップは前のホップに依存するため直列に実行される。ほとんどの質問において、これはわずかに良い答えを、数倍のレイテンシと引き換えに買っているにすぎず、1つの適切に構築されたクエリであれば同じコンテキストを1回で返せたはずだ。マルチホップ検索は、狭いクラスの質問には本物の道具であり、それ以外の場所ではひっそりと応答時間を3倍にするデフォルト設定になる。

捉え直し方はこうだ。エージェント型検索は実行時に質問を分解する能力とレイテンシを交換している。その交換が割に合うのは、質問が実際に分解を必要とする場合だけだ。ほとんどの質問はそうではなく、1回のクエリで答えられる質問にループの税金を払うことが、RAGシステムが得るものなく遅くなる最もよくある原因だ。

レイテンシはどこから来るのか

単一パスのRAGは、1回の埋め込み、1回のベクトル検索、1回のモデル呼び出しだ。エージェント型RAGはループであり、その構造上直列になる。モデルは最初のクエリの結果を読むまで2番目のクエリを発行できない。したがって実時間のコストは1回の検索と1回の生成の合計ではなく、各ホップの検索、各ホップの次の行動を決めるモデル呼び出し、そして最終生成のすべての合計になる。3ホップならおおよそ3倍の往復であり、各モデル呼び出しは蓄積されたコンテキストも読み直すため、ホップごとのコストは横ばいではなく増加していく傾向がある。

これはユーザーが求めた隠れた作業ではない。ユーザー側から見れば、それは2秒ではなく8秒かかるようになった1つの質問にすぎない。もしその8秒が実質的に良い答えを買っていないなら、レイテンシ予算を何も得ずに使ったことになる。

1回の良いクエリは、たいてい賢いループに勝る

エージェント型RAGのかなりの部分は、弱い最初のクエリを補うために存在している。最初の検索が間違ったチャンクを引いてくると、ループの仕事は「コンテキストが悪いことに気づき、より良いコンテキストを取りに行く」になり、これは高くつくエラー復旧だ。クエリを直せば、ループにはやることが何も残らないことが多い。

マルチホップに手を伸ばす前に、単一パスに労力を注ぐこと。

  • クエリを書き換える。散らかったユーザーの質問をきれいな検索クエリに変える安価なモデル呼び出し1回は、2番目のホップよりも検索を改善し、そのレイテンシはごくわずかだ。
  • より多く検索してから、リランクする。順番に狭い検索を何度も行う代わりに、1回の検索で広めの候補セットを取得し、それをリランクで絞り込む。
  • チャンクを直す。検索が悪くなる原因の大半はチャンキングの問題だ。より良いチャンクは最初のクエリを的中させ、ループを不要にする。

これらはすべて単一パスの改善だ。直列の往復を追加することなく答えの品質を上げるという点で、ループがやっていることの正反対だ。

エージェント型検索が実際に勝つ場面

ループがそのレイテンシに見合うのは、2番目のクエリが1番目の答えに依存しているために、本当に1回のクエリでは答えられない質問だ。最も明確なケースは、連鎖させなければならない事実にまたがるマルチホップ推論だ。「新しい規制の影響を受ける地域にいる我が社の取引先のうち、今四半期に更新期限を迎えるのはどれか」は、実質的に3回のルックアップであり、それぞれが次を絞り込み、単一の検索では結合された答えを保持できない。

探すべきパターンは、検索間の本物の依存関係だ。1番目の結果を知るまで2番目のクエリを書けない、という状態だ。この依存関係が本物であれば、ループは必要な仕事をしており、そのレイテンシは他の方法では得られない答えの対価だ。それが存在しない場合、そしてたいていは存在しないのだが、ループは単一のクエリで片づいたはずの質問のための凝った機械仕掛けにすぎない。

システム単位ではなく質問単位で判断する

失敗は、すべてのリクエストに対してエージェント型検索をデフォルトにすることだ。より良い設計はルーティングする。安価な質問は単一パスをたどり、分解のシグナルを示す質問、複数のエンティティ、連鎖した条件、明示的な「〜を比較して」だけがループへとエスカレーションする。検索の前段に置く小さな分類器、あるいはヒューリスティックでもその判断はできる。目標は、マルチホップの税金を、それに見合う質問にだけ正確に払い、そうでない質問には決して払わないことだ。

結論

エージェント型RAGは間違っているのではなく、過剰適用されているのだ。検索をモデル往復の直列ループに変えてしまい、1回の良いクエリで答えられる大多数の質問にとって、そのループは純粋なレイテンシでしかない。まず単一パスに労力を注ぐこと。クエリを書き換え、広く検索してリランクし、チャンクを直す。マルチホップは検索間に本物の依存関係がある質問のために取っておき、システム全体をそれにデフォルトさせるのではなく質問ごとにルーティングすること。最速のRAGシステムとは、質問が本当に2度目の視点を必要とするときにだけループするシステムだ。

次に読む

大規模な低レイテンシ検索を支えるインフラについては、クラウドのフィールドノートがercan.cloudにあり、ハブはercanermis.comにある。