• 关于 Milvus
  • 开始
  • 概念
  • 用户指南
  • 数据导入
  • 人工智能工具
  • 管理指南
  • 工具
  • 集成
  • 教程
  • 常见问题
  • API Reference

STL_SORT

STL_SORT 索引是一种专门设计用于提高数值字段(INT8、INT16 等)、VARCHAR 字段或TIMESTAMPTZ 字段查询性能的索引类型,其方法是按排序顺序组织数据。

如果您经常运行以下查询,请使用STL_SORT 索引:

  • 使用==,!=,>,<,>=<= 操作符进行比较筛选

  • 使用INLIKE 操作符进行范围过滤

支持的数据类型

工作原理

Milvus 分两个阶段实现STL_SORT

  1. 建立索引

    • 在采集过程中,Milvus 会收集索引字段的所有值。

    • 这些值使用 C++ STL 的std::sort 按升序排序。

    • 每个值与其实体 ID 配对,排序后的数组作为索引持久化。

  2. 加速查询

    • 在查询时,Milvus 对排序数组使用二进制搜索(std::lower_boundstd::upper_ bound)。

    • 对于相等值,Milvus 能快速找到所有匹配值。

    • 对于范围,Milvus 会定位开始和结束位置,并返回两者之间的所有值。

    • 匹配的实体 ID 会被传递给查询执行器,以便组装最终结果。

这将查询复杂度从O(n)(全扫描)降低到O(log n + m),其中m是匹配数。

创建 STL_SORT 索引

您可以在数字或TIMESTAMPTZ 字段上创建STL_SORT 索引。无需额外参数。

下面的示例显示了如何在TIMESTAMPTZ 字段上创建STL_SORT 索引:

from pymilvus import MilvusClient

client = MilvusClient(uri="http://localhost:19530") # Replace with your server address

# Assume you have defined a TIMESTAMPTZ field named "tsz" in your collection schema

# Prepare index parameters
index_params = client.prepare_index_params()

# Add RTREE index on the "tsz" field
index_params.add_index(
    field_name="tsz",
    index_type="STL_SORT",   # Index for TIMESTAMPTZ
    index_name="tsz_index",  # Optional, name your index
    params={}                # No extra params needed
)

# Create the index on the collection
client.create_index(
    collection_name="tsz_demo",
    index_params=index_params
)

删除索引

使用drop_index() 方法从 Collections 中删除现有索引。

client.drop_index(
    collection_name="tsz_demo",   # Name of the collection
    index_name="tsz_index" # Name of the index to drop
)

使用说明

  • 字段类型:适用于数字和TIMESTAMPTZ 字段。有关数据类型的更多信息,请参阅布尔与数字以及TIMESTAMPTZ 字段

  • 参数:不需要索引参数。

  • 不支持内存映射: STL_SORT 不支持内存映射模式。

想要更快、更简单、更好用的 Milvus SaaS服务 ?

Zilliz Cloud是基于Milvus的全托管向量数据库,拥有更高性能,更易扩展,以及卓越性价比

免费试用 Zilliz Cloud
反馈

此页对您是否有帮助?