コンテキスト
RAG(検索拡張生成)とは?
RAGとは、自分の文書の中から関連する箇所を検索し、それをモデルの目の前に提示する仕組みのことです。チャンク分割の設計と検索品質が、システムがうまく機能するかどうかをどのように左右するかを解説します。
すべての解説 · 最終確認日:
仕組み
文書はチャンクに分割され、各チャンクはベクトルに変換されます。これはその意味の数値的表現です。質問も同じように変換され、ベクトルが最も近いチャンクが検索されます。
それらのチャンクはプロンプトに挿入され、通常はそこから回答するようにという指示とともに使われます。モデルは言語の作業を行い、検索は知識を提供します。
検索品質がシステムのすべて
正しい箇所が検索されなければ、どんなモデルも回答を救えません。一般知識から回答し、同じくらい自信ありげに聞こえます。がっかりするRAGシステムのほとんどは、生成の衣を着た検索の問題です。
チャンク分割はそれが決まる場所です。小さすぎるチャンクは意味を持たせていた文脈を失い、大きすぎると一致がそれぞれ薄まります。文書の構造——セクション、見出し——に沿って分割する方が、固定長で分割するより通常優れています。
何を直し、何を直さないか
RAGは「モデルが自分の文書を見たことがない」を修正します。文書が答えられる質問についてはハルシネーションを減らします。答えがモデルの目の前にあるからです。
推論は修正しませんし、検索が何も有用なものを返さないときにモデルが記憶から回答することを止めもしません。根拠づけは強い傾向であって保証ではなく、その失敗の形は出典のない自信満々の回答です。
よくある質問
- RAGはファインチューニングと同じですか?
- いいえ、両者は異なる問題を解決します。ファインチューニングはモデルの振る舞いを変え、RAGは一回のリクエストに対して何を知っているかを変えます。「自分の文書について質問に答えて」に対しては、RAGがほぼ常に正しいツールであり、最新に保つのがはるかに安価です。
- 大きなコンテキストウィンドウはRAGを不要にしますか?
- いいえ。より多く貼り付けることはできますが、各メッセージのすべてのトークンに対して料金を払い、モデルは非常に長い入力に均等な注意を払いません。検索はまた、どんなウィンドウが収まる範囲を超えてスケールする唯一のアプローチでもあります。
- RAGは私の文書をモデルのプロバイダーに送りますか?
- 検索された箇所は送られます。それがモデルの見方だからです。それが受け入れられないなら、モデルはあなたが管理する場所で動作する必要があり、そのためにローカル実行があります。
読むより試してみる
ClawAIは添付したファイルから検索を行い、それをローカル実行と組み合わせることで、検索された箇所が自分のハードウェアに留まるようにできます。