RAG 面试题
01. 设计 TB 级私有知识库 RAG:实时更新与百万 QPS
设计哲学与核心价值定位
这个 RAG 系统在企业 AI 生态中的生态位是私有领域的 "知识中台入口",承担着将企业积累的非结构化私有知识(如内部文档、项目经验)转化为可被大模型高效调用的结构化知识的职责,解决的第一性原理问题是「企业私有知识的高效复用与实时触达」。如果不采用这个方案,企业在使用大模型处理内部业务时,会面临三个底层瓶颈:一是 TB 级私有知识无法直接输入大模型,导致大模型缺乏业务上下文;二是实时更新的知识(如项目变更、业务规则调整)无法快速同步给大模型,输出内容滞后;三是无法支撑百万级并发的内部员工查询,系统会在峰值请求时出现服务雪崩。
中文架构可视化与全链路解析
全链路解析
- 查询路由先查本地缓存(按查询+权限+上下文构建键),命中直接返回
- 未命中再查分布式缓存,命中则回写本地并刷新 TTL,降低后续延迟
- 再未命中进入检索链路:向量库召回 → 写入多级缓存 → 构造提示词 → 大模型输出
- 缓存一 致性模块监听知识库更新,执行版本化失效与精准删除,保持结果可用
- 本地 LRU 与分布式 LFU 组合优化命中率与成本,兼顾延迟与容量
组件协同与关键实现细节
这个架构中的压舱石组件是分布式向量数据库集群的分片调度与增量编码模块。
- 分布式向量数据库采用一致性哈希分片的结构,将知识库按照领域、文档类型进行哈希分片,每个分片独立存储对应的向量数据,这种结构可以将检索请求均匀分散到不同的节点,直接提升系统的吞吐量,同时避免单节点的性能瓶颈;
- 增量编码模块采用基于事件驱动的异步编码策略,内部使用优先级状态机管理编码任务,将高优先级的实时更新文档(如业务规则变更)优先编码,低优先级的批量文档延后编码,这种设计可以保证实时更新的知识能够在 1 分钟内完成编码并写入向量数据库,降低系统的延迟;
- 全局缓存层采用多级缓存结构,本地缓存存储节点级的高频查询,分布式缓存存储全局的高频查询,同时实现缓存一致性协议,当知识库更新时,主动失效对应的缓存数据,保证缓存数据的准确性。
方案对比、工程取舍与演进趋势
| 主流方案 | 设计动机 | 适用场景 |
|---|---|---|
| 集中式向量数据库 | 降低部署复杂度 | 知识库规模小于 100GB、并发量小于 10w QPS 的场景 |
| 分布式哈希分片向量数据库 | 支撑大规模知识库与高并发 | 知识库规模大于 TB 级、并发量大于百万级 QPS 的场景 |
| 基于对象存储的向量索引 | 降低存储成本 | 冷数据占比高、实时检索需求低的场景 |
- 工程取舍
- 为了支撑百万级 QPS 与 TB 级知识库,我们牺牲了部署的复杂度,采用分布式分片架构,同时牺牲了一定的检索一致性,采用最终一致性的缓存策略,来换取系统的可用性与吞吐量;
- 为了支持实时更新,我们牺牲了部分编码的吞吐量,采用优先级状态机来保证高优先级更新的时效性。
- 趋势预判:
- 后续会结合向量数据库的分层存储能力,将冷数据存储到低成本的对象存储中,热数据存储到内存中,进一步降低存储成本;
- 会引入大模型的智能调度能力,根据查询的语义自动调整检索的分片范围,提升检索的准确率。