瑾浩

文章

RAG已死

瑾浩2024-08-09· 约 7 分钟
独立页面

在AI应用开发领域,时常会遇到一种困境:一个在演示中表现出色的原型,在迈向生产环境的过程中会暴露出一系列难以预测和修复的问题。工程师投入大量精力进行“调优”,但整个过程往往缺乏系统性的指导,更像是一种经验性的试错。

最近,Chroma创始人Jeff Huber在一期播客中的分享,为我一直以来的困惑提供了一个清晰且具有启发性的思辨框架。

它不提供捷径,而是回归到更基本、更核心的工程原则。以下是我梳理出的6个观察,希望能为同样在探索中的你带来一些参考。


1. 核心挑战:跨越从Demo到“生产级可靠”的鸿沟

一个普遍的现象是,用现有框架构建一个RAG Demo非常迅速。但这种初期的便捷,往往掩盖了通往 “生产级可靠系统”(Production Reliable System) 的复杂性。

从demo到生产的巨大鸿沟

_RAG系统工程化鸿沟示意图_

Jeff Huber认为,我们当前许多看似是“调参”的工作,其本质是在弥补这道鸿沟。之所以感觉像“炼金术”,根源在于我们缺少一套可度量的、系统化的工程方法论。当系统表现不符合预期时,我们无法对问题进行归因和定位,只能依赖经验进行调整。

> 摸鱼观察: 这并非AI领域的特有问题,而是任何新技术从诞生走向成熟的必经之路。软件工程的发展史,很大程度上就是用工程的确定性去约束和管理创新的不确定性。承认这道鸿沟的存在,并主动寻求工程化的解决方案,是走向成熟的第一步。


2. “上下文腐烂”揭示了模型认知能力的边界条件

业界对“长上下文窗口”的追求,源于一种直观的假设:输入的信息越多,模型的能力就越强。

然而,“上下文腐烂”(Context Rot) 这一概念,揭示了模型认知能力与其输入信息量之间,存在一种微妙的非线性关系。当信息输入超过某个阈值后,模型的关键能力——如精确遵循指令和进行复杂推理——可能会被过量、低信噪比的信息所稀释,出现性能衰减。

目前流行的“大海捞针”测试,主要验证了模型的“信息召回(Recall)”能力,但一个可靠的应用,更依赖于模型在适量、精确上下文中的“推理与执行(Reasoning & Execution)”能力。

> 摸鱼观察: 这促使我们从“信息量的堆砌”转向“信息质量的管理”。评估一个模型,或许不应只看其上下文窗口的上限,更要关注其在不同上下文长度下的性能稳定性。对于应用开发者而言,我们的任务不是测试模型的极限,而是在其性能的“甜点区”内进行高效的工作。

[配图建议]

创意: 一个精密仪器的仪表盘。

左侧图: 输入信号(Input Context)适中,仪表盘上代表“推理能力”和“指令遵循度”的核心指针稳定地指向绿色最优区域。

右侧图: 输入信号过载,指针开始剧烈摆动,并指向黄色警告区和红色失效区。

风格: 写实、精密的科技仪表盘。


3. 开发者的角色,正从“模型使用者”演进为“认知系统设计师”

Jeff Huber提出的“上下文工程”(Context Engineering),不仅是一个新术语,更暗示了开发者角色的转变。

其“内外双循环”的框架,实际上是在为AI系统设计一套“认知新陈代谢”的机制:

  • 内循环: 关注单次交互中的信息流转与处理,是系统的“实时响应层”。
  • 外循环: 关注系统的长期演进与自我优化,是系统的“策略迭代层”。

> 摸鱼观察: 在这个框架下,开发者的重心不再是如何写出更巧妙的提示(Prompt),或是如何集成某个模型API。我们的核心工作,是设计和构建一个能让模型持续、稳定、高效工作的外部系统环境。我们正从单纯的“模型使用者”,转变为一个更综合的“认知系统设计师”。

[配图建议]

创意: 达芬奇《维特鲁威人》的极简线条改编版。

中心不再是人体,而是一个代表“AI Core”的几何核心。

外围的方和圆,被代表“内循环”和“外循环”的、严谨的系统架构图所取代。

风格: 现代、极简主义的设计图纸感。


4. 现代AI检索是一种架构模式,而非单一工具的选择

