Zilliz 前天 22:21
上下文工程:AI落地的新范式
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文深入探讨了“上下文工程”(Context Engineering),一种应对大模型上下文长度限制导致信息检索准确率下降的新型AI落地范式。文章指出,尽管模型支持的上下文长度不断增加,但过长的上下文反而会引发模型失焦、遗忘关键信息等问题。为解决此困境,Anthropic提出了多种策略,包括任务拆分、上下文压缩、结构化笔记以及多Agent架构。文章还强调了向量数据库在预检索中的作用,并提出混合策略——结合向量数据库的静态知识检索和Agent的动态实时探索——是处理复杂任务的最佳实践。最终,文章为系统提示词设计、工具选择和信息获取提供了实用的指导框架。

🧠 **理解上下文的局限性**:大模型在处理超长上下文时,信息检索准确率会显著下降,出现失焦、遗忘等问题。这是由于Transformer架构的计算复杂度(O(n²))以及模型训练数据中长序列频率较低所致。因此,盲目增加上下文长度并非最优解,需要采用“上下文工程”来精简和优化输入。

⚙️ **混合策略:预检索与实时探索**:结合向量数据库(如Milvus)进行预检索,处理静态知识,再由Agent进行实时探索,处理动态或复杂信息,是应对上下文挑战的有效方法。向量数据库能快速进行语义检索,而Agent则能按需加载数据,实现“即时检索”(Just-in-Time)策略,特别适用于需要结合历史数据与实时反馈的场景。

🗄️ **应对上下文不足的策略**:当上下文窗口仍显不足时,可以采用三种策略:1. **压缩**:让AI总结对话,保留关键信息;2. **结构化笔记**:将重要信息记录到外部数据库,实现长期记忆和跨对话连续性;3. **多Agent架构**:为主Agent分配子Agent处理专门任务,并行处理复杂信息。实践中应按需选择,从单Agent+压缩开始,逐步引入外部存储或多Agent。

🛠️ **优化系统提示词与工具设计**:设计系统提示词时,应避免过于具体或笼统,找到“Goldilocks区间”,既能引导行为又留有推理空间。工具设计应遵循“少即是多”原则,每个工具功能单一、边界清晰,避免歧义和重叠,以降低AI的选择难度,提高效率。

原创 尹珉 2025-10-16 18:32 上海

放弃提示词,Anthropic是如何做 Context Engineering 的?

不知道各位赛博老板们奴役AI员工时,有没有发现一个神奇的现象:

相同的提示词,在原有对话窗口喂给大模型,和新开窗口喂给大模型,效果天差地别。

恭喜你,发现了一个非常有价值的结论:context腐化。

Anthropic数据显示,技术上,大模型支持的上下文长度虽然一直在增加,但当我们的与AI对话的上下文从8K增至128K tokens时,模型信息检索准确率就会下降15%-30%。出现的问题包括但不限于失焦、忘记关键信息或产生错误回答。

那么怎么解决这个问题?

你一定想到了:针对复杂任务,可以把任务分拆给不同模型;针对客服、代码等连续场景,可以压缩上下文。总而言之,通过动态管理,想尽一切办法,精简喂给大模型的上下文长度

恭喜你,已经掌握了最近一年来最时髦的AI落地范式:context engineering 上下文工程。

那么,context engineering的行业进展究竟如何,不同场景下我们又该如何合理使用,如何把向量数据库与context engineering更好结合,本文将一一解答。

01 

为什么上下文不是越多越好?

心理学研究表明,人类的工作记忆容量大约是7±2个信息块,超过这个限度,我们就会开始遗忘或混淆。

AI其实也一样,甚至这种遗忘与混淆比人类还严重

这源于Transformer架构的数学本质:每个token需要与其他所有token建立关联,这导致计算复杂度是O(n²)。当上下文从1K增加到100K时,模型需要处理的token关系数量增长了10,000倍

