Agentic RAG登场:RAG技术的进化之路

Agentic RAG登场:RAG技术的进化之路

在2023年,检索增强型生成(RAG)技术占据了主导地位,而在2024年,智能体工作流程正在推动巨大的进步。使用AI智能体为构建更强大的、健壮的、多功能的大型语言模型(LLM)驱动的应用开辟了新的可能性。其中一个可能性是在智能体RAG流程中增强RAG流程中的AI智能体。

www.zeeklog.com  - Agentic RAG登场:RAG技术的进化之路

智能体RAG的基础知识

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

检索增强型生成(RAG)是一种构建LLM驱动应用的技术。它利用外部知识源为LLM提供相关上下文,减少幻觉现象。

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

www.zeeklog.com  - Agentic RAG登场:RAG技术的进化之路

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

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

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

AI系统中的智能体是什么

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

因此,AI智能体的核心组件包括:

LLM(具有角色和任务)

内存(短期和长期)

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

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

www.zeeklog.com  - Agentic RAG登场:RAG技术的进化之路

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

ReAct = 推理 + 行动(使用LLM)

这个过程包括以下步骤:

思考:在接收到用户查询后,智能体推理下一步行动

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

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

这个过程一直迭代,直到智能体完成任务并响应用户。

www.zeeklog.com  - Agentic RAG登场:RAG技术的进化之路

什么是Agentic RAG?

Agentic RAG描述了基于AI智能体实现的RAG。具体来说,它将AI智能体纳入RAG流程中,以协调其组件并执行超出简单信息检索和生成的额外行动,以克服非智能体流程的局限性。

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

Agentic RAG如何工作?

尽管智能体可以被纳入RAG流程的不同阶段,智能体RAG最常用于检索组件中的智能体。

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

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

网络搜索

计算器

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

等等。

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

决定是否检索信息

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

制定查询本身

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

Agentic RAG架构

与顺序的简单RAG架构相比,智能体RAG架构的核心是智能体。智能体RAG架构可以有不同程度的复杂性。在最简单的形式中,单智能体RAG架构是一个简单的路由器。然而,你也可以将多个智能体添加到多智能体RAG架构中。本节讨论了两个基本的RAG架构。

  • 单智能体RAG(路由器)

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

www.zeeklog.com  - Agentic RAG登场:RAG技术的进化之路
  • 多智能体RAG系统

正如你可以猜到的,单智能体系统也有其局限性,因为它仅限于一个智能体进行推理、检索和答案生成。因此,将多个智能体链入多智能体RAG应用是有益的。

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

www.zeeklog.com  - Agentic RAG登场:RAG技术的进化之路
  • 超越检索智能体

上述示例显示了使用不同的检索智能体。然而,你也可以使用智能体用于检索之外的其他目的。智能体在RAG系统中的可能性是多种多样的。

Agentic RAG与(普通)RAG

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

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

普通RAG智能体RAG访问外部工具否是查询预处理否是多步骤检索否是验证检索到的信息否是

www.zeeklog.com  - Agentic RAG登场:RAG技术的进化之路

实施智能体RAG

如前所述,智能体由多个组件组成。要构建智能体RAG流程,有两种选择:具有函数调用的语言模型或智能体框架。两种实现都能达到相同的结果,只是取决于你想要的控制和灵活性。

具有函数调用的语言模型

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

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

Cohere进一步推出了他们的连接器API,为Command-R模型套件添加工具。此外,Anthropic和Google为Claude和Gemini发布了函数调用。通过为这些模型提供外部服务,它可以访问并引用网络资源,执行代码等。

函数调用不仅适用于专有模型。Ollama为流行的开源模型如Llama3.2、nemotron-mini等引入了工具支持。

要构建一个工具,你首先需要定义一个函数。在这个片段中,我们正在编写一个使用Weaviate的混合搜索从数据库检索对象的函数:

def get_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 = ""`    `for idx, o in enumerate(response.objects):`        `stringified_response += f"Search Result: {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': 'Get search results for a provided query.',`        `'parameters': {`          `'type': 'object',`          `'properties': {`            `'query': {`              `'type': 'string',`              `'description': 'The search query.',`            `},`          `},`          `'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"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)`    `return final_response["message"]["content"]

