
智能体RAG是什么?
智能体RAG描述了一种基于AI智能体的RAG实现。具体来说,它将AI智能体整合到RAG流水线中,以编排其组件并执行除简单信息检索和生成之外的其他操作,以克服非智能体流水线的限制。智能体RAG描述了一种基于AI智能体的RAG实现。如何运作?尽管智能体可以合并到RAG流水线的不同阶段,但智能体RAG通常是指在检索组件中使用智能体。具体来说,检索组件通过使用可访问不同检索器工具的检索智能体而成为智能体组
虽然检索增强一代(RAG)在2023年占据主导地位,但智能体工作流程正在推动2024年的巨大进步。AI智能体的使用为构建更强大、更健壮和多功能的大型语言模型(LLM)驱动的应用程序开辟了新的可能性。一种可能性是使用智能体RAG管道中的AI智能体增强RAG流水线。本文向您介绍agenticRAG的概念、它的实现以及它的优点和局限性。
前排提示,文末有大模型AGI-CSDN独家资料包哦!
目录
1智能体 RAG的基本原理
2什么是 AGENTIC RAG?
3智能体 RAG vs. (Vanilla) RAG
4实施智能体 RAG
5为什么企业采用智能体 RAG
6小结
7更多资源
8准备好开始构建了吗?
1 智能体RAG的基本原理
智能体RAG描述了一种基于AI智能体的RAG实现。在进一步讨论之前,让我们快速回顾一下RAG和AI智能体的基本概念。
什么是检索增强生成 (RAG)
检索增强生成(RAG)是一种用于构建LLM驱动的应用程序的技术。它利用外部知识源为LLM提供相关上下文并减少幻觉。
原生RAG流水线由检索组件(通常由嵌入模型和向量数据库组成)和生成组件(LLM)组成。在推理时,用户查询用于对索引文档运行相似性搜索,以检索与查询最相似的文档,并为LLM提供额外的上下文。
典型的RAG应用程序有两个相当大的限制:
-
原生RAG管道只考虑一个外部知识源。但是,某些解决方案可能需要两个外部知识源,而某些解决方案可能需要外部工具和API,例如Web搜索。
-
它们是一次性解决方案,这意味着上下文被检索一次。对检索到的上下文的质量没有推理或验证。
什么是AI系统中的智能体
随着LLM的普及,出现了AI智能体和多智能体系统的新范式。AI智能体是具有角色和任务的LLM,可以访问内存和外部工具。LLM的推理功能可帮助智能体规划所需的步骤并采取行动完成手头的任务。
因此,AI智能体的核心组件是:
lLLM(具有角色和任务)
l记忆力(短期和长期)
l规划(例如,反思、自我批评、查询路由等)
l工具(例如,计算器、Web搜索等)
一个流行的框架是ReAct框架。ReAct智能体可以通过将路由、查询规划和工具使用合并到单个实体中来处理顺序多部分查询,同时保持状态(在内存中)。
ReAct =原因+行为(使用LLM)
该过程包括以下步骤:
l思考:收到用户查询后,智能体会推断下一步要执行的操作
l操作:智能体决定操作并执行它(例如,工具使用)
l观察:智能体观察来自操作的反馈
l此过程将迭代,直到智能体完成任务并响应用户。
2 什么是Agentic RAG?
智能体RAG描述了一种基于AI智能体的RAG实现。具体来说,它将AI智能体整合到RAG流水线中,以编排其组件并执行除简单信息检索和生成之外的其他操作,以克服非智能体流水线的限制。
智能体RAG描述了一种基于AI智能体的RAG实现。
Agentic RAG 如何运作?
尽管智能体可以合并到RAG流水线的不同阶段,但智能体RAG通常是指在检索组件中使用智能体。
具体来说,检索组件通过使用可访问不同检索器工具的检索智能体而成为智能体组件,例如:
l对向量索引执行向量搜索的向量搜索引擎(也称为查询引擎)(就像在典型的RAG流水线中一样)
lWeb搜索
l计算器
l用于以编程方式访问软件的任何API,例如电子邮件或聊天程序
l以及更多。
然后,RAG智能体可以对以下示例检索场景进行推理和操作:
l决定是否检索信息
l确定使用哪个工具检索相关信息
l构建查询本身
l评估检索到的上下文,并确定是否需要重新检索。
智能体RAG架构
与顺序的朴素RAG架构相比,智能体RAG架构的核心是智能体。智能体RAG架构可能具有不同程度的复杂程度。在最简单的形式中,单智能体RAG架构是一个简单的路由器。但是,您也可以将多个智能体添加到多智能体RAG架构中。本节讨论两种基本的RAG架构。
A:单智能体RAG(路由器)
智能体RAG最简单的形式是路由器。这意味着您至少有两个外部知识源,智能体决定从哪个源中检索其他上下文。但是,外部知识源不必局限于(向量)数据库。您也可以从工具中检索更多信息。例如,您可以执行Web搜索,也可以使用API从Slack渠道(即时通信工具类似微信钉钉飞书)或您的电子邮件帐户中检索其他信息。
B:多智能体RAG系统
正如您可以猜到的那样,单智能体系统也有其局限性,因为它仅限于一个智能体,集推理、检索和答案生成于一体。因此,将多个智能体链接到一个多智能体RAG应用程序中是有益的。
例如,您可以有一个主智能体,负责在多个专用检索智能体之间协调信息检索。例如,一个智能体可以从专有的内部数据源检索信息。另一个智能体可能专门从您的个人帐户中检索信息,例如电子邮件或聊天IM。另一个智能体也可能专门从Web搜索中检索公共信息。
超越检索智能体
上面的示例显示了不同检索智能体的用法。但是,您也可以将智能体用于检索以外的其他目的。RAG系统中智能体的可能性是多方面的。
3智能体RAG vs. (Vanilla) RAG
虽然RAG的基本概念(发送查询、检索信息和生成响应)保持不变,但**工具使用将其泛化,**使其更加灵活和强大。
可以这样想:原始RAG就像在图书馆(在智能手机出现之前)回答特定问题。另一方面,Agentic RAG就像手里有一部智能手机,里面有网络浏览器、计算器、电子邮件等。
原始RAG 智能体RAG
访问外部工具 |
No |
Yes |
||
预处理查询 |
No |
Yes |
||
多步检索 |
No |
Yes |
||
检索验证信息 |
No |
Yes |
||
|
|
|
|
|
4 实施智能体RAG
如前所述,智能体由多个组件组成。要构建智能体RAG流水线,有两个选项:具有函数调用的语言模型或智能体框架。两种实现都会得到相同的结果,这只取决于你想要的控制和灵活性。
具有函数调用的语言模型
语言模型是智能体RAG系统的主要组成部分。另一个组件是工具,它使语言模型能够访问外部服务。具有函数调用功能的语言模型通过允许模型与预定义的工具交互,提供了一种构建智能体系统的方法。语言模型提供商已将此功能添加到其clien中ts.
2023年6月,OpenAI发布了gpt-3.5-turbo和gpt-4的函数调用。它使这些模型能够将GPT的功能与外部工具和API可靠地连接起来。开发人员很快就开始构建将gpt-4插入代码执行程序、数据库、计算器等的应用程序。
Cohere进一步推出了他们的连接器API,以将工具添加到Command-R模型套件中。此外,Anthropic和Google还为Claude和Gemini推出了调用函数。通过使用外部服务为这些模型提供支持,它可以访问和引用Web资源、执行代码等。
函数调用不仅适用于专有模型。Ollama引入了对Llama3.2、nemotron-mini等流行开源模型的工具支持 。
要构建工具,您首先需要定义函数。在此代码段中,我们将编写一个函数,该函数使用Weaviate的混合搜索从数据库中检索对象:
defget_search_results(query: str) -> str:
“”“Sends a query to Weaviate’s Hybrid Search. Parses the response into a {k}:{v} string.”“”
response = blogs.query.hybrid(query, limit=5)
stringified_response =“”
foridx, oinenumerate(response.objects):
stringified_response +=f"Search Result:{idx+1}:\n"
forpropino.properties:
stringified_response +=f"{prop}:{o.properties[prop]}"
stringified_response +=“\n”
returnstringified_response
然后,我们将通过tools_schema将函数传递给语言模型。然后,在语言模型的提示中使用该架构:
tools_schema=[{
‘type’:‘function’, ‘function’: { ‘name’:‘get_search_results’, ‘description’:‘Get search results for a provided query.’, ‘parameters’: { ‘type’:‘object’, ‘properties’: { ‘query’: { ‘type’:‘string’, ‘description’:‘The search query.’,
},
}, ‘required’: [‘query’],
},
},
}]
由于您直接连接到语言模型API,因此需要编写一个在语言模型和工具之间路由的循环:
defollama_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
) ifnotresponse[“message”].get(“tool_calls”): returnresponse[“message”][“content”] else: fortoolinresponse[“message”][“tool_calls”]:
function_to_call = tool_mapping[tool[“function”][“name”]] print(f"Calling function{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) returnfinal_response[“message”][“content”]
Your query will then look like this:
ollama_generation_with_tools(“How is HNSW different from DiskANN?”,
tools_schema=tools_schema, tool_mapping=tool_mapping)
您可以按照此菜单重新创建上述内容。
智能体框架
DSPy、LangChain、CrewAI、LlamaIndex和Letta等智能体框架已经出现,以促进使用语言模型构建应用程序。这些框架通过将预构建的模板插入在一起,简化了智能体RAG系统的构建。
1.DSPy支持ReAct智能体和Avatar优化。Avatar optimization描述了对每个工具的描述使用自动提示工程。
2.LangChain提供了许多使用工具的服务。LangChain的LCEL和LangGraph框架进一步提供了内置工具。
3.LlamaIndex进一步介绍了QueryEngineTool,这是检索工具的模板集合。
4.CrewAI是开发多智能体系统的领先框架之一。用于工具使用的关键概念之一是在智能体之间共享工具。
5.Swarm是OpenAI为多智能体编排构建的框架。Swarm同样关注如何在智能体之间共享工具。
6.将内部世界模型反映和优化为函数的Letta接口。除了回答问题之外,这还可能需要使用搜索结果来更新智能体对聊天机器人用户的记忆。
5 为什么企业采用智能体RAG
企业正在从普通RAG转向构建智能体RAG应用程序。Replit发布了一个帮助开发人员构建和调试软件的智能体。此外,Microsoft还宣布了与用户一起工作的copilot,为完成任务提供建议。这些只是生产中智能体的几个例子,可能性是无穷无尽的。
智能体RAG的好处
从原生RAG到智能体RAG的转变使这些系统能够产生更准确的响应,自主执行任务,并更好地与人类协作。
智能体RAG的好处主要在于提高检索到的附加信息的质量。通过添加有权访问工具使用的智能体,检索智能体可以将查询路由到专业知识源。此外,智能体的推理功能可以在将检索到的上下文用于进一步处理之前对其进行一层验证。因此,智能体RAG管道可以带来更强大、更准确的响应。
智能体RAG的局限性
然而,每枚硬币总是有两面的。使用AI智能体a for subtask意味着合并LLM来执行任务。这带来了在任何应用程序中使用LLM的限制,例如增加延迟和不可靠性。根据LLM的推理能力,智能体可能无法充分完成任务(甚至根本无法完成)。重要的是要采用适当的故障模式,以帮助AI智能体在无法完成任务时摆脱卡顿。
6小结
本博客讨论了智能体RAG的概念,它涉及将智能体整合到RAG流水线中。尽管智能体可用于RAG流水线中的许多不同目的,但智能体RAG通常涉及使用检索智能体,并可以访问工具来泛化检索。
本文讨论了使用单智能体和多智能体系统的智能体RAG架构,以及它们与普通RAG流水线的区别。
随着AI智能体系统的兴起和普及,许多不同的框架正在发展以实现智能体RAG,例如LlamaIndex、LangGraph或CrewAI。
最后,本文讨论了智能体RAG管道的优势和局限性。
读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费
】🆓
👉AI大模型学习路线汇总👈
大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉大模型实战案例👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉大模型视频和PDF合集👈
观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费
】🆓
更多推荐
所有评论(0)