AI 与 LLM检索

向量相似度搜索

按语义查找最相近的条目,可按标签过滤,就在存放这些条目本身的同一个引擎里。

索引
HNSW
平均搜索复杂度
O(log N)
种距离度量
3
步骤 1 / 6
创建索引

维度和度量在每个索引上固定。需要时可以调整 HNSW 参数。

示例会话playing
# 创建索引
hotkv> VSIM.CREATEINDEX products 3 METRIC COSINE
OK

使用真实 HotKV 命令和示例回复的动画演示。点击任意步骤即可跳转。 命令和回复保持英文,与您在 HotKV 中输入和看到的完全一致。

问题所在

语义搜索、“查找相似内容”和去重,归根结底都是同一个问题,即哪些已存储的条目与这一条最接近。要回答它,通常需要在主存储旁边再放一个专用的向量数据库,而每次商品更新都必须同时写入两边。

HotKV 如何解决

HotKV 把 HNSW 向量索引放在引擎内部。商品数据存放在普通的键中,向量以相同的键名建立索引,键上的标签让搜索可以限定在某个类目或某个租户之内。一条写入路径,一个需要运维的系统。

逐步演示

逐条命令,看看发生了什么

  1. 01

    创建索引

    维度和度量在每个索引上固定。需要时可以调整 HNSW 参数。

    VSIM.CREATEINDEX products 3 METRIC COSINE
  2. 02

    存储商品

    商品数据是一个普通的 hash,使用索引将要使用的键名。

    HSET sku:1 name "Trail runner" price 89
  3. 03

    打上标签

    键上的标签让向量搜索可以限定在某个类目之内。

    TAG.SET sku:1 shoes running
  4. 04

    为向量建立索引

    向量以相同的键名写入索引。

    VSIM.SET products sku:1 0.12 0.80 0.31
  5. 05

    在标签内按语义搜索

    查询文本被转换为嵌入,带有该标签的最近商品连同其距离一起返回。

    VSIM.SEARCH products 3 0.10 0.82 0.29 FILTER shoes
  6. 06

    获取要展示的内容

    结果是键名,因此在同一台服务器上再读一次就能拿到商品数据。

    HGETALL sku:1
适用场景

真实场景

电商搜索

购物者用自己的话输入想要的东西。商品目录按语义搜索,并过滤到他们所在的类目和店铺。

重复检测

新的支持工单或商品信息与已有内容进行比较,近似重复项在人工看到之前就被合并。

图像与媒体相似度

来自图像模型的嵌入可以在整个素材库中找出视觉上相似的照片或片段。

内置功能

您将获得

HNSW 索引

近似最近邻搜索,在大型索引上依然快速,平均复杂度 O(log N)。

VSIM.CREATEINDEXVSIM.SEARCH

三种度量

余弦、L2 和内积,按索引选择。

METRIC

标签过滤

将搜索限定在带有所有给定标签的键上。

TAG.SETFILTER

持久化

索引和您的其他数据一样,保存在快照和 AOF 重写中。

VSIM.INFO

常见问题

HotKV 会生成嵌入吗?

不会。用您偏好的嵌入模型生成向量,再用 VSIM.SET 存储。

这和 RAG 管道有什么不同?

VSIM 是通用的向量索引。RAG 管道建立在同样的思路之上,并为文档加入了分块、元数据和混合关键词搜索。

哪些套餐包含此功能?

向量搜索和标签属于核心命令,所有套餐均可使用,无需许可证。

相关用例

在您自己的工作负载上试试

HotKV 兼容 Redis 协议,您可以把现有客户端指向它,运行这些相同的命令。