• À propos de Milvus
  • Commencer
  • Concepts
  • Guide de l'utilisateur
  • Importation de données
  • Outils d'IA
  • Guide d'administration
  • Outils
  • Intégrations
  • Tutoriels
  • FAQ
  • API Reference

STL_SORT

L'index STL_SORT est un type d'index spécialement conçu pour améliorer les performances des requêtes sur les champs numériques (INT8, INT16, etc.), les champs VARCHAR ou les champs TIMESTAMPTZ dans Milvus en organisant les données dans un ordre trié.

Utilisez l'index STL_SORT si vous exécutez fréquemment des requêtes avec :

  • Filtrage par comparaison avec les opérateurs ==, !=, >, <, >=, et <=

  • Filtrage par plage avec les opérateurs IN et LIKE

Types de données pris en charge

Fonctionnement

Milvus met en œuvre STL_SORT en deux phases :

  1. Construction de l'index

    • Pendant l'ingestion, Milvus collecte toutes les valeurs du champ indexé.

    • Les valeurs sont triées par ordre croissant à l'aide de la fonction std::sort de la STL C++.

    • Chaque valeur est associée à l'ID de l'entité et le tableau trié est conservé en tant qu'index.

  2. Accélérer les requêtes

    • Au moment de la requête, Milvus utilise la recherche binaire(std::lower_bound et std::upper_bound) sur le tableau trié.

    • Pour l'égalité, Milvus trouve rapidement toutes les valeurs correspondantes.

    • Pour les plages, Milvus localise les positions de début et de fin et renvoie toutes les valeurs intermédiaires.

    • Les identifiants des entités correspondantes sont transmis à l'exécuteur de la requête pour l'assemblage du résultat final.

Cela réduit la complexité de la requête de O(n) (balayage complet) à O(log n + m), où m est le nombre de correspondances.

Créer un index STL_SORT

Vous pouvez créer un index STL_SORT sur un champ numérique ou TIMESTAMPTZ. Aucun paramètre supplémentaire n'est nécessaire.

L'exemple ci-dessous montre comment créer un index STL_SORT sur un champ TIMESTAMPTZ:

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
)

Supprimer un index

Utilisez la méthode drop_index() pour supprimer un index existant d'une collection.

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

Notes d'utilisation

  • Types de champs : Fonctionne avec les champs numériques et TIMESTAMPTZ. Pour plus d'informations sur les types de données, reportez-vous aux rubriques Boolean & Number et TIMESTAMPTZ Field.

  • Paramètres : Aucun paramètre d'index n'est nécessaire.

  • Mmap non pris en charge : Le mode "Memory-mapped" n'est pas disponible pour STL_SORT.

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
Feedback

Cette page a-t - elle été utile ?