先记住这个答案
提示词两步走:第一步命令模型定位并举出相关的原文句子,每条前面加序号;第二步才允许作答,且结论必须带对应编号。若找不到支持句,应要求其说“未找到证据”。原理是摘录步骤把输出约束到尽量贴近输入的句子,后续又因引用约束而抑制游离,减少编造路径。
- 先摘录原文并编号,再作答
- 无证据时必须声明未找到
- 引用约束让输出可审计
生成空间收缩机制
模型自回归逐个预测token,并不区分训练知识和现场输入。直接提问时,它倾向于复用统计关联,把记忆中的事实混进回答。要求先摘录时,第一步被要求从当前输入中摘录连续文本,输出被约束为尽量与输入一致,从而抑制外部知识自由拼接。
摘录后再作答时,模型还需将判断指向编号句子。摘录结果先出现在上文,自注意力得以重新聚焦这些token,相当于引入隐式中间变量。最终回答更多条件于摘录集合而非全部参数记忆,从而减少与材料无关的自由组合。
合同审阅中启用引用验证
输入是一份120页租赁合同,提示词规定:先扫描全文,只摘录与“甲方违约责任”直接相关的条款原文,每条单独成行并编号;之后才能回答甲方责任严苛与否,且必须引用编号;若无条款涉及则回复“合同未约定”。输出呈现为“第7.2条:每日赔偿月租金1%”这样的片段,审阅者可直接去原文核验。假设以50份合同作为模拟评估场景,可预期该结构能降低无出处结论的比例,但实际效果会因模型和提示写法而异,且每次输出可能消耗额外token用于呈现原文片段。
预期输出为“第7.2条:每日赔偿月租金1%”等摘录片段。若进行对比测试,未加该结构的回答常出现找不到出处的结论,加上后有所降低,但具体数字需针对模型与数据集实测,且输出会因摘录原文而增加token消耗。
失效条件和取舍
证据自身互相矛盾时,摘录会忠实展示双方,但模型在最后综合阶段仍可能只挑支持预设结论的一方并编号,另一方被隐藏。此时必须追加指令“列出全部对立证据并说明取舍理由”,否则会产生漏证型偏差。
另一种超长场景中,全量摘录占用大量输出预算,压短结论导致回答不完整。解法是限定每条约30字、总数不超五条。但若输入已是他人写的摘要,这一步只能保证对摘要忠实,无法还原底层文档中已丢的细节。
容易答错的地方
- 以为说“请引用原文”就够
- 该指令没规定输出顺序,模型通常先写结论再补泛泛的引用,甚至自行拼出格式相近的假引文。必须要求摘录必须整句摘抄、带序号连续列出,且结论只能出现在摘录之后。
- 把证据前置当成消除幻觉万能药
- 它只阻止脱离给定文本的捏造,却无法防止把甲条款语义迁移到乙条款、无法检查原文真伪。涉及多份文档冲突时,还要外加交叉核对提示,否则仍会产生错误综合。
面试官还会怎么问?
上下文特别长时,摘录步骤会不会失控?
会。可以先加“跳过与问题无关的段落”做预筛,再把候选片段切成小块分多次处理。更稳妥是把长文档拆解成多次推理,每次只对某一章做摘录再汇总。
模型说“未找到证据”,可信吗?
不可直接信。模型可能漏掉用同义词表述的段落。应要求它二次改写检索词后再找,并把接近但不完全相同的句子也列出,标注相关度后再决定是否采纳。
为什么摘录必须放在回答前,而不是用其他格式标记?
因为自回归生成时前面已输出的token是后续预测条件。先写摘录等于把事实集合前置进局部上下文,后续引用才有据可依;放后面的摘录无法参与前面的推理。
参考资料
示例用于理解所注明的运行环境与边界;延伸学习可结合原文中的更多案例。