RAGとは|社内文書をAIに読ませる仕組みを原論文から整理

RAGとは何か AIの仕組みと用語

RAGは Retrieval-Augmented Generation の略です。日本語だと「検索で補強した生成」あたりになります。

やっていることは単純です。AIに質問を投げる前に、答えに必要そうな資料を探してくる。その資料を質問と一緒に渡して、それを見ながら答えさせる。

「社内のマニュアルを読んで答えるAI」の中身は、たいていこれです。

原論文が問題にしていたこと

この考え方をまとめたのは、2020年5月に公開された論文です。Patrick Lewis氏ほかによる Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks。

論文が指摘していたのは、パラメータの中にだけ知識を持つモデルの限界でした。知識にアクセスして正確に扱う能力が限られていること。そして、判断の根拠を示すことと、世界についての知識を更新することが難しいこと。

この2つは今でもそのまま残っている問題です。

学習し終わったモデルの中身は固まっています。新しい情報を足したければ、訓練をやり直すしかない。しかも、なぜその答えを出したのかを追えません。

論文が提案したのは、記憶を2種類に分けることでした。学習で身につけたパラメータ側の記憶に加えて、外から引ける記憶を持たせる。実装では、Wikipediaを密ベクトルの索引にして、学習済みの検索器から引くようにしています。

結果として、パラメータだけのモデルより具体的で、多様で、事実に沿った文章を生成したと報告されています。

中身は3つの段階に分かれる

段階 やること
準備(事前) 資料を適当な長さに切り、それぞれを数値の並びに変換して保存しておく
検索 質問も同じ方法で数値に変換し、近いものを保存先から探す
生成 探してきた資料と質問をまとめてAIに渡し、それを見て答えさせる
準備は資料を追加したときだけ。検索と生成は質問のたびに走る

文章を数値の並びに変える処理をエンベディングと呼びます。意味が近い文章ほど、数値としても近い位置に来るように作られている。だから「有給の申請方法」で検索したとき、「休暇取得の手続きについて」と書かれた文書が引っかかります。

キーワードの一致ではなく、意味の近さで探せる。ここがRAGの肝です。

追加学習との違い

社内の情報をAIに扱わせる方法として、モデルを追加学習させる手もあります。どちらを選ぶかで悩む場面は多いはずです。

RAG 追加学習
資料を足すとき 索引に入れるだけ 訓練をやり直す
根拠の提示 参照した文書を示せる 示せない
情報の更新 その場で反映される 反映に時間と費用がかかる
向いていること 事実や手順を答えさせる 文体や振る舞いを寄せる
目的が違うので、どちらが上という関係ではない

社内規程やマニュアルを扱いたいならRAGです。内容が変わるものを追加学習で覚えさせると、更新のたびに費用がかかります。

一方、返答の口調を自社らしくしたい、特定の書式で必ず出力させたい。こちらは追加学習の領分になります。

作る前に決めておくこと

手を動かす前に決まっていないと後で作り直しになる項目が、いくつかあります。

まず、誰がどの資料を見てよいか。人事情報と全社共有のマニュアルを同じ索引に入れてしまうと、権限のない人に中身が出ます。索引を分けるか、検索の時点で絞り込む仕組みが要る。後から足すのは面倒なので、最初に決めます。

次に、資料が更新されたときの反映です。索引に入れた内容は自動では変わりません。元のファイルが差し替わったら、古い断片を消して入れ直す必要がある。ここを設計しないと、半年後には廃止された規程を根拠に答えるAIができあがります。

3つめが、どこまでを対象にするか。手当たり次第に社内文書を入れると、似た内容の古い版が大量に引っかかって精度が落ちます。数を入れるほど良くなるものではありません。

根拠を出せることの価値

RAGの利点として速度や費用が語られがちですが、実務でいちばん効くのは根拠を示せる点だと思います。

「規程の第12条にこう書かれています」と出典付きで答えられれば、利用者は自分で確かめられます。逆に、出典のない答えは確かめようがない。業務で使うなら、この差は決定的です。

原論文が最初に問題として挙げていたのも、判断の根拠を示せないことでした。性能の話ではなく、そこが出発点だったわけです。

うまくいかないときに疑うところ

RAGを組んで「思ったより使えない」となる場合、原因はたいてい生成ではなく検索の側にあります。

資料の切り方が粗いと、必要な部分が別々の断片に分かれてしまいます。逆に細かく切りすぎると、前後の文脈が失われて意味が取れない。見出しごとに切る、段落の境目で切る、といった調整が要ります。

表やPDFも詰まりやすい箇所です。表を単純にテキスト化すると、行と列の対応が壊れて読めないものになります。

検索が正しい資料を引けているかは、実際に引いた中身を目で見れば分かります。答えの質を議論する前に、そこを確認したほうが早い。

もうひとつ、渡した資料に答えが書かれていないとき、AIが自分の知識で埋めてしまうことがあります。「渡した資料に書かれていなければ、分からないと答えて」と指示に入れておくと、この事故はかなり減ります。

出典

RAGの定義と、論文が指摘した問題点の記述は、下記の原論文に基づきます。実務での位置づけについては、AWSの公式解説もあわせて参照しました。

タイトルとURLをコピーしました