AI News HubLIVE
サイト内リライト2 分で読了

小型LLMにRAGコンテキストの68%を破棄させる方法

Kapa.aiはRAGパイプラインの検索器と生成器の間に小型言語モデルを追加し、取得したチャンクを5段階で評価して約68%のコンテキストを破棄しつつ96%の再現率を維持し、クエリコストを約34%削減しました。

ソースHacker News AI著者: emil_sorensen

Kapa.aiは、技術ドキュメント、APIリファレンス、PDF、フォーラム、サポートスレッドなど大規模な製品知識ベースに対して複雑な質問に回答するAIアシスタントを構築しています。これらの膨大な知識ベースを処理するためにRetrieval-Augmented Generation(RAG)を採用していますが、検索器が高い再現率を追求するあまり、生成に不要なチャンクが多く含まれ、それらがクエリコストの大部分を占めていることに気づきました。

RAGパイプラインでは、検索器が数百万のチャンクから候補を絞り込み、リランカーの後、通常は上位15個程度のチャンクが生成器(最大の言語モデル)に送られます。しかし、これらのチャンクの大部分はノイズであり、生成器は不要なチャンクに対してもコストを支払っています。Kapa.aiの分析によれば、検索されたチャンクはクエリコストの約3分の2を占め、チャンクを1つ減らすごとにコストが約4%削減されます。そこで、回答品質を損なわずに不要なチャンクを可能な限り破棄したいと考えました。

最初に、リランキング後に固定しきい値で切り捨てる方法を試みましたが、リランカーのスコアはクエリ間で校正されておらず、順序付けに過ぎません。さらに重要なのは、関連性は単一チャンクの属性ではなく、チャンク集合の属性であることです。例えば、あるチャンクは単独では無関係に見えても、別のチャンクと組み合わさることで完全な回答を構成することがあります。ポイントワイズ評価では、このような集合レベルの関連性を判断できません。

そこでKapa.aiは、検索器と生成器の間にプルーナー(剪定器)ステップを導入しました。小型で安価な言語モデルが、質問と全ての検索チャンクを同時に読み込み、各チャンクを5段階で評価します:5(必須)、4(貢献)、3(補助)、2(関連はあるが不要)、1(無関係)。しきい値以上のチャンクのみが保持されます。この方法は、レベル定義が固定されているためクエリ間で校正が可能であり、かつモデルが全チャンクを同時に評価するため、集合の関連性を判断できます。

実験の結果、プルーナーは単純な切り捨て方法を大幅に上回りました。再現率96%を維持したまま、約68%のチャンクを破棄し、クエリあたりのコストを正味約34%削減しました(プルーナー自身のコストを差し引いた値)。プルーナーの実行時間は約0.7秒で、レイテンシがわずかに増加しますが、生成器の入力トークンが減少するため応答がわずかに早まるものの、完全に相殺されるわけではありません。

Kapa.aiはこの機能をProduct Agent SDKの知識ベース検索でデフォルト有効化し、検索APIやMCPサーバーではオプションとして提供しています。エージェントシナリオでは、エージェントがすでに複数回のモデル呼び出しを行っているため、この軽量なプルーナー呼び出しによる追加の負荷はごくわずかです。