Download as pdf or txt
Download as pdf or txt
You are on page 1of 10

向量数据库

--Milvus基础操作
主讲人:李 侃
目录

Content
• 管理Milvus连接
• 创建集合
• 插入实体
• 创建索引
• 向量搜索
• 删除实体
管理Milvus连接
创建连接
Milvus支持两个端口,端口19530和端口9091:
• 端口19530是用于gRPC的。当您使用不同的
Milvus SDK连接到Milvus服务器时,它是默
认端口。
• 端口9091是用于RESTful API的。当您使用
HTTP客户端连接到Milvus服务器时,它被
使用。

以下示例为通过PythonSDK连接到主机为
localhost,端口为19530或9091的Milvus服务器, 断开连接
并断开连接。如果连接被拒绝,请尝试取消对
应端口的阻止。

在进行任何Milvus操作前,请确保已经连接到
Milvus服务器。
创建集合
准备模式

集合由一个或多个分区组成。在创建新集合时,Milvus
会创建一个默认分区defaut。

以下示例构建了一个两个分片的集合,名为book,具有
名为book_id的主键字段,
名为word_count的INT64标量字段和名为book_intro的二
维浮点向量字段。
实际应用程序通常使用比示例更高维度的向量。

准备模式
需要创建的集合必须包含一个主键字段和一个向量字段。
INT64和String是主键字段支持的数据类型。 首先,准 使用上述模式创建集合
备必要的参数,包括字段模式、集合模式和集合名称。
插入实体

以下示例插入2000行随机生成的数据作为示例数据。
实际应用程序可能会使用比示例更高的维度向量。
插入数据
准备数据
首先,准备要插入的数据。要插入的数据类型必须 将数据插入到集合中。
与集合的模式匹配,否则Milvus将引发异常。
通过指定partition_name,您可以选择将数据插
入到哪个分区(可选)
创建索引

向量索引是用于加速向量相似性搜索的元数据的组 建立索引
织单元。如果没有在向量上构建索引,Milvus将默 通过指定向量字段名称和索引参数来
认执行暴力搜索。 建立索引。
默认情况下,Milvus不会对小于1,024行的段进行索
引。
要更改此参数,请在milvus.yaml中配置
rootCoord.minSegmentSizeToEnableIndex。

以下示例使用欧几里得距离(L2)作为相似度指标
构建了一个1,024个簇的IVF_FLAT索引。

参数准备
向量搜索(1/2)

在Milvus中进行向量相似度搜索时, 加载集合
会计算查询向量和集合中具有指定相似性 在Milvus中,所有的搜索和查询操作都在内存中执行。
在进行向量相似度搜索之前,需要将集合加载到内存中。
度量的向量之间的距离,并返回最相似的
结果。通过指定一个布尔表达式来过滤标
量字段或主键字段,可以执行混合搜索。

以下示例展示了如何对一个包含2000行书
籍ID(主键)、字数(标量字段)
准备搜索参数
和书籍介绍(向量字段)的数据集执行向 准备适合你的搜索场景的参数。 以下示例定义搜索将
量相似度搜索,模拟搜索基于向量化介绍 使用欧几里得距离计算距离, 并从由IVF_FLAT索引
的特定书籍的情况。 构建的最近的10个聚类中检索向量。
Milvus将根据定义的查询向量和搜索参数
返回最相似的结果。
向量搜索(2/2)

使用Milvus执行向量搜索。
若要在特定的分区(partition)中进行搜索, 请 检查最相似向量的主键值和他们之间的距离
指定分区名称列表。

Milvus支持为搜索设置一致性级别。此主题中的
示例将一致性级别设置为``Strong``。
也可以将一致性级别设置为``Bounded``、
``Session``或``Eventually``。

在搜索完成后,释放在Milvus中加载的集合以减少内存消耗。
删除实体

Milvus支持通过布尔表达式筛选主键删除实体。 以下示例筛选主键值为0和1的数据
• 如果一致性级别低于Strong,则删除的实体
仍然可以在删除后立即检索。
• 超出Time Travel预设时间范围的删除的实
体将无法再次检索。
• 频繁的删除操作将影响系统性能。

准备布尔表达式
准备筛选要删除的实体的布尔表达式。
Milvus仅支持删除具有明确定义主键的实 删除结果
体, 这只需要在术语表达式中使用in就能实
现。 其他操作符只能用于向量搜索中的查询或
标量过滤。
The End

You might also like