この記事の要点
- RAGの答えの誤りの多くは、正しい文書の部分を検索で見つけられないことから起きます。
- ベクトル検索とキーワード検索を組み合わせ、文書の分け方と渡す件数を調整します。
- 評価用の質問と正解の一覧を用意し、検索と答えを分けて測りながら直します。
RAGの精度を上げるには、AIのモデルを替える前に、文書の整え方、検索の方式、AIへの渡し方、評価の仕組みの4つを見直すのが近道です。答えの誤りの多くは、正しい情報が書かれた部分を検索で見つけられないことから起きるためです。あわせて、閲覧の権限に合わせた検索の制御も欠かせません。
RAG(検索拡張生成)とは、生成AIが答える前に社内の文書などから関係する部分を検索し、その内容をもとに答えを作らせる仕組みです。仕組みの考え方は、Facebook AI Research などの研究者による2020年の論文で示されました。社内の問い合わせ対応での使い方は、社内の問い合わせ対応をAIチャットボットに任せるにはで説明しています。
RAGの精度は、どこで決まるか
精度は、文書の準備、検索、答えの生成の3つの段階の掛け合わせで決まります。どこか1つが弱いと、ほかを直しても答えはよくなりません。
- 文書の準備:古い版や重複がなく、表や図の内容も文字として読める状態か
- 検索:質問に答えるのに要る部分を、上位の候補に入れられるか
- 答えの生成:渡した内容だけをもとに、根拠を示して答えられるか
誤った答えが出たときは、まず検索の結果を見て、正しい部分が候補に入っていたかを確かめます。入っていなければ文書か検索の問題、入っていたのに誤ったなら渡し方や指示の問題と切り分けられます。
誤った答えが出たときの切り分け
- 正しい部分が候補にない文書か検索の問題
- 候補にあったのに誤った渡し方や指示の問題
まず検索の結果を見て、正しい部分が候補に入っていたかを確かめます
文書を整え、分け方を決める
最初に手を入れるべきは、元の文書です。同じ規程の古い版と新しい版が並んでいれば、AIは古いほうをもとに答えることがあります。廃止した文書を外し、版と更新日を管理します。
表・図・スキャンした文書の扱い
表や図、スキャンした画像の文書は、そのままでは文字として検索できないことがあります。表は行と列の関係が分かる形で文字にし、画像の文書は文字の読み取りの結果を人が確かめてから入れます。
分ける大きさと、文脈の付け足し
RAGでは、文書を数百字程度の小さな部分(チャンク)に分けて検索します。分け方が細かすぎると前後の文脈が失われ、大きすぎると関係のない内容まで混ざります。見出しや段落の区切りで分け、各部分に文書名や章の名前を付け足しておくと、どの規程のどの話かが分かりやすくなります。
Anthropic は、各部分にその部分の文脈を説明する短い文を付けてから検索の索引を作る方法を紹介し、自社の検証で、上位20件に必要な部分が入らない割合が、意味の検索とキーワード検索の両方に文脈を付けた場合に49%減ったと発表しています。
出典:Introducing Contextual Retrieval(Anthropic、2024年9月19日)
検索の方式を組み合わせる
検索は、意味の近さで探す方式と、言葉の一致で探す方式を組み合わせると、取りこぼしが減ります。
エンベディングを使うベクトル検索は、言い回しが違っても意味の近い文章を見つけられます。一方で、型番や品番、条文の番号、社内の略語のように、言葉の一致が大切な検索は苦手です。キーワード検索はその逆の性質を持ちます。
| 方式 | 得意なこと | 苦手なこと |
|---|---|---|
| ベクトル検索 | 言い回しの違う質問、あいまいな質問 | 型番・固有名詞・番号の完全一致 |
| キーワード検索 | 型番・固有名詞・社内の用語 | 言い換えや表記の揺れ |
| 組み合わせ(ハイブリッド) | 両方の結果を合わせて取りこぼしを減らす | 調整する設定が増える |
候補を多めに集めたあとに、質問との関係の深さで並べ替える処理(リランキング)を加える方法もあります。あいまいな質問を、検索しやすい言い方に書き換えてから検索する工夫も使われます。
AIへの渡し方と答えさせ方
検索した部分は、多く渡せばよいわけではありません。長い入力の中ほどにある情報は、はじめや終わりにある情報より使われにくいという研究があります。関係の深い部分に絞って渡し、順番も考えます。
指示では、渡した文書だけをもとに答えること、根拠にした文書の名前と箇所を示すこと、文書に書かれていなければ「分かりません」と答えることを求めます。根拠を示させると、使う人が原文で確かめられ、ハルシネーションに気づきやすくなります。
評価の仕組みをつくる
精度を上げる作業は、評価用の質問と正解の一覧がないと進みません。実際に寄せられた質問から数十件を選び、正しい答えと、根拠になる文書の箇所を組にしておきます。
| 測るもの | 見るところ |
|---|---|
| 検索 | 根拠の箇所が、上位の候補に入っているか |
| 答えの正しさ | 正解と内容が合っているか |
| 根拠との一致 | 渡した文書に書かれていない内容を足していないか |
| 答えない判断 | 文書にない質問に「分かりません」と答えられるか |
文書の分け方、検索の方式、指示の文を変えるたびに同じ一覧で測り、結果と変えた内容を記録します。ある質問がよくなって、別の質問が悪くなることもあるためです。公開した後は、利用者の評価や答えられなかった質問を一覧に足していきます。
権限と更新を設計する
社内の文書を扱うRAGでは、使う人が読めない文書の内容を答えに出さないことが前提です。文書ごとに閲覧できる部署や役職の情報を持たせ、検索の時点で、その人が読める文書だけを対象にします。答えを作った後に隠す形では、漏れが起きやすくなります。
文書を更新・削除したら、検索の索引にも反映します。反映の手順を決めておかないと、削除したはずの古い規程をもとに答え続けることがあります。社外から受け取った文書を取り込む場合は、文書に紛れ込ませた指示でAIの動きを変えるプロンプトインジェクションにも備えます。生成AI全般のセキュリティは、生成AIのセキュリティにまとめています。
当社のご支援
アメリア・テクノロジーは、社内の資料を使うAI(RAG)の設計と開発、評価用の質問の整え方、閲覧の権限に合わせた検索の作り込みをお手伝いします。開発はソリューション提供、いまのシステムとのつなぎ込みと運用での改善はAIインテグレーションをご覧ください。
- RAG
- 社内文書検索
- 生成AI
- 評価
この記事に出てくる用語
このコラムは一般的な情報の提供を目的としたもので、個別の状況への助言ではありません。製品・サービスの名前と内容は、記事の更新日の時点のものです。