RAG已经过时了吗?2026年最该学的,其实是AI Agent的上下文工程

大家想学习更多AI知识,可以收藏下面两个网站:
GPTBUYSZeoAPI

过去两年,很多团队把“做 AI 应用”理解成“向量库 + Embedding + RAG + 大模型”。这套架构确实解决了不少企业知识问答问题,但到 2026 年,如果你的目标从“回答问题”升级到“完成任务”,仅靠传统 RAG 就不够了。

OpenAI 在 2026-04-15 发布的 Agents SDK 新能力中,重点已经不是单轮问答,而是面向长流程任务的 agent 基础设施:configurable memory、sandbox-aware orchestration、文件系统工具、MCP 集成、AGENTS.md、自定义技能、snapshotting 与 rehydration 等能力都被放到了工程框架里。这说明行业重心正在从“把外部知识塞进上下文”转向“管理状态、工具、记忆、执行环境和多代理协作”的上下文工程。

本文面向工程师,不讨论概念炒作,而是回答三个实际问题:

  • RAG 到底是不是过时了?
  • Agent 的上下文工程到底比 RAG 多了什么?
  • 2026 年要落地 AI Agent,工程上应该怎么设计?

摘要

摘要:RAG 没有过时,但它已经从“主架构”变成了 Agent 上下文工程中的一个关键组件。

本文的核心观点很简单:

  1. RAG 仍然重要
    Elastic 和 Weaviate 的资料都明确指出,RAG 仍是给模型补足外部知识的关键方式,尤其在企业知识库、文档问答、搜索增强场景中不可替代。

  2. 但 Agentic AI 需要的上下文远不止文档片段
    进入 Agent 场景后,模型需要处理任务状态、工具调用结果、执行轨迹、审批状态、长期记忆、子代理上下文、文件系统、沙箱环境等内容。

  3. 上下文工程是 RAG 的上层抽象
    Elastic 将 context engineering 定义为“在正确时间给 AI 系统正确的信息”,并强调 data、retrieval、tools、memory 的连接。这已经明显超出传统 RAG 的范围。

  4. 2026 年的工程重点是:让 Agent 稳定完成长流程任务
    OpenAI Agents SDK 文档指出,当应用需要自己管理 orchestration、tool execution、approvals 和 state 时,应使用 Agents SDK。这正是上下文工程的典型应用边界。

一句话总结:RAG 解决“知道什么”,上下文工程解决“在什么状态下、用什么工具、按什么步骤、基于哪些记忆去完成任务”。


为什么传统 RAG 不够用了

摘要:传统 RAG 擅长知识补全,但在多步骤任务、状态管理和工具执行场景下会暴露明显短板。

经典 RAG 架构通常是这样的:

  1. 用户提问;
  2. 将问题向量化;
  3. 从向量库或搜索引擎中检索相关文档;
  4. 将文档片段拼进 prompt;
  5. 调用 LLM 生成答案。

这对“问答”很有效,但对“任务执行”远远不够。

例如你要做一个 DevOps Agent,让它完成:

  • 阅读故障日志;
  • 搜索历史工单;
  • 分析 Prometheus 指标;
  • 查询变更记录;
  • 生成修复方案;
  • 请求人工审批;
  • 执行回滚脚本;
  • 记录事故复盘。

这已经不是一次检索加一次回答能解决的问题。Agent 在执行过程中需要持续维护:

  • 当前任务目标;
  • 已经完成的步骤;
  • 工具调用返回值;
  • 文件和日志上下文;
  • 用户授权状态;
  • 中间判断依据;
  • 后续执行计划。

Elastic 在关于 agentic AI 的上下文工程材料中指出,RAG 依然是重要补充,但上下文窗口过载会让模型失焦。也就是说,问题不是“有没有检索”,而是“检索来的内容如何被选择、压缩、隔离和使用”。

传统 RAG 常见问题包括:

  • 检索结果太多,污染上下文;
  • chunk 切分不合理,导致语义断裂;
  • 每轮对话重复检索,缺少任务状态;
  • 没有工具调用轨迹,模型无法稳定规划;
  • 长流程中缺少 memory,结果前后不一致;
  • 所有信息塞进同一个上下文窗口,导致注意力分散。

所以,RAG 没死,但“只会搭 RAG”已经不够了。


上下文工程到底是什么

摘要:上下文工程的核心是在正确时间、以正确形式、向正确的 Agent 提供正确信息。

Elastic 对 context engineering 的定义非常工程化:在正确时间给 AI 系统正确的信息。这个定义比“prompt engineering”更接近生产系统,因为它关注的不只是提示词,而是整个运行时上下文。

