流行って、終わった?RAGを知らないまま置いていかれる二段構え
今回の深掘り回のテーマは「今更聞けないRAGの話」です。しぶちょーさんに「RAGって聞いたことあります?」と尋ねられたかねりんさんは、正直あまり聞いたことがないと答えます。
しぶちょーさんによると、2024年は「RAGの年」と言ってもいいほどで、生成AIを活用するならRAGを使わなければいけない、という空気が界隈にあったそうです。
2024年はもうRAGの年って言ってもいいぐらいに、もう界隈でRAG、RAG、RAG、RAGって言われてたのね。
ところが最近は、RAGの話があまり表に上がってこなくなり、「RAGはオワコン」と言う過激派もいるほどだといいます。しぶちょーさんは、RAGは終わっていないと最初に断ったうえで、流行りが一度落ち着いた状態だと説明します。
知らないもの(RAG)が勝手にオワコンになってるっていう二段で置いていかれてる感じなのね。
しぶちょーさんは、RAGはAIを理解するうえで非常に重要だと強調します。RAGは生成AIの「中の話」なので、RAGという言葉だけが表に出てくることがよくあり、言葉を知らないとAIの文脈の話だと気づけないかもしれないからです。
RAG自体の中身は深いものの、概念はとてもシンプルだとしぶちょーさんは話します。これまでの回よりも頭のリソースを使わずに聞ける内容だという前置きで、解説が始まります。
「検索拡張生成」とは?LLMが最新情報を知らない弱点
RAGはRetrieval-Augmented Generation ── 外部の知識データベースから関連情報を検索し、それをもとに文章を生成するAIの手法。2020年頃に提案された比較的新しい考え方ですの略です。Retrievalは検索、Augmentedは拡張、Generationは生成を意味し、日本語では「検索拡張生成」と訳されます。
漢字6文字で言われても意味がわからない、とかねりんさん。しぶちょーさんはRAGを一言で、生成AIに外部の知識を与え、それを参照して答えさせる仕組みだとまとめます。
なんかGmail読み込むとか、ドライブ読み込むとかそういうの?
かねりんさんのこの例えに対し、しぶちょーさんは「それに近い」と答えます。そのうえで、RAGが必要とされる背景として、LLMの弱点を挙げます。
LLMの弱点は、学習した時点までの情報しか知らないことです。しぶちょーさんによると、生成AIにはカットオフ ── AIモデルが学習に使ったデータの最終時点のこと。これ以降の出来事は、モデル自体の知識としては持っていませんと呼ばれる最終更新時点が必ずあり、リアルタイムでデータを更新することはできません。
新しい情報が来るたびに学習させると、膨大な計算時間と計算資源がかかります。それでも企業は、最新情報や会社の独自データ、専門技術の情報を踏まえてLLMに回答してほしいと考えます。
自社でLLMを学習させるのは、計算リソースの面で難しい。そこで使われるのがRAGだ、というのがしぶちょーさんの説明です。
LLMの弱点
学習した時点(カットオフ)までの情報しか知らない
企業のニーズ
最新情報や社内の独自データも踏まえて答えてほしい
学習の壁
新しい情報のたびに学習させると膨大な計算資源がかかる
RAGの登場
学習させずに外部の知識をAIへ受け渡す
RAGは「カンペを渡す」仕組み。なぜ根拠を示せるのか
RAGの基本的な動きについて、しぶちょーさんが強調するのは「学習じゃない」という点です。RAGは外部の知識をAIに受け渡す技術であり、学習させるのではなく情報を渡してあげる仕組みだといいます。
RAGの流れは次のとおりです。ユーザーが質問すると、RAGがその質問に使えそうな情報を引っ張ってきてLLMに渡し、LLMはそれを踏まえて回答します。
しぶちょーさんは、かねりんさんの詳細なプロフィールを例に説明します。プロフィールのテキストをRAGに登録しておけば、「かねりんの好きなものは何?」と聞いたとき、LLMが先に考えるのではなく、まずプロフィールから該当しそうな文章を検索して抜き出し、LLMに渡すのです。
検索する時はAI関係ないの?
かねりんさんの質問に、しぶちょーさんは「いいとこつくね」と応じます。検索の部分はAIではなくRAGの技術であり、見つけた文章を質問のプロンプトと一緒にLLMへ入れる仕組みだと説明します。
質問のプロンプトの上に、この文章の中から回答してねっていうのを入れてあげる仕組みなのね。
かねりんさんは、分析したいデータのエクセルをAIに渡すのと似ていると理解します。さらに、元刑事の視点から、犯罪発生情報のようなデータベースをRAGで接続すればプロファイリングがはかどりそうだと話します。
しぶちょーさんも、独自データを活用するならそのデータベースをRAG化して検索をかける形になると同意します。RAGはローカルでも組めるため、外に出したくない情報を扱う企業でも活用されているそうです。
しぶちょーさんによると、RAGはよく「カンペを渡す」と例えられます。LLM本人に頭の中の情報を吐き出させるのではなく、「この中に答えが書いてあるから、この中から答えて」とカンペを渡すイメージです。
渡された文章をもとに回答するので、RAGを使うと、どの部分を見て回答を作ったのかという根拠やソースを示せるようになる、としぶちょーさんは説明します。
では、なぜ「RAGはオワコン」と言われるのでしょうか。しぶちょーさんの答えは、実用化のレベルに達していろいろな企業で普通に使われるようになり、みんながRAGで驚かなくなったから、というものです。ChatGPTでNotionと接続するような機能も、広い意味ではRAGにあたるといいます。
キーワード検索とベクトル検索、「意味の近さ」で探すとは?
ざっくり言えばRAGは文章を入れて参照させる仕組みですが、しぶちょーさんは「RAGを組むのは意外と大変」と話します。検索して持ってくる部分は普通のアルゴリズムでAIではなく、その検索自体に技術が必要だからです。
私たちが普段使う検索は、PDFでCtrl+Fを押して単語を探すようなキーワード検索 ── 単語やフレーズの文字が一致しているかをもとに情報を探す、従来型の検索方法です。キーワード検索は文字の一致を重視するため、同じ意味でも言い回しが違う文章を拾えません。
かねりんさんは、ひらがなの「おちつき」と漢字の「落ち着き」や、「落ち着く」と「静かに」のような類義語を例に挙げます。しぶちょーさんも、「ゆっくりする」「まったり」など似た言葉は多く、キーワードの一致だけでは該当箇所を拾いきれないと話します。
そこでRAGに組み込まれるのがベクトル検索 ── テキストなどの意味を数値ベクトルに変換し、「意味の近さ」で似た情報を探す検索方法です。言葉をエンベディング ── テキストや画像を、意味を保ったまま数値ベクトル(多次元空間の点)に変換する処理。埋め込み処理とも呼ばれますという方式で意味空間に埋め込み、意味の近さで検索します。
犬とか猫とかって全然違う単語だけど、動物っていうカテゴリーだから大体この位置だよねっていう。
ベクトルといっても、次元の数が数百、数千とあり、数字がたくさん並んだものだとしぶちょーさんは説明します。人間は3次元を超えるとイメージできないので、「矢印で指し示している」くらいの理解で十分だといいます。
実際のRAGでは、キーワード検索とベクトル検索を掛け合わせたハイブリッド検索 ── ベクトル検索とキーワード検索を組み合わせ、文字の一致と意味の近さの両方から情報を探す方法を使い、文字列の一致度と意味の一致度の両方から該当箇所をまとめて持ってきます。
| 検索方法 | 何を見るか | 特徴 |
|---|---|---|
| キーワード検索 | 文字の一致 | 言い回しの違いや類義語は拾えない |
| ベクトル検索 | 意味の近さ | 意味空間に埋め込み、近い意味の文章を拾える |
| ハイブリッド検索 | 文字と意味の両方 | 2つを掛け合わせて該当箇所を持ってくる |
Google検索もベクトル検索を使えばいいのでは、というかねりんさんの疑問に、しぶちょーさんは「使っていないと思う」と答えます。登録する文章をすべてベクトルに変換する必要があり、埋め込みにはかなりの時間がかかるからです。
チャンク分けとオーバーラップ。文章をどこで切る?
RAGに登録する文章は、そのまま丸ごと入れるわけではありません。しぶちょーさんは、かねりんさんのプロフィールが10万文字あるとしたら、1000文字ほどの単位に分けていく必要があると説明します。この分割をチャンク ── 長い文章や文書を、AIが扱いやすい単位に分割したデータのかたまり分けと呼びます。
質問が来ると、RAGはこのチャンク単位で情報を持ってきます。かねりんさんは「段落みたいなイメージ?」と理解し、さらに「機械が勝手に分けるの?手動の方が精度が高そう」と踏み込みます。
基本的にはチャンク分け自動でできるんだけど、どこで切るかめっちゃ重要なのよ。
自動のチャンク分けも、文の途中で切るようなことはなく、ひとまとまりで分けてくれるといいます。ただし、それがユーザーのしたい検索と一致しているかは別の話だ、としぶちょーさんは指摘します。
文章は完全に意味が切れて次の章へ移るタイミングが多くなく、たいてい前の文脈を少し背負って次の文脈が続きます。そこでチャンクを切ると、つながりが完全に切れてしまいます。
その対策が「オーバーラップ」です。前のチャンクの最後の部分を次のチャンクにも追加し、お互いが相手の文章を少し持つようにする手法です。
2、3行ちょっと残して、あ、この続きこっちだってわかるようにして送ってあげるじゃん。
かねりんさんは、長い文章をスクショで送るときにつなぎ目を残す習慣を例えに出し、しぶちょーさんも「めちゃくちゃいい例え」と絶賛します。
チャンクを切った位置で前後の文脈が完全に切れてしまう
前のチャンクの末尾を次にも持たせ、つながりを拾えるようにする
RAGを組んで使ってみて精度が出なければ、チャンクの分け方やオーバーラップを変えてみる。この調整は人間がやらなければならない「泥臭い作業」だとしぶちょーさんは話します。
AI開発は泥臭い?ハイパーパラメータ調整とデータの前処理
しぶちょーさんは、AIの実装は「スマートではない」と言い切ります。生成AIに限らず、画像認識などでも、人間が決めるハイパーパラメーター ── 学習率など、AIの学習の仕方を決めるために人間があらかじめ設定する値。学習によって自動で決まるパラメータとは区別されますがたくさんあるといいます。
0.3にするか0.4にするかといった組み合わせを、グリッドサーチと呼ばれる方法で大量に試し、一番よいものを見つけます。計算式でスマートに最適値が出るわけではないそうです。
あー計算終わった、あ、ダメだった、あー計算終わった、ちょっと良くなったみたいなやつをもうひたすらやってく。
1回の計算に何十分もかかる作業を繰り返すのがAIエンジニアの仕事だと聞き、かねりんさんは「頭が下がる」と驚きます。
しぶちょーさんは、学習データをきれいにする作業も面倒だと続けます。RAGに入れるマニュアルや説明書にも不要な文章や注記が含まれていて、それがゴミかどうかは人間が一つひとつ判断しなければなりません。
かねりんさんは、自分の事業やポッドキャスト、機材リスト、スタジオの植物の名前と背の高さまで書いた文章を、毎回丸ごとAIに貼っていると打ち明けます。関係ない情報が8割ほど入っているそうです。
しぶちょーさんは、厳密に言えば不要な情報は抜いたほうがよく、無駄な推論やハルシネーション ── AIが事実と異なる内容を、もっともらしく生成してしまう現象の確率が上がると話します。
だからどんなに賢くてもゴミのデータ入れたらゴミしか出てこんと。
しぶちょーさんが紹介するのは「ガーベッジイン・ガーベッジアウト」という言葉です。プロンプトに入る文字数は最近大幅に増え、10万文字が平気で入るとも言われますが、9万文字が使わない情報ならノイズになり、回答精度は落ちると考えられます。
しぶちょーさん自身は、Difyを使って、Notionのデータを自動でチャンク分けしてRAGを組んだことがあるそうです。粗いチャンク分けでもそこそこうまくいったものの、企業のチャットボットで使うなら、チャンク分けや検索方法をきちんと調整しないとうまく作れないといいます。
関係性でつなぐ「GraphRAG」は何が違う?
最近流行っている発展形として、しぶちょーさんはGraphRAG ── 情報同士の関係をグラフ構造で表し、つながりをたどって検索するRAGの発展形を紹介します。言葉や概念同士のつながりを、地図のように線で結んでおく手法です。
しぶちょーさんが例えに出したのは連想ゲームの「マジカルバナナ」です。かねりんさんが「黄色と言ったらバナナ」と答えて無限ループに入り、スタジオが笑いに包まれる場面もありました。
GraphRAGでは、専門知識のように関連がわかりにくい知識同士をグラフ構造でつなぎ、その関連をたどって検索します。類似度や一致度だけでなく、関連性を使って検索できる点が違いだといいます。
それ3つ目の検索指標ってこと?それ。
しぶちょーさんによると、GraphRAGは既存のRAGに足すものではなく、グラフデータベースとして別に作るものです。最初は自動で作れても修正が必要で、手間がかかります。精度が上がる可能性があるので、入れるデータによって普通のRAGにするかGraphRAGにするかを選ぶそうです。
RAGは一度それなりの精度で作ってしまえば、評価しながらデータを追加し、メンテナンスして運用していけます。最初に作ってうまくいくかどうかが一番大変だ、というのがしぶちょーさんの説明です。
AIの解像度がわかる魔法の言葉は「学習」
話は変わって、しぶちょーさんは、AIに対する解像度の高さを見分ける便利な言葉があると切り出します。その言葉は、この回ですでに何度も出てきた「学習」です。
学習っていう言葉をどういう文脈で使ってるか(をしっかり聞くと)、その人のAIへの解像度がめっちゃわかるの。
「この文章をLLMに学習させて」「自分の好みを学習させている」と言う人がいますが、しぶちょーさんは、それは学習ではないと話します。指摘すると重箱の隅をつつく嫌なやつだと思われるので、普段は言わないそうです。
しぶちょーさんによれば、AIの学習とは基本的に「パラメータの更新」、つまり脳みそをいじることです。ニューラルネットワーク ── 脳の神経細胞のつながりを模した、AIの基本的な構造。多数の要素がネットワーク状につながっていますのつぶつぶやつながりに設定された数字を、誤差をもとに少しずつ変えていきます。
このパラメータは何億、何兆とあり、高性能なコンピュータで更新を繰り返すことで、AIは賢くなっていきます。LLMに限らず、ディープラーニングと呼ばれるものは基本的にこの仕組みで学習しているといいます。
では、自分の好みを覚えさせるのは学習なのでしょうか。しぶちょーさんの答えは、パラメータの更新を伴わないので学習ではなく、プロンプトの手前に打ち込まれているだけ、というものです。
ChatGPTのメモリ機能も同じで、データとして入っているものを毎回読みに行っているだけで、AIが理解してくれているわけではないそうです。
かねりんさんは「カンニングだ」「誰もあなたのこと理解してない」と返し、AIとのセラピーのような対話も、過去のやり取りをカンペにして話しているだけなのかと気づきます。
パラメータを更新し、AIの脳みそそのものを変える
プロンプトの手前にカンペを入れ、それを読んで答えさせる
学習と言わずに何と言えばいいのか、というかねりんさんの問いに、しぶちょーさんは「厳密に言ったら参照」と答えます。「参照」はわかりにくい言い方でも、正確な言い方です。
学習って言わずに参照って言ったりとか、その、ちゃんと学習の部分は学習って言ったりすると、あ、この人わかってる人だ(みたいな)。
しぶちょーさんは、「学習」という言葉を使うときに本当に学習なのかを意識するだけで、AIへの解像度がかなり上がると話します。
RAGの中にもAIはいる。検索クエリとリランキング
しぶちょーさんは、「RAGに学習させる」という言い方も謎の言葉だと話します。RAGはニューラルネットワークではなく、入ってきたキーワードに該当するチャンクを持ってきてLLMに入れる仕組みだからです。
カンペ仕分けマシン。
かねりんさんの「カンペ仕分けマシン」という表現に、しぶちょーさんも同意します。ただし「AIは関係ない」と言うと語弊があり、検索の中でもLLMを使う部分があるといいます。
その部分が、検索クエリ ── 検索エンジンやAIに「何を探すか」を指示するための入力文や単語の生成です。しぶちょーさんは、「かねりんRAG」に誕生日プレゼントを相談する場面を例にします。
「かねりんに誕生日プレゼントをあげたいから考えて」という文章でそのまま検索しても、必要な情報は出てきません。まず、かねりんさんの趣味や好み、好きな食べ物を探さなければいけない、と判断して検索用の単語を作る必要があります。
クエリ生成
質問から検索用の単語を作る。ここで生成AIを使う
検索
一致度や類似度でチャンクを探す。ここは完全にアルゴリズム
リランキング
候補を順位づけし、渡すものを決める。LLMで判断させることもある
生成
候補をプロンプトの最初に入れ、LLMに回答させる
しぶちょーさんによると、RAGの中にはクエリ生成専用の、コストが上がりにくいモデルが入っています。候補の順位づけであるリランキングでも、LLMに判断させる場合があるそうです。
それでもRAGの工程に学習は含まれておらず、あくまで「参照」だとしぶちょーさんは念を押します。かねりんさんは、「学習」を使ってはいけない文脈で使っていないかを見分ける「魔法の言葉」を手に入れたと喜びます。
エンジニアの中には、偉い人が「AIに学習させて」と言うたびに気になっていた人もいるだろう、としぶちょーさんは話します。かねりんさんは、最初はつまらない回かと思ったが、とても面白かったと感想を伝えます。
ファインチューニングとRAG、何が違う?
この回では、深掘り回で毎回扱っていたRAGの技術の歴史をあえてカットしたと明かされます。RAGは2020年にコンセプトができたほど新しい技術だそうです。
RAGが出てくる前によく使われていたのがファインチューニング ── 既存のAIモデルを特定のデータで追加学習させ、目的に合わせて振る舞いを調整する手法です。しぶちょーさんは、ファインチューニングは学習だと説明します。
本当に脳みその全部じゃなくて出口だけ。
ファインチューニングでは、出口部分のパラメータだけを更新し、LLMの回答の仕方や性格、語彙の傾向を変えます。ただし、大量のデータと時間がかかるわりに、知識はあまり与えられないといいます。
そこで、カンペを参照させるRAGを使えば、LLMがあたかも学習したかのように独自データを回答させられる、としぶちょーさんは話します。
出口のパラメータを更新する学習。傾向は変わるが知識は与えにくい
学習せずにカンペを参照させる。独自データを比較的低コストで答えさせられる
ChatGPTのままでは「それはChatGPTに聞けばいい」となりますが、RAGを使えば自社独自のデータを持ったサービスを作り、製品に組み込めます。しかも比較的低コストで実現できるそうです。
チャットボットの裏側と、「かねりんRAG」は作れるか
行政にも導入してほしいというかねりんさんに、しぶちょーさんは、行政などのチャットボットの裏では基本的にRAGが組まれていると考えられると話します。
一方で、RAGの中身を盗み出そうとするプロンプトインジェクション ── AIへの入力を工夫して、本来出すべきでない情報を引き出したり、動作を乗っ取ったりする攻撃もできてしまいます。RAGを使うなら、インジェクション対策がとても重要だといいます。
話はかねりんさんのクローンへ移ります。音声発信を続けてきたかねりんさんは、自分の考えが大量に残っているので、それを使ってクローンを作れないかと尋ねます。
クローンカネリンを作ることはできると思うけど、それは多分学習じゃなくて参照になると思う。
約2000回分の放送の文字起こしをRAGに入れれば、質問に合う回答を持ってきて、かねりんさん風の口調で答えさせられるとしぶちょーさんは説明します。有名人をAI化したサービスも、実際にはこうした参照で動いているのだろうと話します。
なんかね、ラグの欠点としてレイテンシーって言ってさ、回答に時間かかるんだ結構。検索しに行くから。
しぶちょーさんは、この仕組みを「影武者」に例えます。かねりんさんが「カンペを携えた影武者」と言い換える一幕もありました。音声生成と組み合わせたり、AIのしぶちょーさんとかねりんさんに勝手に話してもらったりする実践編のアイデアも出ています。
RAGはオワコンではなく、AIエージェントに吸収された
ここから本編に戻り、しぶちょーさんは、RAGが話題にならなくなったもう一つの理由としてAIエージェント ── 目的を理解し、さまざまな道具やサービスを使いながら自律的に行動できるAIの流行を挙げます。
AIエージェントの中には、RAGを使う機能が内部的に統合されているといいます。RAGはエージェントの文脈に飲み込まれたので、あまり単独で語られなくなったのです。
2024年の流行
生成AIを使うならRAG、と界隈で大いに語られる
実用化
企業で当たり前に使われ、驚かれなくなる
エージェントへの統合
AIエージェントの一機能として内部に組み込まれる
かねりんさんは、NFTが流行していた頃に「NFTを使ったチケット」のような技術が売りにされていたことを思い出します。本当に普及すれば、誰も技術名を気にしなくなるという点で、RAGと似ていると話します。
かねりんさんは、RAGという言葉が表から消えていく手前で解説を聞けたことに大きな価値があったと話します。しぶちょーさんも、AIのブラックボックスが大きくなるほど落ち着けなくなるが、参照の部分は正体がわかったと応じます。
しぶちょーさんは最後に、「これは学習か」と一度踏みとどまることが今回の落ち着きポイントだとまとめます。ただし、人の言い間違いを嫌みったらしく指摘すると嫌われる可能性があるので、自分が正しく使っていればいいという結論です。
まとめ
RAGは、生成AIに外部の知識をカンペとして渡し、それを参照して答えさせる仕組みです。検索やチャンク分けなど泥臭い工夫の上に成り立ち、今はAIエージェントの中に溶け込んでいます。
- RAG(検索拡張生成)は、質問に関係する文章を検索してプロンプトに入れ、LLMに回答させる仕組み
- 検索にはキーワード検索とベクトル検索を組み合わせたハイブリッド検索が使われ、チャンク分けやデータの前処理が精度を左右する
- AIの学習とはパラメータの更新であり、メモリ機能やRAGは学習ではなく「参照」
- ファインチューニングは学習だが知識を与えにくく、独自データを答えさせるにはRAGが向いている
- RAGはオワコンではなく、実用化されてAIエージェントの一部に吸収されたため表に出にくくなった





