Chain-of-Verification
Chain-of-Verification(CoVe)(Dhuliawala et al., 2023)是什么
CoVe(验证链)是一种**“先回答→再生成可核查的验证问题→逐个回答→综合修订”**的提示链路,用来降低幻觉、补齐遗漏、提升答案可靠性。
它的典型流程是 4 步:
-
Base Answer(初始回答)
LLM 先对原问题给出一个初稿答案 A0(此时可能含错误或不完整)。 -
Verification Questions(生成验证问题清单)
让 LLM 针对 A0 和原问题,提出一组“能验证关键断言”的问题 [V1..Vn]。
这些问题的目标是:把 A0 里最关键、最可能出错、最需要证据支持的点拆开来查。 -
Answer Verification Questions(逐一回答验证问题)
再让 LLM(同一个或另一个)分别回答每个 Vi,得到证据/子结论 [E1..En]。
(工程上这里也经常接入检索RAG或工具,但纯CoVe也可以只用LLM内部知识。) -
Final Revised Answer(综合证据修订最终答案)
把原问题 Q、初稿 A0、验证问答证据 [Ei] 一起输入,让模型:- 标出 A0 中哪些断言被支持/被推翻/不确定
- 据此重写得到最终答案 A*(必要时加免责声明或提出需补充信息)
CoVe 与相近方法的区别
- Self-Calibration:问“我答得对吗/多自信”,但不一定真的去“查”。
- Self-Refine:也会反馈再改写,但反馈可能主观;CoVe 强调用“验证问题+证据”驱动修订。
- RCoT:用“反推题目”检查一致性;CoVe 用“拆问题核查关键断言”检查真实性与完整性。
- Self-Verification(Weng):用mask打分筛候选解;CoVe 更像“面向一个答案的证据审查流程”。
适合的应用场景
- 问答(QA)中容易幻觉的事实/解释题
- 历史、科普、政策解读、产品功能解释等:先答再自查关键点。
- 需要“可核查子结论”的复杂问题
- 多点结论、涉及多条因果链/对比/步骤的回答(如“为什么”“如何做”“优缺点”)
- 内容生成但有硬事实约束
- 写行业报告摘要、竞品对比、新闻解读、论文相关背景:先生成再围绕关键断言核验。
- 高风险场景的“内部审阅链”
- 法务/合规/医疗/金融:把关键断言拆成验证问题,触发检索或人工复核更自然。
不适合的应用场景(或收益较小)
- 纯主观创意内容
- 诗歌、故事灵感:不存在明确可验证的事实断言,验证问题价值有限。
- 实时性极强且要求最新事实
- 仅靠LLM回答验证问题仍可能过时;这里 CoVe 更适合与 RAG 结合。
- 延迟/成本敏感
- 需要多轮:生成问题清单 + 多次回答 + 最终整合。适合“高可靠模式”而非所有请求默认启用。
- 原问题缺少可验证信息
- 如果问题过于模糊,CoVe 会生成一堆泛问题;更应先澄清需求。
提示词怎么写(可复用模板)
下面给你一个“工程友好”的 CoVe 提示链(4段):
Prompt 1:初稿回答
你是助手。请回答用户问题。若有不确定之处请说明。
问题:{Q}
Prompt 2:生成验证问题(关键)
你将看到原问题与初稿答案。请生成一组“验证问题”,用于核查初稿答案中最关键的事实断言/推理步骤。
要求:
- 生成 {n} 个问题(建议3-8个)
- 每个问题要可独立回答、尽量具体
- 覆盖:关键事实、关键因果、关键边界条件/例外
- 不要问泛泛的问题(如“这个对吗”)
输出格式:编号列表原问题:{Q}
初稿答案:{A0}
Prompt 3:逐个回答验证问题(可循环/批处理)
请回答以下验证问题。要求:
- 每题给出简短结论 + 依据(如果无法确定,明确说“不确定/需要检索”并给出应检索的关键词)
验证问题:
- {V1}
- {V2}
...
Prompt 4:综合修订最终答案
请基于原问题、初稿答案与验证问答信息,输出最终修订答案。
要求:
- 若某些断言在验证中被推翻/不确定,请在最终答案中删除或改写为条件性表述
- 尽量保留初稿中正确且有用的部分
- 输出应直接回答用户问题,结构清晰
原问题:{Q}
初稿答案:{A0}
验证问答:{E1..En}输出:最终答案(不要附加过程日志)
至少3个中文实际例子(展示完整写法)
例子1:科普事实问答(降低幻觉)
用户问题Q:“维生素D缺乏会有哪些表现?应该怎么补?”
Prompt 1(初稿):
请回答:维生素D缺乏会有哪些表现?应该怎么补?
Prompt 2(生成验证问题):
原问题:维生素D缺乏会有哪些表现?应该怎么补?
初稿答案:{A0}请生成5个验证问题,用于核查答案里的关键医学断言(症状、风险人群、补充方式与剂量范围、日晒建议、何时就医/验血)。
Prompt 3(回答验证问题):
请逐一回答这5个验证问题。每题输出:结论 + 依据/常见共识 + 不确定点(如有)+建议检索关键词(如需)。
Prompt 4(综合修订):
基于验证结果,输出面向普通人的最终回答:
- 用分点列出“可能表现”“高风险人群”“补充方式(饮食/日晒/补充剂)”“注意事项/何时就医”
- 避免给出过于具体的个人剂量处方,如需请建议咨询医生与检测25(OH)D。
例子2:产品/技术解释(核查关键断言与边界)
用户问题Q:“HTTPS 为什么比 HTTP 安全?是不是就完全不会被抓包了?”
Prompt 1(初稿):
用通俗语言解释HTTPS为何更安全,并回答:是否完全不会被抓包?
Prompt 2(生成验证问题):
原问题:HTTPS为什么比HTTP安全?是不是就完全不会被抓包了?
初稿答案:{A0}生成6个验证问题,重点核查:
- 加密保护的对象是什么(内容/路径/域名/元数据)
- TLS握手与证书验证解决什么问题
- 中间人攻击在什么情况下仍可能发生
- “抓包”与“看懂内容”区别
- 企业代理/自签证书/终端被控等例外
Prompt 3(回答验证问题):
逐题回答并尽量给出一个现实例子(如公司装了根证书、公共WiFi劫持、DNS泄露等)。
Prompt 4(综合修订):
输出最终答案:
- HTTPS提供的安全性(机密性/完整性/身份认证)
- 仍可能泄露的信息
- 为什么仍“能抓包但未必能解密”
- 典型例外与用户建议(如何判断证书、警惕安装根证书等)
例子3:文本生成(带事实约束的内容写作)
任务Q:“写一段介绍‘碳达峰、碳中和’区别的短文,300字以内,必须包含三个要点:定义差异、时间维度、实现路径举例。”
Prompt 1(初稿):
写一段300字以内短文,解释碳达峰与碳中和的区别,必须包含:定义差异、时间维度、实现路径举例。
Prompt 2(生成验证问题):
原要求:300字以内;必须包含定义差异、时间维度、实现路径举例。
初稿:{A0}请生成4个验证问题:
- 是否清晰给出两者定义差异
- 是否解释时间维度(先达峰后中和的关系)
- 是否给出至少2个实现路径例子(如能源结构/能效/碳汇/CCUS等)
- 是否满足字数与表达准确性(是否出现明显错误或混淆)
Prompt 3(回答验证问题):
请逐题回答,并指出初稿中对应的句子证据(引用原文片段)。
Prompt 4(综合修订):
根据验证结果重写短文,确保三要点齐全且字数≤300;如果初稿存在概念混淆,请纠正。
工程落地小建议(简短但关键)
- 验证问题要“针对断言”:最好能映射到初稿里的具体句子/结论点。
- n 不要过多:一般 3-8 个验证问题性价比最高。
- 把验证回答结构化:例如每题输出
结论/依据/不确定/检索词,方便后续整合与路由。 - 与RAG结合更强:第三步回答验证问题时触发检索,CoVe 的“验证”才更接近真实核查。
- 停止条件:若验证显示关键断言均“支持”,可直接输出;若“不确定/冲突”多,触发检索或人工。
如果你希望我把 CoVe 写成一套“可直接在产品里用”的提示词(JSON输出、自动挑选验证问题、阈值与停止条件、可接RAG),告诉我你的具体场景与输出格式要求即可。