建索引 Redis 够用了。一旦需要搜索向量,就可以考虑使用向量引擎。
GitHub 项目地址:redis-util
本文干了啥:
- 使用容器启动 Redis,并将数据卷挂载到本地
- 通过 Redis 的 Python API 做基础的 CRUD 操作
- 在不借助任何插件的情况下,使用原生 Redis 存取向量
- 使用 RediSearch 存取向量,并获取 TOP N 最近邻向量
- 尝试使用向量引擎 Milvus 的一些基础功能
- 基于 Redis “自制”向量引擎,支持设置索引过期时间,支持生成文本嵌入
✨ 注意:运行以下代码依赖 util.py 文件。
一、安装 Redis
- 下载镜像文件
- 启动容器
- 交互式 shell
- 测试连接
- 处理 CURD 逻辑
二、用 Redis 存取 Embedding
- Word2vec 生成 Embedding
- 数据类型转换
- 存取 Embedding
三、RediSearch 模块
- 安装 Docker 镜像
- 存取向量
- 查找最近邻向量
四、开源向量引擎 Milvus
Milvue 是一款为机器学习设计的开源向量数据库,支持存储、查询、索引向量。Milvus 的核心功能是向量相似度搜索,它使用近似最近邻搜索算法来加速搜索过程,找到与查询向量最相似的向量。Milvus 支持多种索引类型,包括 FLAT、IVF_FLAT、IVF_SQ8、IVF_PQ、HNSW 和 ANNOY,以适应不同的查询需求和数据规模。
五、自制强化版向量引擎
Milvue 至今仍不支持设置索引过期时间。对我而言这是很重要的功能。毕竟本地机器内存有限,你也不想用着用着突然死机对吧。但我又眼馋 Milvue 方便的嵌入生成功能。怎么办呢?只能自己动手,写一个拥有嵌入生成功能的 Redis 向量索引工具。
- 预训练模型
all-MiniLM-L6-v2
- 自制向量引擎