Navigate to WaytoAGI Wiki →
Home/Question List/Question Detail

RAG与agent

Answer

RAG(Retrieval-Augmented Generation,检索增强生成)是一种方法,例如在餐饮生活助手的应用中,它能根据用户需求从大规模餐饮数据集中检索出最合适的餐厅并提供相关信息和服务。实现餐饮生活助手的 RAG 实战,需要将餐饮数据集转化为 LangChain 可识别和操作的数据源,并定义 LLM 的代理,让其根据用户问题提取核心信息和条件,形成标准查询语句检索数据源并生成答案。

Agent 是大模型的一个重要概念,被认为是大模型未来的主要发展方向。它可以通过为 LLM 增加工具、记忆、行动、规划等能力来实现。目前行业里主要使用 LangChain 框架将 LLM 与工具串接。例如在 RAG 基础上,Agent 给大模型提供了更多工具,如长期记忆(数据库工具),还在 prompt 层和工具层完成规划和行动等逻辑设计。

在大模型请求中,最大的两个变量是 Messages 和 Tools,两者组合形成整个 Prompt。Agent 应用开发的本质是动态 Prompt 拼接,通过工程化手段将业务需求转述成新的 prompt。RAG 可以是向量相似性检索,放在 system prompt 里或通过 tools 触发检索。Action 触发 tool_calls 标记进入请求循环,拿模型生成的请求参数进行 API request,再把结果返回给大模型进行交互,没有 tool_calls 标记则循环结束。Multi Agents 则是通过更换 system prompt 和 tools 实现。

Content generated by AI large model, please carefully verify (powered by aily)

References

开发:LangChain应用开发指南-不用向量也可以RAG

为了更好地展示结构化数据来RAG的方法的实际效果,我们以餐饮生活助手为例,给出用户提问和回复的示例,以及餐饮生活助手RAG的代码实战。餐饮生活助手是一个基于结构化数据RAG的方法的应用,它的目的是根据用户的需求,从一个大规模的餐饮数据集中检索出最合适的餐厅,并提供相关的信息和服务。餐饮数据集是一个结构化的数据集,它包含了各种各样的餐厅的信息,例如名称、类型、地址、电话、价格、评分、评论等。餐饮生活助手的核心是一个LLM,它能够根据用户的问题,提取出核心的信息和条件,并形成标准的查询语句,然后用这个查询语句去检索餐饮数据集,得到相关的数据记录,再根据这些数据记录,生成最合适的答案,输出给用户。为了实现餐饮生活助手RAG的Langchain代码实战,我们需要完成以下几个步骤:定义餐饮数据源。我们需要将餐饮数据集转化为Langchain可以识别和操作的数据源,例如数据库、文件、API等,注册到Langchain中,并提供统一的接口和方法,让LLM的代理可以方便地访问和查询数据源。例如,我们可以将餐饮数据封装为一个API后,并结构化描述该接口的调用方式,并通过以下的代码,将其注册到Langchain中:定义LLM的代理。我们需要定义一个LLM的代理,它可以根据用户的问题,提取出核心的信息和条件,并形成标准的查询语句,然后用这个查询语句去检索餐饮数据源,得到相关的数据记录,再根据这些数据记录,生成最合适的答案,输出给用户。这可以通过Langchain的代理(Agent)来实现。代理管理器可以让开发者通过简单的编程,定义不同的LLM的代理,以及它们的功能和逻辑,并提供统一的接口和方法,让用户可以方便地与LLM的代理进行交互。

有用Agent产品开发踩坑及思考

其实只要看过官方文档的应该都能知道,大模型请求中,最大的两个变量:Messages和Tools。Messages里面放的是sys prompt,memory,user query;Tools里面放的是一些能力的Json Scheme;而这两者组合在一起,就形成整个完全的Prompt。所以Agent应用开发的本质是什么?动态Prompt拼接。通过工程化的手段,不断把业务需求转述成新的prompt。短期记忆:messages里的历史QA对;长期记忆:summary之后的本文,再塞回system prompt;RAG是啥?向量相似性检索,然后放在system prompt里或者通过tools触发检索Action:触发tool_calls标记,进入请求循环,拿模型生成的请求参数进行API request,再把结果返回给大模型进行交互;没有tool_calls标记了,循环结束。对应页面上就是对话一轮对话结束。Multi Agents是啥?把system prompt和tools换一换,A就变成B了。还有啥?没了呀,本质就是这些东西。当然,这也就是最基本的原理,想做深,做好,肯定还有很多坑需要踩。

