使い方・開発 中級
RAG(検索拡張生成)
Retrieval-Augmented Generation
質問に関係する文書を検索で取り出し、それを LLM に渡してから回答させる仕組みです。モデルが学習していない社内資料や最新情報にもとづいた回答ができます。
別の呼び方RAG、検索拡張生成
例就業規則と社内 FAQ を RAG で検索させ、回答の末尾に参照した規程の条番号を出すようにした。
詳しく
RAG の基本的な流れは次のとおりです。
- 文書を適当な長さ(チャンク)に分け、埋め込みに変換して保存する
- 質問が来たら、意味の近いチャンクを検索する(キーワード検索と組み合わせることも多い)
- 取り出したチャンクを質問と一緒に LLM に渡し、回答させる
ファインチューニングと違い、文書を差し替えるだけで知識を更新できます。回答に出典を付けやすいのも利点です。
精度は「検索で正しい文書を取り出せるか」に大きく左右されます。チャンクの切り方、検索方法、取り出す件数、取り出した結果の並べ替え(リランキング)などを、評価(eval)で確かめながら調整します。文脈長が長くなった現在では、資料が少なければ検索せずに全部渡すほうが簡単で正確な場合もあります。
あわせて知りたい言葉
- 埋め込み文章や画像などを、意味の近さが距離として表れる数値の並び(ベクトル)に変換したものです。意味の近い文書を探す検索や分類に使われます。
- ベクトルデータベース埋め込み(ベクトル)を保存し、意味の近いものを高速に検索できるデータベースです。RAG で文書を探す部分によく使われます。
- ハルシネーションAIが事実と異なる内容や存在しない情報を、もっともらしく出力してしまう現象です。架空の文献・URL・数値・機能などを作ることがあります。
- コンテキストエンジニアリングモデルに渡す情報全体(指示、会話履歴、検索結果、ツールの定義や結果、記憶など)を、何をどれだけ・どの順で入れるかまで設計することです。とくに長い作業を続けるエージェントで重要になります。
- ファインチューニング学習済みのモデルに、特定の用途向けのデータを追加で学習させて調整することです。出力の形式や口調、特定分野の判断のしかたをモデルに覚えさせるのに使います。