向量数据库Milvus简单上手

在Milvus,collectionclusterentities这几个术语有特定的含义:

  1. Collection

    • 一个collection是Milvus中存储向量数据的基本单位,类似于关系型数据库中的表(table)。每个collection由多个字段(field)组成,可以包含向量字段(用于存储向量数据)和标量字段(如数字、文本等用于存储描述性数据或元数据)。
    • 在上述代码中,创建了一个名为"hello_milvus"的collection,其中包含三个字段:主键字段pk(标识每个实体的唯一标识符)、一个双精度浮点数字段random以及一个浮点数向量字段embeddings
  2. Entities

    • entities是指存储在collection中的数据项,每个entity由一组字段值组成,可以理解为关系型数据库中的行(row)。在向量搜索和检索场景中,每个entity通常包含一个向量(如图像、文本的向量表示)和一些辅助信息(如ID、名称、其他描述性字段)。
    • 在上述代码示例中,每个entity都由一个唯一的pk、一个random值和一个8维的embeddings向量组成。这些entities被插入到"hello_milvus" collection中。
  3. Cluster

    • cluster在Milvus的上下文中通常指的是集群模式,即多个Milvus实例组成的集群,用于提高系统的可扩展性和可靠性。集群可以处理更大的数据量,提供更高的查询吞吐量,并支持容错和高可用性。
    • 集群部署可以根据实际需求配置,例如,可以配置读写分离、数据分片和副本,以满足不同的性能和可靠性要求。
    • 代码示例中没有直接提及到cluster的概念,但在实际部署中,Milvus可以配置为单实例模式或集群模式,以适应不同规模的应用需求。

总结来说,在Milvus中,collection是存储数据的容器,entities是collection中的数据项,而cluster指的是多个Milvus实例组成的集群环境。

安装

Server

二选一

Docker安装Stand alone版本

单机安装(非集群):https://milvus.io/docs/v2.2.x/install_standalone-docker.md

wget https://github.com/milvus-io/milvus/releases/download/v2.2.16/milvus-standalone-docker-compose.yml -O docker-compose.yml
sudo docker-compose up -d

pip 安装Lite版本

pip install milvus

启动

milvus-server

提示:使用Linux(WSL)跑lite版本比Windows平台更稳定。
实验平台:WSL

Python SDK

Pymilvus和Milvus Server版本对应关系
https://milvus.io/api-reference/pymilvus/v2.2.x/About.md
在这里插入图片描述

使用

引入pymilvus

from pymilvus import (
    connections,
    utility,
    FieldSchema, CollectionSchema, DataType,
    Collection,
)
  • connections

    • 作用:管理与Milvus服务器的连接。
    • 详解:提供了连接(connect)、断开连接(disconnect)和获取当前连接状态(如get_connection)等功能。它允许你指定Milvus服务器的地址和端口,以便与之建立连接。
  • utility

    • 作用:提供一系列实用功能,用于执行非CRUD(创建、读取、更新、删除)操作。
    • 详解:包括检查collection是否存在(has_collection)、列出所有collections(list_collections)、删除collection(drop_collection)、获取collection的信息和状态等辅助功能。
  • FieldSchema

    • 作用:定义collection中字段的模式。
    • 详解:用于创建字段的定义,包括字段名、数据类型(如INT64FLOATFLOAT_VECTOR等)、是否为主键、自动生成ID等。这是定义collection结构的基础部分。
  • CollectionSchema

    • 作用:定义collection的模式。
    • 详解:用于整合多个FieldSchema,创建一个完整的collection模式。这包括collection中的所有字段和它们的数据类型,以及collection的描述信息。
  • DataType

    • 作用:枚举定义了Milvus支持的数据类型。
    • 详解:提供了一系列预定义的数据类型常量,如FLOATINT64VARCHARFLOAT_VECTOR等,用于在定义FieldSchema时指定字段的数据类型。
  • Collection

    • 作用:代表Milvus中的一个collection,提供数据操作接口。
    • 详解:用于创建、删除、插入数据到collection、搜索、查询等操作。它是与Milvus数据库交互的主要接口,通过它可以对特定的collection执行大多数操作。

基本操作

连接服务器

connections.connect("default", host="127.0.0.1", port="19530")

判断名为hello_milvus的collection是否存在

utility.has_collection("hello_milvus")

创建一个collection schema

fields = [
    FieldSchema(name="pk", dtype=DataType.VARCHAR, is_primary=True, auto_id=False, max_length=100),
    FieldSchema(name="random", dtype=DataType.DOUBLE),
    FieldSchema(name="embeddings", dtype=DataType.FLOAT_VECTOR, dim=dim)
]

schema = CollectionSchema(fields, "hello_milvus is the simplest demo to introduce the APIs")

使用collection schema创建collection

hello_milvus = Collection("hello_milvus", schema, consistency_level="Strong")

同时,也可以使用Collection函数选中已有的collection

collection = Collection("hello_milvus")
  • 23
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值