引用要回答的问题很朴素:“这句话是从哪来的?”要答得可靠,引用就不能是事后补的链接,而必须是执行过程本身的产物:哪个工具、读了哪份文档的哪一段、读到了什么。这一篇讲 ApeMind 的引用怎么产生、带着哪些信息,以及资料变化后会发生什么。
候选与依据
一轮问答里,智能体会接触到两类材料。它们在界面上被刻意分开:
检索返回的片段摘要和排名,用来决定“接下来读什么”。它们出现在执行过程里,可以展开查看,但不会被当作回答的依据。
智能体按引用读回的完整片段、文档、网页或实体详情。只有这一类材料进入回答下方的“依据”列表,并按顺序编号。
这样区分的原因是:搜索摘录可能被截断、可能只是字面沾边,凭摘录作答容易断章取义。要求“先读原文再引用”,引用指向的就是完整上下文,而不是一个关键词命中。
追溯一条引用
下面是一轮问答的示意。左边是执行过程和回答,右边是选中引用的完整追溯链。点回答里的编号或下方的依据,切换引用;在第 ④ 步可以展开相邻片段;在第 ⑤ 步模拟资料变化后再回读。
示例数据为演示用途;字段结构与产品一致。
引用携带什么
每条引用由三部分组成:引用的文字、定位和来源元数据。元数据记录它由哪次工具调用产生(点引用卡可以跳到执行过程里的那一行)、来自哪条检索通道、当时的排名和分数。定位按来源类型不同分几种:
最常见的定位。给出文档标题、所在章节和片段序号;带有片段 ID 时,可以直接组成回读句柄。
- doc_title
- section_path
- chunk_index · chunk_id
解析器支持页码映射时,精确到第几页。除了给人看的页码,还带着文档 ID 和片段 ID,用于回读时校验文档仍然存在、仍然可读。
- page_index
- document_id
- chunk_id
联网读取的页面,给出网址和标题。网页内容会变化,引用保存的是这一轮读到的那段文字。
- url
- title
回读:用句柄拿回原文
知识库片段的定位可以组成一个
- 逐条有状态。一次可以回读多条句柄,结果与输入一一对应:成功、已不存在、无权访问、超出预算被跳过,都会明确标出,不会静默丢掉某一条。
- 每次都重新鉴权。回读走和检索一样的权限检查。引用不是一张永久通行证:文档被删除、你被移出组织,之后的回读就会失败。
- 图片钉在解析版本上。回答里引用的知识库图片带着完整的版本身份,读取时必须匹配精确的解析版本。文档重新解析后,旧引用按过期处理,不会悄悄换成新版本里的另一张图。
分享时引用变成什么
把对话分享出去时,系统生成一份只读快照。快照保留引用的标题和摘要,去掉一切内部定位:知识库 ID、文档 ID、私有对象路径和受保护的下载链接。拖动中线对比:
page_index=4 document_id=doc_77d…apemind-image://v1/…/parse_version=4c1e…超出标准的部分须经部门负责人审批……
内部 ID 与原文链接
超标费用须在报销单中单独列示……
文档 ID
图片冻结为快照内的公开副本
私有对象路径
分享链接的令牌只在创建时显示一次,服务端只保存它的哈希;撤销后链接立即失效。回答里的知识库图片会冻结成快照里的公开副本:同一张图只冻结一次,精确版本缺失时显示为不可用占位,不会回退到当前版本,也不会把登录态下载地址带到公开页面。
边界
- 引用回答的是“这句话依据的是哪段原文”,帮你核对,但不自动证明回答完全正确。模型仍可能误读原文,核对是引用存在的意义。
- 网页引用保存的是当时读到的内容;原网页之后改了,引用里的文字不会跟着变。
- 文档删除或权限撤销后,历史对话里的引用仍显示当时的摘录文字,但无法再回读原文。
出问题时查哪一环
回答没有任何依据
智能体这一轮可能只做了搜索、没有回读原文,或者回答来自它自身的知识。展开执行过程看是否有读取类工具调用;对于需要出处的问题,可以要求它“引用原文作答”。
点开引用提示文档不存在或无权访问
回读时会重新鉴权。文档已被删除、知识库已取消订阅,或你已不在对应组织,都会导致回读失败,这是预期行为。
引用的页码对不上
页码来自解析器的页码映射,只有部分解析器支持。没有页码映射的文档按片段和章节定位。文档重新解析后,请以新一轮对话的引用为准。
给想深入的读者:依据如何编号
运行时把每次读取类工具(读取片段、读取文档、回读句柄、读取网页、实体详情)的返回转换成结构化的来源材料,持久化在这一轮的消息里。界面按出现顺序为它们编号,搜索类工具产生的引用只出现在执行过程中。刷新页面后,这些材料从持久消息恢复,编号保持不变。