随着越来越多的公司将 GenAI 应用投入生产,我们看到客户对更大规模向量数据库的需求不断增加。我们看到了 10 亿或更多向量的使用案例,我们很高兴能分享我们在这种规模下的基准测试结果。
根据我们的测试,在并发执行 50 个搜索查询时,对于最接近的 100 个邻居,我们达到了 90% 的精度,中位延迟为 200 毫秒,达到 95% 的精度,中位延迟为 1.3 秒。
将向量搜索扩展到 10 亿个向量并非易事,但 Redis 8 Community Edition 让它看起来轻而易举。今天,我们将通过演示在 10 亿个 768 维向量上进行高精度实时搜索来展示 Redis 如何处理大规模应用。我们严格测试了索引和搜索性能,证明 Redis 不仅是最快的向量数据库,而且还能从数百万个向量扩展到数十亿个向量,同时保持实时延迟。请查看以下详细信息。
我们使用了一个与 Intel® 协作准备的向量数据集,该数据集包含 10 亿个 768 维向量,使用 FLOAT16 精度,以及 1 万个查询,每个查询有 100 个 ground truth(精确邻居)。它源自LAION-5B 数据集,这是一个用于训练下一代图像-文本模型(如Stable Diffusion和OpenClip)的开放式大规模数据集。
向量索引使用欧几里得距离度量和 FLOAT16 精度,并在查询时改变以下参数以实现不同的精度:
数据集的 100 个最近邻 ground truth 用于评估每个回复的准确性(召回率),我们将 M 变化在 4、8、16 和 32 个出边之间,EF_CONSTRUCTION 变化在 4、8、16 和 32 之间,EF_RUNTIME 变化在 4、8、16、32、64、128、256、512、1024、2048、4096 和 8192 之间。为了确保结果可重现,每个配置运行 3 次,并选择最佳结果。您可以在我们的文档中了解更多关于 HNSW 配置参数和查询的信息。
在我们之前的向量数据库基准测试博客中,我们着重证明 Redis 是最快的向量数据库。现在,我们证明我们可以将向量从数百万扩展到数十亿,同时为用例保留实时延迟。
在 10 亿向量规模下,通过实时索引,Redis 8 Community Edition 对于允许至少 95% 精度(M 16 和 EF_CONSTRUCTION 32)的索引配置,可以维持每秒 6.6 万次向量插入。对于导致较低精度(M 4 和 EF_CONSTRUCTION 4)的索引配置,Redis 8 Community Edition 可以维持每秒 16 万次向量插入的更高摄取速率。通过使用更多服务器可以进一步提高吞吐量。
对于高精度查询,我们可以看到更大的 HNSW 索引(更高的 M 和 EF_CONSTRUCT)以牺牲延迟为代价提高了搜索质量。在并发执行 50 个搜索查询时,对于最接近的 100 个邻居,我们达到了包含 RTT 在内的中位延迟 200 毫秒的 90% 精度,以及包含 RTT 在内的中位延迟 1.3 秒的 95% 精度。
由于所需的精度和延迟权衡取决于具体用例,因此根据上图所示调整您的 HNSW 参数非常重要。
Redis 8 Community Edition 证明了实时向量搜索不仅适用于数百万个向量,还可以扩展到数十亿个,同时保持高性能。通过正确的 HNSW 调整,您可以平衡精度、延迟和吞吐量以适应您的用例,并通过实时查询实现高达 95% 的召回率。无论您是构建 AI 驱动的搜索、推荐引擎还是任何基于向量的应用,Redis 都能为您提供所需的快速、可扩展的性能。
准备好扩展了吗?立即试用 Redis 8 Community Edition 并探索各种可能性。立即开始或查看我们的文档。