■技術解説■ 生成AIのハルシネーションを低減するRAG。図表データまで特定できる"企業向けRAG"とは?(前編)

■技術解説■ 生成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のトレーニングが完了しており、一般的な質問に対してはかなりうまく答えますが、ドメイン特化の知識などについては限界があります。また、継続的に新しい知識がアップデートされない点も課題です。

Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks
Large pre-trained language models have been shown to store factual knowledge in their parameters, and achieve state-of-the-art results when fine-tuned on downstream NLP tasks. However, their ability to access and precisely manipulate knowledge is still limited, and hence on knowledge-intensive tasks, their performance lags behind task-specific architectures. Additionally, providing provenance for their decisions and updating their world knowledge remain open research problems. Pre-trained models with a differentiable access mechanism to explicit non-parametric memory can overcome this issue, but have so far been only investigated for extractive downstream tasks. We explore a general-purpose fine-tuning recipe for retrieval-augmented generation (RAG) -- models which combine pre-trained parametric and non-parametric memory for language generation. We introduce RAG models where the parametric memory is a pre-trained seq2seq model and the non-parametric memory is a dense vector index of Wikipedia, accessed with a pre-trained neural retriever. We compare two RAG formulations, one which conditions on the same retrieved passages across the whole generated sequence, the other can use different passages per token. We fine-tune and evaluate our models on a wide range of knowledge-intensive NLP tasks and set the state-of-the-art on three open domain QA tasks, outperforming parametric seq2seq models and task-specific retrieve-and-extract architectures. For language generation tasks, we find that RAG models generate more specific, diverse and factual language than a state-of-the-art parametric-only seq2seq baseline.

参考)論文へのリンク



これに対する代替案は主に2つあります。

1つ目は、LLMに対してドメイン特化のファインチューニングを行うことですが、コストもかかり、最新情報への迅速な対応が難しいというデメリットがあります。

もう1つの案が、LLMに追加情報を与えるRAGです。

この論文では、RAGの概念としてパラメータとノンパラメータを組み合わせるアプローチを提案しています。簡単に言えば、オープンブック試験(参考図書を持ち込める試験)と考えていただければと思います。頭の中で覚えている内容(=パラメータ)と参考図書(=ノンパラメータ)を組み合わせ、明確なコンテキストの中で最新の情報が反映された答えを出します。

それでは、RAGがどのような流れでどのように答えを生成するのか見ていきましょう。

RAGの仕組み

1. 検索(Retrieve)

質問を入力すると、外部ナレッジから関連する内容を検索します。ベクトルデータベースから見つかった内容の中で、質問と関連度の高いものがコンテキストとなります。

2. 拡張(Augment)

ユーザーの質問と検索結果の追加コンテキストがプロンプトテンプレートに入力されます。

3. 生成(Generate)

最後に2つのプロンプトがLLMに提供され、回答が生成されます。

RAG(検索拡張生成)の仕組み

RAGにおいて重要なこと

上記の検索→拡張→生成のステップを見ると、RAGにおいて、検索(Retriver)の精度が重要であることが理解できるのではないでしょうか。

質問に関して適切な答えをベクトルデータベースから見つけることができれば、その後の拡張、生成のステップにうまく繋がり、求める回答を返すことができます。

逆を言えば、最初の検索ステップの検索精度が低い場合、拡張、生成される回答内容が期待に対して差分を産んでしまう恐れがあります。

企業利用に耐えうるRAGとは

企業向けのRAGにおいては、複雑な表から答えを見つける、複数ページの文書から質問に関連するページを見つけるRetriverなど、解決しなければならない問題がたくさんあります。

"RAGを実装している"というソリューションの中には、単純な文書や簡単な質問に対応できるだけというものも存在します。企業が実際の業務で使用するドキュメントは、文書量も多く、内容も複雑で、表や図などが多く入る場合が多くあります。

次回の「■技術解説■ 生成AIのハルシネーションを低減するRAG。図表データまで特定できる"企業向けRAG"とは?(後編)」では、表でRAG性能を高めるためのAllganizeのアプローチを解説します。

関連情報

Allganize | Alli LLM App Market
Alli LLM App Marketは、企業向けの生成AI、LLMアプリを100個以上のテンプレートから選び、即座に業務に活用できるLLMアプリプラットフォームです。「契約書チェック」「クレーム対応メール作成」「特定文書の要約」「社内ドキュメントから自動応答」「新規事業アイディア提案」など、すぐに業務活用できる生成AI、LLMアプリのテンプレートを提供しています。