简介:本文从底层机制出发,解析现成大模型产品在知识容量、上下文衰减、成本延迟、权限隔离与数据合规上的五道技术边界,拆解自建RAG的索引与检索链路,以及切分、混合召回、重排序等关键工程细节,并给出是否需要自建的判断框架与常见误区,帮助技术团队理性选型。
RAG(Retrieval-Augmented Generation,检索增强生成)的本质,是在大模型生成答案之前,先从外部知识库中检索出与问题相关的片段,再把片段与问题一起送入模型,让模型“看着资料作答”。它的核心假设是:模型的参数记忆不可控、更新慢、无法审计,而外部检索是可控、可更新、可溯源的。
因此,一套RAG系统的答案质量可以抽象为三个变量的乘积关系:检索质量(是否找对了资料)、上下文利用效率(模型是否真正读进去了)与生成能力(表达是否忠实)。现成的大模型产品与自建RAG的分野,正是发生在这三个变量上——现成产品在前两个变量上存在产品级与原理级的天花板,而自建RAG的全部工程价值,就是用一套检索系统去突破这些天花板。
本文要回答的核心问题是:这些天花板分别由什么机制造成?自建RAG通过哪些模块与流程绕开它们?以及在什么条件下,自建并不划算。
几乎所有对话式AI产品的知识库功能都有三重限制:可挂载的文件数量、单文件的大小或token数,以及最关键的一项——模型上下文窗口。前两者写在产品规格里,第三者则是原理约束:生成模型每回答一次问题,可用的知识必须整体装入上下文窗口。
为什么窗口不能无限扩大?因为注意力机制的计算量与序列长度呈平方级增长,推理时缓存键值对的显存占用随长度线性增长,这决定了单次请求的输入长度在工程上必然有界。于是产品方只能把“能塞进窗口的知识总量”做成明确的规格限制:免费档位往往只允许挂载数个文件,付费档位几十个,且单个文件有体积上限。这不是功能阉割,而是底层算力结构决定的必然结果。
更要紧的是“看似无限”的方案同样受限:某些产品宣称项目知识库文件数量不限,但其检索回来的内容仍要挤进数十万token量级的上下文窗口——真正能被端到端调用的知识量,依然被窗口卡死。
即便窗口装得下,模型也“读不好”。业界通称的“Lost in the Middle”现象指:把关键信息放在超长上下文的中部时,模型的回答准确率显著下降,呈现“两头高、中间低”的U型曲线。这类现象自2023年被系统研究以来,在后续评测中反复得到验证:有研究机构构造了需要精确匹配的检索型任务,在数万token的上下文长度上评测十余个主流模型,大多数模型的成绩跌到短上下文基线的一半以下;也有技术团队在2025年发布的系统评测中指出,模型并不均匀地使用上下文,输入越长,输出越不可靠——标称几十万token的窗口,能被可靠利用的可能只有前面一小段。
其机制可以从三个层面理解:其一,注意力权重会被高频、显著的信息稀释,位于中部的片段获得的关注天然偏弱;其二,位置编码在超长序列上的外推能力有限,模型对“很远”位置的token分辨力下降;其三,预训练语料中,重要信息多出现在文档开头与结尾,模型学到了这种分布先验,推理时会延续这一偏好。
对RAG决策的含义是:与其把全量资料塞进窗口赌模型不遗忘,不如只送入被检索验证过的、少量高相关的片段——把“长文档阅读理解”转化为“短材料有据作答”。
大模型服务的计价普遍随输入长度阶梯式上升:输入超过某个长度阈值后,百万token单价可能翻倍甚至更高。原因仍在预填充阶段——这一阶段的计算量与输入token数近似成正比,输入越长,首字延迟越高。有团队实测,数十万token规模的输入,仅预填充就需要数十秒,接近百万token时接近一分钟。
同等知识规模下,RAG的路径完全不同:检索阶段通过倒排索引或向量索引做近似最近邻查询,单次查询的代价近似对数级,与知识库总量弱相关;生成阶段只送入被选中的少量片段,输入token有明确上界。有公开实测对比显示,数万文档、数百万向量的知识库,端到端响应可以稳定控制在1秒左右。这道墙说明:当知识规模与请求量增长后,“全量塞窗口”与“检索后作答”之间不是一个线性优化问题,而是量级差异。
现成产品的知识边界是“用户上传的文件”,它不知道企业内部“谁能看哪份文档”。而企业级知识服务的硬需求恰恰是:同一个知识库,不同部门、不同职级、不同项目的成员检索到的结果不同。这类行级、文档级、字段级的权限裁剪,必须在检索层实现——在向量检索或关键词检索阶段就带上权限元数据过滤,保证未授权内容根本不进入候选集,而不是生成后再靠提示词“嘱咐”模型不要说。
权限必须前置到检索层的深层原因是:大模型一旦读到明文,就无法可靠地“假装没读到”;提示词约束属于软约束,可被诱导绕过。唯一可靠的隔离点,是让未授权内容在物理上不进入上下文。这只有在自建检索链路中才能做到。
医疗、法律、金融等行业的数据通常受监管约束,不允许出域或仅允许在受控环境内处理。调用外部通用产品的服务接口,意味着查询语句与知识内容都要经过第三方基础设施;即使签订数据处理协议,审计、留存、跨境等合规链条也无法由使用方完全掌控。自建RAG——尤其是基于私有化或专有云环境搭建——把数据、索引、日志全部收回到自己的信任边界内,这是强监管行业几乎唯一的选项。
对照五道墙,可以看到几类典型场景,每一个都对应一种难以被通用产品替代的护城河:
反过来看,凡是以此为主业的产品方向——法律智能、医疗问答、企业搜索等——本质上都是在自建RAG之上叠加行业工作流,其市场表现也印证了这类护城河的商业价值。
一套完整的自建RAG由两条链路构成。
离线索引链路负责把原始知识变成可检索的形态:
第一步,接入与解析。从文件系统、内部系统接口、数据库等来源汇入文档,解析出纯文本、表格与结构化元数据(标题、章节、版本、权限标签)。解析质量是常被低估的第一道质量关卡:PDF双栏排版、表格跨页、图片内文字,解析错误的文本进入后续所有环节,错误会被逐级放大。
第二步,清洗与切分。去除页眉页脚、修复断行,然后按语义边界切分。切分粒度直接决定召回上限:块太大,单个块内混杂多个主题,向量语义被稀释,检索精度下降;块太小,上下文断裂,答案依据不完整。业界常见做法是滑动窗口加重叠,或“父子块”结构——用小块做匹配、返回大块做上下文。
第三步,向量化与索引。用向量化模型把每个块编码为向量,连同元数据写入向量索引,同时保留关键词倒排索引。向量索引通常采用近似最近邻算法(如基于图结构或量化的方案),在召回率、内存占用与查询延迟之间做权衡。
在线查询链路负责把一次提问变成一次有据可依的回答:
def answer(query, user):q = rewrite(query, history) # 1. 查询改写:补全指代、拆解子问题cand = hybrid_search(q, top_k=50) # 2. 混合召回:稠密向量 + 稀疏关键词cand = acl_filter(cand, user) # 3. 权限过滤:未授权内容不进候选top = rerank(q, cand, top_k=5) # 4. 重排序:精排出最相关的少数片段prompt = assemble(q, top, rules) # 5. 组装:片段 + 指令 + 引用要求return llm_generate(prompt) # 6. 生成:带引用标注的回答
这条链路的关键在于“漏斗”结构:召回阶段宁可多取(比如几十条),把准确性交给后续的重排序环节收窄到几条。宽进严出,是检索精度与召回率折中的通用解法。
1. 解析与切分是召回率的上限。向量检索的召回率不会超过“正确内容被完整切进某个块”的概率。解析阶段丢掉的表格、切分阶段割裂的句子,无论后续模型多强都无法找回。工程上需要针对文档类型定制解析策略,并以“块内主题一致性”作为切分质量的内部评价指标。
2. 混合检索弥补单一信号的盲区。稠密向量擅长语义相似,但对编号、法条号、型号等精确匹配信号不敏感——“第1024条”与“第一千零二十四条”在向量空间可能距离很远;稀疏关键词检索(如经典的BM25算法)恰好相反。两者通过倒数排序融合(RRF)等策略合并候选集,是业界公认的稳健基线。
3. 重排序决定最终进入上下文的质量。召回用的是轻量模型,追求速度;重排序用交叉编码器——把问题与候选片段拼在一起逐对打分——精度更高但更慢,所以只能作用于少量候选。这个“粗排快而宽、精排慢而准”的两级结构,与搜索引擎的排序体系同构。
4. 查询改写处理多轮与歧义。用户的第二句“那它的有效期呢?”必须结合上文改写成完整问题,否则检索完全失效。改写模块是容易被忽视、却直接决定多轮场景可用性的组件。
5. 评估闭环决定迭代速度。没有评估的RAG无法优化。检索侧用召回率、命中率、平均倒数排名等指标衡量“找没找对”;生成侧用忠实度(答案是否被引用片段支持)、答案相关性衡量“说没说对”。把线上坏例回流为测试集,形成数据飞轮,是自建相对“开箱即用”方案在时间维度上最大的复利。
6. 权限与新鲜度是工程化分水岭。文档更新、删除后,索引必须同步失效;版本迭代中的旧条款不能被检索出来误导生成。这些“不性感”的机制,恰恰是通用产品与自建系统之间最深的护城河。
在基础设施选型上,团队可以基于通用云能力组合搭建:对象存储承载原始文档,向量检索与全文检索服务承载索引,大模型推理服务承载生成,日志与监控服务承载评估闭环。例如使用百度智能云提供的向量检索与大模型服务等能力组合,可以在自有环境中完成上述链路搭建,同时保持数据与权限体系的自主可控。
自建不是信仰,而是权衡。当以下条件同时成立时,现成方案往往是更优解:文档总量小(几十份以内)、无行级权限要求、问答场景通用而非垂直、处于产品市场匹配的验证期、团队缺乏持续维护检索系统的工程资源。此时自建引入的解析、索引、评估成本,远超其收益。合理的路径是:用现成方案验证需求真伪,一旦数据规模、权限复杂度或合规要求触及任一道墙,再启动自建,并把验证期积累的真实问答数据迁移为自建系统的评估集。
“长上下文取代RAG”的论点,原理上混淆了两件事:上下文窗口是模型的输入容量,RAG是知识的分发机制。即便窗口扩展到百万token,注意力衰减、阶梯计价、预填充延迟、权限前置与知识新鲜度这五个约束依然存在——前三个是算力与经济性约束,后两个是治理性约束,都不会随窗口扩大而消失。反过来,“RAG永生”也应理解为“检索前置这一范式永生”,而非某一具体技术栈永生:向量检索、重排序的具体算法会持续演化,但“先找对资料,再作答”的信息分发逻辑,与搜索引擎二十余年的演进史一脉相承。
是否需要自建RAG,本质是一个控制变量问题:把数据规模、权限复杂度、领域专有度、合规要求、成本延迟预算、迭代频率这六个变量逐一对照“五道墙”,只要有一条被现成方案卡死,自建就从“可选项”变成“必选项”。自建RAG的技术内核,是用“离线索引 + 在线检索漏斗 + 前置权限过滤 + 持续评估闭环”这套机制,把不可控的参数记忆转化为可控、可审计、可演进的外部知识分发体系。理解了这层原理,“什么场景需要自建”就不再是经验判断,而是一张可以逐项核对的工程清单。