Skip to main content

RAG 面试题

01. 设计 TB 级私有知识库 RAG:实时更新与百万 QPS

设计哲学与核心价值定位

这个 RAG 系统在企业 AI 生态中的生态位是私有领域的 "知识中台入口",承担着将企业积累的非结构化私有知识(如内部文档、项目经验)转化为可被大模型高效调用的结构化知识的职责,解决的第一性原理问题是「企业私有知识的高效复用与实时触达」。如果不采用这个方案,企业在使用大模型处理内部业务时,会面临三个底层瓶颈:一是 TB 级私有知识无法直接输入大模型,导致大模型缺乏业务上下文;二是实时更新的知识(如项目变更、业务规则调整)无法快速同步给大模型,输出内容滞后;三是无法支撑百万级并发的内部员工查询,系统会在峰值请求时出现服务雪崩。

中文架构可视化与全链路解析

全链路解析

  • 查询路由先查本地缓存(按查询+权限+上下文构建键),命中直接返回
  • 未命中再查分布式缓存,命中则回写本地并刷新 TTL,降低后续延迟
  • 再未命中进入检索链路:向量库召回 → 写入多级缓存 → 构造提示词 → 大模型输出
  • 缓存一致性模块监听知识库更新,执行版本化失效与精准删除,保持结果可用
  • 本地 LRU 与分布式 LFU 组合优化命中率与成本,兼顾延迟与容量

组件协同与关键实现细节 ​

这个架构中的压舱石组件是分布式向量数据库集群的分片调度与增量编码模块。​

  • 分布式向量数据库采用一致性哈希分片的结构,将知识库按照领域、文档类型进行哈希分片,每个分片独立存储对应的向量数据,这种结构可以将检索请求均匀分散到不同的节点,直接提升系统的吞吐量,同时避免单节点的性能瓶颈;​
  • 增量编码模块采用基于事件驱动的异步编码策略,内部使用优先级状态机管理编码任务,将高优先级的实时更新文档(如业务规则变更)优先编码,低优先级的批量文档延后编码,这种设计可以保证实时更新的知识能够在 1 分钟内完成编码并写入向量数据库,降低系统的延迟;​
  • 全局缓存层采用多级缓存结构,本地缓存存储节点级的高频查询,分布式缓存存储全局的高频查询,同时实现缓存一致性协议,当知识库更新时,主动失效对应的缓存数据,保证缓存数据的准确性。​

方案对比、工程取舍与演进趋势 ​

主流方案设计动机适用场景
集中式向量数据库降低部署复杂度知识库规模小于 100GB、并发量小于 10w QPS 的场景
分布式哈希分片向量数据库支撑大规模知识库与高并发知识库规模大于 TB 级、并发量大于百万级 QPS 的场景
基于对象存储的向量索引降低存储成本冷数据占比高、实时检索需求低的场景
  • 工程取舍
    • 为了支撑百万级 QPS 与 TB 级知识库,我们牺牲了部署的复杂度,采用分布式分片架构,同时牺牲了一定的检索一致性,采用最终一致性的缓存策略,来换取系统的可用性与吞吐量;
    • 为了支持实时更新,我们牺牲了部分编码的吞吐量,采用优先级状态机来保证高优先级更新的时效性。​
  • 趋势预判
    • 后续会结合向量数据库的分层存储能力,将冷数据存储到低成本的对象存储中,热数据存储到内存中,进一步降低存储成本;
    • 会引入大模型的智能调度能力,根据查询的语义自动调整检索的分片范围,提升检索的准确率。

02 长文本 RAG:分块策略与召回精度优化

设计哲学与核心价值定位

这个方案在 RAG 系统中的生态位是长文本知识的"语义拆解与精准触达"模块,解决的第一性原理问题是「长文本的语义密度不均与编码模型的上下文窗口限制」。

如果不采用这个方案,RAG 系统在处理长文本时,会面临两个底层瓶颈:一是编码模型的上下文窗口有限(如当前主流编码模型的窗口多为 4k-16k),无法直接编码 10w 字的长文本;二是直接对长文本进行暴力分块,会导致语义碎片化,检索时无法召回完整的知识片段,生成的回答会出现逻辑断裂。

中文架构可视化与全链路解析

全链路解析

  • 长文本预处理后进入语义感知分块,并为分块打上下文标签
  • 分块编码同时编码标签向量,写入向量数据库
  • 用户查询编码后,检索模块做联合检索(分块向量+标签向量)
  • 召回分块按标签聚合,构造提示词输入大模型生成回答
  • 分块编码批量化提升吞吐,聚合保证语义完整与连贯

组件协同与关键实现细节

这个架构中的压舱石组件是语义感知分块模块与分块聚合模块

  • 语义感知分块模块内部采用基于预训练语言模型的语义主题识别算法,结合跳表索引存储分块的语义边界,这种数据结构可以快速定位长文本的语义分块位置,提升分块的效率;
  • 分块聚合模块内部采用基于图的分块关联算法,将具有相同上下文标签的分块关联起来,这种数据结构可以保证聚合后的知识片段的语义完整性,提升生成回答的逻辑连贯性;
  • 这两个组件的设计直接提升了系统的召回精度,同时降低了编码的时间成本,因为只需要对分块后的文本进行编码,而不是对整个长文本进行编码。

方案对比、工程取舍与演进趋势

