RAGは導入して終わりじゃない!精度を劇的に向上させる3つの鍵と評価の重要性
投稿者:kenya suzuki
はじめに
こんにちは!
D&A事業本部の鈴木健也です。
みなさんは、RAG(検索拡張生成)という言葉を聞いたことがあるでしょうか?
近年、AIの出力精度を向上させることを目的に、自分の持っている情報を教えて、使って回答してもらう仕組みとして、RAGを活用している方もいると思います。
しかし、RAGを使っても課題は存在します。
例えば、「古い情報を出力してくる」「情報の見落とし」など、RAGを使えば、必ずしも正確な回答が返ってくるというわけではありません。
そこで、今回は、RAGの精度向上の必要性と方法について、解説したいと思います!
RAGとは
RAGの精度向上についてお話しする前に、そもそも「RAGとは何か?」について解説します。
RAG(Retrieval-Augmented Generation)を一言で表現するなら、「AIに「専用のカンニングペーパー」を持たせる仕組み」のことです。
従来のAIとの違い
通常のChatGPTやGeminiなどの生成AIは、膨大な知識を持っていますが、それはあくまで「学習した時点の記憶」に頼っています。そのため、自社独自のルールや最新情報を聞いても「もっともらしい嘘(ハルシネーション)」をついてしまうことがあります。
いわば、「自分の記憶力だけで試験に挑んでいる状態」です。
一方で、RAGの仕組みを使えば、AIは回答する直前に、指定されたデータ(社内マニュアルや最新のWeb情報など)を「検索」し、その内容を基に回答を生成します。
つまり、「教科書や資料を持ち込みながら、正解を確認して答える」ことが可能になるのです。
これにより、AIが本来持っていない「社内情報」や「社内規定」に基づいた、信頼性の高いアウトプットが実現できるようになります。

RAGの課題
RAGを用いることで、信頼性の高いアウトプットを実現できるとはいえ、課題も存在します。
1. 検索の課題
RAGは検索結果に依存する仕組みになっています。
そのため、ユーザーからの質問に対して、関連性の高いドキュメントを正しく取得できなければ、正確な回答を生成することができません。
そのため、チャンクの切り方や検索時の取得対象の件数設定などが適切でないと、質問と関連性の低いドキュメントを取得し、回答を生成してしまいます。
2. 回答生成の課題
AIには、事実に基づかない情報を用いた回答(ハルシネーション)を生成してしまうことがあります。
これは、AIの学習データが不足していたり間違った検索情報を利用してしまったりすることが原因で起こります。
これらの原因によって、AIが情報を補完するために、誤った情報を含めて回答を生成してしまうことでハルシネーションが起こってしまいます。
ハルシネーションは、AIを活用し続ける以上、向き合っていかないといけない課題になります。
3. データの課題
そもそも、検索や回答生成において、データそのものが正しくないと検索精度は向上しません。
例えば、古い社内情報や誤った情報などが含まれたデータを使用してしまうと誤った情報に基づいた検索結果となってしまいます。
また、チャンクの切り方やオーバーラップ、エンベディングモデルの性能など、データをインジェストする際に検索しやすく、AIが読み取りやすい形式にすることが重要です。
RAGの精度を向上させる手法
RAGを導入したとしても上記のような課題は発生します。
1. エンベディングモデルの選定
エンベディングモデル(埋め込みモデル)とは、ドキュメントやユーザーからの質問をベクトルに変換するために用いるモデルになります。
RAGでは、検索時にユーザーの質問とDBに保存してあるチャンク化されたドキュメントの類似度が近いものを取得する方法で、回答に使用するコンテキスト探索を行います。
ベクトル化の精度が悪いとDBに保存してあるチャンク化されたドキュメントとユーザーからの質問の類似度を正しく判定することができず、無関係なドキュメントとの類似度を高く評価してしまい、誤った回答を生成してしまう可能性が高くなります。
そのため、日本語に対応したモデルを使用することが精度向上の鍵になります。
例えば、multilingual-e5-largeやgranite-embedding-278m-multilingualなど、日本語に対応したモデルは複数存在します。
精度が悪い場合は、エンベディングモデルを変更し、ベクトル化の精度を高めることで解決する可能性があります。
2. チャンクサイズとオーバーラップの見直し
チャンクサイズとオーバーラップも検索精度に大きな影響を与えます。
DBにドキュメントを保存する際には、ドキュメントをチャンク(小さな塊)に分割して処理します。
チャンクのサイズが大きすぎるとノイズが含まれ、特定の情報が難しくなります。
一方、チャンクのサイズが小さすぎると文脈が途切れてしまい、断片的な情報しか得られない可能性があります。
つまり、モデルが理解しやすい粒度にする必要があるということです。
一般的に推奨されるチャンクサイズは、256~1024トークンの範囲とされています。
また、ドキュメント間の内容を一部重複させることで、チャンク時に文脈が途切れるリスクを軽減し、文脈の連続性を保持するオーバーラップという手法も精度向上に寄与します。
一般的なオーバーラップ量の目安は、チャンクサイズの10~20%程度とされています。

3. RAGの精度評価を行う
ここまで、精度向上についてお話してきましたが、では、何をもって精度が低いと判断するのでしょうか?
また、エンベディングモデルやチャンクサイズの見直しを行ったとしても、精度が高くなったと判断する根拠は何でしょうか?
RAGの精度向上では、Ragasのような評価フレームワークを導入することで客観的な数値に基づいた評価を行うことができます。Ragasは、ユーザーからの質問、生成された回答、参照したコンテキスト、正解データを基に評価を行います。
スコアは、0~1の範囲で算出され、1に近ければ近いだけ、良いパフォーマンスであると判断されます。
評価指標としては、以下になります。
- Faithfulness:生成された回答が与えられた文脈とどれだけ一致しているか
- Answer Similarity:生成された回答が与えられた質問に対してどれだけ関連しているか
- Context Precision:コンテキスト内に正解データ(ground-truth)が含まれ、それが上位にランク付けされているか
- Context Recall:コンテキストが正解データ(ground-truth)とどれだけ一致しているか
他にも様々な評価指標があり、RAGの精度評価を行うことで的確な改善手段を講じることが出来ます。
Ragasの評価では、どの指標を重視するかで「良いスコア」の感覚が変わります。
ご自身の重視したい指標が1に近いと良いパフォーマンスが出ていると判断できるでしょう。
まとめ
いかがだったでしょうか?
RAGの精度向上手段は他にも、top_nでコンテキストの件数を調整したりコンテキスト拡張で、AIが一度に処理できる情報を増やしたりすることで精度を上げることが出来ます。
ただし、モデルには最大トークン数があるため、最大トークン数を超える情報を流してしまうとエラーが発生してしまいます。
また、上記でもお伝えした通り、「大量の情報を渡せば精度が向上する」というわけではありません。
適切な情報量を渡すことで、回答の精度が向上します。
ですが、そもそも回答の精度の良し悪しを判断するためには、「客観的な精度評価」が不可欠でした。
RAGの精度評価に限らず、AIエージェントの使用でも同様で、「定量的に評価する」ことで、明確なアクションプランを描くことができます。
最後に、今回ご紹介した一連の流れは、AIライフサイクル全体の「開発」に該当します。RAGを企業として利用するには、監視や運用、管理を含めてガバナンスを効かせる必要があります。
弊社では、先ほどの「Ragas」の指標やAIエージェントの機能を含めて、カバーできる「watsonx.governance」というAIガバナンスプラットフォームをご紹介できます。
是非、ご興味ある方はご連絡ください!