• 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的官方文档以获取最准确和最新的信息。

  • 相关阅读:
    VMware Aria Automation 8.10 - 现代基础架构自动化平台
    国民级应用,怎么让14亿终端都用上AI?
    java基于springboot+vue+elementui的口腔牙齿卫生知识防护网站
    16 Python使用多线程
    Django 教程之具有动态表单选择的 Django 多步表单的完整示例
    leetcode解题思路分析(一百二十八)1053 - 1078 题
    同态加密为什么能被称为密码学的“圣杯”?
    基于Springboot+Vue的社区医院管理系统
    Sentinel
    Java集合
  • 原文地址:https://blog.csdn.net/weixin_61468920/article/details/139532054