更重要的是,模型的训练数据中,短序列出现的频率远高于长序列。这意味着模型在处理超长上下文时本质上是在做它不太擅长的事情

但一个问题是,在早期的LLM应用,超过80%的用例是单次分类或文本生成任务。但到了2025年,超过70%的企业级AI应用需要Agent在多轮交互中持续工作有的甚至需要运行数小时完成复杂任务,上下文长度边长已经无可避免。

这也正是我们需要上下文工程的原因。

具体怎么做,我们可以先看一下Anthropic自家的AI编程助手Claude Code的解决思路。

做AI coding时,它只维护一个轻量级的索引系统(文件路径、查询语句、网页链接等),然后在需要时动态加载数据。

举个例子:你让它分析一个10GB的数据库时,它不会把所有数据都读进来,而是:

    先用SQL查询获取数据摘要

    headtail命令查看数据样本

    只把关键统计结果保留在上下文中

这种即时检索(Just-in-Time)的策略让它能处理远超上下文窗口限制的任务。

但只有即时检索就能解决所有问题吗?

答案是否定的。

02 

混合策略预检索+实时探索登上舞台

说到即时检索,就得提到一个关键技术:向量数据库

在传统的RAG(检索增强生成)架构中,我们会提前把知识库转换成向量embeddings,存储在专门的向量数据库中,然后在推理前通过语义相似度检索相关内容。

这种方法的优势很明显:速度快、成本低。 比如用Milvus这样的向量数据库,可以在毫秒级完成百万级文档的语义检索,这对于需要快速响应的应用(如客服机器人、智能问答)是刚需。

但Anthropic指出了一个容易被忽视的问题:预检索有时效性和精准度的双重困境

    时效性问题:如果知识库更新了,但向量索引还没重建,AI就会基于过时信息回答

    精准度问题:在任务开始前,你很难预判AI在执行过程中会需要哪些信息

那是不是说向量检索没用了?

恰恰相反。最佳实践是混合策略:用向量检索处理静态知识用Agent工具处理动态探索。

用一个实际场景说明:假设你在开发一个技术文档助手,架构应该是这样的:

第一层:Milvus向量检索(预加载)

    把公司的技术文档、API文档、历史issue都向量化存入Milvus

    用户提问时,先通过语义检索召回Top-K最相关的文档片段

    这一步解决了80%的常见问题,响应时间<500ms

第二层:Agent实时探索(按需加载)

    如果预检索的内容不够,Agent可以调用工具:

      search_code工具在代码仓库中精确查找

      run_query工具从数据库获取实时数据

      fetch_api工具获取最新的系统状态

    这一步处理复杂问题,可能需要3-5秒

