🐡

Agentic RAGとは

2024/11/07に公開

概要

以下の記事のまとめ。
一般的なRAGの問題点をagentを使うことで解決している。
https://weaviate.io/blog/what-is-agentic-rag

従来のRAGの問題点

問題点として以下があげられる。

1度のベクトルサーチを行いデータを取ってこれないと後続の処理が全て意味がなくなる。
情報のリソースがベクトルDBだけである。

Agentic RAG

Single-Agent RAG (Router)

  • ベクトルサーチ
  • web検索
  • 計算機など

の様なtools持ったエージェントが最初にクエリを処理して必要な情報を取ってくる。
その結果をLLMに渡して回答を生成させる。

その際にagentは以下の様な思考のループを回すので、従来のragに比べて柔軟性がある。
必要なリソースが取れるまでループできる。
取りに行くtoolsをagentが判断してくれる。

Thought: Upon receiving the user query, the agent reasons about the next action to take

Action: the agent decides on an action and executes it (e.g., tool use)

Observation: the agent observes the feedback from the action

Multi-agent RAG Systems

最初のagentが必要な情報を取りに行くことは同じだが、toolsではなく専門のagentに対して問い合わせを行う。

それぞれのagentが自身のタスクに専念することで精度の向上が見込める。

(感想)
それぞれのagentの思考の連鎖はその場限りのものなので、コンテキストを無駄に使わないという利点がありそう。
プログラミングにおける関数のようになっているのでお互いの処理の中身は知らなくて良い。

Agentic RAGの実装

実装可能なフレームワーク

https://github.com/stanfordnlp/dspy

https://www.langchain.com/

https://www.llamaindex.ai/

https://www.crewai.com/

https://github.com/openai/swarm

https://docs.letta.com/introduction

知らないフレームワークも結構あるので後日触ってみる。

また先日調べたllama-agentもまさにMulti-agent RAG Systems構成になっていた。

https://zenn.dev/hijikix/articles/3f0cb839ef267e

Agentic RAGの問題点

待ち時間がそれなりにかかる。

エージェントとして振る舞わせるllmにはかなりの賢さが必要になるので、場合によっては回答自体が返せなくなるケースもある。
その場合失敗モード(何らかの理由で失敗したことをユーザに通知)を実装する必要がある。

感想

RAGで一番気になっていた、やり直ししてくれないという部分が解消されているだけでも大分良さそうに見える。

Discussion