RAG・検索基盤

マルチクエリとは|言い換えは1つで効いて、3つに増やすと戻った

マルチクエリとは何をする手法か言い換えは増やすほど効くのかどの問いで効いてどの問いで裏目に出るのか

利用者の聞き方と、文書の書き方はふつう一致しません。1つの問いを言い換えて何度も検索し、結果を混ぜるのがマルチクエリです。

言い換えを0個から3個まで増やして測りました。1個足した時点がいちばん良く、3個に増やすと元の水準近くまで戻りました

この記事の要点

  • 言い換え1個で nDCG が0.542から0.845
  • 3個に増やすと0.661まで戻った
  • 良くなった問いと悪くなった問いが同時に出た
  • 検索の回数は5回から20回

言い換えは1つで効いて、3つに増やすと戻った

言い換えを0個から3個まで増やして測りました。1個の時点がいちばん良く、そこから増やすと下がります。

マルチクエリで言い換えを増やすと成績がどう動くのかを、実際に走らせて測りました。使ったのは社内規程を模した文書13件と、語が食い違う問い5件です。

言い換えは文書の中身を見ずに、聞き方だけを変えて用意しました。生成AIに作らせる部分を手で置いた形です。

javascript
const rrfN = (lists, k = 60) => {
  const score = new Map();
  for (const l of lists)
    l.forEach((x, r) => score.set(x.i, (score.get(x.i) || 0) + 1 / (k + r + 1)));
  return [...score.entries()].map(([i, s]) => ({ i, s })).sort((a, b) => b.s - a.s);
};

const qs = [q, ...VARIANTS[q].slice(0, nv)];
const ids = (nv === 0 ? bm25(q) : rrfN(qs.map((x) => bm25(x)))).map((x) => x.i);
text
やり方              適合率@3  再現率@3   nDCG@3
そのまま1つで検索              0.400     0.700    0.542
言い換えを1つ足す              0.533     0.900    0.845
言い換えを2つ足す              0.400     0.700    0.661
言い換えを3つ足す              0.400     0.700    0.661

問い                        そのまま  言い換えあり
ホテル代の限度額                       1 / 2         1 / 2
出張手当は日帰りだと                     2 / 2         2 / 2
仮払の申請                          2 / 2         1 / 2
消耗品の購入                         1 / 1         1 / 1
レポートの提出期限                      0 / 2         1 / 2

上の表を見てください。言い換えを1つ足した行がいちばん良いです。nDCGは0.542から0.845に上がりました。

増やすと戻る

ところが2つ目からは下がります。3つ足しても0.661で、1つのときの0.845には届きません。

適合率と再現率にいたっては、言い換えなしと同じ0.400と0.700に戻りました。増やした分の手間が結果に出ていません

良くなった問いと悪くなった問い

下の内訳が理由を示しています。報告書の問いは0件から1件に改善しました。ここは狙いどおりです。

一方で仮払の問いは2件から1件に落ちています。差し引きすると全体はほぼ動きません。

外した言い換えの結果も混ざるので、正解の順位が押し下げられます。言い換えを増やすほど、この押し下げが積み上がります。

1つ足した時点が頂点。2つ目からは下がる。

%84.500個1個2個3個nDCG@3問い5件・文書13件での実測。0.542などの値を百分率で示している。混ぜ方は順位の逆数を足す方式。
図1 ── 言い換えの数と nDCG@3
出典Docs by LangChain「Retrieval」2026-08-18 確認
This can involve rewriting unclear queries, generating multiple variations, or expanding queries with additional context.
原文Docs by LangChain「Retrieval」 この内容の有効期限2027-02-18

マルチクエリとは何をする手法なのか

1つの問いから複数の言い換えを作り、それぞれで検索して結果を混ぜます。聞き方と書き方の食い違いを埋めるための手立てです。

マルチクエリは、1つの問いを言い換えて何度も検索し、結果を混ぜる手法です。

なぜ言い換えるのか

利用者は「ホテル代」と聞きますが、規程には「宿泊費」と書いてあります。語が違うと、語で探す検索は見つけられません

LangChainの文書も、検索の前段として入力された問いを変えて検索の質を上げるという手立てを挙げています。マルチクエリはその一種です。

