Files
test-repo/docs/zh-cn/appendix/context-engineering.md
T
sanbuphy 73f4788d7e feat: comprehensive documentation and demo updates
- Update READMEs and docs across multiple languages
- Enhance interactive demos for Agent, LLM, VLM, Audio, Image Gen, Terminal, and Web Basics
- Add new appendix sections for Database and IDE intros
- Update VitePress config, theme, and utility scripts
- Clean up unused assets and components
2026-01-16 19:10:51 +08:00

146 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 上下文工程入门 (Context Engineering)
> 💡 **学习指南**:如果说 Prompt Engineering 是教 AI "怎么说话",那么 Context Engineering 就是教 AI "怎么记事"。本章节将通过一系列交互式实验,带你深入理解 AI 的记忆机制,从基础的滑动窗口到高级的 RAG 系统,掌握让 AI "过目不忘"的核心技术。
## 0. 引言:金鱼与大象
想象一下,你正在和两个人聊天:
- **A (金鱼记忆)**:只能记住最后说的 3 句话。如果你问他"我刚才说了什么?",他可能会一脸茫然。
- **B (大象记忆)**:能记住你们聊过的每一句话,甚至是你上个月提到的细节。
**上下文工程 (Context Engineering)** 的目标,就是通过技术手段,让 AI 从 "金鱼" 进化成 "大象"。
但这里有一个核心挑战:**AI 的"脑容量"(上下文窗口)是有限的**。我们不能把全世界的信息都塞进去。
我们需要解决五个核心问题:
1. **容量限制**:到底能装多少东西?
2. **遗忘机制**:装满了怎么办?
3. **智能保留**:如何只忘掉不重要的?
4. **长期记忆**:怎么记住很久以前的事?
5. **信息压缩**:怎么把书读薄?
---
## 1. 第一步:理解瓶颈 (The Context Window)
### 1.1 什么是上下文窗口?
大语言模型 (LLM) 的记忆不是无限的。它有一个固定的**上下文窗口 (Context Window)**,就像一个只能写 1000 个字的黑板。一旦写满,要么擦掉旧的,要么停止写入。
### 1.2 实验:Token 与容量
在 AI 的世界里,计量的单位不是"字",而是 **Token**。一个 Token 大约相当于 0.75 个英文单词,或者 0.5-1 个汉字。
试着在下面的模拟器中输入文字,看看它是如何填满上下文窗口的:
<ContextWindowVisualizer />
**关键点**
- **溢出即丢失**:一旦超过红色警戒线,模型不仅会报错,或者会直接截断后面的内容。
- **昂贵的记忆**:上下文越长,推理速度越慢,费用也越高。
---
## 2. 第二步:即时记忆 (Sliding Window)
### 2.1 问题:聊久了就忘
当对话持续进行,Token 数量不断增加,最终会通过窗口限制。最简单的处理方式是**滑动窗口 (Sliding Window)**。
### 2.2 解决方案:先进先出 (FIFO)
就像一个滑动的相框,当新消息进来时,最旧的消息被"挤"出画面,被彻底遗忘。
<SlidingWindowDemo />
**观察**
- 当对话填满窗口后,最早的 `User` 消息变灰并消失。
- **缺陷**:如果我在第一句话里告诉 AI "我的名字叫小明",几轮对话后,它就忘了我叫什么。
---
## 3. 第三步:智能管理 (Selective Retention)
### 3.1 问题:重要的事不能忘
"滑动窗口"太笨了,它平等地对待每一句话。但有些信息(如你的名字、任务目标、系统设定)是**全局重要**的,无论对话多长都不能忘。
### 3.2 解决方案:选择性保留 (Smart Context)
我们需要一种机制,将关键信息**钉 (Pin)** 在窗口里,不受滑动影响。这通常通过 `System Prompt` 或动态注入来实现。
<SelectiveContextDemo />
**实验指南**
1. 观察顶部的 **📌 Pinned** 区域,这里的信息永远不会被挤走。
2. 在下方添加新消息,注意观察 **📜 Scrolling** 区域的变化。
3. 尝试点击某条消息旁边的 📌 按钮,把它变成"永久记忆"。
**原理**:我们牺牲了一部分流动窗口的空间,换取了关键信息的持久性。
---
## 4. 第四步:长期记忆 (RAG & Vector DB)
### 4.1 问题:如何记住一本书?
如果我们需要 AI 记住几百页的技术文档,或者你过去一年的日记,即使是 "Pinned" 也装不下(窗口太贵且有限)。
### 4.2 解决方案:外挂大脑 (RAG)
**检索增强生成 (RAG, Retrieval-Augmented Generation)** 是目前的终极解决方案。我们不把所有记忆都塞进大脑,而是把它们写在"笔记本"(向量数据库)里。
当需要回答问题时,先去笔记本里**检索**相关的那一页,临时读入大脑。
<RAGSimulationDemo />
**流程解析**
1. **Embedding**:将你的问题变成数学向量。
2. **Search**:在数据库中寻找"长得像"(语义相似)的片段。
3. **Retrieve**:只把那 2-3 个相关片段取出来。
4. **Augment**:把这些片段和你的问题一起塞进 Prompt。
这样,AI 就能回答它从未"背过"的知识了。
---
## 5. 第五步:信息压缩 (Compression)
### 5.1 问题:检索出来的内容还是太长
有时候,即使检索出的相关片段也太长了。我们需要一种方法,在保留核心含义的前提下,减少 Token 消耗。
### 5.2 解决方案:上下文压缩
我们可以用更小的模型,或者专门的算法,对文本进行压缩。
<ContextCompressionDemo />
**常见策略**
- **Summarize**:用自然语言总结大意。适合理解整体脉络。
- **Extract Key Points**:提取要点列表。适合逻辑性强的内容。
- **JSON Structure**:提取结构化数据。适合程序处理。
---
## 6. 总结:构建 AI 的记忆宫殿
上下文工程不仅仅是简单的"拼接字符串",它是一个精密的系统工程:
| 阶段 | 核心技术 | 适用场景 | 类比 |
| :----------- | :----------- | :----------------- | :------------------ |
| **L1. 限制** | Token 计数 | 了解边界 | 黑板的大小 |
| **L2. 短期** | 滑动窗口 | 日常闲聊 | 只能记 3 句话的金鱼 |
| **L3. 关键** | 选择性保留 | 角色扮演、任务设定 | 手心写字的备忘录 |
| **L4. 长期** | RAG / 向量库 | 知识库问答 | 随时查阅的图书馆 |
| **L5. 优化** | 压缩 / 摘要 | 降低成本、提速 | 读书笔记 |
掌握了这些,你就掌握了控制 AI "注意力"的钥匙。现在,去构建属于你的长记忆 AI 应用吧!