■技術解説■ 生成AIのハルシネーションを低減するRAG。図表データまで特定できる"企業向けRAG"とは?(前編)
生成AIのハルシネーションを低減する技術として注目されるRAG(Retrieval Augmented Generation:検索拡張生成)。RAGの概念、動作の仕組み、RAGにおける検索性能の重要さ、RAGの性能を向上させる戦略について説明します。
1回目の今回は、RAGの概念や仕組みや、RAGにおいて重要なポイントについて解説します。
RAGの概念
生成AI活用時におけるハルシネーションを減らし、より正確な回答を出力する方法としてRAGが注目されています。その動向に伴い、企業向けの生成AIツールを提供している企業において、「RAG(Retrieval Augmented Generation、検索拡張生成)」を前面に打ち出す企業が増えてきています。
RAGは、2020年5月に発表された論文「Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks(知識集約型NLPタスクのための検索拡張生成)」で初めて登場した概念です。この論文の第一著者であるパトリック・ルイス(Patrick Lewis)博士はMeta社に在籍中にこの論文を執筆し、現在はCohereでLLMのモデル開発リードを務めています。
この論文での問題定義は明確です。LLM(大規模言語モデル)は、あらかじめAIのトレーニングが完了しており、一般的な質問に対してはかなりうまく答えますが、ドメイン特化の知識などについては限界があります。また、継続的に新しい知識がアップデートされない点も課題です。
これに対する代替案は主に2つあります。
1つ目は、LLMに対してドメイン特化のファインチューニングを行うことですが、コストもかかり、最新情報への迅速な対応が難しいというデメリットがあります。
もう1つの案が、LLMに追加情報を与えるRAGです。
この論文では、RAGの概念としてパラメータとノンパラメータを組み合わせるアプローチを提案しています。簡単に言えば、オープンブック試験(参考図書を持ち込める試験)と考えていただければと思います。頭の中で覚えている内容(=パラメータ)と参考図書(=ノンパラメータ)を組み合わせ、明確なコンテキストの中で最新の情報が反映された答えを出します。
それでは、RAGがどのような流れでどのように答えを生成するのか見ていきましょう。
RAGの仕組み
1. 検索(Retrieve)
質問を入力すると、外部ナレッジから関連する内容を検索します。ベクトルデータベースから見つかった内容の中で、質問と関連度の高いものがコンテキストとなります。
2. 拡張(Augment)
ユーザーの質問と検索結果の追加コンテキストがプロンプトテンプレートに入力されます。
3. 生成(Generate)
最後に2つのプロンプトがLLMに提供され、回答が生成されます。
RAGにおいて重要なこと
上記の検索→拡張→生成のステップを見ると、RAGにおいて、検索(Retriver)の精度が重要であることが理解できるのではないでしょうか。
質問に関して適切な答えをベクトルデータベースから見つけることができれば、その後の拡張、生成のステップにうまく繋がり、求める回答を返すことができます。
逆を言えば、最初の検索ステップの検索精度が低い場合、拡張、生成される回答内容が期待に対して差分を産んでしまう恐れがあります。
企業利用に耐えうるRAGとは
企業向けのRAGにおいては、複雑な表から答えを見つける、複数ページの文書から質問に関連するページを見つけるRetriverなど、解決しなければならない問題がたくさんあります。
"RAGを実装している"というソリューションの中には、単純な文書や簡単な質問に対応できるだけというものも存在します。企業が実際の業務で使用するドキュメントは、文書量も多く、内容も複雑で、表や図などが多く入る場合が多くあります。
次回の「■技術解説■ 生成AIのハルシネーションを低減するRAG。図表データまで特定できる"企業向けRAG"とは?(後編)」では、表でRAG性能を高めるためのAllganizeのアプローチを解説します。