趋近智
一旦您的RAG系统检索到相关文档,下一个难题是引导大型语言模型(LLM)生成回答,使其不仅提供信息,还要符合风格、语气以及最重要的事实性方面的具体要求。原始的LLM输出虽然通常流畅,但在呈现方式和对所给上下文 (context)的遵守程度上可能会有差异。在生产环境中,这种差异通常是不可接受的。提供了更好地管理LLM生成过程的技术,以确保输出满足您应用的需求。
控制LLM的输出涉及精巧的提示工程 (prompt engineering)、参数 (parameter)调整,有时还包括您与模型交互时的架构选择。目标是使生成步骤可预测,并与您应用的特点及真实性要求保持一致。
下图描绘了这些控制机制通常在RAG系统的生成部分中的位置:
交互流程图,展示控制机制如何利用检索到的上下文 (context)影响LLM生成器,从而产生受控输出。
LLM输出的风格指的是其语言特点,例如正式性、复杂性和文学性。调整风格对于符合应用程序的“声音”和用户预期非常重要。
使用提示是影响风格最直接的方式。
User: 用一个简洁专业的段落总结这份文档。
Context: [检索到的文档文本...]
Example of desired output: 该研究表明X和Y之间存在显著关联,这表明Z。建议进行进一步研究。
Assistant: [LLM生成类似专业风格的摘要]
当需要特定且一致的风格,而提示工程产生的结果不一致或需要过于复杂的提示时,对LLM进行微调,使用包含该风格示例的数据集,便成为一个可行的选择。这是一个更复杂的过程,稍后将详细介绍,但它是实现深度风格调整的有力方法。
要求LLM以JSON或XML等结构化格式生成输出,可以间接强制某种风格。例如,如果您要求一个带有特定键的JSON对象,LLM更有可能为这些值生成简洁、数据化的文本,这与更技术或分析性的风格相符。许多现代LLM提供“函数调用”或“工具使用”能力,这些能力在生成结构化数据方面表现出色。
{
"request": "从提供的文本中提取主要发现,并以项目符号列表形式列在'findings'键下,并在'summary'键下提供一句话摘要。",
"context": "科学论文摘要...",
"desired_output_structure": {
"summary": "字符串",
"findings": ["字符串"]
}
}
指导模型遵守这种结构,可以同时引导内容和隐含的风格。
语气指的是文本传达的情感色彩或态度。LLM可能需要对客户支持表现出同理心,对技术说明保持中立,或对营销文案具有说服力。
与风格类似,提示中的直接指令是有效的:
通过在提示中包含与所需情感相关的词语或短语来巧妙地引导语气(但这需要仔细设计和测试):
设想一个RAG系统回答用户关于产品功能的问题。
中性语气提示: “User: 功能X如何运作? Context: [功能X的文档] Assistant: 功能X的运作方式是...”
同理心语气提示(适用于用户可能感到沮丧的支持场景): “User: 功能X我弄不明白,太 confusing 了! Context: [功能X的文档,常见故障排除步骤] Assistant (as a patient support agent): 我理解功能X一开始可能有点复杂,但我在这里提供帮助。让我们一步步来。功能X的运作方式是...”
传达的核心信息可能相同,但由提示引导的框架和措辞会大幅改变语气。
对于RAG系统,事实性不容妥协。生成的回答必须忠实于检索到的上下文 (context)。尽管有一个专门章节讨论幻觉 (hallucination)消除,但对事实性的初步控制始于您如何指导LLM使用所提供的信息。
这些指令明确限制LLM只能依据所提供的文档。
专一性: “仅根据所提供文档中的信息,回答以下问题。”
处理缺失信息: “如果答案未在提供的上下文中找到,请说明‘所提供的信息不包含此问题的答案’。”这是为了防止臆测。
Prompt:
仅使用以下上下文中提供的信息来回答问题。
请勿使用任何外部知识。如果答案不在上下文中,请说“我无法根据所提供的信息回答。”
Context:
<document id="doc1">
空客A380飞机在全经济舱配置下,最大载客量为853人。
其典型巡航速度为0.85马赫。
</document>
<document id="doc2">
超音速运输机协和号的巡航速度为2.04马赫。
它最多可搭载128名乘客。
</document>
Question: A380的翼展是多少?
Expected LLM Output:
我无法根据所提供的信息回答。
在提示中清晰地划分上下文。使用类似XML的标签(<context>, </context>, <document>, </document>) 有助于LLM区分指令、用户查询以及其应使用的知识库。
提高根据性的一个有效方法是要求LLM引用其主张的来源,提及上下文中的特定文档ID或段落。
对于复杂查询,您可以指导LLM“一步步思考”,或者生成答案后再对照上下文进行严谨审阅,以确保准确性,最后再呈现最终输出。 示例(简化版): “Question: [用户问题] Context: [检索到的上下文] Instruction: 首先,从上下文中找出相关句子。其次,仅根据这些句子组织答案。第三,验证您的答案未引入外部信息。只提供已验证的答案。”
尽管提示工程 (prompt engineering)是主要的,但LLM生成参数也发挥作用:
top_p(例如,)也会将LLM限制在更可能、通常更真实可靠的token上。这里有一个权衡:极低的Temperature可能导致重复或过于刻板的输出。实验对于为您的应用找到恰当的平衡非常重要。
控制策略总结:
| 控制方面 | 主要技术 | 辅助技术 | 主要考量 |
|---|---|---|---|
| 风格 | 系统提示、语境学习、指令提示 | 结构化输出(JSON/XML)、微调 (fine-tuning) | 与品牌“声音”保持一致、用户预期 |
| 语气 | 明确指令、角色扮演、情感引导 | 对抗性提示 | 语境适宜性(例如,支持 vs. 信息) |
| 事实性 | 强有力根据提示、上下文范围设定、引用来源 | 低 temperature/top_p、自我纠正 | 严格遵守所提供上下文、避免编造 |
控制LLM输出风格、语气和事实性的策略。
有效地控制风格、语气和事实性是一个迭代过程。这需要仔细的提示设计、使用多样化输入进行全面测试,以及尝试不同技术的意愿。掌握这些控制方法,您可以显著提高RAG系统生成回答的质量和可靠性,使其适用于要求严格的生产应用。这为后续更高级的讨论,例如针对性幻觉消除和专业生成任务的微调,提供了准备。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造