欢迎来到上下文工程 / Welcome to Context Engineering
第 1 章:欢迎来到上下文工程 / Welcome to Context Engineering
> Context Engineering: Making AI Understand You Better
你有没有过这样的经历:给朋友发了一条消息"那个方案改好了",然后满心期待对方的回复,却发现对方一头雾水地回了一句"什么方案?"这种驴唇不对马嘴的对话,根源往往不是对方不聪明,而是你们共享的上下文不够——他不知道你说的是哪个项目、哪份文档、哪个版本。
这种尴尬在人与人的日常交流中偶有发生,但在人类与AI的对话中,情况会变得更为极端。AI没有记忆你上一次对话的能力,每次对话都是一次"重新认识"。如果你不告诉它你是谁、你在做什么、你需要什么,它就只能像一个刚入职的新人一样,对一切都充满茫然。
上下文工程(Context Engineering),正是要解决这个问题。它不是让AI变得更聪明,而是确保AI能够"记得"它需要知道的一切,从而给出真正有价值的回应。这听起来像是一个简单的想法,但它实际上涉及一整套复杂的技术体系和工程实践——从如何管理对话历史,到如何从海量信息中精准提取相关内容,再到如何将复杂问题压缩成AI能够高效处理的格式。
这一章,我们将从最基础的概念出发,逐步构建对上下文工程的完整理解。你将明白为什么上下文是AI输出质量的决定性因素,掌握上下文工程的四大技术支柱,并清楚地了解本书将要带领你走过的学习旅程。
---
1.1 什么是上下文工程 / What Is Context Engineering
让我们先从一个人类对话的例子开始。假设你的同事对你说:"我觉得我们应该在颜色上做一些调整,你怎么看?"这句话在字面上几乎没有任何实质内容——它没有说明是什么项目、什么产品、什么颜色、什么类型的调整。但你的大脑能够立刻理解这句话,是因为你拥有丰富的上下文知识:你知道你们正在做一个手机App的界面设计,你知道上周你们讨论过主色调的问题,你知道同事最近在研究品牌色板……所有这些信息组合在一起,让你能够准确理解同事的意思,并给出有意义的回应。
现在,把这个场景搬到你和AI的对话中。如果你直接问:"我们应该在颜色上做一些调整,你怎么看?"AI会怎么做?
它会基于自己训练时学到的关于"颜色调整"的通用知识来回答——可能会讲一堆色彩理论、用户心理、对比度原则之类的内容。这些回答本身可能都是正确的,但它们大概率不是你真正需要的。你需要的是针对你的具体项目、具体问题的具体建议。
上下文工程的核心目标,就是让AI拥有这种"理解具体语境"的能力。它不是改变AI的底层模型,而是改变我们输入给AI的信息结构。
上下文工程的正式定义
让我们给上下文工程一个正式的定义:
> 上下文工程是设计、管理和优化AI系统输入信息的工程学科,它确保AI在任何时刻都能获得正确、相关、适量的上下文信息,从而产生高质量、符合预期的输出。
这个定义中有几个关键词值得强调:
"设计和管理"——上下文工程不是一项自动化的任务,而是一种有意识的工程实践。你需要主动思考:AI此刻需要知道什么?它已经知道什么?什么信息是多余的?什么信息是关键?
"正确、相关、适量"——上下文工程追求的不是信息越多越好,而是信息越精准越好。给AI太多无关信息会分散它的注意力,给太少信息又让它无法做出准确判断。找到这个平衡点,是上下文工程的核心挑战。
"输入信息"——上下文工程关注的是模型的输入端,而不是模型本身。你不会在这里学习如何训练模型或改进模型架构,你学习的是如何为模型准备最好的"食材"。
一个生活化的类比
想象你要写一封正式的英文邮件给一位你从未见过面的潜在客户。你会怎么做?
你不会一上来就写"Dear Sir/Madam, I would like to discuss..."对吗?你会先做功课:了解对方公司的业务、对方的职位和背景、你自己的公司能提供什么价值、你们之前是否有过任何接触……然后你会把这些信息组织起来,写出一封有针对性的邮件。
上下文工程做的事情,本质上是一样的。面对一个AI任务,你需要先"做功课"——收集和组织AI需要的上下文信息——然后把这些信息以一种清晰、有条理的方式输入给AI。
区别在于,人类的"功课"往往存储在记忆里,而AI的"功课"需要你显式地提供给它。这不是AI的缺陷,而是它的工作方式。理解了这一点,你就迈出了掌握上下文工程的第一步。
为什么它被称为"工程"
你可能注意到,我们称之为"上下文工程"而不是"上下文管理"或"上下文优化"。这个"工程"一词是有意选择的。
在软件工程的语境中,"工程"意味着系统性、可重复性和可测量性。就像软件工程不是简单地写代码,而是通过需求分析、架构设计、测试验证等一系列系统化实践来构建可靠的软件系统,上下文工程也不是简单地"多给AI一些信息",而是通过系统化的方法来确保上下文的质量和效果。
具体来说,上下文工程包含以下几个工程化特征:
可重复性——同样的上下文问题应该有可复用的解决方案。你不会每次写代码都从零开始设计异常处理机制,同样,你也不应该每次对话都从零开始设计上下文策略。
可测量性——上下文工程的效果应该是可以评估的。通过设计合适的指标和测试方法,你可以知道自己的上下文策略是否真的有效。
系统性——上下文工程不是一堆孤立的技术技巧,而是一套相互关联的方法体系。不同技术之间有协同作用,单独使用往往效果有限。
理解上下文工程的工程属性,能帮助你从一开始就用正确的心态来学习这门技术。它不是灵机一动的"提示词技巧",而是可以系统学习和持续改进的专业能力。
---
1.2 为什么上下文对AI输出质量至关重要 / Why Context Is Critical to AI Output Quality
让我们做一个思想实验。假设你面前坐着一位知识渊博的顾问,他读过人类有史以来所有的书,了解从古希腊哲学到量子物理的一切知识。但是,这位顾问有一个特点:他不知道你是谁,不知道你为什么来找他,不知道你之前和他谈过什么。现在,你问他一个具体的问题,比如"我应该选择哪个offer"。
你能期望得到什么样的回答?
最可能的情况是,你会得到一个泛泛而谈的回答,比如"这取决于你的职业目标、家庭状况、风险偏好等因素,你应该仔细权衡利弊"。这些话不能说错,但它们没有回答你的真正问题——因为顾问不知道你的具体情况,不知道你有两个offer可选,不知道一个是初创公司一个是跨国企业,不知道你已婚有孩子还是单身无负担。
现在,把这个场景中的"顾问"替换成AI大语言模型。 这种情况不是例外,而是常态。AI模型的"知识"再多,如果缺少具体的上下文,它输出的内容就只能是通用的、空洞的。
上下文的"锚定效应"
AI对输入上下文有极强的依赖性,这种现象可以称为上下文的锚定效应(Anchoring Effect)。
在认知心理学中,锚定效应指的是人在做判断时,会过度依赖最先获得的信息。即使后续有更准确的信息可用,最初的锚点仍然会显著影响最终决策。
AI模型同样存在这种锚定效应。当你在对话开始时提供的上下文信息,会极大地影响AI后续所有回答的基调和方向。这就是为什么ChatGPT一开始会让你"介绍一下你自己"或"这个对话是关于什么的"——这些初始化信息会锚定整个对话的走向。
举一个具体的例子。如果你对AI说:"我是一个刚毕业的大学生,正在找第一份工作,我对数据分析很感兴趣,但不确定应该选择哪个方向。"然后你问它:"我应该学习Python还是R?"
AI的回答会基于你提供的背景信息进行调整——它可能会建议你考虑就业市场、学习曲线、生态系统等因素,并给出适合初学者的建议。
但如果你不加这段背景,直接问同样的问题,AI的回答会更通用——可能直接比较两种语言的技术差异,而不会考虑学习曲线和就业这些对初学者更重要的因素。
同一个问题,不同的上下文,产生了截然不同的答案。这就是上下文锚定效应的力量。
上下文与"幻觉"的关系
AI大语言模型有时会产生"幻觉"——生成听起来合理但实际上错误或不存在的信息。关于幻觉产生的原因有很多讨论,但一个经常被忽视的因素是上下文的缺失或误导。
当AI缺少足够的上下文信息时,它会倾向于"填补空白",用自己训练时学到的通用知识来弥补。这种填补有时是对的,有时是错的。缺少上下文就像在黑暗中作画——AI会尽力画出一幅合理的画,但缺少参照物,错误和偏差就在所难免。
相反,充足的、正确的上下文就像给AI提供了一幅详细的素描底稿。AI可以基于这个底稿进行创作,而不需要凭空想象细节,从而大大降低幻觉发生的概率。
这不是说有了好的上下文就完全不会有幻觉——模型本身的能力限制仍然存在。但上下文工程能够显著降低因信息不足而导致的错误,这是一个已经被大量实践验证的事实。
上下文是"记忆"的替代品
现代的大语言模型本身是没有记忆功能的。当你开始一个新的对话,模型对你一无所知;即使是在同一个对话中,如果对话历史太长,模型也会开始"遗忘"早期提到的重要信息——因为模型的上下文窗口是有限的。
上下文工程在某种程度上是"记忆工程"。它的任务是在有限的上下文窗口内,模拟出"AI记得一切"的效果。这包括:
- **选择性记忆**:从大量历史信息中筛选出最重要的部分
- **主动回忆**:当需要某项信息时,主动从外部存储中检索
- **信息压缩**:将冗长的信息提炼成精华,减少占用空间
- **状态追踪**:持续维护一个"当前状态"的快照
理解上下文作为"人工记忆"的本质,能帮助你更好地设计上下文策略。每当你发现AI"忘记"了什么,第一反应应该是:"我是否应该把这个信息更明显地提供给AI?"而不是抱怨AI的能力不足。
一个直观的对比实验
让我们用一个简单的对比来直观感受上下文的作用。你可以自己尝试这个实验:
实验一(无上下文): > 问AI:"这篇文章写得怎么样?"
AI的回应必然是泛泛而谈,因为它不知道是哪篇文章、写的什么主题。
实验二(有上下文): > 告诉AI:"我写了一篇关于气候变化的科普文章,目标读者是高中生,主要论点是可再生能源的经济可行性。请从文章结构、论据充分性和语言表达三个维度评价。"
然后问:"这篇文章写得怎么样?"
你将得到一个具体、有针对性的评价,因为AI知道它需要评价什么。
这个对比清晰地展示了:AI的能力没有变化,变化的只是你提供的上下文。好的上下文就像一副眼镜,让AI能够"看清"你的具体问题。
---
1.3 上下文工程的四大技术支柱 / The Four Pillars of Context Engineering
上下文工程作为一个完整的学科体系,可以分解为四大技术支柱。这四个领域相互关联、相互支撑,共同构成了上下文工程的知识框架。在本书中,我们将有独立的章节深入探讨每一个支柱,但在这里,让我们先建立对它们的整体认识。
```mermaid flowchart TD A["上下文工程<br/>Context Engineering"] --> B["长上下文处理<br/>Long Context Processing"] A --> C["信息压缩<br/>Information Compression"] A --> D["智能摘要<br/>Intelligent Summarization"] A --> E["检索记忆与状态管理<br/>Retrieval & State Management"]
B --> F["注意力机制优化<br/>Attention Optimization"] B --> G["上下文窗口管理<br/>Context Window Management"]
C --> H["语义压缩<br/>Semantic Compression"] C --> I["结构化提炼<br/>Structured Extraction"]
D --> J["抽象摘要<br/>Abstractive Summarization"] D --> K["抽取摘要<br/>Extractive Summarization"] D --> L["任务导向摘要<br/>Task-Oriented Summarization"]
E --> M["向量检索<br/>Vector Retrieval"] E --> N["知识图谱<br/>Knowledge Graph"] E --> O["对话状态追踪<br/>Dialogue State Tracking"] ```
支柱一:长上下文处理 / Long Context Processing
当你需要AI阅读一份200页的PDF文档并回答关于它的问题时,你会发现一个现实:文档太长了,无法一次性放入AI的上下文窗口。
长上下文处理正是要解决这个问题。它关注的是如何在有限的上下文窗口内,处理远超过窗口容量的信息。这不仅仅是简单的"截断"或"分段",而是一整套涉及信息选择、重组和优化的高级技术。
长上下文处理的核心挑战包括:
信息选择——当你有100万字的文档,但只有8000字的上下文空间时,你需要选择哪些信息最重要。这需要智能的内容分析和优先级判断。
跨段关联——文档开头和结尾可能存在重要关联,但它们无法同时出现在上下文中。如何让AI"记住"并关联这些分散的信息,是一个关键技术难题。
渐进式理解——让AI逐步理解越来越长的内容,同时保持对整体目标的聚焦,避免在过程中迷失方向。
在后面的章节中,我们将深入探讨Sliding Window、Chunking、Hierarchical Processing等具体技术,以及如何在不同场景下选择合适的处理策略。
支柱二:信息压缩 / Information Compression
你有没有遇到过这种情况:你在向别人解释一件事时,发现自己越说越多、越说越复杂,最后对方反而更糊涂了?
AI也会遇到类似的问题。当上下文中的信息过于冗长、重复或包含大量无关细节时,AI的注意力会被分散,难以准确把握核心要点。
信息压缩是将原始信息转化为更紧凑、更高密度表达的工程技术。一个好的压缩不是简单地删除文字,而是提炼精华——保留意义,删除噪音。
信息压缩在上下文工程中的重要性体现在几个方面:
节省上下文空间——AI的上下文窗口是有限的。压缩后的信息可以容纳更多有价值的内容。
提升信噪比——压缩的过程也是去噪的过程。去掉无关和冗余的信息,让真正重要的内容更加突出。
改善AI理解——研究表明,当上下文更加精炼时,AI对任务的理解准确度会显著提升。
压缩的关键挑战在于保持语义完整性——你不能为了简洁而丢失关键信息,也不能为了完整而引入冗余。这个平衡需要根据具体任务来调整。
支柱三:智能摘要 / Intelligent Summarization
如果说信息压缩是一种通用的"减肥"技术,那么智能摘要就是一种更加智能、更加任务导向的信息提炼方法。
智能摘要不仅仅是把长文本变短,它是根据特定目标对信息进行重新组织和表达。同样一份会议记录,如果你需要的是"行动项摘要"和"决策摘要",输出应该是不一样的。
智能摘要可以分为几种类型:
抽象摘要(Abstractive Summarization)——AI用自己的话重新组织信息,可能产生原文中没有出现的新句子。这适合需要流畅阅读体验的场景。
抽取摘要(Extractive Summarization)——直接从原文中选取最重要的句子或段落组合成摘要。这适合需要保留原文措辞和准确性的场景。
任务导向摘要——根据具体任务需求定制摘要策略。例如,问答系统的摘要应该围绕问题展开,销售报告的摘要应该突出关键数字和趋势。
智能摘要是上下文工程中最具创造性的部分之一,因为它要求你思考"我真正需要什么信息"这个根本问题。在后续章节中,我们将通过大量案例来展示如何设计有效的智能摘要策略。
支柱四:检索记忆与状态管理 / Retrieval, Memory, and State Management
到目前为止,我们讨论的技术主要关注如何处理"当前"的信息。但在一个完整的AI应用场景中,我们还需要处理一个更深层的问题:如何让AI能够访问"历史"信息和"外部"知识?
这就是检索、记忆与状态管理这一支柱所关注的内容。它包含三个紧密相关的子领域:
检索增强生成(RAG)——让AI能够从外部知识库中检索相关信息来增强回答。想象你在写一篇论文,你需要能够查阅图书馆的资料;RAG就是让AI也能"查阅"你的文档数据库。
长期记忆管理——如何在多轮对话甚至多个会话之间维护信息的连续性。你可能希望AI记住你上次提到的偏好、你的项目背景、你正在使用的术语表……这些都是长期记忆的范畴。
对话状态追踪——在复杂的对话场景中,跟踪"当前状态"至关重要。比如在一个订餐对话中,你需要知道用户已经选择了什么菜、有什么忌口、预算多少……状态追踪就是维护这些信息,确保AI的回应与当前状态一致。
这一支柱是构建真正实用AI应用的关键基础。一个客服AI如果不能记住你之前反映的问题,一个研究助手如果不能查阅你的项目文档,它们的实用价值就会大打折扣。
四大支柱的协同关系
理解四大支柱单独的功能很重要,但更关键的是理解它们如何协同工作。在一个真实的复杂AI应用中,这四个支柱往往会同时发挥作用。
考虑这样一个场景:你要让AI帮助审阅一份大型项目的技术文档。这份文档有几千页,包含需求说明、设计文档、代码注释、测试报告等多种内容。你的任务是提取所有与"性能优化"相关的内容,并形成一份改进建议报告。
在这个场景中:
- **长上下文处理**帮助你将数千页的文档分批次喂给AI
- **信息压缩**帮助AI从每个段落中提取最关键的信息点
- **智能摘要**帮助你从压缩后的信息中提炼出"性能相关"的内容
- **检索与记忆**帮助你在多轮对话中保持任务目标的连续性
如果你只是单纯地给AI喂入全部文档,效果往往不尽如人意——上下文会超出限制,AI会迷失在信息海洋中。但当你系统地应用四大支柱的技术时,AI就能高效、准确地完成这个复杂的任务。
四大支柱不是孤立的技术,而是一套协同工作的系统。理解它们的协同关系,是从"会用技术"到"会用工程"的跃升。
---
1.4 本书的学习路径与知识地图 / Learning Path and Knowledge Map
现在你已经对上下文工程有了基本的认识,接下来让我们看看这本书将如何带领你深入学习这