趋近智
检索组件高效处理大量数据的能力是任何大规模高性能RAG系统的中枢。在处理数百万甚至数十亿向量时,单节点向量搜索方案不可避免地会遇到计算和内存的限制。分配和扩展向量搜索功能依赖于几种主要方法:将索引分片到多个节点上、复制数据以增加韧性和吞吐量,以及采用适合此类分布式环境的先进索引策略。
一个简单的单实例向量数据库在存储高维嵌入时最终会失效。主要限制有:
float32 向量的数据集,仅原始向量数据就占用大约 286 GB (100e6 * 768 * 4 字节),这还不包括索引开销。这迅速超出了典型单台机器的容量。有效扩展向量搜索意味着通过分布式架构直接应对这些难题。
分片是将向量索引水平划分到多台机器或分片上的过程。每个分片持有总向量数据集的一个子集,并负责在其分配的分区内进行搜索。主要好处是分担数据存储负载和并行化查询执行。
选择一个分片标准,即用于将向量分配给特定分片的标准,非常重要。常见策略有:
shard_id = hash(vector_id) % num_shards 计算。向量和查询负载在分片间的均匀分布是目标,以防止任何单个分片成为瓶颈。如果数据分布随时间显著变化,可能需要再平衡策略。
当查询到达时,系统必须决定将其导向哪个或哪些分片:
查询路由器或负载均衡器通常处理此逻辑,向应用程序隐藏索引的分片特性。
复制涉及创建和维护每个分片的多个副本(如果未分片,则为整个索引)。它有两个主要目的:
常见复制模型有:
对于 RAG 系统,向量索引可能定期批量更新,而非进行高频事务性写入,因此最终一致性通常是换取更高读取吞吐量和可用性的可接受权衡。可接受的过期时间窗口取决于应用程序对数据新鲜度的要求。
分片与复制是互补的。典型的大规模部署涉及分片索引以实现可扩展性,然后复制每个分片以实现高可用性和提高读取吞吐量。例如,如果您有 3 个分片和 3 的复制因子,您将总共有 3×3=9 个节点(或进程)托管索引数据。
下图展示了查询路由到分片、复制的向量索引分区的常见架构。
一个分片和复制的向量搜索架构。用户查询由路由器处理,路由器将搜索操作分发到分片的主节点或读取副本,随后汇总结果。
尽管分片和复制分担了负载,但底层 ANN 索引算法的选择及其每个分片的配置对于性能和资源效率仍然非常重要。
存储数十亿个全精度浮点向量通常成本过高。乘积量化 (PQ) 及其变体,如 IVFADC(带有非对称距离计算的倒排文件系统),是高效的向量压缩技术,从而显著减少它们的内存占用。
PQ 的工作原理是将每个向量划分为 M 个子向量。然后,对于数据集中每组子向量,应用 k-means 聚类以创建 k∗(通常为 256 个)质心。每个子向量随后被替换为其最近质心的 ID。一个 D 维向量因此可以表示为 M×log2(k∗) 位。例如,如果 D=768, M=96(每个子向量为 8 维),且 k∗=256,则每个子向量表示为 1 字节(8 位),因此整个向量为 96 字节,相对于 float32(768 * 4 = 3072 字节)实现了约 8 倍的压缩。
平面(未压缩 fp32)与两种乘积量化配置在 512 维向量存储的估计内存占用比较。对数刻度显示了 PQ 实现的显著内存节省,使得每个分片能够处理更大的数据集。
虽然 PQ 显著减少内存,但它是一种有损压缩技术,可能影响召回率。压缩比(以及因此的内存/成本)与搜索准确性之间的权衡是一个主要调整参数。训练量化器需要数据的代表性子集,并且对于非常大的 M 或 k∗,其本身可能计算密集。优化乘积量化 (OPQ) 预先转换向量,使其更好地符合 PQ 的假设,通常在相同压缩比下提高准确性。
分层可导航小世界 (HNSW) 图是流行的 ANN 算法,提供出色的召回-速度权衡。当分片 HNSW 索引时:
efConstruction)和搜索时参数(例如,efSearch)需要根据每个分片进行调整。较高的 efSearch 通常会带来更好的召回率,但会增加延迟。分布式 HNSW 实现还必须在分片间高效管理图更新(插入/删除)。对于超大数据集,即使压缩后的向量也无法完全放入集群的内存中时,基于磁盘的 ANN 索引变得必要。像 Faiss 这样的库支持 OnDiskInvertedLists,它将倒排列表(IVFADC 中的 posting lists)保存在磁盘上,通常是快速 SSD,而质心和可能一部分向量可以缓存在内存中。
使用基于磁盘的索引会因为 I/O 而显著增加查询延迟。然而,它能大幅降低运营成本。此类系统的设计通常涉及磁盘上细致的数据布局、优化的 I/O 模式和激进的缓存策略。分片仍然适用,每个分片管理自己的磁盘支持索引。
一个典型的规模化向量搜索子系统包含多个组件:
向量数据库或库的选择(例如,像 Milvus、Weaviate、Pinecone、Vespa 这样的专业解决方案,或像 Faiss、ScaNN 这样集成到自定义基础设施的库)将严重影响这些组件的实现和管理方式。许多托管向量数据库提供分片和复制作为内置功能,隐藏了一些底层复杂性。
扩展向量搜索带来了运营复杂性。您必须考虑:
成功扩展向量搜索是构建大规模 RAG 系统的重要基础。通过仔细应用分片、复制和选择合适的索引结构,可以在海量向量数据集上实现高吞吐、低延迟检索,为 RAG 流水线中后续生成阶段奠定基础。
简洁的语法。内置调试功能。从第一天起就可投入生产。
为 ApX 背后的 AI 系统而构建
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造