ブログ

RAG と AI Agent は何が違うのか?

はじめに

FLYWHEELでは、2024年6月に Conata Data Agent に関するプレスリリースを出しました[1]。Conata Data Agent は、FLYWHEELがこれまで培ってきた、データ処理技術、データ分析技術、データ検索技術に生成AI技術を掛け合わせることで、これまでより多くの人が利用でき、より深いデータ活用を可能にすることを目指しています。

Conata Data Agent についてお客様と話すなかで、「RAGとの違いは何か?」といった趣旨のご質問をいただくことがあります。本記事では、RAG (Retrieval-Augmented Generation) と AI Agent (LLM-based AI Agent) の違いについて解説して、ビジネス現場での活用について考察していきます。

 

RAG (Retrieval-Augmented Generation) 

2022年11月にChatGPTが発表されて以来、ユーザーの質問に豊富な知識と流暢な言語で答える Conversational AI が注目を集めています。ビジネス場面での利用についても期待が高い一方で、企業内の知識や最新の情報については回答できないという課題がありました。そういった課題に対して、2020年に提案された RAG (Retrieval-Augmented Retrieval) [2]というフレームワークが脚光を浴びています。RAGは、事前学習モデルの持つ一般常識と滑らかな言語生成能力を持つ Conversational AI が外部知識を利用することで、企業内の情報に基づいて回答を生成することを実現することができます。

Naive RAG や Basic RAG と呼ばれる基本形のRAGは、質問に関連するドキュメントをシンプルなベクトル検索で取得し、取得したドキュメントと元の質問を LLM に与えて回答を生成します。RAG の回答の品質は、適切なドキュメントが発見できるかの指標である検索精度と検索された関連ドキュメントに基づいてユーザーの期待する回答を生成する能力に依存します。

Naive RAG では十分な回答の品質が得られないケースに対応するために Naive RAG の構成要素を改善したものを「Advanced RAG」と呼んだりします[3]。Advanced RAG では、長いドキュメントを分割したり、ドキュメントにメタデータを付与したりすることによる検索インデックスの最適化、質問文から検索クエリを生成する際のクエリ書き換えやクエリ拡張、検索されたドキュメントリストを質問文との関連度に基づいて並べ替えたり質問文を考慮してドキュメントを要約したりすることによる LLM に渡すドキュメントの品質向上、といったことがおこなわれます。お気づきの通り、Advanced RAG の改善対象は前半の検索部分に集中しており、Naive RAG では適切なドキュメントが見つけられないことが原因で回答の品質がよくないケースが多かったことを想像させます。Advanced RAG では、検索エンジンの開発や精度改善で使われるテクニックがよく使われています。RAG paper は LLM community から出てきた framework なので検索部分がシンプルなベクトル検索となっていますが、検索エンジニアが RAG を提案したとしたら最初から Advanced RAG のような検索テクニックを含んでいたのではないかと思います(個人の見解です)。

RAG の構成要素を柔軟にカスタマイズしてさまざまなユースケースに対応することを可能にするために Advanced RAG で使われるプロセスをモジュール化したものを Modular RAG と呼びます[3]。柔軟なモジュール構造によって、実行時に最適なモジュールを選択したり検索と生成のプロセスを複数回繰り返して精度を向上したりといったことが可能になっています。Modular RAG で実現される能力の一部は、後述する AI Agent の能力と重なる部分があります。

以下では、Advance RAG や Modular RAG と書かずに単に RAG と書いている場合は、Naive RAG を表すこととします。

 

AI Agent (LLM-based AI Agent)

人間のように思考して問題を解決する AI Agent のコンセプトは古く1950年代までさかのぼります[4]。当初は、大量のルールを集約したルールベースのシステムでしたが、統計モデルや機械学習などのアプローチを取り入れて進化していきます。

2024年にはいってから、「AI Agent」に対する人々の関心が急速に高まってきています[5]。これは、AI Agent のプランニングや意思決定といった部分に、LLMを利用することで AI Agent の能力が高まり活用の場面が大きく広がることが期待されているためだと考えられます。従来の AI Agent と区別するために LLMを利用して実現される AI Agent を LLM-based AI Agent や LLM-based Agent と呼ぶこともあります。Conata Data Agent も LLM を利用しているので LLM-based AI Agent と言えます。

