2026-01-130

背景

随着各种LLM的普及,ai agent的开发逐渐成为后端开发的必备,所以需要掌握相关的知识是后端所必须的 这里主要记录一些agent开发相关的基础知识学习

参考文章

技术架构

  • python 相关框架 langChain LangGraph
  • golang 相关框架 eino 是字节跳动开源的一款基于 Go 语言 的大模型(LLM)应用开发框架

RAG(Retrieval-Augmented Generation 检索增强生成)

  • 描述:一种结合了信息检索和文本生成的技术

  • 核心思想:

    • 在生成回答之前,先从外部知识库中检索相关信息,
    • 然后将检索到的信息作为上下文提供给大语言模型,
    • 从而生成更准确、更可靠的回答。
  • 工作流程

    • 首先在数据准备阶段,系统通过数据提取、文本分割和向量化,将外部知识构建成一个可检索的数据库。
    • 随后在应用阶段,系统会响应用户的提问,从数据库中检索相关信息,将其注入Prompt,并最终驱动大语言模型生成答案。
  • 核心词汇拆解

    • Retriever (检索器): 这是 RAG 架构中的关键组件。它的任务是根据用户的问题,去向量数据库(如 Milvus, Pinecone)中寻找最相关的文档片段。
    • Knowledge Tool (知识工具): 在 Eino/ReAct 模式中,知识库搜索被封装成了一个 Function Call (函数调用)。Agent 并不是每次都去查知识库,而是当它觉得“我不知道这个信息,我需要查一下手册”时,才会主动调用这个工具。
  • 为什么agent需要记忆和rag

    • 无状态导致的对话遗忘
    • 模型内置信息的局限性
  • memory_tool负责存储和维护对话过程中的交互信息,

  • rag_tool则负责从用户提供的知识库中检索相关信息作为上下文,并可将重要的检索结果自动存储到记忆系统中

memory记忆分类

  • 工作记忆(当前会话的上下文)
  • 情景记忆(完整的交互过程中的上下文)
  • 语义记忆(用户偏好、需要长期执行的指令等)
  • 感知记忆(专门处理图像、音频等多模态信息,并支持跨模态检索)

遗忘机制

  • 基于重要性(删除重要性低于阈值的记忆)
  • 基于时间(删除过时的记忆)
  • 基于容量(当存储接近上限时删除最不重要的记忆)

RAG中文档切割的策略有哪些

  • 切割存在的问题
    • 切的太大,检索精度下降
    • 切的太小,导致丢失上下文
  • 策略
    • 固定大小切割
    • 递归字符切割(最常用)
      • 核心思想: 按照文本的自然边界来切
    • 基于文档结构的切割
      • 核心思想: 利用文档自身的格式结构(case: markdown、代码文件、pdf)
    • 语义切割
      • 基于内容的语义相似度来决定在哪切
    • Agent 驱动的智能切割
      • 思路: 用LLM 本身来判断应该怎么切

Prompt 太长会怎么样

  • 注意力稀释,导致出现幻觉
    • case : 会议太长,无法记住所有内容,迷失在中间(只能记住头尾记不住中间的所有内容)
  • 物理缓存瓶颈
    • case: 后台分配巨大的缓存空间

prompt怎么写(怎么优化)

  • zero-shot 零样本提示 : 直接向模型提问,只能回答简单的问题,无法解决无法的场景,比如算术题
  • few-shot 少样本提示: 给出一些样本(几个高质量的问答),解决不了链路很长的场景
  • chain-of-thought(CoT) 思维链 (相当于给样本的时候,同时给出了解题步骤)

top K值怎么设置

  • 两阶段阈值
    • 先进行粗排Recall(保召回),然后进行精排ReRank(保质量)
  • 动态阈值
    • 定义一个分数线标准,如果任然不符合标准, 有多少符合,就选多少个

RAG检索阶段用的是双编码器(Bi-Encoder)

  • 把查询和文档分别编码为向量,然后通过计算向量之间的余弦相似度来判断相关性
  • 不足: 无法提前预判用户的问题,只能将文档生成为泛化、平均化的语义向量
  • 优势: 快,文档的向量一开始已经生成好了,查询时,只需要将查询向量化后,做向量相识度抖索就可以了

Re-rank(重排序)

  • 使用的是cross-Encoder(交叉编码器)
    • 把查询和文档拼在一起,让模型同时看到两者
  • 优点: 能更加精确的分析查询
  • 缺点:太慢,因为要将查询和所有候选文档都拼在一起推理一遍
    • 优化方式: 两阶段检索
      • 先用Bi-Encoder进行粗排
      • 再用cross-Encoder进行细排

Bi-Encoder的缺陷

  • 信息压缩损失
  • 缺乏查询意图感知

Step-back prompting(后退一步提问)

  • 先引导模型思考一个与当前具体任务相关的通用性问题,
  • 然后将该通用问题的答案作为上下文,
  • 输入到后续处理具体任务的prompt中,从而提升模型表现。

Top-K实战建议

  • 先检索50-100个候选
  • 再重排到top5 或top10
  • 使用重排的前提
    • 粗排top-1的分数低于某个阈值时,才启动重排序

一个工业级的 Prompt 通常包含( 如何写prompt):

  • Role (角色): 定义 AI 的专业背景(如:你是一个资深的 POI 数据清洗专家)。

  • Context (背景): 提供任务的具体场景、原始数据格式、业务限制。

  • Task (任务描述): 明确具体要干什么,避免歧义。

  • Constraint (约束): 规定不能做什么(如:禁止幻觉、输出长度限制、严禁返回非 JSON 格式)。

  • Output Format (输出格式): 强烈建议要求 JSON。在 Agent 开发中,结构化输出是后续代码处理的前提。

  • Few-shot (示例): 提供 2-3 个高质量的输入输出样本,这是提升模型稳定性最有效的方式。

本文作者:曹子昂

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!