数据的“干净度”:我为什么开始重视 RAG 链路的“语义质量”

数据的干净度,这玩意儿以前就是个玄学,现在成了我吃饭的家伙。Q1末了,盘一盘,这三个月过得跟坐过山车似的,从“技能恐慌”到“GPT-4震撼”,世界确实全他妈变了,但有意思的是,我反而找回了点效率和快乐,靠的不是别的,就是极致的自律和往死里补课。

年前我还觉得自己那套爬虫+清洗+入库的流程挺牛逼,能处理千万级数据,多线程、反爬策略、脏数据清洗规则写了一堆。结果GPT-4一出来,我花一周写的清洗脚本,人家用自然语言描述一下,几秒钟就给你个八九不离十的方案,甚至还能指出我规则里的逻辑漏洞。那种感觉,不是被替代,是被降维打击了,你引以为傲的精密仪器,在人家眼里就是个算盘。恐慌是真恐慌,失眠了好几天,不是怕失业,是怕自己那套方法论彻底废了。

但恐慌没用,得动起来。我开始疯狂补课,不是泛泛地学,而是盯着一个点打穿:RAG。Retrieval-Augmented Generation,检索增强生成,这词儿现在烂大街了,但三月份那会儿,国内没几个人真能说清楚链路。我发现大家一窝蜂去搞向量数据库、搞Embedding、搞Chunk,觉得把文本切碎了扔进去就能出奇迹。扯淡。我拿自己以前的项目试,用开源的sentence-transformers做嵌入,用FAISS做检索,喂给GPT-3.5-turbo,出来的回答经常是“正确的废话”,或者干脆胡编乱造。问题出在哪?不是模型不够大,是喂给它的“食物”太脏了。

这就回到了“语义质量”。以前的数据清洗,目标是格式统一、去重、剔除乱码,是“物理干净”。但现在,对于RAG链路,光物理干净屁用没有。你的文本块(Chunk)必须在语义上是完整的、自洽的、且与查询意图高度相关的。我举个例子,你有一份产品说明书,按固定长度512个字符去切,很可能把“注意事项:本品不可与……”这句话从中间切断,前半句在一个块里,后半句在下一个块。检索时,模型只拿到了前半句“注意事项:本品不可与”,它生成的答案能靠谱吗?这就是语义割裂。

更深一层的是“噪声”和“信息密度”。很多技术文档里夹杂着大量的版本历史、修订记录、无关的示例代码,这些对于回答具体问题就是噪声。你一股脑塞进去,模型检索时就会被这些低信息密度的片段干扰,拉低整体回答质量。我开始折腾各种预处理策略:不是简单分句,而是基于标点、段落、甚至语义角色(NER识别出的实体)进行智能分块;用规则和轻量级模型先过滤掉明显无关的章节(比如“版本历史”);对核心概念段落进行摘要,生成高密度的“索引块”。这过程极其枯燥,像在垃圾堆里淘金,但每优化一步,最终问答的准确率就有肉眼可见的提升。

效率怎么回来的?因为我发现,当我把数据语义质量这条链路打通并标准化后,我反而从无尽的“调参”和“Prompt玄学”中解放出来了。以前总幻想用一个超级Prompt解决所有问题,现在明白了,垃圾进,垃圾出,大模型也救不了。我的工作重心前移了,花70%时间在数据源的遴选、清洗、分块策略和索引构建上,剩下的30%,Prompt反而可以写得简单直接。这种“确定性”带来了快乐,一种工程师对流程可控的快乐,而不是魔法师祈求神灵显灵的忐忑。

自律体现在哪?就是强迫自己不用那种“看起来很快”的暴力切分方法,为每一个新的数据源设计定制化的预处理流水线。每天雷打不动拿出两小时,读最新的论文(比如关于递归分块、句子窗口检索这些),然后在自己的沙箱环境里复现、测试、对比指标。身体是本钱,中午照样去健身房,但脑子里可能还在过刚才的召回率曲线。这个世界变得是快,但当你把最底层的、看似笨重的功夫做扎实了,反而能在浪潮里站得稳一点。至少,这三个月,我没被冲走,还摸着了一点门道。

© 版权声明
THE END
喜欢就支持一下吧
点赞39 分享