人人都会AI编程

引用溯源、来源跳转

更新时间:2026-07-12

“可溯源可验证”的价值最终需要透过具体的交互细节传递给用户——答案旁边标注的引用、可点击的链接。这个小节描述如何在 RAG 问答链路中,设计并实现可靠、易用的引用溯源与来源跳转功能。

1. 引用溯源的基本形态

在 RAG 系统中,引用溯源通常以 内联标注 + 来源列表 的方式呈现:

  • 回答正文中,在每个依据知识库内容生成的句子或段落末尾,添加数字或标识(如 [1][2])。
  • 回答下方列出对应的来源信息:文档标题、章节、更新日期,甚至匹配到的片段原文片段。
  • 每条来源都可以做成可交互的跳转入口,点击后在新标签页或侧栏中打开原始文档的指定位置。

这种形式直观地告诉用户:这个结论依据的是哪份资料,你可以亲自核对。

2. 技术实现要点

从检索到前端展示,整个溯源链路需要统一规划:

(1)检索阶段保留元数据

在文档切片入库时,必须为每个 chunk 附带完整的溯源元数据,至少包括:

  • source_name:文档名称或编号
  • section_title:章节标题(如有)
  • page_number / chunk_index:在原始文档中的大致位置
  • source_urlfile_path:可用于跳转回原始文件的路径或链接
  • timestamp:文档版本或最后更新时间

这些元数据会随向量一起存入数据库,检索时随结果一同返回。

(2)生成阶段要求模型按规范引用

在构造 LLM 的提示词时,需明确要求模型在回答中标注引用位置。典型的提示词模板可以这样写:

你是一名根据参考材料回答问题的助手。
请严格基于下方提供的资料片段回答用户的问题。
在回答中,若使用某段资料的信息,请在句末用方括号标注该资料的编号,如[1]、[2]。
不要编造参考资料中没有的内容。如果资料不足以回答问题,请明确说明。

参考资料:
[1] 来源:员工手册-年假政策,日期:2025-04-01
内容:年假天数由15天调整为18天,未休年假可按250%折现。

[2] 来源:福利政策修订通知,日期:2025-04-10
内容:上述调整自2025年5月1日起生效。

模型会依此生成类似:

从2025年5月1日起,年假天数增加到18天,未休年假可按250%折算薪资[1][2]。

(3)后处理拼装跳转信息

模型输出的 [1][2] 只是标记,需在后端或前端将其替换为实际可交互的元素。具体做法:

  • 后端将检索返回的元数据(文档 ID、页码等)与模型输出的引用号对应起来,生成结构化答案,比如:
{
  "answer": "从2025年5月1日起,年假天数增加到18天,未休年假可按250%折算薪资。",
  "references": [
    { "index": 1, "doc_title": "员工手册-年假政策", "page": 14, "url": "/docs/employee-handbook.pdf#page=14" },
    { "index": 2, "doc_title": "福利政策修订通知", "page": 1, "url": "/docs/benefit-update-2025.pdf#page=1" }
  ]
}
  • 前端渲染时,将正文中的 [1] 渲染为可点击的角标,hover 显示标题,点击后通过 url 打开原始文档对应页面;底部也同时展示完整的参考文献列表,每一项均可点击跳转。

(4)确保跳转可用性

跳转目标的可用性直接影响用户信任:

  • 对于 PDF 文档,可使用 #page=页码 参数直接定位(需前端 PDF 查看器支持)。
  • 对于网页型知识库(如 Confluence、语雀),直接链接到页面锚点。
  • 对于私有网盘或内网文件,生成可直接访问的带认证链接。
  • 若原始文档无法直接定位到段落级别,至少跳转到章节所在页面,减少用户手动查找的负担。

3. 一个交互示例

用户在知识库助手中提问:“笔记本保修期多长?”

系统返回:

X200 系列笔记本标准保修期为 2 年,电池保修 1 年[1]。
部分企业采购批次可享受额外 1 年延保[2]。

参考文献:
[1] 《X200产品手册》第8页(保修条款)  [查看原文 →]
[2] 《企业客户服务协议》第3条(延保说明) [查看原文 →]

点击 [查看原文 →],在文档查看器中自动跳转到相关条款页面,用户几秒钟内即可完成核对。这种即时可验证的体验,远比一句孤零零的“答案仅供参考”更有说服力。

4. 实际落地建议

  • 引用粒度不宜过细:通常以段落或要点为单位引用即可,每句话都加标注会让阅读体验变差。
  • 来源数量控制:即使检索返回 10 个片段,最终回答引用的可能只是其中 2~3 个,不要强制要求模型引用所有资料,避免噪声。
  • 处理多文档矛盾:当不同来源说法不一时,可以在提示词中要求模型同时呈现不同观点,并标注不同出处,供用户自行判断,而不是武断取舍。
  • 跳转体验退化时的兜底:若原始文档链接失效或权限不足,至少保留明确的文档标题和页码,方便用户手动查找。

一个严谨的引用溯源与跳转机制,是 RAG 系统从“可用”迈向“可信”的关键一步。它让用户不再只是被动接受答案,而是可以主动验证,最终建立起对系统的持续信赖。