趋近智
为构建能满足企业级需求的RAG系统,我们必须以分布式计算的既有原则为设计依据。这些原则并非抽象理论,而是实用指南,它们应对了任何大型系统(包括RAG)固有的规模、故障和并发问题。周全地应用这些原则,有助于构建在生产环境中表现出色、具备恢复能力且易于维护的RAG系统,从而克服单节点设计的固有局限性。
分布式RAG系统的可伸缩性,指其在负载增加(无论是更多数据、更多用户还是更复杂查询)时保持性能的能力。这通常通过横向扩容(增加机器/节点)而非仅纵向扩容(增加单机资源)来实现。
组件级伸缩:RAG系统的每个主要组件——检索器、数据摄入管道和生成器(LLM)——都有独特的扩容要求。
分区:数据分区是基本做法。对于检索,这意味着对向量索引进行分片。每个分片包含总嵌入量的一个子集。查询可以广播到所有分片(如果元数据允许,也可以路由到特定分片),然后聚合结果。支持检索到的片段的文档存储也可以进行分区。
无状态性:尽可能将服务设计为无状态,大大简化了扩展。无状态服务在请求之间不存储任何客户端会话数据。这意味着服务的任何实例都可以处理任何请求,使得负载均衡和向外扩展变得简单。对于RAG,编排器和LLM服务终端通常被设计为无状态服务。状态本身(例如向量索引、文档内容)则驻留在专用的有状态数据存储中。
生产RAG系统即使在部分组件出现故障时也必须保持运行。这是可用性和容错的重点。
冗余:核心组件应具备冗余实例。如果LLM服务器的一个实例出现故障,流量可以路由到正常运行的实例。向量 (vector)数据库分片通常会被复制,因此如果托管主分片的节点出现故障,副本可以接管。
负载均衡器将请求分发到服务的多个冗余实例,提升可用性。
故障转移机制:自动故障转移流程非常必要。例如,如果主向量索引分片无响应,系统应自动将查询重定向到其副本。这通常涉及健康检查和监控系统。
断路器:在微服务架构中,一个服务通常会调用其他服务。如果下游服务(例如,特定的LLM终端)运行缓慢或出现故障,重复的请求可能会使其过载或导致级联故障。断路器模式会监控对服务的调用。如果故障超出阈值,断路器会“打开”,并在一段时间内快速使后续调用失败(或路由到备用),从而使出现问题的服务得以恢复。超时后,断路器允许少量测试请求通过。如果这些请求成功,断路器会“关闭”,恢复正常操作。这可以防止RAG管道某一部分的局部故障(例如,一个行为异常的重排序模型)导致整个系统瘫痪。
幂等性:操作,特别是在数据管道中,应具有幂等性。幂等操作可以执行多次,其效果与执行一次相同。例如,如果文档分块和嵌入 (embedding)任务中途失败并重试,则不应在向量数据库中导致重复条目或不一致的状态。
分布式系统中的一致性指数据在多个副本或节点之间保持相同。在RAG中,这主要涉及用于检索的文档索引的时效性。
最终一致性:许多分布式数据库(包括向量 (vector)数据库)选择写操作的最终一致性,以实现更高的可用性和分区容忍度。这意味着当新文档添加或现有文档更新时,这些更改最终会传播到所有副本,但可能会有短暂的时间窗口,在此期间不同副本(以及因此产生的不同RAG查询)可能会看到略微不同的数据版本。
CAP定理:CAP定理指出分布式数据存储只能提供以下三种保障中的两种:一致性、可用性和分区容忍度。
CAP定理说明当网络分区不可避免时,系统通常会在优先考虑一致性(CP)或可用性(AP)之间做出选择。 大多数大型分布式RAG系统,特别是其检索后端,通过采用最终一致性,倾向于AP(可用性和分区容忍度)。因网络分区而失去回答查询的能力(可用性)通常比可能提供略微过时的数据更不可取。
读写一致性:某些系统提供会话级一致性,例如“读写一致性”,即用户提交数据后会立即看到自己的更新,即使其他用户体验的是最终一致性。这对于用户修改底层文档的交互式RAG应用来说非常重要。
分布式RAG系统中的性能通过延迟(查询应答的速度)和吞吐量(单位时间内能处理的查询数量)来衡量。
随着RAG系统变得分布式且复杂,理解其行为和诊断问题变得有挑战性。
通过掌握这些分布式系统原则,您将从构建RAG原型转向设计生产级系统。强调哪些原则以及如何实现它们的选择,将取决于您的RAG应用的具体需求,包括其规模、性能目标和对数据陈旧的容忍度。后续章节将介绍体现这些原则的大规模RAG的具体架构模式和技术。
简洁的语法。内置调试功能。从第一天起就可投入生产。
为 ApX 背后的 AI 系统而构建
这部分内容有帮助吗?
© 2026 ApX Machine LearningAI伦理与透明度•