ToB企服应用市场:ToB评测及商务社交产业平台

标题: 开源的向量数据库Milvus [打印本页]

作者: 南七星之家    时间: 7 天前
标题: 开源的向量数据库Milvus
Milvus是一款开源的向量数据库,专为处理处罚向量搜刮任务而设计,尤其善于处理处罚大规模向量数据的相似度检索。
官网地点:https://milvus.io/

以下是关于Milvus的详细介绍:
一、基本概念


二、体系架构与重要组件

Milvus的体系架构遵照数据流和控制流分离的原则,团体分为四个层次:
三、核心功能


四、应用场景

Milvus因其高效的向量搜刮能力,广泛应用于以下场景:
五、上风与特点

六、开发示例

使用Python联合Milvus实现相似性搜刮通常涉及几个关键步骤:安装Milvus和相应的Python客户端库、连接到Milvus服务器、创建集合(Collection)、插入向量数据、构建索引以及执行相似性搜刮。以下是一个基本的流程示例:
1. 安装Milvus和Python客户端

起首,确保你已经安装了Milvus服务器,并且它正在运行。然后,安装Milvus的Python客户端库pymilvus。
  1. pip install pymilvus
复制代码
2. 连接到Milvus服务器

使用pymilvus客户端连接到你的Milvus服务器。
  1. from pymilvus import connections, Collection, FieldSchema, CollectionSchema, DataType  
  2.   
  3. # 连接到Milvus服务器  
  4. connections.connect(host='localhost', port='19530')
复制代码
3. 创建集合

在Milvus中创建一个新的集合,用于存储向量数据。
  1. # 定义字段模式  
  2. dim = 128  # 向量的维度  
  3. fields = [  
  4.     FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=True),  
  5.     FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=dim)  
  6. ]  
  7.   
  8. # 定义集合模式  
  9. schema = CollectionSchema(fields=fields, description="Test collection")  
  10.   
  11. # 创建集合  
  12. collection = Collection("test_collection", schema=schema)
复制代码
4. 插入向量数据

向集合中插入一些向量数据。
  1. import numpy as np  
  2.   
  3. # 生成一些随机向量数据  
  4. vectors = [np.random.random(dim).astype(np.float32) for _ in range(100)]  
  5.   
  6. # 插入数据  
  7. collection.insert([{"id": None, "embedding": vec.tolist()} for vec in vectors])  
  8. collection.flush()  # 确保数据被写入存储
复制代码
5. 构建索引

为了加快相似性搜刮,可以在向量字段上构建索引。
  1. # 假设使用IVF_FLAT索引  
  2. index_params = {"nlist": 16384}  
  3. collection.create_index("embedding", "IVF_FLAT", index_params)
复制代码
6. 执行相似性搜刮

现在,你可以使用一个查询向量来执行相似性搜刮。
  1. # 定义一个查询向量  
  2. query_vec = np.random.random(dim).astype(np.float32)  
  3.   
  4. # 执行搜索  
  5. top_k = 10  # 返回最相似的10个结果  
  6. search_params = {"metric_type": "L2", "params": {"nprobe": 16}}  
  7. results = collection.search("embedding", [query_vec.tolist()], top_k, search_params)  
  8.   
  9. # 打印结果  
  10. for result in results[0]:  
  11.     print(f"ID: {result.id}, Distance: {result.distance}")
复制代码
7. 清算

完成操作后,可以删除集合或关闭与Milvus的连接。
  1. # 删除集合  
  2. collection.drop()  
  3.   
  4. # 关闭连接  
  5. connections.disconnect()
复制代码
综上所述,Milvus作为一款开源的向量数据库,在处理处罚大规模向量搜刮任务中表现出色,广泛应用于图像、音频、文本和保举体系等范畴。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4