
こんにちは。AIエンジニアリンググループの矢澤です。
先日、マーケティング関連の展示会に参加しました。 特に専門家の方の講演が興味深く、ユーザー視点での商品・サービス開発を目指す上で参考になるお話でした。 マーケティングの知識やセンスは奥が深く、一朝一夕に身に付けられるものではないと思いますが、エンジニアのような技術職であってもある程度知っておくべきだと再認識することができました。
近年ではLLMやRAGの技術が発展し、専用のチャットボットを比較的簡単に作れるようになりました。 しかし、課題として想定質問による事前テストやパラメーター調整などが挙げられます。 特に、対象ドメインや参照するデータが専門的な内容の場合、ユーザーからどのような質問が来るか自体が分からず、事前の対策が難しいことが考えられます。 このような問題への対応策として先日、カリフォルニア大学から新たなQA生成手法ExpertGenQAが発表されました。1 ExpertGenQAはRAGのソースドキュメントに対して高品質なQAデータを生成する手法ですが、(私が探した限りでは)公式実装が見当たらず、独自のデータで試すことができませんでした。 そこで今回は、論文を参考にしてExpertGenQAによるQA生成スクリプトを実装し、自社のニュースデータを基に想定質問を作成してみました。
ExpertGenQAについて
概要
以下に、論文のアブストラクトの内容を示します。
- 課題:専門的な技術分野で高品質な質問と回答のペアを生成することが困難
- 既存のアプローチでは、トレードオフ(専門家の例を活用すること vs トピックの多様性を達成すること)に直面
- ExpertGenQA:包括的なドメイン固有のQAペアを生成するために、構造化されたトピック・スタイルの分類とFew-Shot学習を組み合わせたプロトコル
- 実験:米国連邦鉄道局の文書をテストデータとして使用
- 94.4% のトピック カバレッジを維持しながら、ベースラインの 2 倍の効率を達成(トピックの多様性)
- 現在の LLM ベースの判定・報酬モデルは、コンテンツの品質よりも表面的なライティング スタイルに強い偏りを示していることが分かった
- ブルームの分類法2を使用した分析では、専門家が作成した質問の認知的複雑性の分布をより適切に保持することが明らかになった(専門家の例の活用)
- 生成されたクエリを検索モデルの学習に使用すると、ベースラインよりも精度が向上(top-1 Accuracy +13.02%)
全体像
全体のイメージ図はこちらで、左側が提案手法(ExpertGenQA)の流れ、右側が実験内容とその結果になります。

今回は実験の詳細は割愛し、左側の手法について簡単に説明したいと思います。 初めに、対象文書から(専門家によって)FAQを手動で抽出し、更にそれらのスタイル(カテゴリ)を分類します。 著者らは3つの主要なスタイルを発見し、これらは様々なトピックで一貫して出現することから、技術的なルールの分野における基本的な質問タイプであることが示唆されました。3
- ルール適用:特定のルールをどのように解釈すべきかを扱う
- シナリオベース:ルールガイダンスを必要とする特定の状況を提示する
- 用語の明確化:専門用語の定義と説明に重点を置く
同時に、元の文書からLLMによって複数のトピック(スタイルとは異なるもの)を抽出しておき、QA生成時に使用できるようにします。 上記のスタイルも考慮されるため、最終的には各ドキュメント・スタイル・トピックの組み合わせごとに複数のQAが生成されることになります。
QA生成の手順
「Generator LLM」の部分の具体的な処理手順は、フレームワークとして記載されています。

- 生成QAセットGを初期化
- 文書セットDの各文書dごとに、以下の処理を繰り返す
- 対象文書dから、LLMでトピックセットTを抽出(プロンプトはF.1.1に記載)
- スタイルセットSの各スタイルsごとに、以下の処理をK回ずつ繰り返す
- FAQから、対象スタイルsのQAセットF(n個)をサンプリング
- トピックセットTの各トピックtごとに、以下の処理を繰り返す
- 対象文書dとQAセットFを基に、トピックtのQA qを生成(プロンプトはF.1.2に記載)
- 生成QAセットGに、対象ドキュメントと生成QAのペア(d, q)が存在しなければ追加
検索による評価
また、本論文では上記の手法で生成した質問データを使用して検索モデルを追加学習し、精度が向上するかテストしています。 モデルについては、SoTAの NVEmbed-70B-V2 をゼロショットのベースラインとして使用し、 軽量な Alibaba-NLP/gte-modernbert-base を追加学習しています。 参考までに、追加学習時に使用している損失「InfoNCE」についても簡単に説明したいと思います。

