使用Milvus进行向量存储的步骤可以归纳为以下几个主要部分:
一、环境准备
- 安装Milvus:确保Milvus服务已经安装并正在运行。Milvus支持多种操作系统,如Linux、Windows、macOS等,你可以从官方网站下载最新的安装包,也可以通过Docker容器运行。
- 安装Python客户端:如果你打算使用Python进行开发,需要安装Milvus的Python客户端(PyMilvus)。
二、创建集合
-
定义集合模式:集合由多个字段组成,包括主键字段和向量字段。你需要定义这些字段,并指定它们的名称、数据类型和维度等参数。例如,定义一个名为"my_collection"的集合,包含一个主键字段"id"和一个128维的浮点型向量字段"embedding"。
python复制代码
from pymilvus import Collection, FieldSchema, DataType | |
fields = [ | |
FieldSchema(name="id", dtype=DataType.INT64, is_primary=True), | |
FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128) | |
] |
-
创建集合:使用定义的字段模式创建集合。
python复制代码
collection = Collection(name="my_collection", schema=fields) |
三、插入向量数据
-
准备数据:将你的向量数据打包成Numpy数组或内存缓冲区。每个向量都应该有一个唯一的ID,以便后续检索。
-
插入数据:使用Milvus的插入接口将向量数据导入到集合中。你可以使用Python SDK的
insert
方法来实现这一点。
python复制代码
import numpy as np | |
# 假设我们有一个Numpy数组,其中包含一些向量数据 | |
vectors = np.random.rand(10, 128) # 10个128维的随机向量 | |
# 将向量数据插入到集合中 | |
collection.insert([{"id": i, "embedding": vectors[i].tolist()} for i in range(10)]) |
四、构建索引(可选)
-
选择索引类型:Milvus提供了多种索引选择,包括向量索引、浮点型索引和整型索引。你需要根据你的需求选择最合适的索引类型。
-
构建索引:使用Milvus的索引构建接口为数据构建索引。这可以加速后续的相似度搜索操作。
python复制代码
# 假设我们选择IVF_FLAT索引类型,并设置nlist为16384 | |
collection.create_index("embedding", IndexType.IVF_FLAT, params={"nlist": 16384}) |
五、执行相似度搜索
-
构造搜索查询:指定要搜索的集合、查询向量、搜索算法(如欧氏距离、余弦相似度等)和其他参数。
-
执行搜索:使用Milvus的搜索接口执行搜索操作。Milvus将返回匹配向量的ID和相似度分值。
python复制代码
# 假设我们有一个查询向量 | |
query_vector = np.random.rand(1, 128) | |
# 执行搜索,并限制返回结果的数量为5 | |
results = collection.search(query_vector.tolist(), "embedding", params={"top_k": 5}, metric_type="L2") | |
# 处理搜索结果... |
以上是使用Milvus进行向量存储的基本步骤。请注意,这些步骤可能因你的具体需求和Milvus的版本而有所不同。因此,建议参考Milvus的官方文档以获取最准确和最新的信息。