初见向量引擎:RediSearch 和 Milvus

建索引 Redis 够用了。一旦需要搜索向量,就可以考虑使用向量引擎。

GitHub 项目地址:redis-util

本文干了啥:

  • 使用容器启动 Redis,并将数据卷挂载到本地
  • 通过 Redis 的 Python API 做基础的 CRUD 操作
  • 在不借助任何插件的情况下,使用原生 Redis 存取向量
  • 使用 RediSearch 存取向量,并获取 TOP N 最近邻向量
  • 尝试使用向量引擎 Milvus 的一些基础功能
  • 基于 Redis “自制”向量引擎,支持设置索引过期时间,支持生成文本嵌入

✨ 注意:运行以下代码依赖 util.py 文件。

一、安装 Redis

  1. 下载镜像文件
  2. 启动容器
  3. 交互式 shell
  4. 测试连接
  5. 处理 CURD 逻辑


二、用 Redis 存取 Embedding

  1. Word2vec 生成 Embedding
  2. 数据类型转换
  3. 存取 Embedding


三、RediSearch 模块

  1. 安装 Docker 镜像
  2. 存取向量
  3. 查找最近邻向量


四、开源向量引擎 Milvus

Milvue 是一款为机器学习设计的开源向量数据库,支持存储、查询、索引向量。Milvus 的核心功能是向量相似度搜索,它使用近似最近邻搜索算法来加速搜索过程,找到与查询向量最相似的向量。Milvus 支持多种索引类型,包括 FLAT、IVF_FLAT、IVF_SQ8、IVF_PQ、HNSW 和 ANNOY,以适应不同的查询需求和数据规模。



五、自制强化版向量引擎

Milvue 至今仍不支持设置索引过期时间。对我而言这是很重要的功能。毕竟本地机器内存有限,你也不想用着用着突然死机对吧。但我又眼馋 Milvue 方便的嵌入生成功能。怎么办呢?只能自己动手,写一个拥有嵌入生成功能的 Redis 向量索引工具。

  1. 预训练模型 all-MiniLM-L6-v2
  2. 自制向量引擎