ここで、s(q, d) はクエリ埋め込みqと文書埋め込みdの類似度を表し、d+ はクエリqに関連する文書、d- はクエリqと関係のない文書を表しています。 また、τは類似度の確率分布を制御するための温度パラメーターで、値が大きいほど分布が平坦になります。 上記の式を損失として使用することで、クエリに関係する文書の埋め込みベクトルが関係しない文書よりも相対的に近くなるように、モデルが学習されることになります。
実装
ExpertGenQAの論文を基に、QA自動生成用のスクリプトをPythonで実装しました。4 記事の分量が多くなってしまったため、実装の詳細は別の記事で説明したいと思います。
独自データでのテスト
上記のスクリプトを使って、独自のデータでQAを生成し、結果がどうなるか確認してみました。 今回使用したデータは、弊社HPのニュースリリースの文章です。
FAQの作成
初めに、ニュースリリースの文章を基にFew-Shotとして与えるためのFAQを手動で作成しました。
作成したFAQの例は以下の通りです。5
ルール適用
- 「ユーカーパック アプリ」を利用した人がVポイントの手続きを行うと、初回の買取相場の表示で何ポイントもらえますか?→「ユーカーパック アプリ」をご利用のお客さまは、車両情報の登録を行い算出された買取相場の確認後にVポイント利用手続きを行うと、初回の買取相場の表示で10ポイントが貯まります。
- 上毛新聞電子版のスマート・プレミアプランに契約してVポイント利用手続きをし、1カ月間アプリにログインした場合に貯まるポイント数を教えて。→上毛新聞電子版サービスの「スマートプラン」または「プレミアプラン」にご契約されたお客さまは、Vポイント利用手続きをすると、アプリのログインで1日につきVポイント10ポイントが貯まるようになります。1カ月間、毎日アプリにログインすると最大で300ポイント貯まります。
- ジハンピ対応の自販機は2025年にどのぐらい展開する予定?また、それによってVポイントの国内利用可能拠点数はどうなる?→「ジハンピ」対応の自販機は2025年中に約15万台展開され、Vポイントとしては国内の利用可能拠点数が約2倍に拡大する見込みです。
シナリオベース
- 「ユーカーパック アプリ」を利用した人がVポイントの手続きを行い、買取相場の表示を2回行うと、合計で何ポイントもらえますか?→初回の買取相場の表示で10ポイント、二回目以降は3ポイントのVポイントが貯まるので、合計で13ポイント貯まります。
- 上毛新聞電子版のスマート・プレミアプランに契約してVポイント利用手続きをし、一ヶ月に20回ログインしました。何ポイント貯まるか教えてください。→アプリのログインで1日につきVポイント10ポイントが貯まるので、一ヶ月に20回ログインした場合は200ポイント貯まります。
- 「ジハンピ」を利用してVポイントを連携し、ジハンピ専用端末にタッチするとVポイントはどのぐらい貯まる?→「ジハンピ」をご利用のお客さまは、「ジハンピ」アプリの「ポイント連携」からVポイントを連携の上、対象のジハンピ専用端末にタッチすると、ショッピングポイントとしてVポイントが1会計あたり1ポイント貯まります。
用語の明確化
- 「ユーカーパック アプリ」とは何ですか?→「ユーカーパック アプリ」とは、ユーカーパックが提供する車の買取相場がカンタンに分かるアプリです。
- 上毛新聞について教えて→上毛新聞は、1887年(明治20年)に創刊した群馬県の地方新聞です。創刊以来、「今日を伝え 明日をつくる」ことを心がけ、常に県民の皆さまに寄り添い、読者に親しまれる紙面づくりに取り組んでまいりました。
- 「ジハンピ」はどのようなアプリで、どこで使えるの?→サントリーが提供する「ジハンピ」は、アプリを起動して、ピッとタッチするだけで買える自販機キャッシュレスアプリです。右上に「ピ」のロゴマークが付いている自販機でご利用いただけます。
直近5件のニュースの内容から、想定される質問と回答を適当に作成しました(記載は3件分)。 どの程度の効果があるかは分かりませんが、様々な形式の質問を用意するために質問の長さや語尾をバラバラにしています。 回答については、ニュース内の文章の対象箇所をそのままコピーして使用しました。
生成QAの例
上記のFAQを使用してスクリプトを実行し、結果を確認しました。 例えば、FAQ作成時に使用していない直近6番目のニュース(V NEOBANK)については、以下のようなQAが生成されました。

元の文書の内容やFAQのテイストを踏まえつつ、スタイルやトピックごとに異なるQAが生成されていることが分かるかと思います。 このように、あまり知見のない分野の文書であっても、自動でQAを量産できるのは便利だと感じました。
まとめ
本記事では、専門分野のQAを自動生成する手法「ExpertGenQA」について、概要や実験結果を説明しました。 想定されるQAをあらかじめ生成することで、RAGのデータ整備やパラメーター調整だけでなく、LLMの追加学習や商談の事前練習、コンプライアンスリスクの確認など、様々な活用が考えられると思いました。 今後は、そのような生成QAの活用についても調査や実施を進めていきたいです。
- ExpertGenQAの概要については、株式会社ナレッジセンス様のブログなどが参考になるかと思います。↩
- ブルームの分類法とは、ベンジャミン・ブルーム博士が提唱した、人間が技術を習得する段階と学習目標を示した分類法です。大きく6つの段階(知識、理解、応用、分析、統合、評価)から成ります。↩
- ただし、技術ルールに関する文書から抽出したものなので、別の分野の場合は独自にスタイルを抽出した方が良いかもしれません。本記事ではニュースデータで実験を行っていますが、スタイルは論文の例をそのまま使用した場合の結果を載せています。↩
- 論文を基に独自に実装したものなので、細かい部分で読み間違いや認識違いがあったり、論文の実験条件とは異なる可能性があります。あくまで「やってみた系のブログ記事」としてご理解いただけると幸いです。↩
- 「ルールの適用」と「シナリオベース」について、前者はルール自体に関する質問、後者はルールの応用として特定の条件を想定した質問を用意しています。この辺りは英語のニュアンスから解釈しましたが、筆者の想定とは異なっている可能性があります。↩