趋近智
将检索增强生成 (RAG) 系统从原型转变为生产级、大规模部署,需要仔细的架构决策。为此,有效管理各个组件非常重要。采用微服务设计模式提供了一种方法,可以将您的 RAG 系统分解为可管理、可独立部署和可扩展的单元。这与在 Kubernetes 等平台上部署以及建立 MLOps 实践相符。
当 RAG 系统规模扩大时,一体式架构(所有组件都紧密耦合在单个应用程序中)可能会成为一个重大阻碍。此类系统难以高效扩展,因为扩展一部分意味着扩展所有部分。它们还会阻碍独立开发和更新,增加因单个组件问题导致系统范围故障的风险。微服务通过将应用程序分解为更小、自治的服务集合来解决这些问题。
应用微服务模式的第一步是识别 RAG 管道中不同的功能组件。每个组件都可以作为独立的微服务来实现。对于典型的分布式 RAG 系统,这些可能包括:
这种分解使得每个服务都可以独立开发、部署、扩展和维护。例如,您的检索服务可能需要大量的 CPU 和内存进行向量搜索,而 LLM 抽象服务可能受 I/O 限制,等待 LLM 响应。微服务允许您为每个服务适当地分配资源。
几种既有的微服务设计模式对于构建分布式 RAG 系统特别有益。
API 网关作为所有客户端请求访问 RAG 系统的单一入口点。客户端(例如 Web 应用程序、移动应用或其他后端服务)不是直接调用单个微服务,而是将请求发送到 API 网关。网关随后将这些请求路由到适当的下游微服务。
API 网关管理跨 RAG 微服务的请求流,简化客户端交互并集中处理横切关注点。
优势包括:
对于 RAG,API 网关通常会公开一个端点(例如 /rag/query),并协调对查询预处理、检索、重排序、生成和后处理服务的调用序列。
在 Kubernetes 这样的动态环境中,服务实例可以被创建、销毁或移动,服务需要一种方式来相互查找。硬编码 IP 地址和端口是不可行的。服务发现模式解决了这个问题。
Kubernetes 提供了可靠的内置服务发现。您定义一个 Service 对象,Kubernetes 会为其分配一个稳定的 DNS 名称和 IP 地址,自动将请求负载均衡到支持该服务的健康 Pod 上。这对于 RAG 集群内可靠的服务间通信必不可少。
分布式系统必须能够抵御部分故障。如果某个微服务(例如重排序服务)变慢或不可用,它不应导致级联故障,从而使整个 RAG 系统崩溃。断路器模式可以防止这种情况发生。
它的工作原理类似于电气断路器:
Hystrix (Java)、Polly (.NET) 或 Istio (服务网格) 等库提供了实现。将其应用于 API 网关与 RAG 服务之间,或内部 RAG 服务之间的调用,能显著提升容错性。例如,如果 LLM 服务暂时过载,断路器可以阻止重复调用,或许返回缓存的响应或指示暂时不可用的消息。
这种模式植根于领域驱动设计,建议根据业务能力或子域来分解服务。对于 RAG,自然的子域是管道的各个阶段:数据摄取、查询理解、文档检索、答案生成和结果呈现。这通常会带来清晰直观的服务边界定义,使服务更具内聚性并松散耦合。
微服务之间需要相互通信。选择通信方式很重要。
同步通信: 客户端发送请求并等待响应。
异步通信: 客户端发送消息而不等待即时响应。处理是独立进行的。
一个大型 RAG 系统通常会采用混合方法:同步通信用于实时查询路径,异步通信用于后台处理、更新和解耦不那么重要的组件。
一个 RAG 系统,采用同步通信进行实时查询处理,并采用异步模式进行后台数据摄取和索引更新。
一个常见问题是:微服务应该有多大或多小?没有放之四海而皆准的答案。
首先将服务与 RAG 管道的逻辑组件对齐 (alignment)。例如,“检索”是一个很好的起点。如果您后来发现该服务中的稠密和稀疏检索组件具有截然不同的资源需求或扩展特性,那么您可能会决定将它们拆分为独立的微服务。评估开发团队自治性、技术多样性需求和运营开销等权衡因素。
下表说明了普遍的权衡:随着服务数量(粒度)的增加,独立可扩展性通常会提升,但管理复杂性和潜在的通信开销也会随之增加。
微服务粒度与系统特性之间的普遍关系。最佳点平衡了可扩展性优势与运营复杂性。
理想情况下,微服务应该是无状态的。这意味着它们在服务实例本身内部不存储从一个请求到下一个请求的任何数据。状态被外部化到数据库(SQL、NoSQL、向量 (vector)数据库)、缓存(Redis、Memcached)或消息队列。无状态服务更容易横向扩展、替换和回滚,因为任何实例都可以处理任何请求。
同步查询路径中涉及的大多数 RAG 服务(查询预处理、重排序、LLM 抽象、后处理)可以也应该设计为无状态。检索服务与有状态向量数据库交互,但其自身可以是无状态的。涉及数据摄取和索引的服务(嵌入 (embedding)服务、索引服务)本身将管理或密切交互状态,但计算部分通常仍可以无状态地扩展。
尽管功能强大,微服务架构在分布式 RAG 环境中也带来了自身的挑战:
通过深思熟虑地应用这些微服务设计模式,您可以构建一个分布式 RAG 系统,它不仅功能强大,而且在要求高的生产环境中具有可扩展性、弹性和可维护性。特定模式的选择和服务粒度应始终由 RAG 应用程序的独特要求和约束决定。
简洁的语法。内置调试功能。从第一天起就可投入生产。
为 ApX 背后的 AI 系统而构建
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造