然后你的查询将如下所示:

ollama_generation_with_tools("How is HNSW different from DiskANN?",`                            `tools_schema=tools_schema, tool_mapping=tool_mapping)

智能体框架

DSPy、LangChain、CrewAI、LlamaIndex和Letta等智能体框架的出现,为使用语言模型构建应用程序提供了便利。这些框架通过将预构建的模板组合在一起,简化了构建智能体RAG系统的过程。

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

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

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

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

Swarm是由OpenAI构建的多智能体协调框架。Swarm同样专注于智能体之间如何共享工具。

Letta将反映和提炼内部世界模型作为函数。这意味着可能使用搜索结果来更新聊天机器人用户的智能体内存,除了回答问题。

www.zeeklog.com  - Agentic RAG登场:RAG技术的进化之路

如何学习AI大模型?

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

www.zeeklog.com  - Agentic RAG登场:RAG技术的进化之路

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

www.zeeklog.com  - Agentic RAG登场:RAG技术的进化之路

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

www.zeeklog.com  - Agentic RAG登场:RAG技术的进化之路
1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

www.zeeklog.com  - Agentic RAG登场:RAG技术的进化之路

Read more

前端防范 XSS(跨站脚本攻击)

目录 一、防范措施 1.layui util  核心转义的特殊字符 示例 2.js-xss.js库 安装 1. Node.js 环境(npm/yarn) 2. 浏览器环境 核心 API 基础使用 1. 基础过滤(默认规则) 2. 自定义过滤规则 (1)允许特定标签 (2)允许特定属性 (3)自定义标签处理 (4)自定义属性处理 (5)转义特定字符 常见场景示例 1. 过滤用户输入的评论内容 2. 允许特定富文本标签(如富文本编辑器内容) 注意事项 更多配置 XSS(跨站脚本攻击)是一种常见的网络攻击手段,它允许攻击者将恶意脚本注入到其他用户的浏览器中。

详细教程:如何从前端查看调用接口、传参及返回结果(附带图片案例)

详细教程:如何从前端查看调用接口、传参及返回结果(附带图片案例)

目录 1. 打开浏览器开发者工具 2. 使用 Network 面板 3. 查看具体的API请求 a. Headers b. Payload c. Response d. Preview e. Timing 4. 实际操作步骤 5. 常见问题及解决方法 a. 无法看到API请求 b. 请求失败 c. 跨域问题(CORS) 作为一名后端工程师,理解前端如何调用接口、传递参数以及接收返回值是非常重要的。下面将详细介绍如何通过浏览器开发者工具(F12)查看和分析这些信息,并附带图片案例帮助你更好地理解。 1. 打开浏览器开发者工具 按下 F12 或右键点击页面选择“检查”可以打开浏览器的开发者工具。常用的浏览器如Chrome、Firefox等都内置了开发者工具。下面是我选择我的一篇文章,打开开发者工具进行演示。 2. 使用

Cursor+Codex隐藏技巧:用截图秒修前端Bug的保姆级教程(React/Chakra UI案例)

Cursor+Codex隐藏技巧:用截图秒修前端Bug的保姆级教程(React/Chakra UI案例) 前端开发中最令人头疼的莫过于那些难以定位的UI问题——元素错位、样式冲突、响应式失效...传统调试方式往往需要反复修改代码、刷新页面、检查元素。现在,通过Cursor编辑器集成的Codex功能,你可以直接用截图交互快速定位和修复这些问题。本文将带你从零开始,掌握这套革命性的调试工作流。 1. 环境准备与基础配置 在开始之前,确保你已经具备以下环境: * Cursor编辑器最新版(v2.5+) * Node.js 18.x及以上版本 * React 18项目(本文以Chakra UI 2.x为例) 首先在Cursor中安装Codex插件: 1. 点击左侧扩展图标 2. 搜索"Codex"并安装 3. 登录你的OpenAI账户(需要ChatGPT Plus订阅) 关键配置项: // 在项目根目录创建.