Redis 向量检索怎么配置:RediSearch 模块加载与相似度查询

Redis 要支持向量检索,靠的不是 Redis 核心本身,而是 RediSearch 模块。
确认模块已加载后,用 FT.CREATE 建索引、HSET 写入向量、FT.SEARCH 执行 KNN 查询即可完成最小验证。
下面按“确认环境→建索引→写数据→查相似→排错”的顺序展开,命令可直接在 redis-cli 中执行。

先确认 Redis 是否带 RediSearch

向量检索依赖 RediSearch 模块。
先连上 Redis 执行:

redis-cli MODULE LIST

返回结果中应出现 search 模块。
如果没有,说明当前实例是普通 Redis,需要换用 Redis Stack(官方集成 RediSearch 的发行版)或手动加载模块。
用 Docker 启动 Redis Stack 最省事:

docker run -d --name redis-stack -p 6379:6379 redis/redis-stack-server:latest

启动后再次执行 MODULE LIST,
看到 search 即表示模块可用。注意:
Redis Stack 与普通 Redis 的端口默认都是 6379,
同一台机器上不要重复启动导致端口冲突。

创建向量索引

向量检索需要先定义索引结构。
假设存储 4 维浮点向量,字段名为 vec,用 HASH 结构存储:

FT.CREATE idx:demo ON HASH PREFIX 1 doc: SCHEMA vec VECTOR FLAT 6 TYPE FLOAT32 DIM 4 DISTANCE_METRIC COSINE

参数含义:PREFIX 1 doc: 表示只索引以 doc: 开头的键;FLAT 是暴力检索算法,适合数据量小的场景;DIM 4 是向量维度,必须与实际写入的维度一致;COSINE 是余弦距离。
维度写错或数据类型不匹配,后续查询会报错或结果异常。

写入向量并执行相似度查询

写入一条 4 维向量,向量需按 FLOAT32 二进制格式传入。
在 redis-cli 中可用 --raw 配合脚本,更推荐用 Python 客户端操作:

import redis, struct, numpy as np
r = redis.Redis(host='127.0.0.1', port=6379)
vec = np.array([0.1, 0.2, 0.3, 0.4], dtype=np.float32)
r.hset('doc:1', mapping={'vec': vec.tobytes(), 'title': '示例文档'})

查询与目标向量最相似的记录:

query_vec = np.array([0.1, 0.2, 0.3, 0.4], dtype=np.float32)
q = query_vec.tobytes()
res = r.execute_command('FT.SEARCH', 'idx:demo', '*=>[KNN 3 @vec $BLOB AS score]',
                        'PARAMS', 2, 'BLOB', q, 'SORTBY', 'score', 'RETURN', 2, 'title', 'score', 'DIALECT', 2)
print(res)

返回结果按距离升序排列,第一条应为最相似记录。
如果返回空,先检查写入的键是否匹配索引前缀 doc:,以及向量维度是否为 4。

常见报错与避坑

  • unknown command 'FT.CREATE':模块未加载,回到第一步确认 MODULE LIST。
  • Vector dimension mismatch:写入或查询的向量维度与索引 DIM 不一致,检查 numpy 数组长度。
  • 查询结果为空:确认键前缀匹配、数据已写入,且查询语句使用了 DIALECT 2。
  • 性能问题:FLAT 在数据量大时变慢,可改用 HNSW 算法,但建索引和内存开销更高,需按数据规模取舍。
  • 生产环境:修改索引结构需重建索引,建议先在测试实例验证命令,再操作线上数据。

验证配置是否生效

执行 FT.INFO idx:demo 可查看索引的维度、距离算法和文档数量。
写入多条不同向量后,用相同查询语句观察返回顺序是否随目标向量变化,能进一步确认检索逻辑正常。
若结果始终不变,优先排查是否写入了相同向量或索引前缀配置错误。

Redis 向量检索配置的核心是模块可用、维度一致、前缀匹配这三件事。
按本文顺序跑通最小示例后,再根据业务数据量在 FLAT 和 HNSW 之间做选择即可。

分享到:
上一篇
Elasticsearch 向量检索实战:dense_vector 字段配置与 kNN 查询
下一篇
MongoDB 向量检索配置:Atlas Vector Search 索引创建与查询验证
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意