万字长文的叹息:搭建一个生产级RAG系统,80%的工作量都在AI之外

Page content

万字长文的叹息:搭建一个生产级RAG系统,80%的工作量都在AI之外 by 老码小张

 

如果你点开这篇文章,大概率你已经被RAG(检索增强生成)这个词轰炸了很久。它听起来就像是AI领域的“圣杯”:把公司所有的文档、PDF、聊天记录往里一扔,然后一个无所不知的AI就能像人类专家一样对答如流。

我见过太多项目的启动会,每个人眼里都闪烁着这种“魔法即将发生”的光芒。PPT里的演示总是那么丝滑,demo看起来天衣无缝。但当我们这些一线工程师卷起袖子,真正开始把这个“魔法”搬进现实世界时,才发现一个残酷的真相:

大家都在谈论的AI,也就是那个能说会道的语言模型,可能只占了整个项目工作量的20%。而剩下那80%看不见的、没人提的、吃力不讨好的工作,才是决定这个系统最终是“神器”还是“智障”的关键。

AI是那个舞台上光鲜亮丽的魔术师,但成功的秘密全在你看不到的后台——那些机关、道具、灯光,还有那个满头大汗拉着绳子的工作人员。今天,我们就来聊聊后台发生的事。

第一重幻觉:把AI当成一只什么都能叼回来的金毛犬

RAG的第一步,检索(Retrieval),听起来很简单嘛,不就是“搜索”吗?我们天真地以为,AI就像一只聪明的金毛犬,你跟它说“去把关于第三季度财务风险的报告叼回来”,它就能精准地从几万份文件里找到那几页。

现实呢?你面对的根本不是一个整洁的草坪,而是一个垃圾填埋场。

你扔给系统的,是销售写的、格式乱七八糟的Word文档;是财务出的、嵌套了无数合并单元格的Excel表;是研发扫描的、字迹都快模糊掉的PDF;还有从钉钉和飞书里导出的、夹杂着大量表情包和“哈哈哈”的聊天记录。

你以为的“检索”,是AI去理解语义。而实际工作的第一步,是“数据清洗和预处理”。这活儿有AI的影子吗?没有。全是脏活累活,是数据工程师对着屏幕骂街的日常。

我们团队曾经接手一个项目,客户给了我们一堆PDF格式的研究报告。我们想当然地用现成的工具一切,扔进向量数据库。结果你猜怎么着?AI回答问题时,经常把图表的标题和正文的结尾拼在一起,胡说八道。

为什么?因为那个简单的切割工具,它不懂什么叫“图表”,什么叫“脚注”,什么叫“跨页的句子”。它只会粗暴地按照字数或者标点符号,把一份精心编排的文档,切成一地鸡毛。这些碎片,在语义上已经残缺不全了。

我们花了整整三周时间,写了专门的脚本,用规则、甚至动用图像识别技术,去解析这些PDF的结构。我们要告诉系统:“嘿,这是一个表格,把它整个儿提出来,别拆散了!”“这几行是一个段落,虽然跨页了,但它们是一家人!”“这张图下面的小字是图注,它们俩得锁死!”

这才是RAG的基石:知识的原子化。 你必须用近乎“手工”的方式,把非结构化的信息,处理成一个个逻辑完整、上下文清晰的“知识晶体”。这个过程,枯燥、繁琐,充满了对各种奇葩格式的妥协和适配,但它占据了项目前期的大部分时间。

你给AI一堆砖头瓦砾,它就算再聪明,也只能给你盖个茅草屋。你得先亲手把这些瓦砾烧制成一块块规整的砖,它才能帮你建起高楼大厦。而烧砖这个活儿,才是80%工作的开始。

第二道高墙:AI并不“理解”,它只是个语言模式的缝合怪

好了,假设我们历经千辛万苦,把知识都处理成了漂亮的“知识晶体”。现在可以让AI上场了吧?

这里就是第二个,也是更深层的迷思:我们总以为AI在“理解”这些知识,然后用自己的话“总结”出来。

老实说,至少在目前,它更像一个技艺高超的“语言模式缝合怪”。

当用户提问后,检索系统(我们刚刚烧砖的成果)会找出最相关的几块“知识晶in体”递给AI。AI的工作,本质上是把这几块晶体里的句子,用一种极其流畅、通顺、看起来非常有逻辑的方式,重新排列组合,再输出给你。

它并不真的“知道”这些知识的对错。如果你的知识库里有一条是“地球是方的”,另一条是“地球有七大洲”,当用户问“地球是什么样的?” AI很可能会面不改色地回答你:“地球是方的,并且有七大洲。”

