跳到正文

RAG Generator 怎么构造 Prompt?

检索上下文整合策略与关键要素对生成质量的影响

原题:在RAG系统中,生成模块(Generator)如何有效整合检索到的上下文信息来构建输入Prompt,并驱动大模型生成准确、连贯的答案?请详细说明Prompt构造的关键要素及其对生成质量的影响机制。

Prompt工程 · 字节真题

回答与解析

Prompt 构造目标

Generator 的输入需要同时表达规则、证据、用户问题和输出契约。Prompt 只能帮助模型使用证据,不能弥补错误召回,也不能保证固定幅度的准确率提升。

构造步骤

  1. 筛选与去重:按检索和重排结果筛选候选,保留来源、版本、权限和时间;不要用未经校准的统一阈值。
  2. 信任边界:将检索文本视为不可信数据,用清晰分隔符包裹,禁止其中内容覆盖系统指令。
  3. 排序与预算:根据任务、证据依赖和“lost in the middle”风险安排顺序,预留生成与工具调用空间。
  4. 输出契约:要求答案断言关联引用;证据不足或冲突时返回结构化的不确定状态。
  5. 校验:检查引用存在性、引用支持关系、格式和业务约束,而不是只检查是否带链接。

假设实验

固定模型、解码参数、检索候选和测试集,比较基础拼接、去重、不同排序、证据边界、引用约束和冲突处理。报告答案正确性、引用支持率、faithfulness、覆盖率、拒答率、token 和延迟,并按长上下文、冲突证据和无答案问题切片。任何效果必须来自该受控实验,不能用无来源的百分比代替。

口语版讲法(约4分钟)

  • 本质是让模型看见并重视检索信息
  • 上下文筛选与去重
  • 排序与位置策略
  • 结构化模板与长度控制
  • 落地风险与判断收尾

生成模块的关键不是把检索结果直接拼进 Prompt,而是把证据整理成模型能使用、又不容易越界的输入。我通常把 Prompt 分成稳定规则、用户问题、证据区和输出约束。稳定规则说明只能依据给定证据、引用格式以及证据不足时要拒答;用户问题保留原意和必要的会话状态;证据区带文档标识、版本、权限和片段边界,并明确它是不可信数据,不能覆盖系统指令。

候选进入 Prompt 前要去重、处理冲突并控制 token 预算。排序不能只按相似度机械截断,还要保留限定条件、时间信息和能够支持结论的上下文。长文档可以压缩,但压缩前后要检查实体、数字和否定条件有没有丢失。多轮对话里只带与当前问题相关的历史,用户身份和权限由服务端注入,不能让模型从聊天文本里自行推断。

输出侧我会要求答案和引用建立可校验的对应关系。JSON 可解析只解决语法,字段范围、资源归属和引用是否真的支撑结论仍由程序验证。评测时固定检索结果,单独比较上下文顺序、长度、冲突处理和 Prompt 版本,观察答案正确性、引用支持率、faithfulness、覆盖率、拒答、token 和延迟。再换一组固定 Prompt 比较不同检索结果,才能区分是检索问题还是生成问题。一个常见追问是“检索到了为什么仍答错”,我会沿证据冲突、上下文位置、指令覆盖和模型忽略证据这几条路径逐项排查。

上下文构造里还有几个很容易被忽略的点。如果多个片段重复、互补或互相冲突,去重不能只看向量相似度,否则可能把关键时间、数字和否定条件删掉。冲突证据要结合来源权威性、文档版本和更新时间处理,无法判断时把不确定性告诉用户。需要跨文档推理时,要保留实体关系和各步引用,不能压缩成一段失去来源的摘要。文档里即使出现“忽略前文”之类文字,也只能作为数据,不能获得新的工具权限。

上线后我会记录证据 ID、版本、排序、截断位置、Prompt 哈希、模型版本和校验结果,让错误能够重放。监控不仅看答案评分,还看引用缺失、无证据作答、冲突处理、权限泄漏、token 与尾延迟。模型或 Prompt 升级前,用冻结候选集回归它利用证据的能力,再做端到端灰度。这样设计 Generator 时,输入组织、输出约束和验证都能独立评估,某个指标变化也能找到真正原因。

关键一句:当检索到的上下文存在矛盾时,单纯靠Prompt设计不够,需要冲突检测或置信度比较机制

面试官还可能这样问

  1. 问法 1 · 场景切入

    假设你在做智能客服,用户问了一个售后问题,你从知识库检索到几段相关文档,现在你要拼一个prompt送给大模型。你会怎么安排这些文档的顺序和格式?有什么坑需要注意吗?

  2. 问法 2 · 层层追问

    RAG系统的生成模块,构造prompt时一般要考虑哪些因素?……如果检索回来5个段落,你全塞进去吗?……那怎么避免模型只看到中间的内容?

  3. 问法 3 · 直球架构

    请详细说说在RAG系统中,生成模块如何构造prompt来整合检索上下文?关键要素有哪些,比如上下文排序、去重、指令设计,它们分别怎么影响生成质量?

同模块相关题目