image.png
前言
人工智能时代已然到来,它不仅深刻地改变了我们的日常生活,比如通过智能助手安排日程、利用推荐系统享受个性化服务,还极大地推动了各行各业的创新与发展。从医疗健康到环境保护,从智能制造到金融服务,AI的应用正在不断拓宽边界,提升效率与精准度。

什么是 AI Agent?
根据丹尼尔·卡尼曼的著作《思考,快与慢》,人类的思维可以分为两大系统:系统1和系统2。系统1负责直觉式的快速思考,这种思考往往是无意识的;而系统2则擅长进行有意识的逻辑推理和主动控制。

在探讨大型模型的思维能力时,我们首先可以观察到,这些大模型可能具备了类似人类的分析问题能力,它们能够理解、分析和解决复杂问题。进一步地,人类与动物的一个重要区别在于人类擅长创造和使用工具。随着大模型认知能力的不断提升,当它们遇到自身不擅长的领域时,这些大模型可能会展现出一种类似于人脑使用工具的能力——即寻找并利用适当的工具来解决问题,而不是直接依靠自身能力去解决。
image.png

基于RAG的知识问答实践
RAG核心流程 & 实践挑战
问答助手:基于RAG技术实现问答助手,特别是针对测试环境场景的一些常见问题,回答失败原因以及解决思路
image.png

RAG(Retrieval-Augmented Generation)结合检索(Retrieval)和生成(Generation)的AI模型架构
初级RAG主要包含以下几个流程:

  1. 建立索引:数据清洗并分块,将分块后的知识通过Embedding模型产出语义向量并建立索引;
  2. 检索:通过用户query使用相同的Embedding模型,检索上下文;
  3. 生成:将给定问题和相关文档合并为新的提示,由LLM基于提供的信息回答问题。
    image.png

RAG通过检索现有大量知识结合强大的生成模型,为复杂的问答带来全新的解决方案,而在产品建设过程中遇到诸多挑战:

  1. 数据质量差导致检索效果差:检索阶段的输出影响生成阶段的输入和最终的输出质量。RAG数据库中存在大量的错误信息并检索到,可能导致模型生成的错误,即使在检索阶段做大量工作,可能对结果的影响也微乎其微。
  2. 数据向量化的信息缺失:数据向量化缺失可能会导致一定程度的信息损失,文本数据的复杂性和多样性很难用有限的向量来完全表达,导致向量化后可能会缺失一些文本数据的细节和特征,从而影响文档检索的准确率。
  3. 大模型生成效果差:没有利用好提示词,导致大模型回答效果不尽人意。

构建高质量知识库
在构建知识库的时候,因为直接使用了未经过处理的记录表格作为知识库输入,发现RAG回答效果很差
image.png
结构化知识库:
1.调整知识库的结构:将知识库的内容简化为(Q问题,A解答),避免噪声干扰
2.文档分割策略:按行分割,保证每行的QA记录能够独立分割开来

增强检索能力
在召回测试当中,一些极低分数的分段文本知识也会被召回,就会导致回答的效果下降
image.png

优化迭代检索参数

  1. 确定检索方式
    ¢ 全文检索:工作原理是通过在文档中进行关键词匹配,缺乏对语义的理解
    ¢ 向量检索:通过计算向量距离,实现语义匹配检索。当查询语义比较复杂或模糊时,向量检索无法准确理解用户的意图,会导致准确率降低
    ¢ 混合检索:结合了全文搜索和向量搜索的优势
  2. 确定Rerank(重排序)模型参数
    ¢ TOPK:需要检索到检索分数排名多少的分段结果
    ¢ 分数阈值:只召回多少检索分数以上的结果
    image.png

多级检索,提升召回准确率
有时候因为提问的问题其实非常的简短,仅仅依靠问题的嵌入匹配,召回分数会比较低,最好的方式是能够先通过对问题做向量检索

  • 一级检索:只针对问题进行检索;
  • 二级检索:检索响应的QA知识文本分段;
    image.png

利用好提示词
提示工程 (Promot Enoineeing)当我们能够检索到足够准确的文本分段之后,接下来的任务就是引导大模型生成符合预期的回答,在这一过程中,利用好提示词显得非常重要。如下所示,是一个提示词框架以及一个提示词示例(引导大模型帮助解析json字符串的字段),可以让大模型得到更加清晰的指令,按照我们的预期采取行动
image.png
image.png

基于Function call的排障助手实践
排障助手:RAG问答助手在测试过程中能够高效解决常见问题。为了进一步提升问题排查的效率,于是利用AI技术,特别是基于大模型的Function call能力,实现了一款能够协助自动排查测试问题的AI助手
image.png

大模型Agent:能够模拟独立思考过程,灵活调用各类工具,逐步达成预设目标的智能体
image.png

在实践的过程中,我们面临两个问题:

  1. 当我们在实现基于大模型Function call能力调用的时候,很多情况下可能需要调用多次才能解决我们的问题, 如何实现多轮调用?
  2. 单一智能体是否真的能满足我们面对的复杂的 测试场景的问题排障?
    如何实现多轮调用?
    利用React架构,可以帮助我们实现Function call的多轮调用。

Reason and Act(ReAct)是一种人工智能技术框架,ReAct结合了推理和行动,通过交替执行一系列步骤(重复N次)——思考、行动和观察,使LLM能够解决复杂的任务。
ReAct框架的核心组件:
 Thought(思考):Agent在做决策的思考过程
 Action(行动):Function call调用
 Observation(观察):工具调用的反馈信息,帮助大模型进一步决策
image.png

单一智能体排障场景下的局限性
局限性:当采用基于React框架的Agent,让大模型多次调用接口去帮助我们排查放款失败问题的时候,一切看起来似乎符合我们的预期,但是当我们希望通过设计这个Agent再去排查预审失败等等其他问题的时候,出现了问题
image.png

  1. 迭代能力受限:无法在处理一个任务的时候迭代足够多的工具调用
  2. 工具数量有限:能够使用的工具有限,无法同时排查多个问题
  3. 影响模型回复时效:每次请求携带大量工具信息,模型需要理解所有工具信息进行决策
  4. 消耗tokens:当我只想要排查放款失败,同样也会把用于排查预审失败的工具信息带上,造成不必要的tokens消耗

多智能体架构(Multi-Agent Architecture)
突破单一智能体的局限,根据任务需求动态地调用不同的智能体
image.png
1.高效迭代:动态地组合不同的工具,更高效的迭代过程
2.突破工具限制:每个智能体包含特定的工具集,扩展了系统的工具数量
3.加速模型响应:减少了模型在每次请求中需要理解和处理的数量
4.减少token消耗:避免了携带不必要的工具信息

展望未来
AI Agent 将不仅仅局限于解决问题的执行层面,而是将进一步深入到如何解决问题的规划层面。

在工作场景中,我们对 AI Agent 的期待包括:

  1. 连续执行:Agent 能够对用户的任务指令进行拆解,分解为多个步骤,对这些步骤进行规划排序并连续执行。
  2. 完成复杂任务:目前 Agent 只能解决单个或少数简单任务,未来期望能够处理多个复杂任务。
  3. 多步骤规划:Agent 在执行后续步骤的同时,能够保持对任务目标和前序任务的记忆,具备强大的步骤规划执行能力。

作者简介
Alex,基础框架研发资深工程师

招聘信息
image.png
拍码场


信也科技布道师
12 声望10 粉丝