为什么Milvus特别适合这个场景? 因为它支持混合检索(向量+标量过滤)和动态索引更新。举个例子:

    # 在Milvus中可以这样组合查询

    collection.search(

        data=[query_embedding],  # 语义相似度

        anns_field="embedding",

        param={"metric_type""COSINE""params": {"nprobe": 10}},

        expr="doc_type == 'API' and update_time > '2025-01-01'",  # 结构化过滤

        limit=5

    )

    这样既能利用语义理解,又能精确控制检索范围,让Agent的注意力预算花在刀刃上。


    那么问题来了,混合检索、预检索、实时检索,我们什么时候该用哪种策略?

    Anthropic给出了一个判断框架:

    一句话概括:金融、法律等领域,知识更新频率低但准确性要求高,适合以Milvus为核心构建知识库;而软件开发、数据分析等领域,环境变化快且需要深度探索,更适合Agent主导的即时检索。

    03 

    上下文窗口不够用时怎么办?

    通过向量数据库,可以避免所有信息一股脑的塞给大模型,但对于一些需要持续工作数小时的复杂任务(比如大型代码库迁移、深度研究报告),即使有向量数据库,200K的上下文窗口也会被填满。

    Anthropic总结了三种应对策略:

    1.压缩

    若上下文空间快用完时,让AI把之前的对话总结成简短版本,替换掉原来的详细内容。

    其中,需要重点保留的内容是设计决定、未修复的问题、关键细节,可以删除的是不必要的工具输出内容。

    在这个过程中,压缩太多会丢失重要细节,我们需要在记住全面信息和保持精确度之间找平衡

    2.结构化笔记(Structured Note-taking)

    让AI把重要信息记录到外部数据库,需要的时候再读取这些内容

    例如,Claude玩宝可梦游戏时,会记录简单信息如在1号路训练了1234步,皮卡丘升到8级,目标是10级,更多细节则记录在外部。它的好处是信息可以长期保存,可以在不同对话间保持连续性,且几乎不占用资源

    3. 多Agent架构(Sub-agent Architecture)

    对于复杂任务,我们可以设计一个主agent管理整体工作,多个专门的agent负责深入分析相关子任务的大量信息,但只返回精简的重要结果。这个思路一般用于研究报告或数据分析场景比较多。

    实践中,我们应该首先尝试单Agent加压缩方法来解决问题;只有当需要跨会话保持记忆时,才引入外部存储;而多Agent架构则应该保留给那些确实需要并行处理的复杂任务。

    04 

    实践指南

    另外,Anthropic还给了一个理论框架图。

    这张理论框架图可从三个层次理解:

    首先,设计系统提示词时要寻找恰到好处的指令深度,避免过于详细或过于模糊;

    其次,将具体规则通过工具API和少量高质量示例来实现,而不是塞满条件判断;

    最后,动态信息应当从系统提示中剥离,改为按需获取,以维持上下文清晰度。

    1.系统提示词:找到合适的Goldilocks区间

    系统提示词设计中存在两种常见错误。第一种是过于具体,即编写大量条件逻辑,这不仅容易导致错误,还使后续更新变得困难。第二种是过于笼统,仅提供一般性指导而缺乏明确的执行方向。

    正确的做法是找到Goldilocks区间:既要具体到能引导行为,又要灵活到给模型留出推理空间。

    推荐结构:

      你是一个技术文档助手,服务对象是开发者...
      1. 优先从Milvus知识库检索相关文档
      2. 如果检索结果不足,使用search_code工具深入查找
      3. 回答时引用具体的文档章节或代码行号
      ## Tool guidance
      - search_docs: 用于语义检索,适合概念性问题
      - search_code: 用于精确查找,适合实现细节问题
      ...

      2.工具设计:少即是多

      工具太多往往是导致失败的常见原因。当人类工程师无法清晰判断应该使用哪个工具时,AI同样难以做出更好的选择。

      设计原则:

        每个工具功能单一、边界清晰

        参数描述明确,避免歧义

        工具之间尽量不重叠

      Anthropic在文章最后提到了一个重要观点:随着模型能力提升工程的复杂度会下降

      但这不意味着上下文工程会消失。

      恰恰相反,它会从技巧性工作演变为架构性工作,就像从写汇编代码进化到设计系统架构。

      作者介绍

      Zilliz黄金写手:尹珉

      阅读推荐

      大模型贵,小模型蠢!vLLM+Milvus+智能路由,无痛降本50%

      大模型落地,已经走到了用上下文工程续命时刻

      RAG-Anything × Milvus:阅读PDF要集成20个工具的RAG时代结束了!

      Word2Vec、 BERT、BGE-M3、LLM2Vec,embedding模型选型指南

      全面测评LangChain vs LangGraph:谁是agent落地最优解

      阅读原文

      跳转微信打开

      Fish AI Reader

      Fish AI Reader

      AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

      FishAI

      FishAI

      鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

      联系邮箱 441953276@qq.com

      相关标签

      上下文工程 Context Engineering 大模型 Large Language Models AI落地 AI Implementation Anthropic 向量数据库 Vector Database RAG Agent
      相关文章