它的自信,是它最危险的地方。

这就引出了一个核心问题:检索的质量,直接决定了生成(Generation)的上限。 检索系统递给AI的是垃圾,AI就会用这些垃圾,为你烹饪出一道看起来色香味俱全的“黑暗料理”。

所以,我们那80%的工作,很大一部分要投入到如何优化“检索”这个环节。我们不再天真地只依赖向量搜索,而是开始做“混合检索”——既有基于语义相似度的向量搜索,又有传统的、基于关键词的精确搜索。有时候,对于一些结构化的数据,我们甚至要让AI自己先学会写SQL去数据库里查!

整个系统,开始变得像一个复杂的交响乐团。有时候需要小提琴(向量搜索)来一段华彩,有时候需要大鼓(关键词搜索)来个重音。而我们工程师,就是那个指挥,要制定无数条规则,告诉系统在什么情况下该用哪种乐器。

这背后,是对业务逻辑的深刻理解。这已经远远超出了AI技术的范畴,进入了信息科学和系统工程的领域。


冰山之下:那个看不见的评估、迭代与成本控制系统

一个RAG系统上线了,就结束了吗?不,那只是万里长征走完了第一步。真正的噩梦,或者说,真正体现专业性的地方,才刚刚开始。

1. 评估的“玄学” 客户问我,你这个系统的准确率有多少?我心里一万头羊驼奔腾而过。我怎么回答?95%?这个数字毫无意义。

一个能背出公司章程的AI,但在回答“我今年的年假还剩几天?”这种个性化问题时出错,那它在员工眼里就是个废物。

所以,我们又要投入大量精力,去构建一个复杂的评估体系。我们得定义几百上千个“黄金测试集”,覆盖各种刁钻的问题。我们还得有人工去标注答案,去判断AI的回答是“完全正确”、“部分正确但有遗漏”,还是“一本正经地胡说八道”。这个过程,又是巨大的人力投入。

2. 迭代的无底洞 用户在使用中,会点“赞”或“踩”。你以为这是个简单的UI功能?不,这是整个系统能够进化的“粮食”。

每一个“踩”,都是一个宝贵的信号。它告诉你,要么是你的知识库有疏漏,要么是你的检索出了问题,要么是AI的生成逻辑有毛病。我们要建立一套机制,把这些负反馈收集起来,分析,然后去修复我们的“砖”,调整我们的“乐团指挥策略”。

这个反馈-分析-优化的循环,才是RAG系统能从“智障”慢慢成长为“专家”的唯一路径。它不是一蹴而就的,而是持续不断的、需要大量人力介入的“喂养”过程。

3. 成本的“滴血” 最后,我们来谈谈钱。每次调用大模型API,那可都是真金白银。一个看似简单的问答,背后可能经过了多次检索、多次与大模型交互。如果系统设计不当,用户量一上来,那个账单会让你怀疑人生。

所以,我们80%的工作里,还有一项重要任务,就是当一个“吝啬鬼”。我们要设计缓存机制,把常见问题存起来。我们要创建更小的、更专业的本地模型,去处理一些简单任务,避免动不动就去调用昂贵的GPT-4。我们要像抠门的程序员优化代码性能一样,去优化每一次Token的消耗。

这哪里是AI问题?这分明就是最最传统的系统架构、性能优化和成本控制问题。

结语:我们到底在建造什么?

聊到这,可能有点劝退。但我想说,这才是真正激动人心的地方。

搭建一个生产级的RAG系统,根本不是一个单纯的“AI应用”。我们其实是在为一家企业,构建一个全新的“信息操作系统”。

数据清洗和预处理,是在做这个系统的“文件系统”和“数据总线”。 检索模块的设计,是在定义这个系统的“索引”和“搜索引擎”。 AI大模型,只是这个操作系统上一个华丽的“自然语言UI界面”。 而评估和迭代体系,是这个操作系统的“自我修复和更新”机制。

当我们把视角从“实现一个AI功能”拔高到“构建一个信息系统”时,你就会明白,为什么那80%的工作都在AI之外。因为AI只是这个宏大系统里,最后那个负责与人交互的“表达者”。而系统的健壮性、可靠性和智慧程度,完全取决于那些看不见的、AI之外的基础设施。

所以,下次当有人跟你大谈特谈AI Agent和RAG将如何颠覆一切时,你可以微笑着点点头,然后问他:“那么,你们的‘砖’是怎么烧的?”


 


原文链接