Context Engineering for RAG : The Four Typed Inputs Behind Every RAG Answer - Towards Data Science(2026-07-02)
引言:RAG 的“黑盒”其实有四个旋钮
想象一下,你向一个企业级AI助手提问:“公司去年第三季度的营收是多少?”助手从知识库中检索出相关财报,拼凑出一段答案。但结果却出现了幻觉:它把“季度营收”与“年度累计利润”搞混了。
很多人以为问题出在“大模型不够聪明”或“知识库不够大”。但真实原因往往更隐蔽——你根本没有控制好RAG系统的四个核心输入。这就是今天要聊的 Context Engineering:不是简单堆砌上下文,而是精准地喂养四种不同类型的输入。
四个核心输入类型
RAG(检索增强生成)本质上是一个“信息拼图”过程。拼图有四个关键组件:
1. 用户查询(Query)
这是你直接提出的问题,但往往是最容易被污染的输入。用户可能省略细节、包含歧义甚至错误假设。
- 案例:用户问“苹果今年卖得怎么样?”——指水果、iPhone还是影视公司?
- 建议:在查询入口增加意图识别和实体消歧环节。
2. 检索上下文(Retrieved Context)
这是从知识库中召回的相关文档块。问题在于:你需要的是信息,而非文档。
- 数据:研究表明,在5个检索块中,通常只有2-3个与答案直接相关,其余是噪音。
- 实践技巧:使用语义分块而非固定长度分块,让每个块包含完整逻辑单元(如一个段落或一条结论)。
3. 系统指令(System Prompt)
这是模型的“行为规范”。很多人把它当作“神秘咒语”,但实际上它是个任务说明书。
- 反面案例:简单写“你是一个助手” → 模型可能倾向于通用回答。
- 正确做法:明确指定角色、输出格式、引用规则。例如:“你是财务分析师,必须用表格呈现数据,并标注引用来源的页码。”
4. 示例与规则(Few-shot Examples & Constraints)
少量高质量示例比长篇大论的语言描述更有效。
- 数据:3个正面示例 + 1个反面示例(显示“不要如何回答”)可以使错误率降低40%以上。
- 实用建议:将常见错误(如混淆时间、遗漏单位)作为“禁止示例”直接写入指令。
实战案例:一个财务问答系统的优化
假设你正在构建一个用于内部财报查询的RAG系统。初始版本直接扔给模型一个查询和五段文档:
- 效果:60%的答案出现日期错误或单位混淆。
- 优化后:
- 查询:自动补全季度范围(如“Q3 2025”)
- 上下文:只检索与时间、指标明确匹配的段落
- 指令:明确要求“以千美元为单位,四舍五入到整数”
- 示例:给出三个完美回答 + 一个包含“万元/千元”单位混淆的反例
优化后,错误率降至8%。关键不是模型,而是你给模型的“食谱”。
三个实用建议
- 拆解查询:将复杂问题拆解为子问题,分别检索再组合。例如“比较A和B的增长率” → 先分别检索A的增长率、B的增长率。
- 控制上下文长度:每个检索块不超过500 token,且永远只保留与最终答案最相关的3-5块。
- 动态调整指令:根据用户意图(事实查询 vs 分析总结)自动切换不同的系统提示模板。
行动号召
从今天起,当你的RAG系统输出错误时,别再盲目加数据或换大模型。打开你的上下文设计文档,挨个检查这四个输入:查询是否清晰?上下文是否纯净?指令是否具体?示例是否充分?
做一个“上下文工程师”,而不是模型调参师。 你离一个永不幻觉的AI助手,只差这四步。
免责声明:本文内容基于作者在RAG系统开发中的实践经验与行业研究,旨在提供技术参考。实际部署时请结合具体业务场景、数据隐私要求及模型合规性进行适配,作者不对因直接套用本文方法导致的任何损失承担责任。