1. 环境准备
步骤 | 命令 | 说明 |
---|---|---|
安装核心库 | pip install -U redisvl | Python ≥3.8 |
可选:安装向量化器 | pip install redisvl[all] | 自带 sentence-transformers 等依赖 |
启动本地 Redis Stack | docker run -d --name redis-stack -p 6379:6379 -p 8001:8001 redis/redis-stack:latest | 已包含 Search & Query + RedisInsight |
验证 CLI | rvl version | 输出 RedisVL 版本即可 |
Tips
- 使用 Zsh 要转义:
pip install redisvl\[all\]
- 若 Redis 开启密码/SSL,可在命令中追加
--user/-u
、-a
、--ssl
参数,或直接设置REDIS_URL
环境变量。
2. 命令速查表
指令 | 子命令 / 选项 | 用途 |
---|---|---|
rvl version | —— | 显示 RedisVL 版本 |
rvl index | create -s <schema.yaml> | 根据 YAML 创建索引 |
listall | 列出全部索引 | |
info -i <name> | 表格化显示索引定义 | |
delete -i <name> | 删除索引,保留数据 | |
destroy -i <name> | 索引 + 数据一起删除 | |
rvl stats | -i <name> | 显示指定索引运行统计 |
-s <schema.yaml> | 根据 schema 查看统计(索引需已存在) |
3. rvl index
:索引生命周期管理
3.1 YAML Schema:声明即索引
# schema.yaml
version: '0.1.0'
index:
name: vectorizers
prefix: doc
storage_type: hash # HASH / JSON
fields:
- name: sentence
type: text
- name: embedding
type: vector
attrs:
dims: 768
algorithm: flat # flat / hnsw
distance_metric: cosine
只需三行命令即可体验完整生命周期:
# 创建
rvl index create -s schema.yaml
# 查看列表
rvl index listall
# ➜ vectorizers
# 查看字段 & 参数
rvl index info -i vectorizers
删除与销毁的区别
命令 | 删除索引 | 删除原始数据 |
---|---|---|
delete | ✅ | ❌ |
destroy | ✅ | ✅ |
开发迭代时推荐
delete
;灰度或误操作保护生产数据。
3.2 多字段、多向量 & JSON
- 一个 Schema 可声明 多个 TEXT/TAG/NUMERIC/VECTOR 字段
storage_type
为json
时可用path: "$.field.sub"
指定 JSONPath
fields:
- name: tags # TAG 字段
type: tag
- name: price
type: numeric
- name: img_vec # 第二个向量
type: vector
attrs:
dims: 1024
algorithm: hnsw
distance_metric: l2
4. rvl stats
:实时观测索引健康度
rvl stats -i vectorizers
常用字段解读:
Key | 含义 | 关注点 |
---|---|---|
num_docs | 文档数量 | 与业务侧计数比对 |
percent_indexed | 已建立倒排比例 | <100% 说明索引ing |
vector_index_sz_mb | 向量索引占用 | 估算 vs. 实际差异 |
bytes_per_record_avg | 单记录平均大小 | 判断是否需压缩 |
当出现
hash_indexing_failures > 0
时,多为数据格式异常或内存不足。
5. 连接参数与多环境切换
用法 | 示例如下 |
---|---|
环境变量 | export REDIS_URL=redis://:pwd@host:6379/0 |
命令行覆盖 | rvl index listall --host 192.168.1.10 -p 6380 -a secret |
SSL | rvl stats -i vecidx --ssl --user alice -a pass123 |
CLI 参数优先级:--url
> --host/--port/--user/--password/--ssl
> REDIS_URL
> 默认 redis://localhost:6379
6. 常见错误排查
报错 | 根因 | 解决 |
---|---|---|
Error 403 authentication required | 未传密码 | -a <pwd> 或设置 REDIS_URL |
WRONGTYPE Operation against a key holding the wrong kind of value | 同名键已存在非 HASH/JSON | 先 DEL key 或换 prefix |
Error 8 connecting to rediss:6379 | SSL 参数混用 | --ssl 时需 --host 指定域名/IP |
jsonpath error | JSONPath 书写不符 | $.field 开头,数组用 [*] |
7. 总结与实践建议
- CLI + YAML = 超快原型
不写一行 Python 代码即可建索引、调参、观测。 - 开发删索引用
delete
,生产用destroy
慎重
先备份或确认 Key 前缀,避免误删数据。 - 监控
vector_index_sz_mb
与inverted_sz_mb
及时扩容或调整dims / algorithm / M
。 - 多环境靠参数模板化
把常用连接写进makefile
/shell alias
,一键切换。 - Schema 迭代优先选“新建 + ALIAS 切换”
避免FT.ALTER
局限,且可随时回滚。
自此,你已具备用 RedisVL CLI 完成向量索引全生命周期管理的核心能力。继续深挖?试试:
- 给 Schema 加
hnsw
,把ef_construction / M
调到极致性能- 用
redisvl[all]
自带的 HuggingFace 模型一键向量化文本- 将 CLI 操作编入 CI,自动回滚失败的索引变更
Enjoy Redis Vector Power!