Ranger:【AI 大模型】非技术背景,一文读懂大模型(长文)

agent算是从年前到现在,比较火的一个概念了,也被很多人认为是大模型的未来的一个主要发展方向。首先我们看这个很经典的一张图看起来还是蛮复杂的,然后市面上的很多描述agent的文章写的也比较复杂,说智能体是啥智能的最小单元,相较于copilot,是可以给他设定一个目标后主动完成任务的等等。当然这些说法都没错,但是我觉得还是有些不好理解的。所以我们依然先从原理着手去理解下,agent是个什么东西。首先这张图里,中间的“智能体”,其实就是llm,或者说大模型。四个箭头,分别是我们为llm增加的四个能力。工具、记忆、行动、规划。那么这个是怎么新增的呢?目前行业里主要用到的是一个叫langchain的框架,这个框架可以简单理解为,他把llm和llm之间,以及llm和工具之间,通过代码或prompt的形式,进行了串接。这个其实也像是在rag的基础上再进了一步。因为我们知道rag其实是给了大模型一个浏览器工具来使用嘛,那agent,其实就是给了大模型更多的工具。比如像是长期记忆,其实就是给了大模型一个数据库工具让其往里记录重要信息。规划和行动,其实就是在大模型的prompt层做的些逻辑,比如让其将目标进行每一步的拆解,拆解完成后,每一步去输出不同的固定格式action指令,给到工具作为输入。当然langchain或者说agent还不止这些,也会有很多其他的代码逻辑体现在其中,不过其主要的主干逻辑,其实还是在prompt层和工具层,完成的设计。

