上下文工程:下一代 AI 应用的基石
Site Owner
发布于 2026-06-18
本文系统介绍上下文工程的核心概念、关键技术挑战(容量、相关性、结构)、记忆系统架构,以及当前工业界的最佳实践,适用于构建高效 AI 应用。
上下文工程:下一代 AI 应用的基石
为什么你的 AI 应用总是"忘记"重要的事
很多开发者在将 AI 集成到产品中时,都会遇到一个令人困惑的问题:模型在短对话中表现出色,但一旦对话变长、上下文积累增多,AI 就会开始"遗忘"关键信息、混淆时间线,甚至给出前后矛盾的回答。这不是模型本身的问题,而是上下文工程(Context Engineering) 没有做好。
上下文工程是 Prompt Engineering 的下一阶段。Prompt Engineering 解决的是"怎么问"的问题,而上下文工程解决的是"给 AI 什么信息、以什么结构、在什么时机给"的问题。随着 GPT-4o、Claude 3.5、Gemini 等大上下文窗口模型的出现,上下文工程已经从"锦上添花"变成了 AI 应用的决定性因素。
本文将系统性地介绍上下文工程的核心概念、关键技术、以及当前工业界的最佳实践。
什么是上下文窗口?
大语言模型的一次推理过程,本质上是对一串 Token 的数学运算。这个"一串 Token"就是上下文窗口(Context Window)——模型在单次生成回答时能够"看到"的所有输入信息。
当前主流模型的上下文窗口:
| 模型 | 上下文窗口 |
|---|---|
| GPT-4o | 128K Tokens |
| Claude 3.5 Sonnet | 200K Tokens |
| Gemini 1.5 Pro | 2M Tokens |
| Claude 3 Opus | 200K Tokens |
128K Tokens 大约相当于 10 万个汉字,或一本《战争与和平》的长度。猛一看这个数字很大,但实际应用中很快就会遇到瓶颈:一个 50 人的 Slack 风格聊天历史可能就有 30K Tokens,一次代码库的检索可能吃掉 80K Tokens,剩余空间留给真正需要模型处理的任务时,已经所剩无几。
更重要的是,上下文窗口的增大并不等于模型对上下文中每个信息的关注度均等。心理学中有一个概念叫**"峰终效应"**,LLM 也存在类似的偏差——更靠近对话末尾的信息通常获得更高的注意力权重,而中间的信息则容易被"稀释"。这就是为什么在超长上下文中,模型有时会"忽略"开头部分的关键指令。
上下文工程的三大挑战
1. 容量挑战:信息太多,放不下
当可用上下文空间被占满时,必须做出取舍。粗暴的截断(Truncation)会丢失关键信息,等比例压缩又会稀释核心内容。好的做法是智能压缩(Smart Compression),保留语义上最重要的部分。
一个常见的策略是**"Recap + 增量"模式**:模型只保留对话的摘要(Recap),再加上最新的增量内容。摘要由模型自己生成,定期更新。例如:
[对话摘要 v3 - 最后更新: 6月15日]
用户正在开发一个电商推荐系统,技术栈是 Python + FastAPI。
目前遇到的问题是推荐延迟过高(>500ms),怀疑是向量数据库查询效率问题。
用户偏好深入的技术分析和具体的代码示例。
[增量内容 - 6月18日]
...
2. 相关性挑战:找到真正重要的信息
在大上下文窗口中,如何从海量信息中精准找到与当前任务最相关的片段,是 RAG(检索增强生成)技术要解决的核心问题。
传统的稠密向量检索(Dense Retrieval)在处理模糊查询和多义词时表现不佳。工业界正在向混合检索(Hybrid Search) 迁移,结合 BM25 稀疏检索的精确性和向量检索的语义理解能力。ColBERT 这类 late-interaction 模型更进一步,在文档与查询的每个 Token 级别做交互匹配,而非整个向量的点积。
另一个关键趋势是重排序(Re-ranking)。先用一个轻量级的检索模型(如 sentence-transformers)快速召回候选文档,再用 cross-encoder 级别的重排序模型(如 Cohere Rerank)精排,最终将最相关的 Top-K 送给 LLM。
3. 结构挑战:如何组织上下文信息
给模型同样多的信息,不同的组织方式会导致截然不同的效果。这就是思维链(Chain of Thought) 和结构化输出(Structured Output) 之所以有效的本质原因——它们为模型提供了一个更好的"思考骨架"。
常见的上下文组织策略包括:
层级结构(Hierarchical Organization):将信息按粒度组织为「摘要→章节→段落→细节」的多层结构,让模型能够"按需下钻"。这模仿了人类处理复杂信息的方式。
元数据前置(Metadata First):在引入长文档之前,先给出文档的元数据摘要、关键发现列表和与当前任务的关联度评估。这相当于给模型提供了"先验知识",帮助它更快建立上下文焦点。
工具调用作为结构化上下文:当 LLM 调用工具(如搜索、代码执行、API请求)时,工具返回的结构化结果本身就是高质量的上下文。OpenAI 的 Function Calling 和 Anthropic 的 Tool Use 都在朝这个方向优化。
记忆系统:让 AI 跨越对话记住关键信息
如果上下文工程解决的是"单次对话内"的信息管理问题,那么记忆系统(Memory System) 解决的是"跨对话"的信息持久化问题。这是构建真正实用 AI Agent 的关键技术。
记忆系统的分层架构
一个成熟的 AI 记忆系统通常包含以下几层:
感知记忆(Perceptual Memory):AI 在当前对话中即时感知到的信息——用户的最新消息、刚执行的工具返回结果。这是模型直接能"看到"的,无需额外处理。
工作记忆(Working Memory):模型在当前对话的上下文中主动维护的关键信息。这部分需要通过提示词工程(Prompt Engineering)来管理,例如在系统提示词中固定一段"当前任务状态"区域。
情节记忆(Episodic Memory):AI 对过去重要交互事件的记录。需要外部存储(如向量数据库)来持久化,检索时通过语义相似度匹配最相关的历史片段。
语义记忆(Semantic Memory):AI 从大量交互中抽取的通用知识模式,例如用户的偏好、习惯、长期目标。这类信息通常以结构化格式(而非原始对话)存储,更易于快速读取。
Agent Memory 的实践案例
Anthropic 在 Claude Agent Code 报告中展示了他们的记忆实现方式。他们维护了一个往来记忆(Correspondence Memory) 系统,在每次重要交互后提取并存储关键信息:
- 用户正在处理的具体任务是什么
- 当前遇到了什么问题
- 之前尝试过什么方案(成功或失败)
- 用户的偏好和约束
在后续对话中,当检测到当前任务与历史记忆相关时,AI 会主动检索并注入相关记忆片段。这种机制使得 AI 能够:
- 理解用户项目的演进历史,而不是每次都从零开始
- 避免重复之前的错误方案
- 根据用户偏好调整沟通风格和技术选择
长上下文模型的新进展
2024 年下半年,长上下文模型领域出现了一些重要的技术突破,值得 AI 开发者重点关注。
注意力的工程优化
标准的多头自注意力(MHA)机制在序列长度上呈 O(n²) 增长。当上下文窗口扩展到 200K Tokens 时,这个计算量是巨大的。FlashAttention 系列通过 IO-Aware 的分块计算,将注意力计算的内存复杂度从 O(n²) 降低到 O(n),同时保持数值精度不损失。这使得超长上下文的推理在工程上变得可行。
Transformer 的替代架构
Google DeepMind 在 2024 年发表的 Megalodon 和 Infini-Transformer 论文,展示了在长上下文任务上超越标准 Transformer 的新架构。这些方法的核心思想是将信息压缩到固定大小的"记忆槽"中,通过类似 LSTM 的门控机制控制信息的写入和遗忘,从而在有限计算资源下处理无限长的序列。
稀疏注意力(Sparse Attention)
Longformer、BigBird 等模型采用了"局部窗口注意力 + 全局注意力 + 随机注意力的混合模式,大幅降低了 O(n²) 的计算负担,同时在长文档理解任务上保持了与全注意力模型相当的性能。这种稀疏化策略在工程实践中更容易落地,因为可以基于现有的 Transformer 实现做增量改造。
上下文工程的实践建议
结合上述分析,这里给出几条可操作的建议:
1. 建立上下文预算意识
不要把上下文窗口当作无限资源。从项目伊始就建立 Token 使用量的监控机制。将可用的上下文空间划分为:系统指令区、对话历史区、检索增强区、工具返回区,并为每个区域设置合理的上限。当某个区域超标时,优先优化而非简单截断。
2. 结构化你的检索管道
如果你在使用 RAG,不要只依赖单一检索方式。建立一个包含关键词检索(BM25)、向量检索(语义)、以及可能的知识图谱的多路召回系统。在召回后增加重排序步骤,确保最终送到模型的是真正相关的内容。
3. 定期提炼对话摘要
对于需要跨多轮对话完成的任务,不要等到对话结束才做总结。在对话进行到 1/3、2/3 时各做一次提炼,将关键决策、已解决的问题、待解决的问题以结构化格式记录下来。这比保留完整对话历史的 Token 效率高得多,同时保留了对后续任务最有价值的信息。
4. 给模型一个"上下文入口"
在系统提示词中设计一个清晰的信息注入模板,让每次新对话都有一个固定的"起点"。例如:
[当前任务] {简述任务目标}
[已完成的关键步骤] {列表}
[当前瓶颈] {描述}
[用户偏好] {技术风格、沟通偏好等}
这个入口使得模型即使面对非常长的对话历史,也能快速定位到当前最需要处理的问题。
结语
上下文工程不是一项可以"一次解决"的技术,它是构建高效 AI 应用的持续性工程实践。随着模型能力越来越强,上下文窗口越来越大,如何更好地组织、压缩、检索和利用这些信息,将成为区分普通 AI 应用和卓越 AI 产品的关键分水岭。
好的上下文工程,本质上是让模型在正确的时机、看到正确的信息、以正确的结构理解它。从这个角度看,上下文工程师可能是未来 AI 应用开发团队中最重要的角色之一——虽然这个职位还没有一个公认的名字。
如果你也在构建 AI 应用,欢迎关注我的更多实践分享。