一个面向 Agent 的上下文工程系统,通常要管理以下几类信息:

  • Instructions:系统指令、角色边界、任务规则;
  • Retrieved Context:从搜索、向量库、数据库中检索的信息;
  • Memory:用户偏好、历史任务、长期事实、阶段性总结;
  • Tool Results:工具调用输出,如 API 返回、命令执行结果;
  • Execution State:任务进度、审批状态、失败重试次数;
  • Files and Workspace:Agent 读写的文件、生成的中间产物;
  • Sub-agent Context:不同子代理各自隔离的上下文窗口。

这就是为什么 OpenAI Agents SDK 文档会把规划、工具调用、specialist 协作、状态保留放在同一个框架下。Agent 应用不是简单调用一次模型,而是一个可编排、可恢复、可审计的执行系统。

从工程角度看,上下文工程至少包含四个动作:

  1. 选择:哪些信息应该进入上下文?
  2. 压缩:长文档、历史记录、工具输出如何摘要?
  3. 隔离:哪些任务应该交给子代理,避免污染主上下文?
  4. 持久化:哪些状态需要保存,供后续 rehydration 使用?

Elastic 的资料还提到 agentic search:可以将复杂多步探索交给专门的子代理,让它在隔离上下文中完成搜索和归纳,再把摘要返回主代理。这种设计比“主 prompt 里塞一堆搜索结果”更稳。


Key Comparison Table

摘要:从工程选型看,RAG、Agent 和上下文工程不是互斥关系,而是不同抽象层级。

Dimension Traditional RAG Agent with Tools Context Engineering Practical Tradeoff
Primary Goal 补充外部知识并回答问题 规划并执行多步骤任务 管理任务全过程的信息流 RAG 简单,Agent 更适合复杂流程
Context Source 文档 chunk、搜索结果 工具输出、API、文件、检索结果 data、retrieval、tools、memory、state 来源越多,越需要治理和压缩
State Management 通常较弱,每轮独立 需要保存任务状态和工具轨迹 强调 snapshot、rehydration、memory 状态越强,系统复杂度越高
Failure Mode 检索不准、幻觉、上下文过载 工具调用失败、规划漂移、权限问题 上下文污染、记忆错误、隔离不足 需要可观测性和回滚机制
Best Use Case 企业知识问答、文档搜索 自动化运维、代码修复、数据分析 长流程 Agent、多人协作、复杂工作流 按任务复杂度逐步升级
Engineering Focus chunking、embedding、rerank orchestration、tool execution、approval selection、compression、isolation、persistence 2026 年更应补齐上下文治理能力
Representative Capability Hybrid search、向量检索 MCP、文件系统工具、沙箱执行 configurable memory、AGENTS.md、snapshotting 新框架正在把这些能力产品化

2026 年 Agent 上下文架构怎么设计

摘要:生产级 Agent 架构应把检索、工具、记忆、状态和执行环境拆成可组合模块。

一个较稳的 Agent 上下文架构可以分成六层。

1. 输入解析层

负责将用户请求转换为结构化任务:

  • 目标是什么;
  • 约束是什么;
  • 是否需要工具;
  • 是否需要审批;
  • 是否需要长期记忆参与。

不要一上来就检索。很多请求其实需要先分类:是问答、分析、执行,还是需要人工确认。

2. 检索与搜索层

这里 RAG 仍然存在,但要升级为 hybrid search:

  • 关键词搜索处理精确术语;
  • 向量搜索处理语义相似;
  • rerank 提升最终上下文质量;
  • metadata filter 控制租户、权限、时间范围。

Elastic 的 2026 材料强调 hybrid search 与 agentic AI 的关系,说明检索依然是 Agent 的基础能力,但不是全部。

3. 上下文处理层

负责把原始信息变成适合模型消费的上下文:

  • 去重;
  • 摘要;
  • 分段;
  • 引用来源;
  • 按任务目标重排;
  • 丢弃低价值内容。

这是避免上下文窗口过载的关键。

4. 工具编排层

Agent 不只是读文档,还会调用工具:

  • 数据库查询;
  • HTTP API;
  • 文件读写;
  • shell 命令;
  • 内部审批系统;
  • 搜索服务;
  • 代码执行环境。

OpenAI Agents SDK 文档提到,当应用需要自己负责 orchestration、tool execution、approvals 和 state 时,应使用 Agents SDK。这意味着工具编排已经是 Agent 工程的核心问题。

5. 记忆与状态层

需要区分三类内容:

  • 短期上下文:当前任务中的对话和中间结果;
  • 长期记忆:用户偏好、项目背景、历史决策;
  • 执行状态:任务步骤、工具结果、审批记录、失败信息。

OpenAI 2026 年 Agents SDK 新能力中提到 configurable memory、snapshotting 与 rehydration,说明生产级 Agent 必须支持状态保存和恢复。

