IBM Cloud Docs
与 Milvus 合作

与 Milvus 合作

在 Milvus 中创建集合

在 Milvus 中,集合用于存储和管理实体。 Milvus 中的 集合 等同于关系数据库管理系统 (RDBMS) 中的表。

请参阅 创建集合 以在 Milvus 中创建集合。

在 Milvus 中插入数据

Milvus 支持除主键字段以外的标量字段的缺省值。 在数据插入期间,可以将某些字段保留为空。

有关详细信息,请参阅For more information, see 插入条目

建议分批插入数据,原因如下:

  • 单个 GRPC API 调用中可提取的向量数量受以下限制:Kafka。 在 IBM Cloud中,消息大小的最大限制限制为 1 MB。

  • 一次可插入的最大行数取决于您尝试采集的数据的总大小。 随着向量维数的增加和行中非向量字段的存在,精确数字会减少。

使用批量插入 API 来插入大于 500,000 个向量的数据集。 在采集更大的数据集时,批量插入 API 的性能优于批量插入 API。 如果要使用批处理插入 API,请在每 500,000 行之后手动清空集合。 有关详细信息,请参阅For more information, see 批量插入 API

在 Milvus 中创建索引

在 Milvus 中执行近似最近邻元素 (ANN) 搜索之前,请创建索引。

IBM 正式支持以下索引:

未在此列表中列出的索引可能有效,但 IBM不会验证这些索引。

  • 新南威尔士州
  • SCANN
  • FLAT
  • IVF_FLAT
  • IVF_PQ

您可以通过指定向量字段名称和索引参数来创建索引。 有关详细信息,请参阅For more information, see 索引向量场

在 Milvus 中执行向量相似性搜索

在 Milvus 中,您可以在为搜索方案准备参数后执行向量相似性搜索。

在 Milvus 中执行基于标量过滤的查询

在 Milvus 中,您可以执行基于标量过滤的查询。 有关详细信息,请参阅For more information, see 获取和标量查询

您可以执行以下搜索类型:

  • 范围搜索:查找距离查询向量特定距离范围内的向量。 有关详细信息,请参阅For more information, see 范围搜索
  • 分组检索:按照特定字段获取结果,保证结果的多样性。 有关详细信息,请参阅For more information, see 分组搜索

在大型数据集上运行具有标量过滤的搜索查询时,调整限制参数以有效管理查询结果很重要。 使用以下方法来设置 limit 范围:

hello_milvus.query(expr=query_condition, output_fields=["random", "embeddings"], limit=100,offset=0)

值的总和 limitoffset 参数必须在范围内[1,16384]。

使用主键从 Milvus 中删除实体

在 Milvus 中,您可以使用主键来删除实体。 准备过滤要删除的实体的布尔表达式。

有关更多信息,请参阅 删除实体

从 Milvus 中删除集合

从 Milvus 删除集合是不可逆的。 无法恢复已删除的数据。

在您的 .ipynb 或 Python 脚本中添加以下内容,以删除一个集合。

from pymilvus import utility
utility.drop_collection(<collection name>)

最佳实践

以下是一些最佳做法:

  • 如果有较长的 Varchar 字段(大于 256 个字符),请将非向量字段保留在 Milvus 之外。 您可以将它们保存在 COS 存储桶或存储桶中并执行参考搜索。
  • 确保PyMilvus版本是2.4.0或更高版本。 米尔武斯2.4.0或更高版本支持稀疏向量搜索、混合搜索(sparse_dense ) 以及多向量搜索。
  • 使用批量插入加载集合时,请遵循以下模式:批量插入,释放内存,然后重复该过程。
  • 不要同时并行提取所有集合。 按顺序摄取并在摄取之间冲洗。
  • 每个集合的最大尺寸应与 T 恤尺寸所支持的最大矢量数量相对应。
  • 如果加载了多个集合或分区,请确保所有加载实体中的向量总和不超过 T-shirt 大小的限制。 只要加载的矢量数量在限制范围内,您仍然可以存储比 T 恤尺寸限制更多的矢量。

在 Milvus 升级过程中,响应可能会稍有延迟,约为 20 秒。 正在进行的搜索和向上插入查询可能会失败。 您可以立即重试查询。