构建生产级 AI 系统必须掌握的 6 个核心概念

@sairahul1
英语1个月前 · 2026年6月18日
494K
334
64
20
1.1K

TL;DR

本文深入解析了 AI 工程的六大支柱——Tokens、Embeddings、RAG、Agents、Evals 和 Context Engineering,为您构建稳健的 AI 应用提供行动指南。

我看到一张 $200 的账单在一夜之间出现在 AWS 账户上。

不是因为系统崩溃。

一个 Agent 在没有任何停止条件的情况下循环运行了六个小时,每次迭代都在调用 OpenAI API。

所有监控面板都显示它运行正常。

直到早上账单出现,才有人注意到。

这就是在你构建 AI 系统时,却并不理解它们实际工作原理时会发生的事。

大多数人学 AI 工程学的方式是反的。

安装一个库。跟着教程走。调用一个 API。让某个东西跑起来。感觉有进展了。

然后某个东西以毫无道理的方式出问题了。

他们随机改一些数字,直到问题消失。

那不是工程学。那只是带着键盘的希望。

以下是解决这个问题的 6 个概念。

一句话概括一切

每个 AI 系统,无论多复杂,都只是:

Rahul - inline image

记忆 (RAG) + 思考 (LLM + Token) + 行动 (Agents) + 衡量 (Evals)

……通过 上下文工程 (Context Engineering) 组装起来。

整个领域就是这么回事。

下面所有内容,都是为了让每个部分实际意味着什么更清晰。

1. Token 与上下文窗口

Rahul - inline image

LLM 不读取单词。它们读取称为 token 的块。

"engineering" → 1 个 token

"unbelievable" → 2 个 token 空格和标点也算在内。

每个模型都有一个上下文窗口——它能同时容纳的 token 数量的硬性限制。

→ Claude:200,000 个 token

→ GPT-5:400,000 个 token

把它想象成会议室里的白板。

模型只处理当前白板上的内容。

当白板满了,旧的笔记就被擦掉以腾出空间。

模型并没有失去思考能力。

它失去了对早期信息的访问。

为什么这会搞垮生产系统:

→ Token 要花钱——每次 API 调用都按输入和输出 token 收费

→ 长长的聊天记录会很快填满窗口

→ 当上下文满了,早期的指令会被悄悄丢弃

→ 什么内容进入上下文是一个工程决策,而不是默认行为

证明这一点的失败案例:

一个团队构建了一个客户支持 Agent,每次请求都带上完整的 12 个月聊天记录作为上下文。

在 5 次交互的测试中表现得非常好。

但在生产中,经过 50 次交互后,Agent 开始忽略自己的系统提示。

指令还在那里。

但它们被埋在了 80,000 个 token 的对话历史之下。

模型实际上已经不再关注它们了。

解决方法不是换一个更好的模型。

而是总结较早的历史记录,让窗口保持聚焦。

令人不安的真相:

大多数“提示词工程失败”实际上都是 token 和上下文窗口的失败,只是伪装成了别的问题。

工程师责怪提示词,而真正的问题是关键指令位于 500 行上下文中的第三行,而模型已经不再对它加权了。

2. 嵌入与向量搜索

Rahul - inline image

嵌入将含义转化为数字,这样“相似”就可以通过数学计算出来。

它们解决的问题:

你有 50,000 份文档。用户问了一个问题。你需要其中最相关的 3 份——但不需要每次都读遍所有 50,000 份。

关键词搜索在这里会失败。

如果文档里写的是“automobile”,而用户问的是“cars”,关键词搜索会漏掉。

不是答案不存在。而是词语不匹配。

嵌入用不同的方式解决了这个问题。

嵌入模型将文本转换为一个向量——一个在数学空间中代表含义的数字列表。

语义相似的文本 → 数值相似的向量。

“car”和“automobile” → 距离很近

“car”和“photosynthesis” → 距离很远

向量搜索实际如何工作:

  1. 每份文档被转换为一个向量并存储
  2. 用户的问题也被转换为一个向量
  3. 系统找到离问题向量最近的存储向量
  4. 那些就是最相关的文档

这不是近似的魔法。这是几何学。

相似性是一个真正的数学属性,是可以计算的。

这在生产中的体现:

→ 任何文档系统中的语义搜索

→ 查找相似的产品、文章、用户档案

→ RAG(下一概念)中的检索步骤

→ AI Agent 中的记忆

3. RAG(检索增强生成)

Rahul - inline image

与其在数据上训练模型,不如在查询时检索相关数据,并将其作为上下文提供给模型。

RAG 解决的问题:

LLM 知道很多。但不知道你的数据。

你公司的内部文档。你的产品数据库。你的客户支持历史。

这些都不在训练集中。