关于检索,我们的讨论常陷入“哪个向量数据库更好”或“哪种算法更优”的工具层面。

一个更具深度的视角,是将其理解为一种“信息筛选漏斗”(The Retrieval Funnel)的架构模式。这个模式的核心,是通过分层设计,在系统的成本、延迟和质量三者间取得平衡。

  • 宽召回层(Recall): 使用成本较低的计算(如向量、关键词混合搜索),保证候选集的全面性。
  • 精排序层(Precision): 使用成本较高的计算(如LLM Reranker),提升最终上下文的准确性。
  • 再处理层(Synthesis): 对信息进行最终的提炼与整合,保证其可用性。

> 摸鱼观察: 这种分层漏斗的架构思想,在现代软件工程中随处可见(例如,多级缓存、CDN网络)。将其应用于AI检索,意味着我们开始将这个模块作为系统的一个有机组成部分进行设计,而不仅仅是一个外部依赖。LLM本身,也正从一个“终点”的角色,下沉为这个架构中一个可被调度的“计算组件”。

[配图建议]

创意: 一个由三层透明玻璃构成的极简漏斗。

第一层: 大量无序的数据点进入,标签是“Recall Layer”。

第二层: 数据点变得稀疏而有序,标签是“Precision Layer”。

第三层: 最终只有少数几个高度精炼的数据点滴下,标签是“Synthesis Layer”。

风格: 干净、透明的玻璃质感,有数据流动的动态感。


5. “黄金数据集”是引入“经验主义”工程方法论的基石

工程学科区别于手工艺的核心,在于其依赖可度量的、经验性的改进。在AI应用中,我们常常缺少这样一个客观的“度量衡”。

“黄金数据集”(Golden Dataset)正是这个度量衡的载体。它的价值不在于大小,而在于它为团队提供了一个稳定的客观基准,用以锚定对“好”的主观判断。

有了这个基准:

  • 任何对系统的改动,其效果都可以被量化评估,从而使迭代有章可循。
  • 生成式基准测试(Generative Benchmarking)等方法的出现,也使得从零开始构建这个基准的难度大大降低。

> 摸鱼观察: 这本质上是在AI开发中引入“测试驱动开发”(TDD)和“经验主义过程控制”(Empirical Process Control)的思想。它要求我们从对算法的盲目信仰,回归到对可观测、可度量结果的尊重。这是让AI开发回归工程本质的关键一步。

[配图建议]

创意: 一把精确的校准卡尺。

卡尺的一端是“主观的用户期望”,另一端是“客观的系统表现”。

卡尺的刻度,是由一个个“(Query, Context)”数据对组成的“黄金数据集”。

风格: 写实、精密的工业设计风格。


6. “记忆”是“解耦架构”下,对“状态管理”的一种高级抽象

我们都希望AI拥有“记忆”,但“记忆”本身是一个模糊的拟人化概念。从系统设计的角度看,Jeff Huber提供了一个更锐利的解释。

他提出了一个值得思考的架构假说:我们可能正在构建一个“宏观解耦的Transformer”系统。

  • 外部编码器(Embedding Models) 负责信息压缩。
  • 外部解码器(LLMs) 负责推理生成。
  • 上下文工程系统(如Chroma)则在中间扮演了“状态管理器”(State Manager) 的角色。

所谓的“记忆”,正是对这个中间层所管理的、可持久化、可检索的“状态”的一种高级抽象。它将一个模糊的AI概念,映射到了一个经典的、我们所熟知的工程问题上:状态管理。

> 摸鱼观察: 这个视角极具启发性。它将我们的任务,从“如何为AI实现记忆”,重新定义为 “如何为解耦的AI架构设计一个高性能、可扩展的状态管理层” 。这不仅让问题变得更清晰,也为我们借鉴数十年来在数据库和分布式系统领域积累的经验,打开了大门。

[配图建议]

创意: 一个极其简化的系统架构图,类似电路板。

三个核心模块:“Encoder”、“Decoder”和“State Manager”。

“State Manager”模块位于中央,通过清晰定义的数据总线(Data Bus)与另外两个模块连接。

整个图被一个更大的虚线框包围,标注为“Decoupled Cognitive Architecture”。

风格: 现代电子工程蓝图风格。

新文章

相关文章

留言