Redis

Redis

在 Redis 查询引擎上做向量相似度检索的能力

核心功能

Redis 在查询引擎(RediSearch)中以 VECTOR 字段提供向量检索,结合 FLAT 精确与 HNSW 近似索引,可在既有的内存数据结构上直接做近邻搜索,适合缓存与检索一体化场景。

功能亮点

双索引

FLAT 做精确逐条比对,HNSW 建图换取低延迟检索

度量灵活

距离度量支持余弦、L2 与内积,并可配置向量维度与类型

两种查询

KNN 取 top_k 近邻,VECTOR_RANGE 按半径返回

就地检索

在既有哈希/JSON 数据存储上建索引,无需迁移系统

适用场景

• 在缓存层直接做语义检索,避免额外引入向量库。
• 用向量检索实现以图搜图或相似商品推荐。
• 会话与特征向量共存,低延迟近邻匹配。

安装配置

bash
Docker 运行(含 Redis Query Engine / RediSearch,支持向量检索):
docker run -d --name redis -p 6379:6379 redis/redis-stack-server:latest

连接(在容器内执行):
docker exec -it redis redis-cli

使用方法

javascript
建 FLAT 向量索引(哈希):
FT.CREATE documents ON HASH PREFIX 1 docs: SCHEMA doc_embedding VECTOR FLAT 6 TYPE FLOAT32 DIM 1536 DISTANCE_METRIC COSINE

建 HNSW 向量索引(可调图质量):
FT.CREATE documents ON HASH PREFIX 1 docs: SCHEMA doc_embedding VECTOR HNSW 6 TYPE FLOAT32 DIM 1536 DISTANCE_METRIC COSINE M 40 EF_CONSTRUCTION 250

建 FLAT 向量索引(JSON):
FT.CREATE idx:bikes_vss ON JSON PREFIX 1 bikes: SCHEMA $.vector VECTOR FLAT 6 TYPE FLOAT32 DIM 768 DISTANCE_METRIC COSINE

写入与 KNN 查询(DIALECT 2 必填):
FT.SEARCH documents "*=>[KNN 10 @doc_embedding $BLOB]" PARAMS 2 BLOB "\x12\xa9\xf5\x6c" DIALECT 2

关键指标

尚未核验对标产品,此处只列本工具自身指标,不做对比结论。

指标Redis
价格免费增值
开源
上手难度进阶

相关工具

优点

  • 在既有 Redis 内存数据上建向量索引,无需新组件。
  • FLAT 与 HNSW 兼顾精确性与查询延迟。
  • 支持 COSINE/L2/IP 与哈希、JSON 多种数据结构。
  • 开源免费(RSALv2/SSPLv1/AGPLv3),Cloud 托管可选。

缺点

  • KNN 查询默认 LIMIT 为 10,需显式指定返回数量。
  • 向量查询必须带 DIALECT 2,否则语法不被支持。
  • 向量 BLOB 字节长度必须与 schema 声明的 DIM 一致。
  • 集群模式下向量索引分片可能不均衡,影响查询。