問いによっては検索が要りません。逆に、1回引いただけでは足りない問いもあります。
引くかどうかを決めさせて測りました。7件すべてで必要な文書がそろい、検索は7回でした。いつも2回引く方式も7件そろいますが、検索は14回かかります。
3通りのやり方を同じ問いで測りました。結果は同じでも、検索の回数が倍違います。
エージェンティックRAGで回数を変えると何が起きるのかを、実際に走らせて測りました。用意したのは性質の違う問い7件です。
内訳は検索が要らない2件・1回で足りる3件・2回要る2件です。2回要る問いは、1回目で分かったことを使って2回目を引く形にしました。
for (const t of TASKS) {
if (t.need.length === 0) { ok++; continue; } // 引かない
let got = top(t.q, 3); search++;
if (t.second) { got = [...got, ...top(t.second, 3)]; search++; }
if (covered(got, t.need)) ok++;
}
やり方 必要な文書をそろえた 検索の回数 無駄な検索 いつも1回引く 5 / 7 7回 2回 いつも2回引く 7 / 7 14回 4回 引くか決めてから引く 7 / 7 7回 0回 問いの種類 件数 そろえた 検索が要らない 2件 2 / 2 1回で足りる 3件 3 / 3 2回要る 2件 0 / 2
上の表を見てください。決めさせた場合と、いつも2回引く場合はどちらも7/7です。違うのは検索の回数で、7回と14回に分かれました。
下の内訳が、いつも1回引く場合の結果です。2回要る問いは0/2でした。
1回目で書類の名前が分かっても、その書類の期限は別の文書に書いてあります。1回では、どちらか片方しか取れません。
右端の列が無駄な検索です。いつも1回引く方式で2回、いつも2回引く方式で4回出ました。
挨拶や計算に検索は要りません。それでも固定の構成では引きます。引かないという選択肢がないからです。
検索が要らない問いは、引いても「そろえた」に数えています。必要な文書が0件なので、常に条件を満たすためです。ここで生じている損は件数ではなく、右端の無駄な検索の列に出ます。
結果は同じ7/7。違うのは検索の回数。
If not, the system may refine the query and retrieve again.原文Docs by LangChain「Retrieval」 この内容の有効期限2027-02-18
検索を決まった位置に固定せず、AIに引くかどうかと引き方を判断させます。問いによって回数が変わります。
エージェンティックRAGは、検索するかどうか、何をどう引くかをAIに決めさせる構成です。
普通の構成では、検索は決まった位置に1回入ります。問いが何であっても同じ回数です。
LangChainの文書は、この形について段階を追って考え、判断する主体が中にいるものだと説明しています。回数は前もって決まりません。
同じ文書も、取ってきた文書について足りていなければ、問いを練り直して再度取得することがあるとしています。4番目がこれにあたります。
この構成が効くのは、問いの性質がばらついている場合です。前の節の計測でも、2回要る問いがなければ1回固定で足ります。
自分の問いを仕分けてみて、2回以上要る問いがほとんどないなら、この構成は入れないほうが簡単です。判断の役を1つ減らせます。
判断は正解を知った状態で行っています。判断が完璧な場合の上限値だと考えてください。実際には生成AIが判断するので、ここまでは出ません。判断が外れたときにどうなるかは、この記事の失敗の節で数えています。採点役を挟む近い構成はCorrective RAGの記事で扱っています。
待ち時間の上限を言えなくなることです。回数が問いごとに変わるので、最悪の場合を前もって示せません。
エージェンティックRAGを入れると、問いごとに処理の量が変わります。ここから複数の困りごとが出ます。
固定の構成なら、検索は必ず1回です。最悪でもこれだけ、と言い切れます。
決めさせる構成では、うまくいかない問いで引き直しが続きます。上限を決めておかないと、待ち時間が伸び続けます。
判断の正しさ 要らないのに引く 2回要るのに1回で止める
100% 0.0件 0.0件
90% 2.9件 2.9件
80% 5.7件 5.7件
外れ方は2通りあります。要らないのに引く場合は、費用と待ち時間だけを損します。答えは出ます。
もう一方は重い損です。2回要る問いを1回で止めると、答えが出ません。前の節の実測でも0/2でした。
全部を任せる必要はありません。LangChainの文書も、中間の構成について固定の流れより柔軟でありながら、実行に対する制御をいくらか保つとしています。
たとえば引き直しは1回まで、と決めておくやり方があります。判断は使いつつ、上限は固定されます。
任せるほど柔軟になり、読めなくなる。
These systems offer more flexibility than fixed pipelines while maintaining some control over execution.原文Docs by LangChain「Retrieval」 この内容の有効期限2027-02-18
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る