• AI对话
  • AI绘画
  • AI办公
  • AI语音
  • AI视频
  • 智能体
  • AI最新资讯
  • 协会动态
  • 图片广场
  • 智能体广场
  • AI教育
  • AI商城

AI门户

logo
      首页
    • AI工具
    • AI资讯
    • AI社区
    • AI商业
    • APP
登录

什么是 Agentic RAG (智能体 RAG)

作者 · Erika Cardenas, Leonie Monigatti来源 · Weaviate
浏览 · 99次2025-02-21

2024年11月5日 · 阅读时长 11 分钟

Agentic Retrieval Augmented Generation (RAG)

虽然检索增强生成 (RAG) 在 2023 年占据主导地位,与此同时,智能体工作流 (agentic workflows) 正在推动 2024 年的巨大进步。AI 智能体 (AI agents) 的使用为构建更强大、更稳健、更通用的基于大型语言模型 (Large Language Model, LLM) 的应用程序开辟了新的可能性。其中一种可能性是在 agentic RAG 流程中用 AI 智能体增强 RAG 流程。

本文将向您介绍智能体 RAG 的概念、实现、优点与不足。

智能体 RAG 的基础

Agentic RAG 描述了一种基于 AI 智能体的 RAG 实现。在深入探讨之前,让我们快速回顾一下 RAG 和 AI 智能体的基本概念。

什么是检索增强生成 (RAG)

检索增强生成 (RAG) 是一种构建基于 LLM 的应用程序的技术。它利用外部知识源为 LLM 提供相关上下文并减少幻觉生成。

一个简单的 RAG 流程由一个检索组件(通常由一个嵌入模型和一个向量数据库组成)和一个生成组件(一个 LLM)组成。在推理时,系统使用用户查询对索引文档进行相似性搜索,以检索与查询最相似的文档,从而为 LLM 提供额外的上下文。

Vanilla RAG

典型的 RAG 应用程序有两个相当大的局限性:

  1. 简单的 RAG 流程只考虑一个外部知识源。然而,有些解决方案可能需要两个外部知识源,有些解决方案可能需要外部工具和 API,例如网络搜索。

  2. 它们是一次性解决方案,这意味着上下文只检索一次。没有对检索到的上下文质量进行推理或验证。

什么是 AI 系统中的智能体 (Agents)

随着 LLM 的普及,AI 智能体和多智能体系统的新范式应运而生。AI 智能体是具有角色和任务的 LLM,可以访问内存和外部工具。LLM 的推理能力帮助智能体规划所需的步骤并采取行动来完成手头的任务。

因此,AI 智能体的核心组件包括以下几个方面:

  • LLM(具有角色和任务)

  • 内存(短期和长期)

  • 规划(例如,反思、自我批评、查询路由等)

  • 工具(例如,计算器、网络搜索等)

Components of an AI agent

一个流行的框架是 ReAct 框架。ReAct 智能体可以通过将路由、查询规划和工具使用组合成一个实体来处理顺序的多部分查询,同时保持状态(在内存中)。

ReAct = Reason + Act (with LLMs) (推理 + 行动(使用 LLM))

该过程包括以下步骤:

  1. 思考:收到用户查询后,智能体会推理下一步要采取的行动

  2. 行动:智能体决定一个行动并执行它(例如,工具使用)

  3. 观察:智能体观察行动的反馈

  4. 该过程持续迭代,直到智能体完成任务并响应用户。

    ReAct framework

什么是 Agentic RAG?

Agentic RAG 描述了一种基于 AI 智能体的 RAG 实现。具体来说,它将 AI 智能体整合到 RAG 流程中,以协调其组件并执行除简单信息检索和生成之外的其他操作,从而克服非智能体流程的局限性。

Agentic RAG 描述了一种基于 AI 智能体的 RAG 实现。

Agentic RAG 如何工作?

尽管智能体可以被整合到 RAG 流程的不同阶段,但 agentic RAG 最常见的是指在检索组件中使用智能体。

具体来说,检索组件通过使用具有访问不同检索器工具的检索智能体 (retrieval agents) 而变得具有智能体性,例如:

  • 向量搜索引擎(也称为查询引擎),它对向量索引执行向量搜索(就像在典型的 RAG 流程中一样)

  • 网络搜索

  • 计算器

  • 任何以编程方式访问软件的 API,例如电子邮件或聊天程序

  • 以及更多。

然后,RAG 智能体可以对以下检索场景示例进行推理和行动:

  1. 决定是否检索信息

  2. 决定使用哪个工具来检索相关信息

  3. 制定查询本身

  4. 评估检索到的上下文并决定是否需要重新检索。

Agentic RAG 架构

与顺序的简单 RAG 架构相比,agentic RAG 架构的核心是智能体。Agentic RAG 架构可以具有不同级别的复杂性。在最简单的形式中,单智能体 RAG 架构是一个简单的路由器。但是,您也可以将多个智能体添加到多智能体 RAG 架构中。本节讨论两种基本的 RAG 架构。