有两种选择:在数据上训练模型(昂贵、缓慢、瞬间过时),或者在模型需要时恰好提供你的数据。

RAG 就是第二种选择,系统性地实现。

三步流程:

→ 检索:

问题变成向量 → 向量数据库找到最相似的存储文档 → 检索到前 3-5 个片段

→ 增强:

检索到的文档被添加到模型的上下文中 → 提示词变成“使用这个上下文,回答这个问题”

→ 生成:

模型基于你的实际数据给出答案——而不是凭空捏造

RAG 在哪里失效:

→ 检索差 = 答案差。模型只能处理它收到的内容

→ 分块不当导致答案与上下文分离

→ 如果检索不到有用的内容,模型仍然可能产生幻觉

一个真实的 RAG 失败案例:

一个团队为一本 500 页的技术手册构建了一个内部知识助手。

在演示中完美运行。但在生产中,答案含糊不清,有时甚至错误。

问题:分块大小。

他们按原始字符数将手册分成 1,000 个 token 的块。

表格在中间被拆分。分步说明在中间步骤被拆分。

检索找到了正确的大致区域——但错过了实际答案。

将分块大小减半并添加重叠,一夜之间解决了 80% 的问题。

一个尖锐的观点:

当检索效果很差时,RAG 被高估了。

LLM 无法修复糟糕的检索。它只能围绕它产生幻觉。

如果你看到错误的答案,别再调整你的提示词了。

开始衡量你的检索精度。

答案就在那里。

4. Agent 循环

Rahul - inline image

Agent 通过重复地选择动作、执行它、观察结果,并决定下一步做什么——直到任务完成——来工作。

普通的 LLM 调用是无状态的。你问,它回答,结束。

Agent 是有状态的。它行动、观察、决定、重复。

用通俗的话来说的循环:

  1. 接收一个目标
  2. 决定下一步动作
  3. 执行它——搜索、写代码、读取文件
  4. 观察结果
  5. 基于学到的东西决定下一步动作
  6. 重复直到目标完成
  7. 返回最终答案

工具是 Agent 力量的来源。

没有工具,LLM 只能回应文本。

有了工具,它可以搜索网络、读取文件、写代码、调用 API、触发你定义的任何动作。

新手总是搞错的三件事:

→ 没有停止条件的 Agent 会永远运行下去。你必须定义何时停止——步骤限制、时间限制或目标条件

→ 更多工具 ≠ 更好性能。太多的工具会让模型在决定使用哪个时感到困惑

→ 工具错误需要显式处理。静默失败会让 Agent 自信地产生垃圾输出

那 $200 的隔夜失败,详细来说:

Agent 没有最大步骤计数。它的目标:研究一个主题并生成摘要。

它的一个网络搜索工具返回了空结果。

Agent 不知道如何停止。

它不断搜索、重试、生成中间摘要——每一个又触发了一次搜索。

六小时后:847 次 LLM 调用。消耗 210 万 token。一个看起来连贯但完全循环的摘要。一张 $200 的账单。

修复方法是三行代码:一个最大步骤计数器、一个处理空结果的显式处理器、一个在置信度低时的升级路径。

同样的 Agent 现在平均在 12 次调用内完成。

你需要听到的观点:

大多数 Agent 失败不是因为模型差——而是因为工程师把循环当作自我管理的。

它不是。

护栏、停止条件、错误处理器——从一开始就构建好,而不是在第一次事故后才添加。

5. 评估 (Evals)

Rahul - inline image

评估是你如何知道你的 AI 系统是否实际有效——以及一个改动是让它变好了还是变坏了。

这是大多数教程跳过的概念,因为它不够光鲜。

但它也是区分构建演示的工程师和构建生产系统的工程师的分水岭。

没有评估的问题:

你改了你的提示词。更新了你的检索逻辑。切换到了更新的模型。

它变好了吗?

你不知道。你可以手动检查几个例子——但那是一种感觉,而不是证据。

评估实际是什么样的:

→ 一个黄金数据集:25-50 个真实输入,带有已知的正确输出,覆盖主要用例加上 5 个已知的棘手边界情况

→ 尽可能使用二进制指标:

— RAG 系统是否检索到了正确的文档?是/否

— Agent 是否没有错误地完成?是/否

— 回复是否包含了所需信息?是/否

→ 随时间追踪的聚合分数:

— 检索准确率:89% → 做了改动 → 84%。回归被发现。

— 任务完成率:76% → 新 Agent 版本 → 81%。改进得到确认。

评估周期:

部署 → 用评估衡量 → 发现失败 → 将失败加入黄金数据集 → 修复 → 再次运行评估 → 比较分数 → 只有数字改善时才发布

实话实说:

“有用度:3.7/5” 告诉你的信息毫无可操作性。