AI Agent は与えられた目的とコンテクストに対して、計画、実行、評価を通して目的の達成を目指します。自ら計画をたてそれを実行することから「自律的」(autonomous) であるということが AI Agent の特徴としてしばしば言及されます。AI Agent の定義やアーキテクチャにはさまざまなものがありますが、ここでは、一つのデザインパターン集 Agentic Design Patterns [6] に基づいて説明していきます。

計画 (Planning)

与えられた目的を達成するために、どのようなサブタスクをどういう順序で実行するべきかという計画を立案します。例えば、売上データの時系列チャートを表示するという目的が与えられた場合、売上データの格納されているテーブルを特定し、テーブルから必要なデータを取り出すSQLを生成し、それを実行してデータを取得し、取得したデータを可視化するコードを生成して実行する、といったステップを計画します。

ツールの利用 (Tool Use)

LLMは、Webサーチやコードの実行といった外部ツールを呼び出すことができます。上記の計画(Planning)の例にあった、SQLの実行やチャートの描画などもツールの利用になりますし、文書検索において Google Drive や Slackといった異なるデータソースに対する検索をそれぞれツールとして定義することもできます。

検証 (Reflection)

LLMが自身の出力結果を評価し、目的達成のための基準に達していないと判断した場合には、プロセスを見直し改善点を見つけて修正した上で再度実行をやり直します。この検証 (Reflection) を行うことにより最終的な出力結果の品質を向上させることができます。また、検証 (Reflection) はハルシネーションの抑制にも効果があります。

Agentic Design Patterns にはもう一つ、複数 Agent の協調 (Multiple-agent Collaboration) がありますが、これについては別の機会に譲りたいと思います。

上記のデザインパターンを利用した AI Agent のアーキテクチャの一例は下記の図のようになります。

 

RAG は、このアーキテクチャに対して、計画 (Planning) の部分を文書検索 (Document Retrieval) をしてから回答生成 (Generation) をするというあらかじめ定義したプロセスとする制約を入れたものとして捉えることができます。この RAG のプロセスに対して、検索部分を強化したり、検証 (Reflection) を導入した Advanced / Modular RAG は、AI Agent のアーキテクチャに近づいた RAG であると見ることもできます。

 

RAG と AI Agent の違い

すでに触れたように AI Agent のコンセプトは RAG より古く、RAG が発展して AI Agent へと進化したというよりは、RAG が AI Agent の要素を取り入れて Advanced RAG や Modular RAG へと進化してきたと考えられ、そのため進化した RAG と AI Agent の境界が曖昧になってきているのではないかと思われます。以下の表に RAG と AI Agent の違いを整理してみました。AI Agent が RAG を包含しているのがおわかりいただけるかと思います。

RAGAI Agent
目的情報の取得と回答の生成多様な目標の達成
ツール文書検索さまざまなツール(検索、データの可視化・分析など)
検証基本的になし結果の評価と再実行
柔軟性低い(あらかじめ定義された手順)高い(状況に応じて動的に適応)

AI Agent を採用する利点は、単なる質問への回答を超えて、多様なゴール設定が可能になることです。また、検証プロセスにより精度の高い出力が期待でき、より複雑な問題にも柔軟に対応できます。RAGの進化形であっても、根本的に「RetrieveしてGenerateする」というプロセスに留まるため、特定のシナリオではRAGが最適である一方、より幅広いニーズには AI Agent が適しています。

 

まとめ

本記事では、Conata Data Agent に関連して質問を受けることの多い RAG と AI Agent の違いについて説明するために、RAG と AI Agent それぞれについて解説したうえで、AI Agent が RAG を包含するコンセプトであること、AI Agent は、多様でより複雑なタスクに対応できることを紹介しました。

AI Agent が RAG を包含するからといってすべての課題に AI Agent を適用すればいいというものでもありません。課題によっては Advanced RAG で解決する方が効率的な場合もありますし、高精度な文書検索さえあれば解決できる課題もあります。FLYWHEELでは、お客様企業のビジネス課題とお持ちのデータに対して最適なソリューションの提案から開発、運用までを提供しています。ぜひお気軽にご相談ください。

また、FLYWHEEL では、Data Agent を含むデータ活用プラットフォーム Conata の開発、Conata を利用したソリューション構築を一緒に進めるメンバーを募集しています。ご興味ある方はまずは FLYWHEEL のメンバーと話してみませんか?お待ちしています!

 

References