让答案有出处:citations 引用溯源

「从零到 AI 应用工程师」专栏 · 第 13 篇


能答还不够。工业场景还要回答:你这话从哪份手册、哪一页来的?

references 和 citations 经常被混用------今天把它们掰开。


一、两个字段分别是什么

references citations
何时产生 检索/重排之后,喂给模型之前 模型(或兜底)生成答案之后
含义 本轮候选证据(上下文) 答案里实际用到的出处
典型用途 调试「模型看了啥」 前端高亮、审计、工单溯源

关系:

text 复制代码
references = [切片1, 切片2, 切片3]   # 候选
answer     = "......处理步骤见【1】,阈值见【2】。"
citations  = [切片1对应项, 切片2对应项]  # 子集

可以召回了 3 条,答案只标了【1】------这很正常。


二、标记怎么落到 doc_id / page

  1. Prompt 要求:有依据时写 【1】【2】(或 [1]);
  2. 后处理用正则抽出序号;
  3. 序号对齐 references[N-1],拷贝 doc_id、page、source、text 等。
python 复制代码
# 伪代码
indices = extract_cited_indices(answer)  # 【1】【2】 → [1, 2]
citations = []
for i in indices:
    if 1 <= i <= len(references):
        ref = references[i - 1]
        citations.append({
            "ref_index": i,
            "doc_id": ref.doc_id,
            "page": ref.page,
            "source": basename(ref.source),
            "text": ref.text,
        })

计划里说的「响应带 [doc_id, page]」,落在每个 citation 对象上。


三、模型忘了标引用怎么办

策略 说明
检索兜底回答 本地拼装时自己带【N】,再整表映射
fallback_all 无标记时临时把全部 references 当作 citations(便于人工核对,正式产品要慎用)
拒答 / 降置信 无依据或无引用时不装有出处(见下两篇治理)

原则:没有可靠映射,就不要假装有强引用。


四、前端与 Agent 怎么用

  • 展示答案时,把【N】做成脚注或侧栏卡片;
  • 卡片显示:文件名、页码、摘录;
  • Agent 写工单:只把 citations 写进「依据」字段,不要把整份 references 当已引用。

五、带走这三条

  1. references = 候选;citations = 实际引用。
  2. 靠 Prompt 标号 + 后处理映射 meta,不是靠模型口述文件名。
  3. 无标记就要降级策略,不能默认为「全都引用了」。

下一篇:治幻觉------没依据就拒答,禁止「可能大概也许」。

这是专栏第 13 篇。两到三天一更,拒答见。

相关推荐
Java内核笔记3 分钟前
Spring AI 生产级 Chat 接口:6 个开关、13 个坑,其中 2 个开关根本没生效
java·人工智能·后端
AI原生B2B产品架构师10 分钟前
两张表对不上:先查重复与缺项,再让AI解释异常
人工智能
柯南466817 分钟前
【AI工程师精讲】13:微调排查:训练损失很好看,效果却不行
人工智能·ai编程
程序员大狐狸19 分钟前
Ultra X7 358H 笔记本电脑,本地三个大模型接入 DeepSeek Harness 桌面版的过程与方法
人工智能·llm
W***259219 分钟前
深度解读Work Agent长程任务拆解与执行机制
人工智能
付威202320 分钟前
Provider 不属于 Agent 核心:rpi 的分层理由与收益
人工智能
用户709883300084922 分钟前
Anthropic 官方插件仓库登上 GitHub Trending,聊聊 Claude Code 插件体系
人工智能
草上飞952724 分钟前
零知识证明能证明算对了,却证明不了没看见
人工智能·深度学习·llm
生石花24 分钟前
《我和AI的28天》Day 3-6:让AI学会点菜,我学会了不被它骗
人工智能