RAG(检索增强生成)与 AI Agent Harness Engineering 的完美结合
从“问不倒知识库”到“全能任务助手”:RAG与AI Agent Harness Engineering的深度融合与实践全解
摘要/引言
0.1 开门见山:痛点场景,我们都遇到过
想象一下这个场景:你是一家初创SaaS公司的产品负责人,老板给你扔了一堆需求——
- 客服系统升级:需要能回答“某个版本的API文档修改历史(含弃用标记触发条件)”“企业级客户自定义套餐里第X个隐藏权益的申请流程(含审批链路合规节点对应附件模板链接)”这类极其细分、动态更新、跨多文档跨时间线、甚至涉及非结构化文本+结构化数据(如CRM的审批单状态、GitLab的commit哈希、Confluence的标签体系) 的问题,但现在的纯GPT-4知识库RAG要么经常“幻觉”出不存在的API弃用条件,要么找不到附件模板藏在Confluence的哪个嵌套子页面里,要么查不了CRM里客户已经走到哪一步了。
- 开发者自助工具迭代:需要能帮刚入职的实习生“从零搭建一个基于我们SaaS的Demo,要用到最新的API key生成规则(从最近3天的内部通知+GitLab权限配置脚本里提取规则,再从我们的SaaS测试环境生成真实临时的API key)”“根据Demo里遇到的错误日志(附错误ID的时间戳),自动查Confluence的内部错误库+Stack Overflow的开源适配方案+测试环境对应时间的后端Trace日志+GitLab提交记录(找引入这个Bug的开发者,给他发钉钉的临时同步需求链接)”这类多步骤、跨工具、需要执行“查询-分析-决策-调用工具-再查询-再决策-再执行-生成最终结果” 闭环的任务,但现在的纯LangChain Agent要么工具调用链经常“卡壳发散”(比如查API文档规则的时候,本来应该只找最近3天的,但它搜了所有SaaS成立以来的API文档;比如生成临时同步需求链接的时候,它忘了老板要求实习生必须抄送导师才能同步),要么工具调用的参数经常“搞错边界”(比如生成API key的数量超过了测试环境的限制,或者临时同步需求的截止时间设成了10年前),要么生成的结果“不落地”(比如Demo搭建只给了文字步骤,没直接生成一键运行的Python脚本或者Docker Compose文件,或者错误修复只给了泛泛的建议,没直接生成可以提交的PR diff草稿)。
- 市场调研自动化:需要能帮市场部“每周自动生成行业竞品分析报告——首先从最近7天的TechCrunch、Crunchbase、36氪、猎云网、知乎专栏(限定只看我们产品赛道大V的文章)里检索所有提到‘AI客服知识库’‘开发者自助工具链’‘SaaS动态权限管理’的内容,然后把这些内容按‘竞品产品更新’‘行业政策法规’‘用户痛点反馈’‘技术趋势预测’分类,再对每个分类下的内容用我们公司内部定义的评分标准(比如竞品更新要分‘核心功能改进’‘UIUX优化’‘定价调整’‘合作发布’,每个子分类还有权重;行业政策法规要分‘国内合规’‘国际合规’,每个合规项还有风险等级;用户痛点反馈要分‘高频低痛’‘高频高痛’‘低频高痛’‘低频低痛’,每个痛点还要关联我们产品当前的Roadmap节点;技术趋势预测要分‘短期可落地’‘中期待验证’‘长期预研’,每个趋势还要关联我们公司内部的技术预研项目)进行自动评分,再从我们的内部产品文档库里(含最近更新的Roadmap会议纪要)检索‘我们当前Roadmap里有没有覆盖这个高频高痛的痛点?如果有,进展到哪一步了?如果没有,预研优先级排第几?’,然后自动生成一份带图表的、Markdown格式的、可以直接导出成PDF的报告,最后把报告发给市场部经理的钉钉,并抄送给产品总监、CTO助理”这类超长、跨多数据源(公开+私有)、需要执行“规则配置-定时触发-多源检索-数据清洗-规则分类-自动评分-关联匹配-内容生成-格式转换-多渠道分发” 全自动化闭环的任务,但现在的纯定时脚本+纯RAG+纯Agent要么需要写几千行的Python/JavaScript代码维护起来极其痛苦,要么定时触发、数据清洗、规则分类、自动评分、关联匹配这些“非AI核心但极其重要的工程化环节”要么完全缺失要么做得非常简陋(比如没有规则配置的可视化界面,没有数据清洗的异常检测和日志记录,没有规则分类的回溯验证,没有自动评分的权重调整和对比测试,没有关联匹配的相似度阈值自适应),要么整个流程的“可观测性”极其差(比如出了问题不知道是哪一步检索错了,哪一步规则分类错了,哪一步关联匹配漏了,哪一步AI决策发散了),要么整个流程的“可扩展性”极其差(比如加一个新的数据源(比如小红书)、加一个新的分类(比如竞品合作的合作方类型)、加一个新的分发渠道(比如企业微信)、加一个新的评分标准(比如技术趋势预测的可信度权重,要基于预测来源的权威性)都需要花好几天甚至好几个星期改代码)。
0.2 问题陈述:RAG和AI Agent各自的天花板在哪里?
刚才的三个痛点场景,其实分别戳中了纯大语言模型(LLM)、纯检索增强生成(RAG)、纯AI Agent 各自的天花板——
- 纯LLM的天花板:知识截止日期限制(只能用训练数据里的知识,对动态更新的知识(比如最近3天的API弃用条件、最近7天的TechCrunch文章)一无所知)、幻觉问题严重(经常生成听起来很合理但实际上完全错误的内容)、无法直接调用外部工具/访问私有数据(比如查不了CRM里的审批单状态、GitLab里的commit哈希、生成不了真实临时的API key、发不了钉钉的临时同步需求链接)。
- 纯RAG的天花板:本质上还是“增强型问答系统”,不是“任务执行系统”(只能回答用户的单步查询,无法执行多步骤、跨工具、需要决策和执行的闭环任务)、非结构化文本检索为主,结构化数据+多模态数据检索能力弱(比如很难同时查Confluence的非结构化API文档和GitLab的结构化权限配置脚本,很难查客户发的带截图的错误反馈邮件)、检索逻辑固定,缺乏自适应和决策能力(比如用户问的是“某个版本的API文档修改历史(含弃用标记触发条件)”,纯RAG可能只会检索所有包含“API修改历史”“弃用标记”的文档片段,不会先过滤掉“非该版本的API修改历史”,不会再从这些片段里“推理”出“弃用标记触发条件”,不会再检查“推理出的触发条件”和“GitLab里最近提交的权限配置脚本里的限制”是否一致)、缺乏工程化的“规则约束”“参数边界检查”“异常处理”“日志记录”“可观测性”“可扩展性”(比如检索到的文档片段太多,超过了LLM的上下文窗口,纯RAG可能直接报错或者只给前N个片段,不会进行更精细的“多步推理式检索”“摘要式检索”“关联式检索”;比如检索到的文档片段里有敏感信息(比如客户的身份证号、公司的内部机密API key),纯RAG可能直接把这些敏感信息传给LLM,甚至生成的结果里也包含这些敏感信息)。
- 纯AI Agent的天花板:本质上还是“依赖大语言模型决策的工具调用机器人”,知识储备严重不足且不稳定(比如要生成符合公司内部规则的API key,纯LangChain Agent可能只会调用一个通用的API key生成工具,不会“记住”或者“检索”到公司内部最近3天更新的API key生成规则;比如要给引入Bug的开发者发钉钉的临时同步需求链接,纯LangChain Agent可能只会调用一个通用的钉钉发消息工具,不会“记住”或者“检索”到老板要求实习生必须抄送导师才能同步的规则,不会“记住”或者“检索”到Bug引入开发者的导师是谁,不会“记住”或者“检索”到临时同步需求的截止时间规则(比如必须是当前时间往后推24小时到72小时之间))、工具调用链经常“卡壳发散”,参数经常“搞错边界”(比如大语言模型本来应该只调用“查询最近3天的内部通知”这个工具,但它可能会调用“查询所有SaaS成立以来的内部通知”这个工具;比如大语言模型本来应该生成“当前时间往后推48小时”的截止时间,但它可能会生成“当前时间往前推48小时”的截止时间;比如大语言模型本来应该只生成1个临时API key,但它可能会生成100个临时API key)、缺乏工程化的“非AI核心环节封装”“规则配置可视化”“参数边界检查引擎”“异常处理流程引擎”“全流程日志记录引擎”“全流程可观测性仪表盘”“工具调用链回溯验证引擎”“规则权重调整和对比测试引擎”“自适应相似度阈值引擎”“敏感信息过滤引擎”“多渠道分发引擎”(这些其实就是AI Agent Harness Engineering要解决的核心问题!)。
0.3 核心价值:为什么RAG和AI Agent Harness Engineering的结合是“完美”的?
那么,怎么打破这三个天花板呢?答案就是——RAG(解决知识储备不足且不稳定的问题,提供结构化+非结构化+多模态的动态私有+公开知识检索能力,提供多步推理式检索、摘要式检索、关联式检索等更智能的检索逻辑) + AI Agent Harness Engineering(解决纯AI Agent的工具调用链卡壳发散、参数搞错边界的问题,封装好所有非AI核心但极其重要的工程化环节,提供可视化的规则配置、全流程的可观测性、可追溯的工具调用链、可调整的规则权重、可对比的测试结果、自适应的相似度阈值、严格的敏感信息过滤、灵活的多渠道分发等) = 全能任务助手(既能回答极其细分、动态更新、跨多文档跨时间线、甚至涉及非结构化文本+结构化数据+多模态数据的单步查询,又能执行多步骤、跨工具、需要决策和执行的全自动化闭环任务,而且整个流程的稳定性、准确性、可观测性、可扩展性都非常高)!
具体来说,RAG和AI Agent Harness Engineering的结合能带来以下10大核心价值——
- 打破LLM的知识截止日期限制:RAG可以从动态更新的私有+公开数据源(比如Confluence、GitLab、CRM、Stack Overflow、TechCrunch、36氪、知乎专栏、小红书)里实时检索最新的知识,AI Agent Harness Engineering可以封装好这些数据源的接口,提供可视化的数据源配置。
- 极大缓解LLM的幻觉问题:RAG可以为LLM的决策和生成提供“事实依据”(即检索到的文档片段),AI Agent Harness Engineering可以实现“事实依据的自动关联和引用”(比如在生成的结果里自动标注哪些内容来自哪篇文档的哪个片段,甚至可以生成“事实依据验证报告”),还可以实现“检索结果的异常检测和过滤”(比如如果检索到的所有文档片段的相似度都低于某个阈值,就会提示用户“没有找到相关的事实依据,请重新提问或者补充相关数据”,而不是让LLM自由发挥产生幻觉)。
- 提供结构化+非结构化+多模态的动态知识检索能力:RAG可以同时处理非结构化文本(比如Confluence的API文档、36氪的文章)、结构化数据(比如CRM的审批单状态、GitLab的commit哈希、公司内部的评分标准Excel表格)、多模态数据(比如客户发的带截图的错误反馈邮件、产品的演示视频),AI Agent Harness Engineering可以封装好这些不同类型数据的检索和处理逻辑,提供可视化的检索策略配置(比如可以配置“先检索结构化数据,再检索非结构化文本,最后检索多模态数据”,或者“同时检索所有类型的数据,然后按权重排序”)。
- 提供多步推理式检索、摘要式检索、关联式检索等更智能的检索逻辑:RAG可以实现“多步推理式检索”(比如用户问的是“某个版本的API文档修改历史(含弃用标记触发条件)”,RAG可以先检索“该版本的API文档修改历史”,再从这些修改历史里检索“弃用标记触发条件”,再检查“弃用标记触发条件”和“GitLab里最近提交的权限配置脚本里的限制”是否一致),可以实现“摘要式检索”(比如如果检索到的文档片段太多,超过了LLM的上下文窗口,RAG可以先对每个文档片段生成一个摘要,然后把这些摘要传给LLM,或者把最相关的N个完整文档片段和剩下的M个摘要传给LLM),可以实现“关联式检索”(比如用户问的是“我们当前Roadmap里有没有覆盖这个高频高痛的痛点?”,RAG可以先从最近更新的Roadmap会议纪要里检索“该痛点”,再从公司内部的技术预研项目库里检索“该痛点的预研优先级”,再从公司内部的产品迭代记录库里检索“该痛点的历史迭代情况”),AI Agent Harness Engineering可以封装好这些更智能的检索逻辑,提供可视化的检索步骤配置(比如可以用拖拽的方式配置多步推理式检索的步骤),还可以实现“检索步骤的自适应调整”(比如如果第一步检索到的文档片段的相似度都低于某个阈值,就会自动跳过第二步,直接提示用户“没有找到相关的事实依据”)。
- 极大提高AI Agent的工具调用链稳定性,减少卡壳发散:AI Agent Harness Engineering可以实现“工具调用链的规则约束”(比如可以用可视化的方式配置“工具调用的顺序规则”“工具调用的前置条件规则”“工具调用的后置条件规则”),可以实现“工具调用的意图识别和路由优化”(比如可以用一个专门的“小模型”或者“规则引擎”先识别用户的意图,然后把用户的请求路由到最合适的工具或者工具链),可以实现“工具调用链的回溯验证和自动修复”(比如如果某一步工具调用失败了,或者某一步工具调用返回的结果不符合预期,AI Agent Harness Engineering可以自动回溯到上一步或者更前面的步骤,调整检索策略或者工具调用的参数,然后重新执行,直到符合预期为止),还可以和RAG结合,“用事实依据约束AI Agent的决策”(比如要给引入Bug的开发者发钉钉的临时同步需求链接,AI Agent Harness Engineering可以先让RAG检索“老板要求实习生必须抄送导师才能同步的规则”“Bug引入开发者的导师是谁”“临时同步需求的截止时间规则”,然后把这些事实依据传给LLM,让LLM的决策和生成有依据,不会卡壳发散)。
- 极大提高AI Agent的工具调用参数准确性,减少搞错边界:AI Agent Harness Engineering可以实现“工具调用参数的规则约束和可视化配置”(比如可以用可视化的方式配置每个工具的每个参数的类型、范围、格式、必填项、默认值、依赖项等,比如“API key生成工具”的“数量”参数的类型是整数,范围是1-10,必填项是是,默认值是1;比如“钉钉发消息工具”的“截止时间”参数的类型是时间戳,格式是ISO 8601,必填项是是,默认值是当前时间往后推48小时,依赖项是“必须是当前时间往后推24小时到72小时之间”),可以实现“工具调用参数的自动边界检查和异常处理”(比如如果用户或者LLM输入的“API key生成工具”的“数量”参数是100,AI Agent Harness Engineering就会自动把它调整成10,并记录一条警告日志;比如如果用户或者LLM输入的“钉钉发消息工具”的“截止时间”参数是当前时间往前推48小时,AI Agent Harness Engineering就会自动把它调整成当前时间往后推48小时,并记录一条警告日志),还可以和RAG结合,“用事实依据约束AI Agent的参数选择”(比如要生成符合公司内部规则的API key,AI Agent Harness Engineering可以先让RAG检索“公司内部最近3天更新的API key生成规则”,然后根据这些规则自动调整“API key生成工具”的参数,比如长度、字符集、有效期等)。
- 封装好所有非AI核心但极其重要的工程化环节,降低开发和维护成本:AI Agent Harness Engineering可以封装好定时触发引擎(比如可以用可视化的方式配置任务的触发时间、触发频率、触发条件等,比如“每周一早上9点自动触发行业竞品分析报告生成任务”)、多源数据接入引擎(比如可以用可视化的方式接入Confluence、GitLab、CRM、Stack Overflow、TechCrunch、36氪、知乎专栏、小红书等常见的数据源,还可以支持自定义数据源的接入)、数据清洗和预处理引擎(比如可以自动去除文本里的HTML标签、空行、特殊字符,自动对文本进行分词、去停用词、词干提取/词形还原,自动对结构化数据进行格式转换、去重、填充缺失值,自动对多模态数据进行提取文本、生成摘要、提取特征等)、规则配置和管理引擎(比如可以用可视化的方式配置和管理所有的规则,包括数据源接入规则、数据清洗和预处理规则、检索策略规则、工具调用链规则、工具调用参数规则、自动评分规则、关联匹配规则、敏感信息过滤规则、多渠道分发规则等,还可以支持规则的版本控制、回溯验证、对比测试、权重调整等)、异常处理和流程管理引擎(比如可以用可视化的方式配置和管理所有的异常处理流程,包括数据源接入失败的异常处理、数据清洗和预处理失败的异常处理、检索失败的异常处理、工具调用失败的异常处理、自动评分失败的异常处理、关联匹配失败的异常处理、敏感信息过滤失败的异常处理、多渠道分发失败的异常处理等,还可以支持流程的暂停、继续、重试、终止等)、全流程日志记录和可观测性引擎(比如可以自动记录全流程的所有日志,包括数据源接入日志、数据清洗和预处理日志、检索日志、工具调用日志、自动评分日志、关联匹配日志、敏感信息过滤日志、多渠道分发日志、LLM的输入输出日志等,还可以提供可视化的可观测性仪表盘,展示任务的执行状态、执行时间、成功率、失败率、工具调用次数、检索次数、LLM的Token消耗、敏感信息过滤次数等关键指标,还可以支持日志的搜索、筛选、导出等)、工具调用链回溯验证和调试引擎(比如可以自动保存每次任务执行的完整工具调用链,包括每一步的工具名称、工具调用的参数、工具调用的返回结果、LLM的决策依据、LLM的生成结果等,还可以提供可视化的工具调用链回溯验证和调试界面,让开发者可以快速定位问题所在,还可以支持工具调用链的单步调试、断点调试等)、自适应相似度阈值和对比测试引擎(比如可以自动根据历史检索结果的准确率调整相似度阈值,还可以支持对比测试不同的检索策略、不同的相似度阈值、不同的规则权重、不同的LLM模型等,展示对比测试的结果,让开发者可以选择最优的配置)、敏感信息过滤和数据安全引擎(比如可以自动识别和过滤文本里的敏感信息,比如身份证号、手机号、银行卡号、密码、API key、公司的内部机密等,还可以支持自定义敏感信息的识别和过滤,还可以支持数据的加密存储、加密传输、权限控制等,确保数据的安全性)、多渠道分发和格式转换引擎(比如可以用可视化的方式配置和管理所有的多渠道分发,包括钉钉、企业微信、邮件、Slack、飞书等常见的分发渠道,还可以支持自定义分发渠道的接入,还可以支持格式转换,比如把Markdown格式的报告转换成PDF、Word、HTML等格式),这些环节如果纯靠开发者自己写代码维护,需要花几千行甚至几万行的代码,而且维护起来极其痛苦,但用AI Agent Harness Engineering就可以一键搞定,极大降低了开发和维护成本。
- 提供可视化的配置界面,降低使用门槛,让非技术人员也能参与进来:刚才提到的所有环节(定时触发、多源数据接入、数据清洗和预处理、规则配置和管理、异常处理和流程管理、全流程日志记录和可观测性、工具调用链回溯验证和调试、自适应相似度阈值和对比测试、敏感信息过滤和数据安全、多渠道分发和格式转换)都可以用拖拽式的可视化配置界面来完成,不需要写任何代码,这样不仅技术人员可以快速开发和维护,非技术人员(比如产品负责人、市场部经理、客服主管)也可以参与进来,比如产品负责人可以自己配置开发者自助工具的规则,市场部经理可以自己配置行业竞品分析报告的规则,客服主管可以自己配置客服系统的规则,极大降低了使用门槛,提高了工作效率。
- 提供强大的可扩展性,支持快速接入新的数据源、新的工具、新的分发渠道、新的规则等:AI Agent Harness Engineering可以支持自定义数据源的接入(比如只要提供一个符合规范的API接口,就可以快速接入新的数据源)、自定义工具的接入(比如只要提供一个符合规范的Python函数或者Docker镜像,就可以快速接入新的工具)、自定义分发渠道的接入(比如只要提供一个符合规范的API接口,就可以快速接入新的分发渠道)、自定义规则的接入(比如只要提供一个符合规范的Python函数或者YAML配置文件,就可以快速接入新的规则)、自定义LLM模型的接入(比如只要提供一个符合规范的API接口,就可以快速接入新的LLM模型,比如OpenAI的GPT-4o、Anthropic的Claude 3.5 Sonnet、Google的Gemini 1.5 Pro、Meta的Llama 3、国内的通义千问、文心一言、讯飞星火等),这样随着业务的发展,可以快速扩展系统的功能,不需要花太多的时间和精力改代码。
- 提供全流程的可追溯性和合规性,满足企业的合规要求:现在很多企业(尤其是金融、医疗、政务等行业的企业)对合规性的要求非常高,需要知道“AI生成的内容来自哪里?”“AI是怎么决策的?”“AI调用了哪些工具?”“AI的输入输出是什么?”“有没有敏感信息泄露?”等问题,RAG和AI Agent Harness Engineering的结合可以完美满足这些合规要求——RAG可以实现“事实依据的自动关联和引用”,AI Agent Harness Engineering可以实现“全流程的日志记录和可观测性”“工具调用链的回溯验证和调试”“敏感信息的过滤和数据安全”,这些都可以为企业的合规审计提供完整的证据链。
0.4 文章概述:本文将带你探索什么?
本文将从核心概念、问题背景与演变历史、概念结构与核心要素组成、概念之间的关系(包括核心属性维度对比、ER实体关系图、交互关系图)、数学模型(包括RAG的检索模型、AI Agent的决策模型、两者结合的融合模型)、算法流程图(包括多步推理式检索算法流程图、工具调用链规则约束算法流程图、两者结合的全能任务助手算法流程图)、算法源代码(包括Python实现的多步推理式检索算法、Python实现的工具调用链规则约束算法、Python实现的两者结合的简化版全能任务助手算法)、实际场景应用(包括客服系统升级、开发者自助工具迭代、市场调研自动化这三个开头提到的痛点场景的详细应用方案)、项目介绍(包括一个基于LangChain、ChromaDB、FastAPI、Streamlit的开源RAG+AI Agent Harness Engineering项目——SmartTaskAgent的介绍)、环境安装(包括SmartTaskAgent的环境安装步骤)、系统功能设计(包括SmartTaskAgent的10大核心功能设计)、系统架构设计(包括SmartTaskAgent的分层架构设计、微服务架构设计)、系统接口设计(包括SmartTaskAgent的RESTful API接口设计)、系统核心实现源代码(包括SmartTaskAgent的多源数据接入引擎核心实现、数据清洗和预处理引擎核心实现、检索策略引擎核心实现、工具调用链规则约束引擎核心实现、全流程日志记录和可观测性引擎核心实现)、最佳实践Tips(包括10大RAG+AI Agent Harness Engineering结合的最佳实践Tips)、行业发展与未来趋势(包括两者结合的问题演变发展历史的Markdown表格、未来5年的5大发展趋势预测)、本章小结(包括本文的主要内容回顾、核心价值重申、下一步可以探索的方向)这20多个部分来展开,循序渐进地带你探索RAG和AI Agent Harness Engineering的完美结合,从理论到实践,从概念到代码,全面覆盖,让你看完这篇文章就能自己动手搭建一个属于自己的全能任务助手!
一、 核心概念:RAG、AI Agent、AI Agent Harness Engineering到底是什么?
1.1 核心概念一:检索增强生成(Retrieval-Augmented Generation, RAG)
1.1.1 核心定义
检索增强生成(RAG)是一种将信息检索(IR)技术与大语言模型(LLM)生成技术相结合的自然语言处理(NLP)技术框架,其核心思想是:在LLM生成回答或者执行任务之前,先从外部知识库(可以是私有知识库,也可以是公开知识库;可以是非结构化文本知识库,也可以是结构化数据知识库,还可以是多模态数据知识库)里检索出与用户查询或者任务相关的“事实依据”(即文档片段),然后将这些“事实依据”与用户的查询或者任务一起作为LLM的输入,让LLM基于这些“事实依据”生成更准确、更可靠、更少幻觉的回答或者执行更合理的任务。
1.1.2 起源与发展
RAG的概念最早是由Facebook AI Research(FAIR,现在的Meta AI)在2020年发表的论文《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》中提出的,当时的RAG主要是针对知识密集型的单步问答任务(比如“谁是2018年世界杯足球赛的冠军?”),使用的是固定的检索器(比如BM25、Dense Passage Retrieval, DPR)和固定的生成器(比如GPT-2、BART),整个流程是“离线构建知识库向量索引→在线接收用户查询→在线检索相关文档片段→在线将文档片段与用户查询拼接→在线生成回答”。
随着大语言模型技术的快速发展(比如GPT-3、GPT-4、Claude、Gemini等模型的出现),RAG技术也在不断进化,从最初的**“朴素RAG”(Naive RAG)** 发展到现在的**“高级RAG”(Advanced RAG)** 和**“模块化RAG”(Modular RAG)**:
- 朴素RAG(Naive RAG):就是刚才提到的FAIR最初提出的RAG,整个流程比较简单,只有“离线构建向量索引→在线检索→在线拼接→在线生成”这几个步骤,检索器和生成器都是固定的,没有太多的优化空间,适用于比较简单的知识密集型单步问答任务。
- 高级RAG(Advanced RAG):在朴素RAG的基础上,增加了很多优化环节,比如查询重写(Query Rewriting)、查询分解(Query Decomposition)、多步推理式检索(Multi-step Reasoning Retrieval)、摘要式检索(Summarization Retrieval)、关联式检索(Associative Retrieval)、重排序(Reranking)、事实依据压缩(Evidence Compression)、事实依据验证(Evidence Verification)、事实依据引用(Evidence Citation) 等,检索器和生成器也可以根据不同的任务进行调整,适用于比较复杂的知识密集型单步问答任务。
- 模块化RAG(Modular RAG):在高级RAG的基础上,进一步将整个RAG框架拆分成了多个独立的、可替换的、可组合的模块,比如查询处理模块(Query Processing Module)、检索模块(Retrieval Module)、重排序模块(Reranking Module)、事实依据处理模块(Evidence Processing Module)、生成模块(Generation Module)、验证模块(Verification Module) 等,开发者可以根据不同的任务需求,自由组合这些模块,甚至可以自己开发新的模块替换掉现有的模块,适用于各种复杂的知识密集型任务,包括单步问答任务和多步任务执行任务(这就为RAG和AI Agent的结合打下了基础)。
1.1.3 核心应用场景
RAG的核心应用场景主要包括以下几类:
- 知识密集型单步问答系统:比如企业内部的知识库问答系统、客服问答系统、教育问答系统、医疗问答系统、金融问答系统等。
- 知识密集型内容生成系统:比如企业内部的文档生成系统、报告生成系统、邮件生成系统、代码生成系统(辅助生成符合公司内部规范的代码)等。
- 知识密集型内容审核系统:比如企业内部的内容审核系统、社交媒体的内容审核系统等,可以先从外部知识库检索相关的审核标准,然后让LLM基于这些审核标准审核内容。
- 知识密集型多步任务执行系统:比如开头提到的客服系统升级里的“跨多文档跨时间线查询API文档修改历史+关联GitLab权限配置脚本”任务、开发者自助工具迭代里的“查内部通知+查GitLab权限配置脚本+生成API key+查内部错误库+查Stack Overflow+查Trace日志+查GitLab提交记录+找开发者导师+发钉钉临时同步需求链接”任务、市场调研自动化里的“多源检索+数据清洗+规则分类+自动评分+关联匹配+内容生成+格式转换+多渠道分发”任务等(这就需要RAG和AI Agent的结合)。
1.2 核心概念二:AI Agent(人工智能代理)
1.2.1 核心定义
AI Agent是一种能够感知环境、基于感知到的信息和自身的目标/规则进行决策、通过调用外部工具或者执行自身的动作来改变环境、并能够从环境的反馈中学习和优化自己的决策和动作的智能体,其核心思想可以用**“感知-决策-执行-反馈-学习”(Perceive-Decide-Act-Feedback-Learn)** 这个闭环来概括。
如果用更通俗的话来说,AI Agent就像是一个**“数字员工”(Digital Worker)**,它可以:
- “看”(感知):通过各种传感器(比如API接口、摄像头、麦克风、键盘、鼠标等)感知外部环境的信息(比如用户的查询、数据库里的数据、GitLab里的提交记录、天气信息等)。
- “想”(决策):基于感知到的信息和自身的目标/规则(比如“帮用户搭建一个Demo”“帮用户生成一份行业竞品分析报告”“帮用户回答一个问题”),使用大语言模型或者其他决策算法进行决策,决定下一步要做什么(比如“调用查询内部通知的工具”“调用生成API key的工具”“调用生成报告的工具”)。
- “做”(执行):通过调用外部工具(比如查询内部通知的工具、生成API key的工具、查询GitLab提交记录的工具、发钉钉消息的工具)或者执行自身的动作(比如生成文本、生成代码、生成图像)来改变外部环境。
- “听”(反馈):通过各种传感器感知外部环境对自己动作的反馈(比如工具调用的返回结果、用户的反馈、环境的变化等)。
- “学”(学习):基于感知到的反馈,使用强化学习或者其他学习算法优化自己的决策和动作,以便下次能够更好地完成任务。
1.2.2 起源与发展
AI Agent的概念其实由来已久,最早可以追溯到20世纪50年代的人工智能诞生初期,当时的AI Agent主要是针对简单的棋盘游戏(比如国际象棋、跳棋)和简单的机器人控制(比如避障机器人),使用的是简单的规则引擎或者强化学习算法(比如Q-learning)。
随着大语言模型技术的快速发展(尤其是GPT-3、GPT-4等具有强大的自然语言理解和生成能力、强大的逻辑推理能力、强大的工具调用能力的模型的出现),AI Agent技术也迎来了爆发式的发展,从最初的**“规则驱动的AI Agent”(Rule-driven AI Agent)** 和**“强化学习驱动的AI Agent”(Reinforcement Learning-driven AI Agent)** 发展到现在的**“大语言模型驱动的AI Agent”(LLM-driven AI Agent)**:
- 规则驱动的AI Agent(Rule-driven AI Agent):就是完全由规则引擎驱动的AI Agent,开发者需要预先编写好所有的规则(比如“如果用户问A,就调用工具X;如果工具X返回结果B,就调用工具Y;如果工具Y返回结果C,就生成回答D”),整个流程是固定的,没有太多的灵活性,适用于比较简单的、流程固定的任务。
- 强化学习驱动的AI Agent(Reinforcement Learning-driven AI Agent):就是完全由强化学习算法驱动的AI Agent,开发者不需要预先编写好所有的规则,只需要定义好状态空间(State Space)、动作空间(Action Space)、奖励函数(Reward Function),然后让AI Agent在环境中不断地尝试和学习,通过最大化奖励来优化自己的决策和动作,适用于比较复杂的、流程不固定的任务,但训练成本非常高,训练时间非常长,而且很难解释AI Agent的决策过程。
- 大语言模型驱动的AI Agent(LLM-driven AI Agent):就是以大语言模型为核心决策引擎的AI Agent,开发者只需要给AI Agent定义好目标(Goal)、角色(Role)、规则(Rules)、可用工具(Available Tools),然后大语言模型就会基于这些信息和感知到的环境信息,自动进行决策和执行,整个流程非常灵活,适用于各种复杂的、流程不固定的任务,而且训练成本非常低(不需要专门训练强化学习模型,只需要微调大语言模型或者使用Prompt Engineering即可),决策过程也比较容易解释(可以通过大语言模型的输入输出日志和决策依据来解释)。
现在比较流行的LLM-driven AI Agent框架主要包括LangChain、LlamaIndex(GPT Index)、AutoGPT、BabyAGI、CrewAI、Microsoft Autogen等,每个框架都有自己的特点和适用场景:
- LangChain:是目前最流行的LLM-driven AI Agent框架之一,它提供了一套统一的接口,可以快速接入各种大语言模型、各种数据源、各种工具,还提供了很多预定义的Agent类型(比如Zero-shot Agent、Few-shot Agent、ReAct Agent、Plan-and-Execute Agent等),适用于各种复杂的AI Agent开发。
- LlamaIndex(GPT Index):也是目前最流行的LLM-driven AI Agent框架之一,它主要是针对知识密集型的AI Agent开发,提供了一套强大的RAG功能(比如向量索引、知识图谱索引、文档摘要索引等),可以快速构建知识密集型的AI Agent,适用于开头提到的客服系统升级、开发者自助工具迭代、市场调研自动化等任务。
- AutoGPT:是一个开源的、自主的LLM-driven AI Agent,它可以自动设定子目标、自动调用工具、自动完成复杂的任务,不需要用户的太多干预,适用于比较开放式的任务(比如“帮我研究一下最近的AI发展趋势,写一份报告”),但稳定性和准确性比较差,容易卡壳发散。
- BabyAGI:也是一个开源的、自主的LLM-driven AI Agent,它的核心思想是**“任务优先列表”(Task Priority List)**,它会自动生成任务、自动安排任务的优先级、自动执行任务、自动更新任务的状态,适用于比较开放式的任务,稳定性和准确性比AutoGPT好一些,但还是容易卡壳发散。
- CrewAI:是一个开源的、多Agent协作的LLM-driven AI Agent框架,它可以让多个不同角色的AI Agent(比如“产品经理Agent”“开发者Agent”“测试Agent”“市场经理Agent”)协作完成复杂的任务,适用于比较大型的、需要多角色协作的任务(比如“帮我开发一个简单的SaaS产品”)。
- Microsoft Autogen:是微软开源的、多Agent协作的LLM-driven AI Agent框架,它可以让多个不同类型的Agent(比如LLM-driven Agent、Rule-driven Agent、Human Agent)协作完成复杂的任务,还提供了一套强大的对话管理功能,适用于比较大型的、需要多角色协作、甚至需要人工干预的任务。
1.2.3 核心应用场景
LLM-driven AI Agent的核心应用场景主要包括以下几类:
- 多步骤、跨工具的任务执行系统:比如开头提到的客服系统升级里的“跨多文档跨时间线查询API文档修改历史+关联GitLab权限配置脚本”任务、开发者自助工具迭代里的“查内部通知+查GitLab权限配置脚本+生成API key+查内部错误库+查Stack Overflow+查Trace日志+查GitLab提交记录+找开发者导师+发钉钉临时同步需求链接”任务、市场调研自动化里的“多源检索+数据清洗+规则分类+自动评分+关联匹配+内容生成+格式转换+多渠道分发”任务等。
- 多Agent协作的系统:比如软件开发团队的多Agent协作系统(产品经理Agent负责需求分析和文档编写、开发者Agent负责代码编写、测试Agent负责代码测试、运维Agent负责代码部署)、客服团队的多Agent协作系统(售前客服Agent负责产品介绍和销售咨询、售后客服Agent负责问题处理和技术支持、投诉处理Agent负责投诉处理和客户安抚)等。
- 自主内容创作系统:比如自主新闻写作系统(可以自动从多源检索新闻线索、自动撰写新闻稿、自动发布新闻稿)、自主小说创作系统(可以自动设定小说的主题、人物、情节、自动撰写小说的章节、自动根据读者的反馈调整小说的情节)等。
- 自主数据分析系统:比如自主金融数据分析系统(可以自动从多源检索金融数据、自动清洗和预处理金融数据、自动分析金融数据、自动生成金融分析报告、自动给出投资建议)、自主用户行为数据分析系统(可以自动从数据库里检索用户行为数据、自动清洗和预处理用户行为数据、自动分析用户行为数据、自动生成用户行为分析报告、自动给出产品优化建议)等。
1.3 核心概念三:AI Agent Harness Engineering(AI代理 harness 工程化,或者叫AI代理工程化 harness、AI代理框架工程化)
1.3.1 核心定义
首先,我们需要明确一下**“Harness”** 这个词的含义——在软件工程领域,“Harness”通常指的是**“测试 harness”(Test Harness)** 或者**“部署 harness”(Deployment Harness),它是一套用于支撑、约束、管理、监控某个软件系统或者组件的工具和流程的集合**,其核心作用是让软件系统或者组件更稳定、更可靠、更易维护、更易扩展、更易观测、更易调试、更易测试、更易部署。
那么,AI Agent Harness Engineering(AI代理 harness 工程化) 就是一套用于支撑、约束、管理、监控、调试、测试、部署AI Agent的工具和流程的集合,其核心思想是将AI Agent的“AI核心环节”(即LLM的决策和生成)和“非AI核心但极其重要的工程化环节”(即定时触发、多源数据接入、数据清洗和预处理、规则配置和管理、异常处理和流程管理、全流程日志记录和可观测性、工具调用链回溯验证和调试、自适应相似度阈值和对比测试、敏感信息过滤和数据安全、多渠道分发和格式转换等)分离开来,封装好所有的非AI核心环节,提供可视化的配置界面,让开发者可以专注于AI核心环节的开发(比如Prompt Engineering、LLM微调、工具开发等),同时让AI Agent更稳定、更可靠、更易维护、更易扩展、更易观测、更易调试、更易测试、更易部署,让非技术人员也能参与进来。
如果用更通俗的话来说,AI Agent Harness Engineering就像是一个**“AI Agent的安全绳和工具箱”(Safety Harness and Toolkit for AI Agents)**:
- “安全绳”:它可以约束AI Agent的行为,防止AI Agent卡壳发散、防止AI Agent搞错工具调用的参数边界、防止AI Agent泄露敏感信息、防止AI Agent做出不符合规则的决策和动作。
- “工具箱”:它可以为AI Agent提供所有需要的非AI核心工具,比如定时触发工具、多源数据接入工具、数据清洗和预处理工具、规则配置和管理工具、异常处理和流程管理工具、全流程日志记录和可观测性工具、工具调用链回溯验证和调试工具、自适应相似度阈值和对比测试工具、敏感信息过滤和数据安全工具、多渠道分发和格式转换工具等。
1.3.2 起源与发展
AI Agent Harness Engineering的概念其实是伴随着LLM-driven AI Agent的爆发式发展而产生的——因为在LLM-driven AI Agent出现之前,规则驱动的AI Agent和强化学习驱动的AI Agent都不需要太多的工程化harness(规则驱动的AI Agent的流程是固定的,异常处理和流程管理比较简单;强化学习驱动的AI Agent的训练成本很高,通常只在实验室里使用,不需要太多的部署和运维),但LLM-driven AI Agent出现之后,情况就完全不一样了:
- LLM-driven AI Agent的流程是不固定的:完全由大语言模型的决策决定,很容易卡壳发散,需要工程化harness来约束它的行为。
- LLM-driven AI Agent的工具调用参数是由大语言模型生成的:很容易搞错边界,需要工程化harness来进行自动边界检查和异常处理。
- LLM-driven AI Agent需要接入很多外部数据源和工具:需要工程化harness来封装好这些外部数据源和工具的接口,提供可视化的配置。
- LLM-driven AI Agent需要处理很多非AI核心但极其重要的环节:比如定时触发、数据清洗和预处理、规则配置和管理、异常处理和流程管理、全流程日志记录和可观测性、工具调用链回溯验证和调试、自适应相似度阈值和对比测试、敏感信息过滤和数据安全、多渠道分发和格式转换等,需要工程化harness来封装好这些环节。
- LLM-driven AI Agent需要快速部署和运维:需要工程化harness来提供可视化的部署和运维界面。
- 企业对LLM-driven AI Agent的合规性要求非常高:需要工程化harness来提供全流程的可追溯性和合规性。
所以,从2023年开始,随着LangChain、LlamaIndex等LLM-driven AI Agent框架的不断成熟,越来越多的企业和开发者开始意识到AI Agent Harness Engineering的重要性,很多专门的AI Agent Harness Engineering工具和平台也开始出现,比如LangSmith(LangChain官方推出的AI Agent开发、调试、测试、部署、监控平台)、LlamaTrace(LlamaIndex官方推出的AI Agent可观测性平台)、Weights & Biases (W&B) Prompts(W&B推出的Prompt Engineering和AI Agent调试、测试、监控平台)、Arize AI(Arize推出的LLM和AI Agent可观测性平台)、Fiddler AI(Fiddler推出的LLM和AI Agent可观测性和监控平台)、TruEra(
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)