やっていること

  1. 言い換えを作る。生成AIに、聞き方の違う問いを何通りか出させる
  2. それぞれで検索する。言い換えの数だけ検索が走る
  3. 結果を混ぜる。順位の逆数を足し合わせて並べ直す
  4. 上位を渡す。混ぜた結果の上から必要な件数を取る

同じ文書には、不明瞭な問いを書き直したり、複数の言い換えを作ったり、文脈を足して広げたりすることが含まれると書かれています。3番目の広げる方はクエリ拡張の記事で扱っています。

混ぜ方が結果を決める

混ぜる部分は順位の逆数を足す方式を使いました。複数の検索で上位に来た文書ほど、混ぜたあとも上に来ます

この性質があるので、外した言い換えが増えると正解が沈みます。前の節で3個に増やしたときに下がったのは、この混ぜ方の性質がそのまま出たものです。

余談 先に言い換えなしで測る

測ってみて分かったのは、言い換えなしの成績を先に取っておかないと判断できないということでした。0.845という数字だけを見ても良し悪しは決まりません。0.542という出発点があって初めて、1個足す価値があると言えます。そして3個の0.661を見て、そこで止める判断ができます。

出典Docs by LangChain「Retrieval」2026-08-18 確認
Query enhancement: Modify the input question to improve retrieval quality.
原文Docs by LangChain「Retrieval」 この内容の有効期限2027-02-18

マルチクエリで増える費用と時間

検索の回数が言い換えの数だけ増えます。加えて言い換えを作る生成AIの呼び出しが1回入ります。

マルチクエリを入れると、問い1件あたりの処理が増えます。何が増えるのかを分けて見ます。

検索の回数

前の節の計測では、検索の回数が5回から20回になりました。言い換え3つで、問い5件ぶんです。

言い換えの数をnとすると、検索はn+1倍になります。検索基盤の負荷はそのまま比例します。

生成AIの呼び出し

言い換えを作る呼び出しが、検索の前に1回入ります。この1回は利用者を待たせる時間に直接乗ります

LangChainの文書は、段が決まった構成について生成AIの呼び出し回数の上限が分かるので、応答時間が読みやすいとしています。マルチクエリは呼び出しが1回増えますが、回数自体は決まったままです。

見合うかどうか

前の節の実測では、言い換え1個で検索が2倍、nDCGは0.542から0.845でした。ここは見合っています。

3個に増やすと検索は4倍ですが、nDCGは0.661です。4倍払って、1個のときより悪いという結果になりました。

検索回数は言い換えの数に比例して増える。成績は比例しない。

単位: 回言い換え3個20回言い換え2個15回言い換え1個10回言い換えなし5回問い5件での実測値。別に、言い換えを作る生成AIの呼び出しが問いごとに1回加わる。
図2 ── 言い換えの数と検索の実行回数
出典Docs by LangChain「Retrieval」2026-08-18 確認
Latency is generally more predictable in 2-Step RAG, as the maximum number of LLM calls is known
原文Docs by LangChain「Retrieval」 この内容の有効期限2027-02-18

よくある質問

言い換えは多いほうがよいですか
この計測では1個がいちばん良く、2個以降は下がりました。増やすほど良くなるという関係にはなっていません。
なぜ増やすと下がるのですか
外した言い換えの検索結果も混ざるためです。順位を足し合わせて混ぜる方式では、外れが増えるほど正解の順位が押し下げられます。
どの問いで効きますか
文書と語が食い違っている問いです。この計測では報告書に関する問いが0件から1件に改善しました。
費用はどれくらい増えますか
検索の回数が問い1件あたり4倍になります。言い換えを作る生成AIの呼び出しも別に必要です。

まとめ

  • マルチクエリは言い換えて何度も検索し、結果を混ぜる手法
  • 言い換え1個で nDCG が0.542から0.845に改善
  • 3個に増やすと0.661まで戻った
  • 検索回数は5回から20回に増える

今日から始められること

  1. 自分の問い5件で、言い換えなしの成績を先に測る
  2. 言い換えを1個だけ足して測り直す
  3. 問いごとの内訳を見て、悪くなった問いがないか確認する
  4. 改善分と検索回数の増加を並べて判断する

実務で組んだマルチクエリのワークフローには、値段が付きます

同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。

出品の仕組みを見る