初めに
「製品Aの開発責任者が所属する部署はどこ?」
社内検索で、こういう質問に答えたい場面があります。
ただ、製品資料には責任者の名前しかなく、所属部署は社員名簿にしか載っていないかもしれません。
このように、複数の情報をつなぐ必要がある質問を、多段の質問(multi-hop question)と呼びます。
1. multi-hopは、途中の情報を経由して答える
まず、架空の例で考えてみます。
| 情報源 | 書かれている内容 |
|---|---|
| 製品資料 | 製品Aの開発責任者は佐藤さん |
| 社員名簿 | 佐藤さんの所属は研究開発部 |
「製品Aの開発責任者は誰?」なら、製品資料だけで答えられます。
一方、「その責任者の所属部署は?」には、次の2段階が必要です。
- 製品Aの開発責任者を調べる → 佐藤さん
- 佐藤さんの所属部署を調べる → 研究開発部
佐藤さんという情報が、製品と部署をつなぐ橋になります。
multi-hop質問応答では、このように複数の根拠を組み合わせて答えを導きます。必ず別々の文書に分かれているとは限らず、同じ文章の離れた箇所をつなぐ場合もあります。
2. RAGでは、最初の検索だけで情報がそろわないことがある
RAGは、検索した情報をLLMに渡して回答を生成する仕組みです。
ただ、元の質問で一度検索するだけでは、必要な根拠がそろわない場合があります。
今回の例では、最初は責任者が誰か分かりません。そのため、「製品A」の資料は見つかっても、佐藤さんの所属情報まで取得できるとは限りません。
そこで、途中で得た情報を、次の検索に使う方法が考えられます。
質問:製品Aの開発責任者が所属する部署は?
検索1:製品Aの開発責任者
取得:佐藤さん
検索2:佐藤さんの所属部署
取得:研究開発部
回答:製品Aの開発責任者の所属部署は研究開発部です。
段階的に根拠を探す手法は、multi-hop質問応答の研究でも扱われています。
なお、必要な根拠を最初にまとめて取得できれば、検索を繰り返さずに答えることもできます。multi-hopの「段数」と検索回数は、必ずしも同じではありません。
3. 情報をつなぐ質問だけでなく、比較する質問もある
multi-hopには、複数の対象を調べて比較する質問もあります。
たとえば、「製品Aと製品Bでは、どちらが先に発売された?」です。
製品Aの発売日と製品Bの発売日をそれぞれ取得し、日付を比較して答えます。この場合、2つの情報は並行して調べられます。
代表的なデータセットのHotpotQAにも、こうした比較型の質問が含まれています。
4. 実装では、途中の根拠も確認する
段階を増やすと、途中の間違いが最終回答まで伝わりやすくなります。
先ほどの例なら、別の佐藤さんの所属を取得してしまう可能性があります。
実装では、次の点を押さえると扱いやすいです。
- 名前だけでなく、社員IDなどで同じ対象か確認する
- 各段階で、取得した情報と出典を残す
- 根拠が足りない場合は、推測で続きを埋めない
- 検索回数に上限を設け、処理時間を管理する
multi-hopを扱うときは、最終回答だけでなく、答えに必要な情報を正しくつなげられたかも確認すると、問題の原因を見つけやすくなります。