单智能体 RAG (路由器)

在最简单的形式中,agentic RAG 是一个路由器。这意味着您至少有两个外部知识源,智能体决定从哪个知识源检索额外的上下文。但是,外部知识源不必局限于(向量)数据库。您也可以从工具中检索更多信息。例如,您可以进行网络搜索,也可以使用 API 从 Slack 频道或您的电子邮件帐户中检索其他信息。

Single Agent RAG System (Router).png

多智能体 RAG 系统

正如您所猜测的,单智能体系统也有其局限性,因为它将推理、检索和答案生成都集中在一个智能体中。因此,将多个智能体链接到多智能体 RAG 应用程序中是有益的。

例如,您可以有一个主智能体 (master agent),它协调多个专门的检索智能体之间的信息检索。例如,一个智能体可以从专有的内部数据源检索信息。另一个智能体可以专门从您的个人帐户(例如电子邮件或聊天)中检索信息。另一个智能体也可以专门从网络搜索中检索公共信息。

Multi Agent RAG System.png

智能体的其他应用

上面的示例显示了不同检索智能体的使用。但是,您也可以将智能体用于检索以外的目的。RAG 系统中智能体的可能性是多种多样的。

Agentic RAG vs. 普通 RAG

虽然 RAG 的基本概念(发送查询、检索信息和生成响应)保持不变,但工具使用将其泛化,使其更加灵活和强大。

可以这样想:普通 RAG 就像在图书馆(智能手机出现之前)回答一个特定的问题。另一方面,Agentic RAG 就像手里拿着一部智能手机,里面有网络浏览器、计算器、你的电子邮件等等。

普通 RAG 智能体 RAG
访问外部工具 (Access to external tools) 否 是
查询预处理 (Query pre-processing) 否 是
多步检索 (Multi-step retrieval) 否 是
验证检索到的信息 (Validation of retrieved information) 否 是

实现 Agentic RAG

如前所述,智能体由多个组件组成。要构建 agentic RAG 流程,有两种选择:具有 Function Calling 功能的语言模型或智能体框架。两种实现都可以得到相同的结果,这只取决于您想要的控制和灵活性。

具有 Function Calling 功能的语言模型 (Language Models with Function Calling)

语言模型是 agentic RAG 系统的主要组件。另一个组件是工具,它使语言模型能够访问外部服务。具有 Function Calling 功能的语言模型提供了一种构建智能体系统的方法,允许模型与预定义的工具进行交互。语言模型提供商已将此功能添加到他们的客户端中。

2023 年 6 月,OpenAI 发布了 针对 gpt-3.5-turbo 和 gpt-4 的 Function Calling (函数调用)。它使这些模型能够可靠地将 GPT 的功能与外部工具和 API 连接起来。开发人员迅速开始构建将 gpt-4 插入代码执行器、数据库、计算器等的应用程序。

Cohere 进一步推出了他们的连接器 API,以将工具添加到 Command-R 系列模型中。此外,Anthropic 和 Google 推出了针对 Claude 和 Gemini 的 Function Calling。通过使用外部服务为这些模型提供支持,它可以访问和引用网络资源、执行代码等。

Function Calling 不仅适用于专有模型。Ollama 为流行的开源模型(如 Llama3.2、nemotron-mini 和 其他模型)引入了工具支持。

要构建工具,您首先需要定义函数。在此代码片段中,我们正在编写一个函数,该函数使用 Weaviate 的 混合搜索 (hybrid search) 从数据库中检索对象:

def get_search_results(query: str) -> str:
"""向 Weaviate 的混合搜索发送查询。将响应解析为 {键}:{值} 形式的字符串。"""
​
response = blogs.query.hybrid(query, limit=5)
​
stringified_response = ""
for idx, o in enumerate(response.objects):
stringified_response += f"搜索结果:{idx+1}:\n"
for prop in o.properties:
stringified_response += f"{prop}:{o.properties[prop]}"
stringified_response += "\n"
​
return stringified_response

然后,我们将通过 tools_schema 将函数传递给语言模型。然后,该模式将在提示中用于语言模型:

tools_schema=[{
'type': 'function',
'function': {
'name': 'get_search_results',
'description': '获取提供的查询的搜索结果。',
'parameters': {
'type': 'object',
'properties': {
'query': {
'type': 'string',
'description': '搜索查询。',
},
},
'required': ['query'],
},
},
}]

由于您直接连接到语言模型 API,因此您需要编写一个在语言模型和工具之间进行路由的循环:

def ollama_generation_with_tools(user_message: str,
tools_schema: List, tool_mapping: Dict,
model_name: str = "llama3.1") -> str:
messages=[{
"role": "user",
"content": user_message
}]
response = ollama.chat(
model=model_name,
messages=messages,
tools=tools_schema
)
if not response["message"].get("tool_calls"):
return response["message"]["content"]
else:
for tool in response["message"]["tool_calls"]:
function_to_call = tool_mapping[tool["function"]["name"]]
print(f"调用函数 {function_to_call}...")
function_response = function_to_call(tool["function"]["arguments"]["query"])
messages.append({
"role": "tool",
"content": function_response,
})
​
final_response = ollama.chat(model=model_name, messages=messages)
return final_response["message"]["content"]

您的查询将如下所示:

ollama_generation_with_tools("HNSW 与 DiskANN 有何不同?",
tools_schema=tools_schema, tool_mapping=tool_mapping)

您可以按照 此教程 重新创建上述内容。

智能体框架 (Agent Frameworks)

DSPy、LangChain、CrewAI、LlamaIndex 和 Letta 等智能体框架已经出现,以促进使用语言模型构建应用程序,并通过将预构建的模板组合在一起来简化构建智能体 RAG 系统。

  • DSPy 支持 ReAct 智能体和 Avatar 优化。Avatar 优化描述了对每个工具的描述使用自动提示工程。

  • LangChain 提供了许多使用工具的服务。LangChain 的 LCEL 和 LangGraph 框架进一步提供了内置工具。

  • LlamaIndex 进一步引入了 QueryEngineTool,这是一个检索工具模板的集合。

  • CrewAI 是开发多智能体系统的领先框架之一。用于工具使用的关键概念之一是在智能体之间共享工具。

  • Swarm 是 OpenAI 构建的用于多智能体编排的框架。Swarm 同样关注如何在智能体之间共享工具。

  • Letta 将反映和改进内部世界模型的功能作为接口。这意味着除了回答问题之外,还可以使用搜索结果来更新智能体对聊天机器人用户的记忆。

企业为什么采用智能体RAG

企业正在从基础RAG转向构建智能体RAG (Agentic RAG) 应用程序。Replit 发布了一个智能体,帮助开发者构建和调试软件。此外,微软宣布了Copilot 助手,它可以与用户协同工作,在完成任务时提供建议。这些只是生产环境中智能体的几个例子,其可能性是无限的。

智能体RAG的优势

从基础RAG到智能体RAG的转变使得这些系统能够产生更准确的响应,自主执行任务,并更好地与人类协作。

智能体RAG的优势主要在于提高了检索到的附加信息的质量。通过添加具有工具使用权限的智能体,检索智能体可以将查询路由到专门的知识源。此外,智能体的推理能力可以在检索到的上下文用于进一步处理之前对其进行验证。因此,智能体RAG可以产生更可靠和准确的响应。

智能体RAG的局限性

然而,硬币总有两面。使用AI智能体执行子任务意味着需要使用一个大语言模型 (LLM) 来完成任务。这和所有LLM应用一样, 存在延迟和不可靠的问题。根据LLM的推理能力,智能体可能无法充分完成任务(甚至根本无法完成)。重要的是设置适当的故障处理机制,帮助AI智能体在无法完成任务时恢复。

总结

这篇博客讨论了智能体RAG的概念,它涉及将智能体整合到RAG流程中。虽然智能体可以在RAG流程中用于许多不同的目的,但它通常涉及使用具有工具访问权限的检索智能体来泛化检索。

本文讨论了使用单智能体和多智能体系统的智能体RAG架构,以及它们与基础RAG流程的区别。

随着AI智能体系统的兴起和普及,许多不同的框架正在发展以实现智能体RAG,例如LlamaIndex、LangGraph或CrewAI。

热门文章

生态伙伴

AI门户是一款精品AI工具聚合平台。在这里,你可以找到全网最新的热门AI工具。
无论是你是公司创始人,市场人员,文职人员,还是开发人员,你都能在这里找到适合自己的AI工具。
利用AI工具,你可以大幅提高工作效率,从容不迫的获得职场优势。
AI不是淘汰人,而是淘汰不会用AI的人。选择AI门户,获取一站式AI工具分发便利服务。
你还等什么?和AI门户一起探索AI工具吧。

AI门户新媒体矩阵等你来关注

商务合作:

生态伙伴

AI门户是一款精品AI工具聚合平台。在这里,你可以找到全网最新的热门AI工具。
无论是你是公司创始人,市场人员,文职人员,还是开发人员,你都能在这里找到适合自己的AI工具。
利用AI工具,你可以大幅提高工作效率,从容不迫的获得职场优势。
AI不是淘汰人,而是淘汰不会用AI的人。选择AI门户,获取一站式AI工具分发便利服务。
你还等什么?和AI门户一起探索AI工具吧。

AI门户新媒体矩阵等你来关注

商务合作:

版权所有@2023 ​深圳市人工智能产业协会、深圳市宝安区低空无人系统产业协会       技术支持:​深圳市网新新思软件有限公司       粤ICP备19099358号-2       粤公网安备44030502010453号

