您的位置:首页 > 汽车 > 时评 > Milvus进行向量存储

Milvus进行向量存储

2024/11/17 14:39:48 来源:https://blog.csdn.net/weixin_61468920/article/details/139532054  浏览:    关键词:Milvus进行向量存储

使用Milvus进行向量存储的步骤可以归纳为以下几个主要部分:

一、环境准备

  1. 安装Milvus:确保Milvus服务已经安装并正在运行。Milvus支持多种操作系统,如Linux、Windows、macOS等,你可以从官方网站下载最新的安装包,也可以通过Docker容器运行。
  2. 安装Python客户端:如果你打算使用Python进行开发,需要安装Milvus的Python客户端(PyMilvus)。

二、创建集合

  1. 定义集合模式:集合由多个字段组成,包括主键字段和向量字段。你需要定义这些字段,并指定它们的名称、数据类型和维度等参数。例如,定义一个名为"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)
]
  1. 创建集合:使用定义的字段模式创建集合。

 

python复制代码

collection = Collection(name="my_collection", schema=fields)

三、插入向量数据

  1. 准备数据:将你的向量数据打包成Numpy数组或内存缓冲区。每个向量都应该有一个唯一的ID,以便后续检索。

  2. 插入数据:使用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)])

四、构建索引(可选)

  1. 选择索引类型:Milvus提供了多种索引选择,包括向量索引、浮点型索引和整型索引。你需要根据你的需求选择最合适的索引类型。

  2. 构建索引:使用Milvus的索引构建接口为数据构建索引。这可以加速后续的相似度搜索操作。

 

python复制代码

# 假设我们选择IVF_FLAT索引类型,并设置nlist为16384
collection.create_index("embedding", IndexType.IVF_FLAT, params={"nlist": 16384})

五、执行相似度搜索

  1. 构造搜索查询:指定要搜索的集合、查询向量、搜索算法(如欧氏距离、余弦相似度等)和其他参数。

  2. 执行搜索:使用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的官方文档以获取最准确和最新的信息。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com