6. 隔离与多代理层

复杂任务不要让一个 Agent 背全部上下文。更稳的方式是:

  • 主 Agent 负责规划和决策;
  • Search Agent 负责检索和归纳;
  • Code Agent 负责代码分析;
  • Ops Agent 负责命令执行;
  • Review Agent 负责安全检查。

Elastic 资料指出,现代 agentic 架构中,顶层 agent 会编排多个 sub-agents,每个子代理拥有自己的 logic chains、instruction sets、context 与 tools。这样可以降低上下文污染,也方便权限控制。


代码块注释规范

摘要:Agent 代码示例要让读者看清上下文流转,而不是只展示 API 调用。

写 Agent 或 RAG 相关代码时,注释建议遵循以下规则:

  1. 说明代码块目的
    每个代码块开头用一两行注释说明“这段代码解决什么问题”,例如检索、压缩、工具调用或状态保存。

  2. 标注关键上下文边界
    明确哪些变量是用户输入、哪些是检索上下文、哪些是工具结果、哪些会进入模型 prompt。

  3. 避免解释语法细节
    不要给 forif 这类基础语法写废话注释。注释应解释工程意图,而不是翻译代码。

  4. 标注生产环境注意点
    对权限、超时、重试、审计、脱敏、token 限制等风险点给出简短说明。

  5. 保持注释短而具体
    Agent 示例很容易变长,注释应帮助读者定位上下文流,不要写成小作文。


实战代码示例

摘要:下面用简化代码展示如何把 RAG 检索、上下文压缩、工具调用和状态保存组合成 Agent 上下文工程。

下面示例不是绑定某个具体云厂商,而是展示工程结构。真实生产中可以将搜索层替换成 Elasticsearch、Weaviate 或其他混合检索服务,将 Agent 运行层替换成 Agents SDK 或内部编排框架。

# 目的:构建一个最小上下文组装流程
# 关键步骤:检索文档 -> 压缩摘要 -> 组合任务状态 -> 生成模型输入

from typing import List, Dict

def hybrid_search(query: str, top_k: int = 5) -> List[Dict]:
    # 生产环境可组合 BM25、向量检索和 rerank
    # 注意:应加入租户、权限、时间范围等 metadata filter
    return [
        {"title": "故障手册", "content": "CPU 飙高时先检查最近发布和慢查询。", "score": 0.91},
        {"title": "变更记录", "content": "10:30 发布了 payment-service v2.3.1。", "score": 0.87},
    ][:top_k]

def compress_context(docs: List[Dict], max_chars: int = 500) -> str:
    # 目的:避免把所有检索结果直接塞入上下文导致模型失焦
    # 生产环境建议使用摘要模型,并保留引用来源
    lines = []
    for doc in docs:
        lines.append(f"[{doc['title']}] {doc['content']}")
    return "\n".join(lines)[:max_chars]

def build_agent_context(user_task: str, task_state: Dict) -> Dict:
    # user_task 是用户目标;retrieved_context 是可丢弃上下文;task_state 是必须保留状态
    docs = hybrid_search(user_task)
    retrieved_context = compress_context(docs)

    return {
        "instructions": "你是一个运维分析 Agent,先分析证据,再提出操作建议。",
        "user_task": user_task,
        "retrieved_context": retrieved_context,
        "task_state": task_state,
    }

task_state = {
    # 执行状态应独立保存,不能只依赖模型上下文窗口
    "incident_id": "INC-2026-0415",
    "completed_steps": ["collected_metrics"],
    "approval_required": True,
}

context = build_agent_context("分析 payment-service CPU 飙高原因", task_state)
print(context)

上面代码体现了一个重要原则:检索上下文和任务状态要分开管理。检索内容可以被替换、压缩、丢弃;但任务状态、审批状态、执行轨迹必须持久化。

再看一个多代理隔离的伪实现:

# 目的:展示主 Agent 如何把搜索任务委派给子 Agent
# 关键步骤:主 Agent 只接收子 Agent 的摘要,避免原始搜索结果污染主上下文

class SearchAgent:
    def run(self, query: str) -> dict:
        # 子 Agent 拥有独立上下文,可进行多轮搜索和归纳
        docs = hybrid_search(query, top_k=10)
        summary = compress_context(docs, max_chars=800)

        return {
            "summary": summary,
            "sources": [doc["title"] for doc in docs],
        }

