本記事はFIXERが提供する「cloud.config Tech Blog」に掲載された「RAGの精度改善について(AWS Summit 2024Japan)」を再編集したものです。
はじめに
6月20日に開催されたAWS Summit Japanに参加してきました。
そこで、TIS株式会社様がRAGの精度改善方法について紹介しているセッション(「データサイエンス専門家が作る、10年先を見据えた生成AI基盤とは」)があったので、それについて執筆したいと思います。
※権利の都合上、写真は載せられません。ご了承ください。
RAGの精度改善方法①ドキュメントの品質改善
一つ目はドキュメントの品質を改善することです。
RAGを活用する場合、インプットとなるドキュメントの品質を上げたり、不要な情報を整理することで回答の精度も改善されます。
例えば、社内規定等のドキュメントで古いバージョンと新しいバージョンの資料が混在している場合、LLMはどちらが正しい情報か判断できないので、ハルシネーションが起こりやすくなるそう。
こちらの件に関しては、新しいドキュメントと古いドキュメントを整理することで解決します。
コールセンター等のFAQ履歴の場合は、そのままLLMが適切に処理できないので、回答の品質が落ちてしまいます。
こちらは正しいFAQとして校正してからRAGにアップロードすればよいでしょう。
一つ目の改善方法については、ドキュメントの量が多ければ多いほど難しくなるのではと思いました。
RAGの精度改善方法②ドキュメント構造化
二つ目はドキュメントを構造化することです。
RAGのシステムでは、ドキュメントをベクトルに変換し、その類似度で計算することで、「意味が近い文書」を検索することができるベクトルデータベースが使われることが多いです。
この、ドキュメントを適切な単位でチャンキング(ドキュメントを分割してベクトル化する単位)することが重要なのです。
簡易なRAGシステムでは、チャンキングが500文字単位で区切るなど、不十分な状態でのベクトル化が行われていることが多い。
目安としては、200~500文字程度が良いとされています。
RAGの精度改善方法③検索方法の改善
三つめは検索方法を改善することです。
ベクトルデータベースの検索は、質問文と「意味が近い」文書を探す(類似しているベクトルを探す)のが基本だが、実業務ではそれ以外の観点での検索絞り込みが必要です。
単純な文書の類似度だけではなく、その他の条件で適切にフィルタリングや検索結果の精度を向上させ、LLMの出力の品質を上げることができます。
「人事」関係の質問であれば、人事関係のドキュメントから、
「経理」関係の質問であれば、経理関係のドキュメントから、
のようにフィルタリングすれば検索精度も上がります。
また、専門用語が多い文章ではベクトル検索が効きにくいので、従来のキーワード検索(全文検索)を組み合わせた「ハイブリット検索」が扱えるデータベースを選択することも重要です。
RAGの精度改善方法➃コンテキストの改善
検索結果からコンテキストを作成する際にも、いくつかの工夫が可能です。
Parent Document Retriverと呼ばれる手法で、検索用ベクトルと、コンテキスト用ベクトルを分けることで精度が改善することがある。
検索用ベクトルは質問文にヒットしやすいに、小さいチャンキングの単位で、
コンテキスト用ベクトルは、LLMに渡したときに一貫性のある情報を与えるためにより大きいチャンキングの単位で分割すると良いでしょう。
終わり
すごい貴重なお話だったので真っ先にテックブログに載せました。
少しでもお役に立つと幸いです。
村越航太(むらこし こうた)/FIXER
2023年度卒の文系エンジニアです。
開発面でもそれ以外でも、何度も挑戦して、人間として成長していきたいなと思っています。
この連載の記事
-
TECH
生成AIに感謝を伝えると回答精度が向上する? GaiXerで検証した -
TECH
生成AIアシスタントのAmazon QにS3のデータソースを連携する方法 -
TECH
LLMをローカルPCで動かし“話し相手”を作ってみた結果…… -
TECH
インスタグラムのエフェクトを「Meta Spark Studio」で自作してみた -
TECH
インスタエフェクト自作第二弾!“小顔デカ目効果”を作る -
TECH
RAGの基礎知識を得て“ゼロ円RAGシステム”を構築してみた -
TECH
Microsoft Fabricを触ってデータサイエンスに超入門してみた! -
TECH
LLM活用はチャットだけじゃない、自由記述文を共通フォーマットに落とし込む方法を学んだ -
TECH
Gemini 1.5 Proの特徴とは? Gemini API経由で試す -
TECH
Azure OpenAIの便利な「jsonモード」の使い方&制限事項 -
TECH
生成AIのClaude 3に本格的なコーディングをさせるプロンプトを作った - この連載の一覧へ