dot Redis 8 现已发布,并且它是开源的

了解更多

使用 Redis 8 搜索 10 亿个向量

随着越来越多的公司将 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 DiffusionOpenClip)的开放式大规模数据集。 

向量索引使用欧几里得距离度量和 FLOAT16 精度,并在查询时改变以下参数以实现不同的精度:

  • EF_CONSTRUCTION(在索引创建时设置):在图构建过程中,图中每个节点的允许最大潜在出边候选数。
  • M(在索引创建时设置):图中每层每个节点的允许最大出边数。在零层,最大出边数将是 2M。 
  • EF_RUNTIME(查询时可变):在 KNN 搜索期间保留的最大靠前候选数。EF_RUNTIME 值越高,结果越精确,但运行时会更长。 

数据集的 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 8 Community Edition 10 亿规模基准测试

图值 | | |

在我们之前的向量数据库基准测试博客中,我们着重证明 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

Redis 8 Community Edition 证明了实时向量搜索不仅适用于数百万个向量,还可以扩展到数十亿个,同时保持高性能。通过正确的 HNSW 调整,您可以平衡精度、延迟和吞吐量以适应您的用例,并通过实时查询实现高达 95% 的召回率。无论您是构建 AI 驱动的搜索、推荐引擎还是任何基于向量的应用,Redis 都能为您提供所需的快速、可扩展的性能。 

准备好扩展了吗?立即试用  Redis 8 Community Edition 并探索各种可能性。立即开始或查看我们的文档