RAG 场景的提示工程:把检索结果用对
RAG 提示的特殊性
检索增强生成(RAG)由 Lewis 等人在 2020 年提出(NeurIPS 2020,arXiv:2005.11401),其核心是把预训练 seq2seq 模型的参数化记忆,与以维基百科稠密向量索引为代表的非参数化记忆结合起来。普通提示只依赖模型自身权重,而 RAG 提示的上下文来自检索器实时召回的片段,因此提示不再是自洽闭包,而是一副围绕外部证据搭建的脚手架。
这一区别带来三项提示设计要求:第一,要把检索到的证据有序组织进提示;第二,要要求模型标注出处,避免把参数化知识与检索知识混为一谈;第三,要抑制无关片段的干扰。检索结果用得对不对,往往比模型本身更决定回答质量。
上下文拼接与压缩
最朴素的写法是把 top-K 召回片段直接拼接。但过长的检索上下文会带来两个已知问题:一是成本与延迟上升,二是「中间丢失」(lost in the middle)——模型对位于长上下文中部的信息利用更弱。LongLLMLingua(Jiang 等人,arXiv:2310.06839)采用问题感知的粗到细压缩与文档重排序,把相关文档放到首尾更显著的位置,在 NaturalQuestions 上以约 1/4 的 token 取得最高 21.4% 的提升。
提示设计上的启示是:在装入上下文前先做压缩与重排,并在指令中告诉模型哪些片段更相关、把最相关的放在前面,而不是无差别堆砌。
出处标注与可信
可信的 RAG 必须可溯源。提示应明确要求模型只用给定上下文作答,并对每条事实标注来源编号(如 [1]、[2]),同时禁止在证据存在时调用外部参数化知识。Self-RAG 的实验表明,反思式生成能显著提升引用准确性。一个稳妥的写法是:「若上下文不足以回答,请明确说明无法回答」,把「不知道」作为合法输出,而非强迫生成。
抑制检索噪声
召回片段常含无关内容。提示层面有三种有效做法:其一,显式声明「部分片段可能不相关,请忽略」;其二,要求模型先判断相关性再作答,相当于用提示模仿 Self-RAG 的 ISREL 机制;其三,优先使用经重排后的高相关片段,并限制装入数量。结合压缩,可显著降低噪声对生成的污染。
自适应检索提示(Self-RAG 思路)
Self-RAG(Asai 等人,2023,arXiv:2310.11511)训练单一模型输出四类反思令牌:Retrieve(是否需要检索,取值 Retrieve / No Retrieval / Continue)、ISREL(片段是否相关)、ISSUP(生成内容是否被片段支持,取值 Fully / Partially / No Support)、ISUSE(整体效用,1 至 5)。它用按需检索取代「每问必取固定 K 篇」,避免在不必要时注入噪声。
在纯提示层面,可借用这套思路:指示模型先判断是否真需要外部检索,再对召回片段做相关性与支持度自评,最后对答案做效用自检。这样即便不微调模型,也能让提示具备「自适应」的克制感。
常见反模式
- 不加排序与压缩,把全部召回文本一dump 了事。
- 不要求标注出处,默许模型把参数化知识与检索内容随意混合。
- 禁止回答「不知道」,迫使模型在证据不足时幻觉。
- 把所有片段平铺在中部,触发中间丢失。
- 用固定指令忽视相关性与效用,检索多少都照单全收。
以下是一段可直接套用的 RAG 系统提示示意:
你是一名严谨的研究助手。只能使用下面提供的上下文作答。
上下文(每段带编号):
[1] <检索片段一>
[2] <检索片段二>
...
要求:
1. 部分片段可能不相关,请自行判断并忽略。
2. 用中文作答,正文中以 [1]、[2] 形式标注出处。
3. 若没有任何片段支持该问题,请回答:根据提供的资料无法回答。
4. 不要使用上下文之外的知识。
问题:<用户问题>
小结
RAG 提示工程的关键在于「用对检索结果」:先压缩与重排上下文、把最相关者前置;再强制出处标注并把「不知道」设为合法输出;随后用提示层面的相关性、支持度、效用自检来抑制噪声、逼近 Self-RAG 的按需检索思路;最后避开无差别堆砌与禁止拒答等反模式。提示设计得当,检索增强的价值才能真正落到回答质量上。
参考与延伸阅读
- Lewis, P. 等人(2020)。Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. NeurIPS 2020. arXiv:2005.11401 — https://arxiv.org/abs/2005.11401
- Asai, A. 等人(2023)。Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection. arXiv:2310.11511 — https://arxiv.org/abs/2310.11511
- Jiang, H. 等人(2023)。LLMLingua: Compressing Prompts for Accelerated Inference of Large Language Models. EMNLP 2023. https://aclanthology.org/2023.emnlp-main.825/
- Jiang, H. 等人(2024)。LongLLMLingua: Accelerating and Enhancing LLMs in Long Context Scenarios via Prompt Compression. arXiv:2310.06839 — https://arxiv.org/abs/2310.06839