Redis通过多线程查询引擎提升向量语义搜索性能

Redis 增强查询引擎的发布

Redis,作为流行的内存数据结构存储系统,近期发布了其增强版查询引擎。这一发布正值向量数据库在生成式 AI 应用中的检索增强生成(RAG)方面日益重要的时刻。

多线程提升查询吞吐量

Redis 通过启用多线程来增强查询吞吐量,同时保持低延迟。Redis 表示,通过允许查询并发访问索引,实现了垂直扩展,从而提升了 Redis 操作和查询的吞吐量。这一改进在处理数亿文档的复杂查询时尤为重要,Redis 声称其响应保持亚毫秒级延迟,查询平均延迟低于 10 毫秒。

传统单线程架构的局限性

Redis 承认其传统的单线程架构在某些操作中存在局限性,特别是在使用倒排索引进行数据搜索时,长时间运行的查询可能会导致拥塞,降低整体吞吐量。搜索操作通常具有对数时间复杂度 O(log(n)),其中 n 是索引映射的数据点数量。

多线程架构的优势

Redis 的新多线程架构有效解决了这些问题,使其在保持简单操作高性能的同时,显著提升了计算密集型操作(如向量相似性搜索)的吞吐量。Redis 强调,高效扩展搜索需要结合水平数据负载分布(向外扩展)和垂直多线程(向上扩展),从而实现索引访问的并发性。

新架构的三步流程

Redis 的新架构分为三个步骤:在主线程上准备查询上下文并排队到共享队列中,线程从队列中消费并执行查询管道,与其他线程并发执行。查询完成后,结果返回给主线程。这种架构允许 Redis 在处理标准操作的同时,并行处理多个复杂查询,从而提高系统吞吐量和可扩展性。

性能基准测试

Redis 进行了广泛的基准测试,将其查询引擎与三类向量数据库提供商进行比较:纯向量数据库、具有向量功能的通用数据库以及完全托管的 Redis 云服务提供商(CSP)。Redis 声称其升级后的查询引擎在速度和可扩展性上优于纯向量数据库,同时在整体性能上显著超越通用数据库和完全托管的 Redis CSP。

向量数据库市场的现状

近年来,向量数据库市场涌现了大量产品,使得新进入者和用户面临挑战。行业专家指出,市场已饱和,新产品难以找到独特的价值主张。Reddit 的首席工程师 Doug Turnbull 表示,向量检索并非唯一难题,解决实际检索中的复杂问题更为重要。

Redis 查询引擎的性能提升

Redis 声称其新查询引擎的查询吞吐量比前代提高了 16 倍,特别适用于生成式 AI 应用,如依赖实时 RAG 的聊天机器人。Gmail 的创建者 Paul Buchheit 提出的“100 毫秒规则”指出,每次交互应在 100 毫秒内完成,以使用户感觉即时。Redis 的实时 RAG 有助于构建接近这一规则的生成式 AI 应用。

向量数据库在 AI 应用开发中的作用

Vectera 的 Ofer Mendelevitch 指出,虽然向量数据库性能重要,但它只是 AI 应用开发中的一部分。RisingWave Labs 的创始人 Yingjun Wu 建议,与其投资新的向量数据库项目,不如专注于现有数据库,探索增强其向量引擎的机会。

基准测试的详细信息

Redis 的基准测试涵盖了数据摄入和搜索工作负载。对于数据摄入,Redis 测量了使用 HNSW 算法和 ANN 搜索进行数据摄入和索引的时间。对于查询,Redis 专注于纯 k-NN 搜索,测量了每秒请求数(RPS)和平均客户端延迟(包括往返时间 RTT)。Redis 使用了多个数据集和距离函数进行测试,确保测试的全面性。

竞争对手的观点

尽管 Redis 在基准测试中表现出色,但其他行业参与者对其能力有不同的看法。MongoDB 和 ScaleGrid 等公司提供了对 Redis 性能的对比研究。

新查询引擎的可用性

Redis 已在其软件中立即提供新查询引擎,并计划在秋季发布 Redis Cloud 版本。用户可以通过 LangChain 框架查看 Redis 向量数据库的实际应用演示。此外,PostgresML 的演示和 InfoQ 播客也提供了更多关于向量数据库的信息。

阅读 25
0 条评论