Redis AI func #377
AlexStocks
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
截至 2026 年 7 月 26 日,Redis 8.8.1 确实已经发布;但你这段描述把四套不同层级的能力混在了一起:
最重要的结论是:
一、先校正你描述中的几个关键点
Array 可以用于:
但它不自动提供:
因此不能把 Array 本身等价为“Agent Memory”。
八、对 Kiwi 项目的特别说明
当前 Kiwi 只是把 Redis 8.8.1 exact tag/commit 作为兼容性 Oracle 和接口设计基线,不代表 Kiwi 已经实现 Redis 8.8.1 的全部数据类型和 Redis Stack 能力。
项目当前明确把以下内容列为非目标:
对应本地依据见 [PROJECT.md (line 106)](/D:/test/github/kiwi/.planning/PROJECT.md:106);当前仍处于 Cache OFF、兼容性和稳定性基线阶段,见 [STATE.md (line 17)](/D:/test/github/kiwi/.planning/STATE.md:17)。
所以:
本轮只做了官方文档、Redis 8.8.1 exact tag 源码和 RedisVL 0.23.0 API 的只读核查,没有修改 Kiwi 文件,也没有运行 Redis 服务端集成测试。上述命令语法与版本边界的置信度高;具体延迟、召回率和总内存占用仍需使用你的 embedding 模型和真实数据集基准测试。
截至 2026 年 7 月 26 日,Redis 8.8.1 确实已经发布;但你这段描述把四套不同层级的能力混在了一起:最重要的结论是:
一、先校正你描述中的几个关键点
TRUTH可以临时执行精确线性扫描,但没有可选的持久化 FLAT 索引。FLAT、HNSW 等索引类型属于 Redis Query Engine。[Vector Set 官方文档](https://redis.io/docs/latest/develop/data-types/vector-sets/)、[[Query Engine 向量索引](https://redis.io/docs/latest/develop/ai/search-and-query/vectors/)](https://redis.io/docs/latest/develop/ai/search-and-query/vectors/)[FT.HYBRID](https://redis.io/docs/latest/commands/ft.hybrid/),不是VSIM的能力。FT.HYBRIDSemanticCache使用你自己的 Redis 和 Search 索引;LangCacheSemanticCache调用托管的 LangCache HTTP API。[RedisVL SemanticCache](https://docs.redisvl.com/en/latest/user_guide/03_llmcache.html)、[[LangCache 后端](https://docs.redisvl.com/en/latest/user_guide/13_langcache_semantic_cache.html)](https://docs.redisvl.com/en/latest/user_guide/13_langcache_semantic_cache.html)Redis 8.8.1 的上游 tag 对应 commit:
VADD、VSIM从 Redis 8.0.0 起存在;Array 的AR*命令从 Redis 8.8.0 起存在。二、Vector Set 到底是什么
Vector Set 是一个独立 Redis key 类型:
它比较像“向量版 Sorted Set”:
VADD添加;VSIM搜索相似元素;VSETATTR附加 JSON 属性;FILTER对属性进行过滤;它适合:
如果你还需要 BM25 全文检索、标签、数值范围、JSONPath、聚合、RRF,就应该使用 Redis Query Engine,而不是只用 Vector Set。
三、Vector Set 核心命令语法
1.
[VADD](https://redis.io/docs/latest/commands/vadd/)概念化语法如下:
官方参考:VADD
最简单的写法:
这里:
第一次
VADD会自动创建 Vector Set。检查类型、数量和维度:
预期:
2.
[VSIM](https://redis.io/docs/latest/commands/vsim/)概念化语法:
官方参考:VSIM
按查询向量搜索:
含义是:在
points中找出最接近[0.9, 0.1]的三个元素,并返回相似度分数。也可以用集合中已有元素作为查询向量:
这种方式不需要客户端重新发送
pt:A的向量。3. 属性与过滤
写入向量时直接附加属性:
也可以后补或更新属性:
读取属性:
过滤搜索:
组合过滤:
需要注意:Vector Set 的属性过滤是轻量标量过滤,不等价于 Redis Query Engine 的完整全文、JSON、标签和聚合查询体系。
4. 量化模式
Vector Set 提供三种向量存储模式:
Q8NOQUANTBIN量化类型实际上是整个 Vector Set 的格式属性,应在这个 key 的第一次
VADD时确定。不要试图让同一个 Vector Set 中的不同元素使用不同量化格式。Q8和BIN的内存比例仅针对向量载荷。Vector Set 的总内存还包括:因此不能把“向量缩小四倍”直接等价为“Redis key 总内存缩小 75%”。
5. 降维:
REDUCE假设原始 embedding 有 768 维,希望随机投影到 256 维:
检查实际存储维度:
返回:
后续查询仍然提供原始 768 维向量,Redis 使用首次创建 Vector Set 时保存的投影矩阵执行相同投影。
需要注意:
REDUCE必须出现在VALUES或FP32之前;6. 精确扫描:
TRUTH正常
VSIM使用 HNSW 近似搜索:加入
TRUTH:会绕过 HNSW,对全部元素进行 O(N) 精确线性扫描。
主要用途:
不应把
TRUTH当成大型集合的常规生产查询方式。7. 其他常用命令
四、Python 操作 Vector Set
如果客户端暂时没有封装对应方法,最稳妥的方式是使用
execute_command()。安装:
示例:
这里必须注意:
"<f4";decode_responses=False;WITHSCORES + WITHATTRIBS的结果结构不同;如果使用支持 Vector Set 的新版
redis-py,官方文档还提供了更高层的接口:但在跨版本应用中,
execute_command()更容易明确控制具体 Redis 命令协议。五、RedisVL 语义缓存怎么写
这里要先明确:
它更适合 LLM 语义缓存,因为它需要:
1. 安装
如果使用 Hugging Face 本地向量模型:
pip install "redisvl[sentence-transformers]"截至核查时间,RedisVL 最新官方 release 是 0.23.0。[RedisVL v0.23.0](https://github.com/redis/redis-vl-python/releases/tag/v0.23.0)
2. 创建语义缓存
distance_threshold是余弦距离阈值:它不是“相似度达到 0.1”,而是“距离不能超过 0.1”。
3. Read-through 缓存流程
调用:
第二个问题可能命中第一个问题的语义缓存。
4. 多租户和权限隔离
不能只根据 prompt 相似度返回缓存,否则可能出现跨用户数据泄露。
创建可过滤字段:
写入:
查询:
生产语义缓存至少应隔离:
对于账户、医疗、交易、权限相关回答,只按语义相似度命中是不安全的。
5. TTL、阈值和清理
删除特定条目:
六、托管 Redis LangCache 是另一条路径
如果不想自己维护 Redis Search 索引,可以使用托管 LangCache:
pip install "redisvl[langcache]"示例:
它与本地
SemanticCache的主要区别:SemanticCacheLangCacheSemanticCacheFilterExpression七、什么时候选 Vector Set,什么时候选 RedisVL/Search
VADD/VSIMFT.HYBRIDSemanticCacheLangCacheSemanticCacheArray 可以用于:
但它不自动提供:
因此不能把 Array 本身等价为“Agent Memory”。
八、对 Kiwi 项目的特别说明
当前 Kiwi 只是把 Redis 8.8.1 exact tag/commit 作为兼容性 Oracle 和接口设计基线,不代表 Kiwi 已经实现 Redis 8.8.1 的全部数据类型和 Redis Stack 能力。
项目当前明确把以下内容列为非目标:
对应本地依据见 PROJECT.md;当前仍处于 Cache OFF、兼容性和稳定性基线阶段,见 STATE.md。
所以:
本轮只做了官方文档、Redis 8.8.1 exact tag 源码和 RedisVL 0.23.0 API 的只读核查,没有修改 Kiwi 文件,也没有运行 Redis 服务端集成测试。上述命令语法与版本边界的置信度高;具体延迟、召回率和总内存占用仍需使用你的 embedding 模型和真实数据集基准测试。
All reactions