与 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)
值的总和 limit
和 offset
参数必须在范围内[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 秒。 正在进行的搜索和向上插入查询可能会失败。 您可以立即重试查询。