“正确检索到文档的比例:84%” 精确地告诉了你问题在哪里以及修复改进了多少。

一个没有评估的 AI 系统不是一个产品。

它是一个你无法自信地改动的演示。

6. 上下文工程

Rahul - inline image

这是一门学科,决定究竟什么信息进入模型的上下文窗口、如何结构化、以及什么被排除在外。

这里有一个让人不舒服的观点:

上下文工程比提示词工程更重要。

在精心策划的上下文中,一个平庸的提示词,每次都能击败一个埋藏在噪音中的绝妙提示词——每一次。

大多数团队将 80% 的优化精力花在提示词上,而几乎不花在上下文上。

结果反映了这一点。

天真的方法会失败:

包括一切。所有历史。所有检索到的文档。每一个工具描述。系统提示。用户消息。全部。

这种失败有一个一致的原因:模型对什么最重要感到困惑。

有一个被记录在案的现象叫“迷失在中间”——深埋在长上下文中的信息不太可能被使用。

上下文工程实际涉及什么:

→ 选择:这个特定决策需要哪些文档、事实或历史?

→ 压缩:对话中较早的部分能否被总结以节省 token?

→ 排序:关键的指令应放在开头和结尾——而不是中间

→ 修剪:什么可以被移除而不影响输出质量?

→ 结构:标题、分隔符、标记的部分会影响模型可靠地使用信息的方式

一个实际例子:

一个 Agent 已经运行了 45 分钟。它累积了 80,000 个 token 的对话历史。它的窗口是 128,000。

你不想丢失最初的目标和约束,即使历史填充了窗口。

上下文工程:压缩较早的工具输出,总结较早的推理,在对话过程中保持任务定义的突出地位。

提示词工程是写出好的指令。

上下文工程是构建一个让这些指令真正被遵循的环境。

这 6 个概念如何形成一个系统

Rahul - inline image

记忆 → RAG + 嵌入 (系统知道什么)

思考 → LLM + Token + 上下文窗口 (系统如何利用所知进行推理)

行动 → Agent 循环 + 工具 (系统能在世界中做什么)

衡量 → 评估 (你如何知道它在正常工作)

黏合剂 → 上下文工程 (决定上述所有部分之间流动什么)

一个简单的聊天机器人只有思考。

一个客户支持 Agent 是记忆 + 思考 + 行动。

一个可靠的生产系统会加入衡量。

复杂性在于这些部分连接得有多好。

任意单个请求的流程:

用户问题

→ 上下文工程决定包含什么

→ 嵌入检索相关的记忆 (RAG)

→ Token 决定多少信息能放进窗口

→ LLM 对组装好的上下文进行推理

→ Agent 循环决定是否需要更多信息

→ 评估衡量输出是否实际正确

从哪里开始

你不需要一下子掌握所有六个。

→ 从 token 和上下文窗口开始——它们影响你构建的一切 → 当需要语义搜索或记忆时,加入嵌入

→ 当需要将模型基于你自己的数据时,学习 RAG

→ 当需要自动化时,学习 Agent 循环

→ 在将任何东西部署到生产之前,加入评估

→ 当其他一切变得直观时,应用上下文工程

这个顺序不是随意的。

每个概念让下一个概念变得可学。

最后的真心话

大多数在生产中与 AI 苦苦挣扎的团队,并不是因为用错了模型或用错了库。

他们挣扎是因为跳过了这六个概念中的某一个。

Agent 永远循环,因为没有考虑停止条件。

RAG 答案错误,因为没有衡量检索。

提示词在长期会话中失效,因为没有人理解上下文窗口是如何填满的。

这些不是复杂的问题。

它们是基本问题,只是用技术词汇包装了起来。

工具每六个月变一次。

这六个概念是工具的工作原理。

学会这些概念,你就再也不会被新工具搞糊涂了。

更重要的是——你再也不会花 $200 看着一个 Agent 整夜循环,却不知道哪里出了问题。

如果这篇文章有用:

→ 转发,分享给你认识的每一位 AI 工程师

→ 关注 @sairahul1 获取更多这样的系统解析

→ 收藏它——下次生产环境出问题时你会回来参考的

我写关于 AI、产品构建以及在你睡觉时依然运转的系统的文章。

一键保存

使用 YouMind AI 深度阅读爆款文章

保存原文、追问细节、总结观点,并在一个 AI 工作空间里把爆款文章沉淀成可复用笔记。

了解 YouMind
写给创作者

把你的 Markdown 变成干净的 𝕏 文章

图片上传、表格、代码块,往 𝕏 上手动重排太痛苦。YouMind 把整篇 Markdown 一键转成干净、可直接发布的 𝕏 文章草稿。

试试 Markdown 转 𝕏

更多可拆解样本

近期爆款文章

探索更多爆款文章