37次失败后,他们终于跑通了真正能落地的RAG技术栈

AI PM 编辑部 · 2025年06月03日 · 1 阅读 · AI/人工智能

正在加载视频...

视频章节

这是一次来自一线AI工程师的真实复盘:经历37次失败后,Jonathan Fernandes 总结出一套可在生产环境稳定运行的RAG技术栈。文章不仅讲清楚每一层该怎么选,更重要的是解释了为什么很多RAG项目会悄无声息地失败。

37次失败后,他们终于跑通了真正能落地的RAG技术栈

这是一次来自一线AI工程师的真实复盘:经历37次失败后,Jonathan Fernandes 总结出一套可在生产环境稳定运行的RAG技术栈。文章不仅讲清楚每一层该怎么选,更重要的是解释了为什么很多RAG项目会悄无声息地失败。

为什么90%的RAG方案死在“看起来能跑”

如果你最近一年接触过检索增强生成(RAG),很可能会有一种错觉:用 LlamaIndex 或 LangChain,接上向量数据库,再连个大模型,几行代码就能搞定。但 Jonathan Fernandes 一开场就打破了这种幻觉。他直言,这套“看起来能跑”的方案,正是他失败最多的地方。

Jonathan 不是教程博主背景,而是一名长期帮助企业交付生产级生成式 AI 的独立 AI 工程师。他在视频里说得很直接:“This is the RAG stack we landed on after 37 fails。”这 37 次失败,几乎都发生在真实业务场景中——答案不稳定、召回不准、效果无法评估,或者一上线就失控。

他给RAG下了一个非常务实的定位:RAG不是一个模型问题,而是一整套系统工程。它至少包含编排层(orchestration)、Embedding 模型、向量数据库、大语言模型、监控与评估。任何一层选错,整体ROI都会崩塌。

也正因为如此,他给自己的目标定得很“工程化”:“my objective is for this to be the most ROI RAG guide per minute on the internet。”不是炫技,而是帮你少踩坑。

从37次失败中拆解RAG的每一层组件

Jonathan 复盘失败时,用的是一种非常清晰的拆解方式:按 RAG 技术栈的组件来总结教训,而不是按工具流行度。他把系统分为两种状态:原型阶段(prototyping)和生产阶段(production),并明确表示两者不该用同一套思路。

在原型阶段,他几乎固定选择 Google Colab 作为实验环境,核心目的是“快”。在编排层(Orchestration)上,他会使用 LlamaIndex 或 LangGraph,这两者都能用极少代码快速搭出一个可运行的 RAG。

但到了向量数据库这一层,他的态度就明显谨慎起来。他提到,很多失败都源于向量库在规模化后表现不稳定。最终他选择了 Qdrant,并给出理由:它在扩展性和性能上的表现非常稳健,适合真实业务数据不断增长的场景。

至于大语言模型,他反而选择了“保守路线”。在生产中,他更偏好闭源模型,只因为一个原因:API 使用简单、行为更可控。这并不是价值判断,而是工程权衡。

一个“天真RAG”示例,如何一步步被打磨成可用系统

为了让观众真正理解问题出在哪,Jonathan 在视频中现场演示了一个“naive RAG solution”。数据只有一个知识库,问题也很简单,比如“Where can I get help in London?”。

用 LlamaIndex 几行代码跑起来之后,系统确实返回了答案,但 Jonathan 的评价毫不留情:“the first response using a naive solution is not very satisfactory。”问题不在能不能答,而在答得不对重点、信息松散,几乎不可用。

接下来,他开始逐层替换组件。第一步是 Embedding 模型,他换成了 BAAI 的 BGE-small 模型,用于提升语义检索质量。结果有所改善,但仍然“不够好”。

真正的转折点出现在第二步:引入 cross-encoder 作为 reranker(重排序器)。相比 bi-encoder 只做向量相似度计算,cross-encoder 会对“问题-文档”对进行更精细的相关性判断。加上这一层之后,他明确表示:“we get the best response so far。”这是整个演示中,第一次出现让他满意的结果。

RAG真正的分水岭:监控、追踪与评估

在很多教程里,RAG的终点是“回答看起来不错”。但 Jonathan 认为,这恰恰是失败的开始。他反复强调:如果你无法监控和追踪系统行为,你根本不知道它什么时候开始变差。

视频后半段,他专门提到监控(monitoring)和追踪(tracing)在生产环境中的重要性。不是为了画漂亮的仪表盘,而是为了定位问题到底出在检索、重排,还是生成。

最后一块,也是很多人完全忽略的,是评估(evaluation)。Jonathan 使用的是 RAGAS 框架,用来系统性评估 RAG 的效果,而不是凭感觉判断“好像还行”。他强调,没有评估,就没有优化,更谈不上规模化。

在总结自己的生产环境结果时,他没有给出夸张的承诺,只是说:“These are my lessons from the RAG stack we landed on after 37 fails。”这句话的分量,恰恰来自前面所有真实踩坑的积累。

总结

Jonathan Fernandes 的分享之所以有价值,不在于推荐了哪些工具,而在于他用37次失败证明了一件事:RAG不是拼组件,而是拼系统思维。从原型到生产,从“能跑”到“可控、可评估”,每一步都决定了最终ROI。对读者最大的启发或许是:当你的RAG效果不好时,问题很可能不在模型,而在你忽略的那一层工程细节。


关键词: 检索增强生成, RAG技术栈, 向量数据库, Embedding模型, 大语言模型

事实核查备注: Jonathan Fernandes;37 fails;RAG(Retrieval Augmented Generation);LlamaIndex;LangGraph;Google Colab;Qdrant 向量数据库;闭源大语言模型;BAAI BGE-small Embedding 模型;cross-encoder 与 bi-encoder;RAGAS 评估框架