- RAGが答える前に何をしているか
- 資料をチャンクに小分けにする理由
- 言葉が違っても意味の近さで探す仕組み
- ハルシネーションが減る理由と残る理由
- 導入の前に整えておきたい資料
結論
RAGは、AIに答えさせる前に社内の資料から関係する部分を探し出し、それを質問と一緒に渡す仕組みです。AIが資料を丸ごと覚えるわけではありません。毎回「この資料のこの部分を読んで答えて」と、読む範囲をその場で渡しています。
RAG(Retrieval-Augmented Generation)は、日本語にすると「検索で補った文章生成」です。AIが知らない社内の決まりや手順について、根拠のある答えを返しやすくなります。ただし、答えの質は渡す資料の質で決まります。古い資料や矛盾した資料を入れれば、その内容がそのまま答えに出ます。
なぜRAGが必要になるのか
生成AIの中心にあるLLMは、学習した時点までの一般的な文章をもとに答えます。あなたの会社の就業規則、経費精算の手順、取引先ごとの約束ごとは、当然知りません。知らないことを聞かれても、もっともらしい文章を作ってしまうことがあります。これがハルシネーションです。
では、社内資料を全部チャットに貼ればよいかというと、そうもいきません。AIが一度に読める量(コンテキスト)には上限があり、何百ページもの規程集を毎回すべて渡すのは現実的ではありません。そこで、質問に関係する部分だけを探して渡すという発想が出てきます。これがRAGです。
RAGの流れ
RAGは、準備の段階と、質問が来たときの段階に分かれます。
準備:資料を小分けにして、探せる形にする
- 規程、マニュアル、よくある質問などの資料を集める。
- 資料を数段落くらいの小さなかたまりに分ける。このかたまりをチャンクと呼びます。
- チャンクごとに、意味を数字の並びに変えたもの(埋め込み)を作り、保存しておく。
チャンクに分けるのは、探し出す単位を小さくするためです。100ページの規程集を1つのかたまりにすると、「有給休暇の申請期限」を聞かれたときに100ページ全部を渡すことになります。見出しや段落ごとに分けておけば、関係する数段落だけを渡せます。
質問が来たとき:探して、渡して、答えさせる
- 質問文も同じ方法で埋め込みに変える。
- 保存してあるチャンクの中から、意味が近いものをいくつか探す(ここが検索(Retrieval))。
- 見つかったチャンクと質問をまとめてLLMに渡し、「この資料をもとに答えて」と指示する。
- LLMが答えを作る。どの資料を使ったかを一緒に示す作りにすることもできます。
埋め込みとベクトル:意味の近さで探す
普通の検索は、入力した言葉と同じ文字が含まれている文書を探します。「有給」で検索すると、「年次休暇」とだけ書かれた規程は見つからないことがあります。
埋め込みは、文章の意味を数字の並び(ベクトル)に変える方法です。意味の似た文章は、似た数字の並びになるように作られています。そのため「有給はいつまでに申請すればいい?」と「年次休暇の取得は、原則として○日前までに届け出る」は、使っている言葉が違っても近いものとして見つかります。
大量のベクトルを保存して、近いものを速く探すための仕組みをベクトルデータベースと呼びます。RAGの「探す」部分は、多くの場合これが担っています。
意味の近さで探す方法も万能ではありません。社員番号や製品の型番のように、1文字も違わずに一致してほしいものは、普通の文字検索と組み合わせるほうが見つけやすいことがあります。
ハルシネーションは減るが、なくならない
RAGを使うと、AIは渡された資料を根拠に答えるので、何もないところから作る答えは減ります。どの資料のどの部分を使ったかを示せれば、人が確かめるのも楽になります。
それでも誤りは残ります。よくある原因は次のとおりです。
- 探し違い:関係のないチャンクが選ばれ、関係のあるチャンクが漏れる。
- 資料の古さ:改定前の規程と改定後の規程が両方入っていて、古いほうが使われる。
- 読み違い:正しいチャンクを渡しても、条件や例外の読み方をAIが取り違える。
- 資料にない質問:該当する資料が無いのに、一般論で埋めて答えてしまう。
「社内資料を読ませたから答えは正しい」とは考えないでください。給与や契約、法律に関わる答えは、示された元の資料を人が開いて確かめる前提で運用します。
実務ではこうなる
総務の担当者が、社員からの「この場合は休暇扱いになりますか」「交通費はどう申請しますか」という質問に毎日答えている会社で考えます。規程とマニュアルをRAGの資料にすると、社員はまずAIに聞き、AIは該当する規程の段落を示しながら答えます。担当者のところに来るのは、AIが答えられなかった質問や、判断が要る質問だけになります。
うまくいくかどうかを分けるのは、AIの性能より資料の整理です。
- 最新版がどれか分かるようにする。古い版は資料から外すか、古いと明記する。
- 見出しを付けて、1つの段落に1つの話題を書く。チャンクに分けたとき意味が切れにくくなります。
- 「資料に無いときは、分からないと答える」とAIに指示しておく。
- 答えられなかった質問を記録し、資料に足していく。
ファイルの置き場所や名前がばらばらのままでは、RAGを入れても探し違いが増えるだけです。資料の置き方をそろえる作業は、RAGの前に済ませておく価値があります。
まとめ
- RAGは、質問に関係する資料の部分を探し、AIに渡して答えさせる仕組み。
- 資料はチャンクに分け、埋め込み(ベクトル)にして意味の近さで探す。
- 根拠のある答えが増え、ハルシネーションは減るが、なくならない。
- 答えの質は資料の質で決まる。最新版の管理と見出しの付け方が効く。
- 大事な答えは、示された元の資料で人が確かめる。