class MainAgent:
    def __init__(self):
        self.search_agent = SearchAgent()
        self.state = {
            # 主 Agent 只保存任务级状态,不保存所有原始文档
            "steps": [],
            "decisions": [],
        }

    def handle(self, task: str) -> str:
        # 将复杂检索交给子 Agent,主 Agent 保持上下文干净
        search_result = self.search_agent.run(task)
        self.state["steps"].append("search_completed")

        # 生产环境这里可调用 LLM,并传入 instructions、summary、state 和工具列表
        response = (
            "分析结论:可能与最近发布有关。\n"
            f"证据摘要:{search_result['summary']}\n"
            f"引用来源:{', '.join(search_result['sources'])}\n"
            "建议:先请求审批,再执行回滚或限流。"
        )

        self.state["decisions"].append("request_human_approval")
        return response

agent = MainAgent()
print(agent.handle("排查 payment-service CPU 飙高问题"))

这个例子对应 Elastic 提到的 isolation 思路:复杂任务拆给子代理,每个子代理拥有干净、聚焦的 context window。主 Agent 不必持有所有原始搜索细节,只需要高质量摘要、来源和任务状态。


常见问题与排错

摘要:Agent 上下文问题通常不是模型单点问题,而是检索、状态、工具和记忆协同失败。

  1. 问题:模型回答引用了无关文档
    排查:检查 chunking、metadata filter、rerank 结果;不要把 top_k 设置过大。上下文过载会让模型失焦。

  2. 问题:Agent 多轮执行后前后矛盾
    排查:确认任务状态是否持久化。不要只依赖对话历史,应保存 completed_steps、decisions、tool_results。

  3. 问题:工具调用结果被模型忽略
    排查:将工具结果放入明确字段,并在 instructions 中要求“基于工具结果回答”。必要时对工具输出做摘要和结构化。

  4. 问题:长期记忆污染当前任务
    排查:给 memory 增加作用域、更新时间、置信度和可撤销机制。不是所有历史偏好都应该进入当前上下文。

  5. 问题:子代理结果不可追溯
    排查:子代理返回 summary 的同时必须返回 sources、工具调用记录和关键中间结论,方便审计。

  6. 问题:Agent 执行中断后无法恢复
    排查:需要 snapshotting 或等价机制保存任务状态、文件产物、工具结果和审批状态。OpenAI 2026 年 Agents SDK 新能力中强调的 snapshotting 与 rehydration 正是为了解决这类问题。


结论:RAG 没过时,但你该升级技能栈了

摘要:2026 年的关键能力不是放弃 RAG,而是把 RAG 纳入 Agent 上下文工程。

如果你的应用只是企业知识库问答,RAG 仍是最直接、性价比最高的方案。你应该重点优化:

  • 文档清洗;
  • chunking;
  • embedding;
  • hybrid search;
  • rerank;
  • 引用溯源。

但如果你的目标是构建能完成任务的 AI Agent,就必须继续学习:

  • 上下文选择与压缩;
  • 多代理上下文隔离;
  • 工具调用编排;
  • memory 设计;
  • 状态持久化;
  • 审批与权限控制;
  • snapshot 与恢复;
  • 文件系统和沙箱执行。

下一步建议很明确:

  1. 先把现有 RAG 系统改造成“可观测的检索上下文层”;
  2. 再引入工具调用和任务状态;
  3. 最后拆分 specialist sub-agents,做上下文隔离和长期记忆治理。

不要问“RAG 和 Agent 该选哪个”。更准确的问题是:你的 Agent 在每一步到底需要什么上下文,以及这些上下文从哪里来、如何压缩、如何隔离、如何保存、如何审计。


CSDN 发布建议(标签与专栏)

摘要:标题和标签应突出 RAG、Agent、上下文工程和 2026 技术趋势,方便工程读者检索。

标签建议:AI Agent、RAG、上下文工程、Agents SDK、LLM 应用开发、向量检索、工程架构

专栏建议:AI Agent 工程实践 / 大模型应用架构 / RAG 与企业知识库实战


References

摘要:以下资料用于支撑本文关于 RAG、Agent 和上下文工程关系的判断。

  1. The next evolution of the Agents SDK
    https://openai.com/index/the-next-evolution-of-the-agents-sdk/

  2. Context engineering with hybrid search for agentic AI
    https://www.elastic.co/pdf/elastic-search-labs-context-engineering-with-hybrid-search-for-agentic-ai.pdf

  3. What is Context Engineering? Architecting Reliable AI
    https://www.elastic.co/what-is/context-engineering

  4. Agents SDK
    https://developers.openai.com/api/docs/guides/agents

  5. Context engineering for AI agents | Elastic
    https://www.elastic.co/elasticsearch/context-engineering

  6. Context Engineering - LLM Memory and Retrieval for AI Agents
    https://weaviate.io/blog/context-engineering

  7. Context engineering: LLM evolution for agentic AI
    https://www.elastic.co/search-labs/blog/context-engineering-llm-evolution-agentic-ai

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