如果知识库有 1000 万份文档,RAG 系统如何设计?
这个问题挺关键的,1000 万份文档的 RAG 系统,核心挑战是检索效率和成本控制——不是简单的"向量检索 + LLM",得有系统化的架构设计。
我之前做过一个企业知识库项目,一开始把所有文档都扔一个向量库里,结果检索慢、成本高、还经常检索不到相关内容。后来重构成分层架构,效果好很多。
第一步:数据预处理(这是基础)
1000 万份文档不能"一股脑导入",得先筛选和分层:
1. 按价值密度分层导入
- 核心数据(高频访问、高价值):最新产品文档、常用流程规范,优先导入并实时更新
- 次要数据(低频访问):历史归档文档,延迟导入或按需加载
- 无效数据(重复、过期):通过哈希去重、时间过滤直接剔除
我们当时发现,30% 的核心数据覆盖了 90% 的查询需求。所以只导入了这 30%,检索效率提升 3 倍。
2. 智能分块策略
分块质量直接决定检索效果。我们用了三种策略:
- 语义分块:按段落、章节分块,保证语义完整
- 滑动窗口:固定大小窗口 + 重叠,避免关键信息被切断
- 递归分块:先按章节分,再按段落分,支持多粒度检索
分块大小我们设的是 512 tok
