这道题问的是[[RAG]]在实际落地中到底能挖多深、又卡在哪里,我觉得本质是在考你对系统取舍的判断力。RAG不是银弹,它的核心价值在于让模型能动态接入外部知识,不用重新训练就能更新信息,同时每句话都能溯源到原文,这对合规审计类场景特别关键。成本上也很友好,相比全量微调,RAG的边际成本低得多,适合那些频繁变动的业务知识。
但局限也很明显。首个大问题是检索质量不够稳,语义匹配不等于真的相关,比如搜「苹果」可能召回水果和手机混在一起,Top-K里关键信息反而漏了。接着说上下文碎片化,长文档一[[切块]]逻辑就断了,技术文档里前后依赖的条款很容易被割裂。再补充推理能力弱,多跳推理、数值比较这些,RAG天生不擅长。
所以优化方向其实很明确。先说检索层,我倾向用[[Hybrid Search]],把向量检索的语义能力和[[BM25]]的关键词精准度结合起来,再加一层[[重排]],用[[Cross-Encoder]]精排,而不是只靠余弦相似度粗排。这样专业术语和同义词的匹配能好很多。查询层也很重要,做查询改写,把复杂问题拆成子查询,比如「去年Q3和Q4的营收对比」拆成两个独立查询再聚合。生成层可以做上下文压缩,用一个小模型先提取关键句,减少噪声。
这里有个坑:很多团队一上来就堆技术,但忽略了一个前提,数据质量。如果文档本身就有矛盾或者格式混乱,检索质量根本救不回来。所以上线前我一定会花时间做数据清洗和标注,不然检索框架再强也是白搭。
另外,RAG不是孤立的。高频稳定的知识适合用[[SFT]]内化到模型参数里,而动态海量的知识才外挂成RAG。真正落地常常是RAG加微调一起上。比如外卖场景,菜品知识更新快用RAG,但下单对话策略这类高频稳定的逻辑就用微调固化。复杂售后链路再交给[[Agent]]来调度。
说到Agent,我觉得下一步有意思的方向是把RAG当成Agent的一个工具,让模型自己决定什么时候去查、查什么、怎么综合多个来源。这样能突破RAG当前多跳推理和跨文档归纳的瓶颈。
所以整体上,我更倾向把RAG看作一个系统工程,从数据清洗到检索到生成再到反馈闭环,每个环节都要有兜底机制。比如检索置信度低于阈值时,主动澄清或者转人工,而不是硬生成一个可能错误的结果。这才是工程上靠谱的做法。