Others are asking
RAG的原理是啥
RAG(RetrievalAugmented Generation,检索增强生成)是一种结合检索和生成能力的自然语言处理架构,其原理如下: 对于大语言模型(LLM),RAG 的作用类似于开卷考试对学生的作用。在开卷考试中,学生可借助参考资料查找解答问题的相关信息,重点考察推理能力而非记忆能力。同样,在 RAG 中,事实性知识与 LLM 的推理能力相分离,被存储在易于访问和及时更新的外部知识源中,包括参数化知识(模型在训练中学习得到,隐式存储在神经网络权重中)和非参数化知识(存储在外部知识源,如向量数据库中)。 回顾 LLM 的原理,是将互联网文献材料降维到 latent space 中,并通过 transformer 方式学习其中的“经验”。但固定文献资料可能导致无法回答某些问题,RAG 的出现解决了这一问题,它允许模型到搜索引擎上搜索问题相关资料,并结合自身知识体系综合回复。 RAG 中的“检索”环节并非简单操作,涉及传统搜索的逻辑,如对输入问题的纠错、补充、拆分,以及对搜索内容的权重逻辑等。例如,对于“中国界世杯夺冠那年的啤酒销量如何”的问题,会先纠错为“中国世界杯夺冠那年的啤酒销量如何”,然后拆分为两个问题进行综合搜索,再将搜索到的资料提供给大模型进行总结性输出。 LLM 需要 RAG 是因为 LLM 存在一些缺点: 1. 无法记住所有知识,尤其是长尾知识,对长尾知识的接受能力不高。 2. 知识容易过时且不好更新,微调效果不佳且有丢失原有知识的风险。 3. 输出难以解释和验证,存在黑盒、不可控和幻觉等问题。 4. 容易泄露隐私训练数据。 5. 规模大,训练和运行成本高。 而 RAG 具有以下优点: 1. 数据库对数据的存储和更新稳定,不存在模型学不会的风险。 2. 数据库的数据更新敏捷,增删改查可解释,不影响原有知识。 3. 数据库内容明确、结构化,结合模型理解能力,降低大模型输出出错的可能。 4. 知识库存储用户数据,便于管控用户隐私数据,且可控、稳定、准确。 5. 数据库维护可降低大模型训练成本,新知识存储在数据库即可,无需频繁更新模型。
2025-02-20
RAG最新进展
RAG(检索增强生成)是由 Lewis 等人于 2020 年中期提出的一种大语言模型领域的范式。 其发展经历了以下阶段: 1. 2017 年创始阶段,重点是通过预训练模型吸收额外知识以增强语言模型,主要集中在优化预训练方法。 2. 大型语言模型如 GPT 系列在自然语言处理方面取得显著成功,但在处理特定领域或高度专业化查询时存在局限性,易产生错误信息或“幻觉”,特别是在查询超出训练数据或需要最新信息时。 3. RAG 包括初始的检索步骤,查询外部数据源获取相关信息后再回答问题或生成文本,此过程为后续生成提供信息,确保回答基于检索证据,提高输出准确性和相关性。 4. 在推断阶段动态检索知识库信息能解决生成事实错误内容的问题,被迅速采用,成为完善聊天机器人能力和使大语言模型更适用于实际应用的关键技术。 RAG 在多个基准测试中表现出色,如在 Natural Questions、WebQuestions 和 CuratedTrec 等中表现抢眼。用 MSMARCO 和 Jeopardy 问题进行测试时,生成的答案更符合事实、具体和多样,FEVER 事实验证使用后也有更好结果。基于检索器的方法越来越流行,常与 ChatGPT 等流行大语言模型结合使用提高能力和事实一致性,在 LangChain 文档中有相关使用例子。 同时,对增强生成检索的兴趣增长促使了嵌入模型质量的提高,传统 RAG 解决方案中的问题也得到解决。
2025-02-20
RAG和微调是什么,分别详细讲讲一下它是怎么实现的
RAG(RetrievalAugmented Generation,检索增强生成)是解决大语言模型在实际应用中存在的一些问题的有效方案。 大语言模型存在以下问题: 1. 知识的局限性:模型自身的知识完全源于训练数据,对于实时性、非公开或离线的数据无法获取。 2. 幻觉问题:基于数学概率的文字预测导致可能提供虚假、过时或通用的信息。 3. 数据安全性:企业担心私域数据上传第三方平台训练导致泄露。 RAG 可以让大语言模型从权威的、预先确定的知识来源中检索、组织相关信息,更好地控制生成的文本输出,用户也能深入了解模型如何生成最终结果。它类似于为模型提供教科书,适用于回答特定询问或解决特定信息检索任务,但不适合教模型理解广泛领域或学习新的语言、格式或样式。 微调类似于让学生通过广泛学习内化知识。这种方法在模型需要复制特定结构、样式或格式时非常有用。微调可以提高非微调模型的性能,使交互更有效率,特别适合强调基础模型中的现有知识,修改或自定义模型的输出,并向模型提供复杂的指令。然而,微调不适合合并模型中的新知识或需要新用例的快速迭代。 参考资料:《RetrievalAugmented Generation for Large Language Models:A Survey》(https://arxiv.org/pdf/2312.10997.pdf)
2025-02-19
rag
RAG(RetrievalAugmented Generation,检索增强生成)是一种结合检索和生成能力的自然语言处理架构。 通用语言模型通过微调可完成常见任务,而更复杂和知识密集型任务可基于语言模型构建系统,访问外部知识源来实现。Meta AI 引入 RAG 来完成这类任务,它把信息检索组件和文本生成模型结合,可微调且内部知识修改高效,无需重新训练整个模型。 RAG 接受输入并检索相关支撑文档,给出来源,与原始提示词组合后送给文本生成器得到输出,能适应事实变化,让语言模型获取最新信息并生成可靠输出。 大语言模型(LLM)存在一些缺点,如无法记住所有知识尤其是长尾知识、知识易过时且不好更新、输出难以解释和验证、易泄露隐私训练数据、规模大导致训练和运行成本高。而 RAG 具有数据库存储和更新稳定、数据更新敏捷且不影响原有知识、降低大模型输出出错可能、便于管控用户隐私数据、降低大模型训练成本等优点。 在 RAG 系统开发中存在 12 大痛点及相应的解决方案,旨在帮助理解设计和实施 RAG 系统面临的复杂挑战,激发开发更强大且适用于生产环境的 RAG 应用。
2025-02-18
有什么提升 RAG 知识库问答的好的 prompt
以下是一些提升 RAG 知识库问答的好的 prompt 相关内容: RAG 在 Natural Questions、WebQuestions 和 CuratedTrec 等基准测试中表现出色,在使用 MSMARCO 和 Jeopardy 问题进行测试时,生成的答案更符合事实、具体且多样,FEVER 事实验证使用 RAG 后也有更好结果,说明 RAG 是可行方案,能增强知识密集型任务中语言模型的输出,基于检索器的方法常与 ChatGPT 等流行 LLM 结合提高能力和事实一致性,可在 LangChain 文档中找到相关例子。 RAG 能显著提高大模型在处理私域知识或垂直领域问答时的效果。其流程包括:上传文档(支持多种格式,会转换为 Markdown 格式)、文本切割、文本向量化(存入向量数据库)、问句向量化、语义检索匹配(匹配出与问句向量最相似的 top k 个)、提交 Prompt 至 LLM、生成回答返回给用户。RAG 研究范式分为基础 RAG、高级 RAG 和模块化 RAG。 高级 RAG 特点:支持多模态数据处理,增强对话性,具备自适应检索策略,能进行知识融合,扩展了基础 RAG 功能,解决复杂任务局限,在广泛应用中表现出色,推动自然语言处理和人工智能发展。 模块化 RAG 侧重于提供更高定制性和灵活性,将系统拆分成多个独立模块或组件,每个组件负责特定功能,便于根据不同需求灵活组合和定制。
2025-02-18
大语言模型、多模态、数据、算力、算法、预训练、微调、RAG、自注意力机制、transformer、token、神经网络、向量、scaling law这些内容的含义
以下是对您所提到的这些内容含义的解释: 大语言模型:是一种基于大量文本数据进行训练的语言处理模型,其工作原理包括训练数据、算力、模型参数等。在训练数据一致的情况下,模型参数越大能力越强。 多模态:指能够处理多种不同类型的数据模态,如文本、图像、音频等,并将它们融合进行理解和生成。 数据:是大语言模型训练和应用的基础,包括各种文本、图像、音频等信息。 算力:指用于支持大语言模型训练和运行的计算能力。 算法:是大语言模型实现各种功能的数学和逻辑方法。 预训练:在大语言模型中,先在大规模数据上进行无特定任务的初步训练。 微调:基于通用大模型,针对特定领域任务提供数据进行学习和调整,以适应特定领域的需求。 RAG:检索增强生成,通过引用外部数据源为模型做数据补充,适用于动态知识更新需求高的任务。其工作流程包括检索、数据库索引、数据索引、分块、嵌入和创建索引、增强、生成等步骤。 自注意力机制:是 Transformer 架构中的重要部分,能理解上下文和文本关联,通过不断检索和匹配来寻找依赖关系,处理词和词之间的位置组合,预测下一个词的概率。 Transformer:是大语言模型训练架构,用于翻译等任务,具备自注意力机制。 Token:在自然语言处理中,是文本的基本单位。 神经网络:是大语言模型的基础架构,模拟人脑神经元的连接和信息处理方式。 向量:在大语言模型中,用于表示文本等数据的数学形式。 Scaling Law:关于大语言模型规模和性能之间关系的规律。
2025-02-18
如何让agent协作起来
要让 Agent 协作起来,可以参考以下方法: 1. 了解不同的产品设计模式:生成式 AI 的人机协同分为 Embedding(嵌入式)、Copilot(副驾驶)、Agent(智能代理)这 3 种模式,每种模式下人与 AI 的协作流程有所差异。其中 Embedding 模式人类完成大多数工作,Copilot 模式人类和 AI 协同工作,Agents 模式 AI 完成大多数工作。 2. 采用 Multiagent Collaboration 的方法:让不同角色的 Agent 按照任务要求自主规划选择工具、流程进行协作完成任务。例如作为产品经理,可将产品功能设计需求通过 Agents 拆解成多个独立任务,遵循不同工作流,生成初步结果后再修改完善。 3. 从原子能力层思考:抽象化拆解大模型的底层能力,如翻译、识别、提取、格式化等,围绕“输入”“处理”“输出”“反馈”构建最底层的信息处理逻辑。 4. 重塑获取信息的方式:搜索引擎和基于大模型的聊天机器人的目标从根本上一致,可根据需求选择。 5. 注意多 Agent 模式中的设置:分为全局设置和节点设置。全局设置中更应注意角色定义和人物刻画,节点设置更关注单个智能体中要详细执行的逻辑。 6. 合理编排智能体:将智能体编排首尾相连,避免成为线性工作流。 7. 明确跳转模式和适用场景:单个 Agent 中两种跳转模式分别适用于通用和复杂的意图识别和跳转,一般场景下前者效果更好,后者适用更复杂的意图识别情景。同时,编排时应明确单个 Agent 的名称和适用场景,以便节点跳转模型更好地识别触发条件。
2025-02-19
如何把coze的agent发布到微信公众号上
要把 Coze 的 agent 发布到微信公众号上,您可以按照以下步骤进行操作: 1. 组装和测试“AI 前线”Bot 机器人: 返回个人空间,在 Bots 栏下找到刚刚创建的“AI 前线”,点击进入。 将写好的 prompt 粘贴到【编排】模块,prompt 可随时调整。 在【技能】模块添加需要的技能,如工作流、知识库。 在【预览与调试】模块,直接输入问题,即可与机器人对话。 2. 发布“AI 前线”Bot 机器人: 测试 OK 后,点击右上角“发布”按钮,即可将“AI 前线”发布到微信、飞书等渠道。 3. 发布到微信公众号上: 选择微信公众号渠道,点击右侧“配置”按钮。 根据相关截图,去微信公众号平台找到自己的 App ID,填入确定即可,不用解绑。 4. 体验: 最后去自己的微信公众号消息页面,就可以使用啦。 另外,还有一种方法是在 Coze 发布页面的发布平台的微信客服这里,显示“已配置”后,进行勾选并点击发布。发布成功后,可以点击微信客服旁边的立即对话、复制 Bot 链接,会弹出该微信客服的二维码,扫码即可立即体验。
2025-02-19
agent训练
在人工智能领域中,AI Agent 的训练具有以下特点: 传统强化学习中,Agent 训练往往需大量样本和时间,且泛化能力不足。 为突破瓶颈,引入了迁移学习:通过促进不同任务间知识和经验迁移,减轻新任务学习负担,提升学习效率和性能,增强泛化能力,但当源任务与目标任务差异大时,可能无法发挥效果甚至出现负面迁移。 探索了元学习:核心是让 Agent 学会从少量样本中迅速掌握新任务最优策略,能利用已有知识和策略调整学习路径适应新任务,减少对大规模样本集依赖,但需要大量预训练和样本构建学习能力,使开发通用高效学习策略复杂艰巨。 时间:21 世纪初至今 特点:迁移学习是将一个任务学到的知识迁移到其他任务;元学习是学习如何学习,快速适应新任务。 技术:迁移学习如领域自适应;元学习如 MAML、MetaLearner LSTM。 优点:提高学习效率,适应新任务。 缺点:对源任务和目标任务的相似性有一定要求。 此外,智谱 AI 开源的语言模型中与 Agent 相关的有: AgentLM7B:提出了 AgentTuning 方法,开源了包含 1866 个高质量交互、6 个多样化真实场景任务的 Agent 数据集 AgentInstruct,基于上述利用 Llama2 微调而成,上下文 token 数为 4K。 AgentLM13B:上下文 token 数为 4K。 AgentLM70B:上下文 token 数为 8K。
2025-02-18
agent和copilot的区别
Copilot 和 Agent 主要有以下区别: 1. 核心功能: Copilot 更像是辅助驾驶员,依赖人类指导和提示完成任务,功能局限于给定框架内。 Agent 像初级主驾驶,具有更高自主性和决策能力,能根据目标自主规划处理流程并自我迭代调整。 2. 流程决策: Copilot 处理流程依赖人类确定,是静态的,参与更多在局部环节。 Agent 解决问题流程由 AI 自主确定,是动态的,能自行规划任务步骤并根据反馈调整流程。 3. 应用范围: Copilot 主要用于处理简单、特定任务,作为工具或助手存在,需要人类引导监督。 Agent 能够处理复杂、大型任务,并在 LLM 薄弱阶段使用工具或 API 增强。 4. 开发重点: Copilot 主要依赖 LLM 性能,开发重点在于 Prompt Engineering。 Agent 同样依赖 LLM 性能,开发重点在于 Flow Engineering,把外围流程和框架系统化。 此外,Agent 具备“决策权”,可自主处理问题,无需确认;Copilot 需要人类确认才能执行任务。业界普遍认为,Copilot 更适合各行业现有软件大厂,而 AI Agent 为创业公司提供了探索空间。
2025-02-18
AI agent 是什么?
AI Agent 是基于大型语言模型(LLM)和其他技术实现的智能实体,其核心功能在于自主理解、规划决策、执行复杂任务。 AI Agent 包括以下几个概念: 1. Chain:通常一个 AI Agent 可能由多个 Chain 组成。一个 Chain 视作是一个步骤,可以接受一些输入变量,产生一些输出变量。大部分的 Chain 是大语言模型完成的 LLM Chain。 2. Router:我们可以使用一些判定(甚至可以用 LLM 来判定),然后让 Agent 走向不同的 Chain。例如:如果这是一个图片,则 a;否则 b。 3. Tool:Agent 上可以进行的一次工具调用。例如,对互联网的一次搜索,对数据库的一次检索。 总结下来我们需要三个 Agent: 1. Responser Agent:主 agent,用于回复用户(伪多模态) 2. Background Agent:背景 agent,用于推进角色当前状态(例如进入下一个剧本,抽检生成增长的记忆体) 3. Daily Agent:每日 agent,用于生成剧本,配套的图片,以及每日朋友圈 这三个 Agent 每隔一段时间运行一次(默认 3 分钟),运行时会分析期间的历史对话,变更人物关系(亲密度,了解度等),变更反感度,如果超标则拉黑用户,抽简对话内容,提取人物和用户的信息成为“增长的记忆体”,按照时间推进人物剧本,有概率主动聊天(与亲密度正相关,跳过夜间时间)。 此外,心灵社会理论认为,智能是由许多简单的 Agent(分等级、分功能的计算单元)共同工作和相互作用的结果。这些 Agent 在不同层次上执行不同的功能,通过协作实现复杂的智能行为。心灵社会将智能划分为多个层次,从低层次的感知和反应到高层次的规划和决策,每个层次由多个 Agent 负责。每个 Agent 类似于功能模块,专门处理特定类型的信息或执行特定任务,如视觉处理、语言理解、运动控制等。智能不是集中在单一的核心处理单元,而是通过多个相互关联的 Agent 共同实现。这种分布式智能能够提高系统的灵活性和鲁棒性,应对复杂和多变的环境。同时,在《心灵社会》中,还存在专家 Agent(拥有特定领域知识和技能,负责处理复杂的任务和解决特定问题)、管理 Agent(协调和控制其他 Agent 的活动,确保整体系统协调一致地运行)、学习 Agent(通过经验和交互,不断调整和优化自身行为,提高系统在不断变化环境中的适应能力)。 从达特茅斯会议开始讨论人工智能(Artificial Intelligence),到马文·明斯基引入“Agent”概念,往后,我们都将其称之为 AI Agent。
2025-02-17
有关agent的介绍
AI Agent 是当前 AI 领域中较为热门的概念,被认为是大模型未来的主要发展方向之一。 从原理上看,中间的“智能体”通常是 LLM(语言模型)或大模型。为其增加的四个能力分别是工具、记忆、行动和规划。目前行业中主要使用 langchain 框架,将 LLM 与 LLM 之间以及 LLM 与工具之间通过代码或 prompt 的形式进行串接。例如,给大模型提供长期记忆,相当于给予一个数据库工具让其记录重要信息;规划和行动则是在大模型的 prompt 层进行逻辑设计,如将目标拆解并输出不同的固定格式 action 指令给工具。 从产品角度,Agent 可以有不同的设定。比如是一个历史新闻探索向导,身份为历史新闻探索向导,性格知识渊博、温暖亲切、富有同情心,角色是主导新闻解析和历史背景分析,还可以为其设计背景故事使其更加生动。 在人工智能领域,Agent 智能代理是一种能够感知环境并根据感知信息做出决策以实现特定目标的系统,能够自动执行任务,如搜索信息、监控系统状态或与用户交互。
2025-02-16