dot Redis 8 来了——而且它是开源的

了解更多

宣布推出 vector sets,一种用于向量相似性的全新 Redis 数据类型 

Redis 很高兴宣布推出 vector sets,这是一种为向量相似性而设计的突破性数据类型。vector sets 受 Redis 核心原则的启发,由 Redis 的原创者 Salvatore Sanfilippo 开发,增强了 Redis 作为现代 AI 应用通用解决方案的能力。vector sets 通过为特定用例提供对 Redis 友好的替代方案,补充了 Redis 中现有的强大向量搜索功能(Redis Query Engine)。vector sets 将在 Redis 8 Community Edition 的 Beta 版本中提供。这意味着根据您的反馈,我们可能会在未来版本中更改甚至破坏这些功能和 API。 

Redis 的创建者 Salvatore Sanfilippo(又名 ‘antirez’)最近重新加入公司,并创造了这种创新的数据类型;他的专业知识促成了一个既简单又直观的 API,这反映了 Redis 在提供高性能解决方案的同时保持最低复杂度的理念。

什么是 vector sets?

vector sets 的灵感来源于 sorted sets,它是 Redis 的一个基本数据类型,以其处理有序集合的高效率而闻名。vector sets 扩展了这一概念,允许存储和查询高维向量嵌入,这对于各种 AI 和机器学习应用至关重要。就像 sorted set 一样,vector set 具有与向量而不是分数关联的字符串元素。vector sets 的根本目标是能够添加项目,然后获取与指定向量最相似的部分已添加项目。 

考虑一下您想要存储和检索各种文本描述或图像的向量嵌入的场景。使用 vector sets,您可以轻松存储这些嵌入并执行高效的相似性搜索。vector sets 还实现了一些令人兴奋的附加功能,包括

  • 量化 (Quantization): 在 vector set 中,向量默认被量化为 8 位值。但是,在添加第一个元素时,可以将其修改为不进行量化或进行二进制量化。
  • 降维 (Dimensionality Reduction): 通过指定选项和维度数量,可以通过随机投影减少向量的维度。 
  • 过滤 (Filtering): vector set 的每个元素都可以通过 VADD 或 VSETATTR 命令关联一组指定为 JSON blob 的属性。这使得可以使用 VSIM 过滤经表达式验证的元素子集。 

vector set 命令

以下是一些您可以使用 vector set 的命令示例。如需完整列表,请参阅我们的此处的文档。 

# Add keys to the vector set 
VADD myset VALUES 4 0.5 1.2 0.75 3.8 element1  
VADD myset VALUES 4 0.9 1.5 0.66 4.5 element2  
VADD myset VALUES 4 0.4 1.9 0.92 3.6 element3  
VADD myset VALUES 4 0.7 1.3 0.85 4.1 element4  

# Retrieve the top 3 most similar keys to a given query vector with similarity scores
VSIM myset ELE element4 WITHSCORES COUNT 3

# Remove a key from the set
VREM myset element1



# Count the number of elements in the vector set
VCARD myset


# Show info about a vector set including stored elements, vector dimensions, quantization etc. 

VINFO myset

Redis Query Engine 和 vector sets

Redis 现在提供两种互补的搜索功能——用于全面、企业级搜索和查询的 Redis Query Engine,以及作为原生数据类型的新 vector set,它轻量且专注于向量相似性搜索。 

Redis Query Engine 在大型可扩展数据集上擅长快速执行全文、数值、向量和混合查询,而 vector sets 则提供了一种简化的替代方案,具有简单的 API。它们共同巩固了 Redis 对性能、灵活性和开发者友好型搜索解决方案的承诺。

当您的应用程序 主要关注向量相似性用例,而无需高级搜索和查询(尤其是涉及全文或混合查询的用例)时,vector sets 可能是个不错的选择。如果您正在构建 由 AI 驱动的应用 并希望以一种 轻量、高效 的方式存储和查询高维嵌入,vector sets 可以提供一种 简单、精简 的替代方案。

与此同时,包含在Redis 8 中的 Redis Query Engine 是市场上最快的搜索和向量数据库,为多种场景提供企业级解决方案,包括

  • 全面的搜索和查询: 支持多种查询类型,可实现向量相似性、全文搜索、数值过滤和地理空间操作的强大组合。RQE 还能无缝索引 Redis 数据结构(如 Hash 和 JSON),以满足灵活和可调整的查询需求。 
  • 可扩展性: Redis Query Engine 提供了一个横向可扩展的解决方案(具有自动分片和分布式架构管理),以支持大型数据集。此外,它还提供多线程搜索以实现高吞吐量、低延迟和快速索引,这使得 Redis 成为市场上最快的向量数据库解决方案。 
  • GenAI 生态系统: 强大的生态系统支持,包括与 Langchain (和 LangGraph)、LlamaIndex 等流行框架的集成,以及我们专用于 GenAI 应用的 Python 库 (RedisVL)。

vector sets 快速入门

开始使用 vector sets 非常简单。只需部署最新版本的 Redis 即可开始。有关存储和查询向量、配置选项和最佳实践的详细说明,请访问此处的文档。 

最后,我们还将开始为各种 Redis 客户端库添加支持,首先是支持 redis-py。

我们非常激动地看到开发者社区将使用 vector sets 构建出什么。我们期待您的反馈和创新,因为我们将继续发展 Redis,以满足技术领域不断变化的需求。我们也鼓励您通过我们的 GitHub issues 或社区论坛分享您的反馈。祝您构建愉快。