RAGには取り組んできたものの、どうしても精度に満足できないと悩む人は多いでしょう。本記事では、ファインチューニングや蒸留に移る前に試すべき、比較的簡単なRAGの工夫や新たな手法を紹介します。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
生成AIの業務活用についてのさまざまな悩みに答える本連載。今回取り上げるお悩みはこちらです。
RAGの精度がどうしても上がらない ファインチューニングとかをやらないとダメですか?
第2回「RAGの精度が出ないのはなぜ? どうしたらいいですか?」では、RAG(Retrieval-Augmented Generation:検索拡張生成)の精度向上に向けた基本的な改善策をご紹介しました。
しかし、これらの対策を試しても「まだ精度が十分でない」と悩む方は多いのではないでしょうか。そうなると、次に検討したくなるのが「ファインチューニング」や「蒸留」といった、より高度な手法です。
とは言え、ファインチューニングや蒸留はやや難易度が高く、「重たい」作業になりますから、これらを実施する前に試せることがまだ残っていないかどうかを確認してみましょう。最近のLLM(大規模言語モデル)における精度向上技術は急速に進化しており、第2回でご紹介した改善策以外にも、比較的簡単に導入できる工夫や新しい手法が次々と登場しています。
本記事では、ファインチューニングや蒸留といった「重たい」施策に進む前に試してみるべき改善策や新しいアプローチについて、エンジニアではない方にも分かるように解説していきます。
まずは、これまでに試した改善策が効果的だったかどうかをあらためて確認してみましょう。「実際に試してみたものの、なんとなく精度が出ない」といった抽象的な結果ではなく、個々のケースについて合格基準を満たした/満たさなかった率を定量的に測定することで、再調整前後の比較に説得力が増します。
キーワード検索とベクトル検索を組み合わせたり、「ログイン」「login」といった表記の正規化をしたり、「ログイン=サインイン」のような同義語を辞書登録するなど、表記の揺らぎを緩和したりする際、狙った用語や言い回しを適切に捉えていないとせっかくの対策も効果が出ません。実際に入力されたプロンプトやRAGで、利用する文書に合わせて再調整すると、精度が向上することも考えられます。
文書の目次やヘッダー、フッターのようなノイズを取り除いたり、画像・図表をテキスト化するアプローチを第2回でご紹介しました。既存の文書を大きく変えることは難しいのですが、先ほど触れた表記の揺らぎなどを改善したり、場合によっては誤字・脱字の少ない文書に整えることで、検索精度の改善につながる可能性があります。
文書を段落や見出しごとにチャンク(大きな情報を扱いやすく分割したテキストの断片)を分けるのが基本で、かつオーバーラップ(隣接するチャンク間で共有される重複部分)を取り入れることが効果的です。「適度な文字数、かつ意味的に分割される」ようにチャンキングの設定を調整し、精度を再評価してみるのも良いでしょう。
生成AI自身に回答を評価させたり、検索結果の再評価を行わせたりし、その評価が本当に適切かどうかを、生成された回答だけでなく途中経過も含めて検証してみます。期待通りの挙動をしているかどうかを確認して初めて、Self-RAGやRerankingの導入効果が確認できます。
ここまでやってもまだ満足のいかない精度にとどまっているのであれば、次に挙げる対策を試してみても良い段階でしょう。これまでに試したことと似通った部分も多いのですが、細かいことで大きな効果を発揮することもありますので、1つずつ解説していきます。
第2回では既にキーワード検索やベクトル検索を試していますが、さらに複数の異なる検索手法を並行的に実行し、結果を統合することで精度を上げるアプローチが「マルチパス検索」です。
ベクトル検索と似た手法に「セマンティック検索」があります。これは似たような文・単語を探すのではなく、意図や目的に合った結果を出力する手法です。
例えば、ユーザーが「猫の飼い方」と入力した場合、「猫」「飼い方」という意味に近いキーワードの情報ではなく、動物のしつけや食餌療法を知りたい可能性もあります。関連する情報を広く探りたい場合は採用を検討しても良いでしょう。
ユーザーが入力した質問を、より検索しやすい形に変換することで精度を向上させます。文書の方で揺らぎ対策が行えている場合、入力された言葉についても、同義語を展開したり専門用語を補完したりすることで、あいまいな質問でも検索精度を上げられます。
例えば、「ログインできない」という質問が入力された場合、「ログイン失敗」「認証エラー」などのキーワードに展開したり、「インターネットにつながらない」を「Wi-Fiネットワーク接続不可」「ブラウザでWebサイトが表示されない」といった、粒度を細かくした言葉に変えて検索します。
質問と文書の類似度だけでなく、会話の流れや業務コンテキストを考慮して検索条件を設定する手法です。
プロンプトを工夫して精度を高める「プロンプトエンジニアリング」は生成AIにおいて注目されましたが、最近では「よりよい質問を与える」ことだけでなく、「よりよい流れを整える」ことも重要視されてきています。例えば、1つ前の質問が「Aシステムについて」ならば、次の質問も同じシステムの文書を優先するよう条件を追加することで、より自然で文脈に沿った回答が期待できます。
Copyright © ITmedia, Inc. All Rights Reserved.