RAG 的检索环节决定了“给模型看什么”,而生成环节则决定了“最终说出什么”。即使检索结果完全正确,若生成环节把控不当,回答依然可能出现表述不清、事实扭曲甚至凭空编造。以下三个因素对生成质量有直接影响,且都在工程上可控。
5.5.1 基座模型能力
基座模型(即承担最终生成任务的大语言模型)是生成质量的“天花板”。不同的模型在以下几个方面差异明显,选型时应重点关注:
- 指令遵循能力:模型是否能严格遵照提示词中的约束(如“只使用提供的资料回答”“用中文回答”“注明来源”)?能力强的模型会忠实执行,能力弱的模型可能忽略约束,引入外部知识或自由发挥。
- 长上下文处理:RAG 往往需要一次性塞入多个检索片段,上下文长度可达数千 token。部分模型在长上下文场景下容易丢失中间部分的信息(即“迷失在中间”现象),导致只看到开头或结尾的片段,回答片面。
- 归纳与引用能力:高质量的基座模型能够从多段碎片化信息中提取要点,自然整合成连贯答案,并按要求标注出处。弱一些的模型则可能直接照抄原文某一段,或无法处理多个片段间的矛盾信息。
- 知识边界意识:当检索片段不足以回答问题时,好的模型会依据提示词坦然说“资料中未提及”,而不好的模型仍然会“帮忙”补全,从而产生幻觉。
实践建议:在条件允许的情况下,优先选择指令遵循能力强、支持长上下文的模型(如 GPT-4、Claude 3 等)。选定后通过压测验证其在典型业务场景下的表现,而非只看公开基准分数。
5.5.2 提示词设计
提示词是连接检索结果与模型行为的桥梁。同样的检索片段,不同的提示词会产出截然不同的回答。好的提示词设计通常包含以下要素:
(1)明确角色与任务边界
告诉模型它是谁、要做什么。例如:“你是一个基于公司内部文档回答问题的助手。请严格根据以下提供的参考材料回答用户问题,不要使用任何外部知识。”
清晰的边界设定能显著减少模型引入训练数据中已有但不在检索片段内的信息。
(2)结构化输入
将检索到的多个片段有序编排,用明确的标记(如“【参考片段1】”、“来源:xxx”)区分。这样模型更容易理解每个片段的来源和边界,便于在回答中引用。
(3)强制引用与“不知道”声明
在提示词中明文要求“如果信息充分,请在每个要点末尾标注所引用的片段编号;如果提供的材料无法回答问题,请直接告知用户‘在现有资料中未找到相关内容’”。这种“强迫诚实”机制在实践中被证明是抑制幻觉最经济的手段之一。
(4)格式与风格约束
如果有特殊输出要求(如只输出 JSON、用列表形式呈现、限制字数),都应在提示词中清晰说明。好的模型会尽量满足,但仍建议在后端做简单的格式校验,以确保下游系统能处理。
一个实用的提示词模板示例:
你是一个专业的企业内部知识问答助手。请严格根据以下参考材料回答用户问题。
- 如果材料可以回答问题,请用简洁清晰的语言组织答案,并在每条关键信息末尾注明来源(如【来源:材料A】)。
- 如果材料不能完整回答问题,请说明“根据现有资料,无法完全确定”,不要编造信息。
- 所有回答均使用中文。
参考材料:
【材料A】来源:《员工手册》第5条
内容:……
【材料B】来源:《差旅报销细则》第3.2款
内容:……
用户问题:{question}
实际部署时,应根据模型表现反复调整提示词,同时关注 token 量——冗长的提示词虽然更安全,但会增加每次调用的成本和延迟。
5.5.3 推理参数的影响
除了模型选择和提示词,生成 API 中的几个关键推理参数也会显著影响输出结果的风格和确定性。RAG 场景通常偏向事实准确,参数设置上更追求可控和稳定。
- temperature(温度)
控制生成的随机性。处于 0 时,模型几乎总是输出概率最高的词语,结果稳定、可复现;增大到 0.7 以上,表达会更多样但事实捏造风险上升。对于事实性问答,建议设置为 0 或接近 0(如 0.1),以期每次对同一问题的回答保持一致并忠于原文。只有当应用需要开放式总结、多轮对话氛围调节时,才会适当提高。
- top_p(核采样)
与 temperature 配合,限定模型只从累计概率达到 top_p 的最小词汇集合中采样。值越接近 1,候选词越多;越小则越集中。在确定性要求高的 RAG 任务中,可置为较小的值(如 0.1~0.3),但通常直接使用低温即可,不必同时严格限制 top_p。
- max_tokens
限定生成的最大长度。应依据业务需求设定,避免过短截断关键信息,或过长产生冗余废话。对于典型问答,512~1024 token 通常足够,内容摘要或报告生成可适当增加。
- 频率惩罚与存在惩罚(frequency penalty / presence penalty)
抑制重复用词。企业知识问答一般不需要,除非发现生成内容有严重的重复表述。滥用可能改变表述风格,对事实性内容形成干扰,建议默认置零,仅在发现重复问题时小幅上调。
- stop 序列
可设置一个或多个终止字符(如 ###、END),一旦模型生成到该序列就立即停止。对需要严格控制回答边界、防止模型继续自言自语或多轮对话流水线而言非常有用。
综合调参原则:对于 RAG 的知识型问答场景,推荐的“安全起手设置”是 temperature=0,top_p=1(不启用核心采样),并结合明确的提示词。当回答的流畅度或通顺度不理想时,再小幅提升温度(如到 0.2~0.3),但始终要观察是否引入新的幻觉。
通过合理选择基座模型、精心设计提示词、恰当地设置推理参数,RAG 的生成环节能将检索到的优质原材料转化为真正可靠、可用的回答。这三个因素通常需要协同调优:同一套提示词在不同模型上的最佳参数可能不同,部署后应通过小规模 A/B 测试验证,直至回答质量稳定达到业务要求。