主流方案设计动机适用场景
固定长度分块实现简单文本语义密度均匀、无明显语义边界的场景
语义感知分块保证分块的语义完整性技术文档、法律条文等语义密度不均的长文本场景
递归分块适配不同长度的查询对检索精度要求极高的场景
  • 工程取舍
    • 为了保证分块的语义完整性,我们牺牲了分块的效率,语义感知分块的时间成本是固定长度分块的 2-3 倍;
    • 为了提升检索的精度,我们牺牲了部分存储成本,需要存储分块的上下文标签向量。
  • 趋势预判
    • 后续会结合大模型的长上下文窗口能力,实现"动态分块",根据文本的语义密度自动调整分块的长度;
    • 会引入多模态的语义分块能力,支持对长文本中的图片、表格等内容进行分块。

03 RAG 幻觉成因与架构级缓解机制

设计哲学与核心价值定位

这个方案在 RAG 系统中的生态位是检索结果的"可信度校验与修正"模块,解决的第一性原理问题是「检索结果的语义一致性与事实正确性」。

如果不采用这个方案,RAG 系统会面临的底层瓶颈是:检索到的知识片段可能与查询的语义不一致,或者知识片段本身存在事实错误,大模型基于这些知识生成的回答会出现幻觉,降低用户对系统的信任度。

中文架构可视化与全链路解析

全链路解析

  • 查询编码后检索召回知识片段
  • 召回结果先做语义/事实校验,不通过则重新检索
  • 通过则重排序 → 提示词构造 → 大模型生成回答
  • 回答再经校验与修正形成闭环,避免幻觉扩散
  • 校验结果可缓存,重检采用增量检索减少重复

组件协同与关键实现细节

这个架构中的压舱石组件是检索结果校验模块与回答校验模块

  • 检索结果校验模块内部采用基于知识图谱的事实校验算法语义相似度匹配算法,结合哈希分片存储知识图谱的实体与关系,这种数据结构可以快速定位知识片段中的事实错误,提升校验的效率;

  • 回答校验模块内部采用基于大模型的自校验算法,结合优先级状态机管理校验任务,将高优先级的回答优先校验,这种设计可以保证回答的事实正确性,提升用户对系统的信任度;

  • 这两个组件的设计直接提升了系统的生成准确率,同时降低了幻觉的发生率,因为只有通过校验的知识片段才会被输入大模型。

方案对比、工程取舍与演进趋势

主流方案设计动机适用场景
基于语义相似度的校验实现简单对事实正确性要求不高的场景
基于知识图谱的校验保证事实正确性医疗、法律等对事实正确性要求极高的场景
基于大模型的自校验提升校验的灵活性复杂的多轮对话场景
  • 工程取舍
    • 为了保证事实正确性,我们牺牲了系统的延迟,检索结果校验与回答校验会增加 20%-30%的系统延迟;
    • 为了提升校验的准确率,我们牺牲了部分吞吐量,因为需要对每个知识片段与回答进行校验。
  • 趋势预判
    • 后续会结合大模型的长上下文窗口能力,实现"端到端的校验",将校验逻辑融入到大模型的生成过程中;
    • 会引入用户反馈的机制,将用户标记的幻觉回答作为训练数据,提升校验模型的能力。

04 如何为 RAG 系统设计一套完整的缓存体系,兼顾缓存命中率、缓存一致性以及缓存的内存/显存占用成本?

设计哲学与核心价值定位

这个缓存体系在 RAG 系统中的生态位是系统性能的"加速器与稳压器",解决的第一性原理问题是「检索请求的重复计算与数据的一致性」。

如果不采用这个缓存体系,RAG 系统会面临的底层瓶颈是:大量的重复查询会导致向量数据库的检索压力过大,系统的吞吐量下降,同时知识库的更新会导致缓存数据的不一致,生成的回答会出现错误。

中文架构可视化与全链路解析

全链路解析

  • 查询路由先查本地缓存,命中直接返回
  • 未命中查分布式缓存,命中回写本地再返回
  • 再未命中进入检索 → 向量库召回 → 写入多级缓存 → 构造提示词 → 大模型输出
  • 缓存一致性模块监听更新并失效本地/分布式缓存
  • 本地 LRU、分布式 LFU 提升命中率与成本效率

组件协同与关键实现细节

这个架构中的压舱石组件是缓存写入模块与缓存失效模块

  • 缓存写入模块内部采用基于哈希分片的缓存写入策略,将不同领域的查询缓存到不同的分布式缓存节点,这种数据结构可以将缓存请求均匀分散到不同的节点,提升缓存的吞吐量;
  • 缓存失效模块内部采用基于事件驱动的缓存失效策略,结合跳表索引存储缓存的失效时间,这种数据结构可以快速定位需要失效的缓存数据,提升缓存一致性的效率;
  • 这两个组件的设计直接提升了系统的缓存命中率,同时保证了缓存数据的一致性,降低了缓存的内存/显存占用成本,因为只有高频查询的结果才会被缓存。

方案对比、工程取舍与演进趋势

主流方案设计动机适用场景
本地缓存实现简单、延迟低单节点部署的 RAG 系统
分布式缓存支撑高并发、高可用分布式部署的 RAG 系统
多级缓存兼顾延迟与命中率大规模的 RAG 系统
  • 工程取舍
    • 为了保证缓存一致性,我们牺牲了部分缓存命中率,因为当知识库更新时,需要失效部分缓存数据;
    • 为了降低缓存的内存/显存占用成本,我们牺牲了部分系统延迟,因为需要查询多级缓存。
  • 趋势预判
    • 后续会结合大模型的预测能力,实现"智能缓存",根据查询的热度预测缓存的失效时间;
    • 会引入显存缓存的机制,将高频查询的向量存储到显存中,进一步降低检索的延迟。