• Über Milvus
  • Los geht's
  • Konzepte
  • Benutzerhandbuch
    • Sammlungen
    • Schema & Datenfelder
    • Einfügen & Löschen
    • Indizes
    • Suche
    • Einbettungen & Reranking
    • Optimierung der Speicherung
  • Datenimport
  • AI-Tools
  • Leitfaden für die Verwaltung
  • Werkzeuge
  • Integrationen
  • Anleitungen
  • FAQs
  • API Reference

SPARSE_INVERTED_INDEX

Der SPARSE_INVERTED_INDEX Index ist ein Index-Typ, der von Milvus verwendet wird, um spärliche Vektoren effizient zu speichern und zu durchsuchen. Dieser Indextyp nutzt die Prinzipien der invertierten Indizierung, um eine hocheffiziente Suchstruktur für spärliche Daten zu erstellen. Für weitere Informationen, siehe INVERTED.

Index erstellen

Um einen SPARSE_INVERTED_INDEX Index für ein spärliches Vektorfeld in Milvus zu erstellen, verwenden Sie die Methode add_index() und geben Sie index_type, metric_type und zusätzliche Parameter für den Index an.

from pymilvus import MilvusClient

# Prepare index building params
index_params = MilvusClient.prepare_index_params()

index_params.add_index(
    field_name="your_sparse_vector_field_name", # Name of the vector field to be indexed
    index_type="SPARSE_INVERTED_INDEX", # Type of the index to create
    index_name="sparse_inverted_index", # Name of the index to create
    metric_type="IP", # Metric type used to measure similarity
    params={"inverted_index_algo": "DAAT_MAXSCORE"}, # Algorithm used for building and querying the index
)

In dieser Konfiguration:

  • index_type: Der Typ des zu erstellenden Index. In diesem Beispiel setzen Sie den Wert auf SPARSE_INVERTED_INDEX.

  • metric_type: Die Metrik, die zur Berechnung der Ähnlichkeit zwischen spärlichen Vektoren verwendet wird. Gültige Werte:

    • IP (Inneres Produkt): Misst die Ähnlichkeit anhand des Punktprodukts.

    • BM25: Wird in der Regel für die Volltextsuche verwendet, wobei der Schwerpunkt auf der textuellen Ähnlichkeit liegt.

      Weitere Einzelheiten finden Sie unter Metrische Typen und Volltextsuche.

  • params.inverted_index_algo: Der Algorithmus, der für den Aufbau und die Abfrage des Indexes verwendet wird. Gültige Werte:

    • "DAAT_MAXSCORE" (Standard): Optimierte Document-at-a-Time (DAAT)-Abfrageverarbeitung unter Verwendung des MaxScore-Algorithmus. MaxScore bietet eine bessere Leistung für hohe k-Werte oder Abfragen mit vielen Begriffen, indem Begriffe und Dokumente übersprungen werden, die wahrscheinlich nur geringe Auswirkungen haben. Dies wird erreicht, indem Begriffe auf der Grundlage ihrer maximalen Trefferquote in wesentliche und nicht wesentliche Gruppen unterteilt werden, wobei der Schwerpunkt auf Begriffen liegt, die zu den Top-k-Ergebnissen beitragen können.

    • "DAAT_WAND": Optimierte Verarbeitung von DAAT-Anfragen mit dem WAND-Algorithmus. WAND wertet weniger Trefferdokumente aus, indem es die maximalen Impact-Scores nutzt, um nicht konkurrierende Dokumente zu überspringen, aber es hat einen höheren Overhead pro Treffer. Dadurch ist WAND effizienter für Abfragen mit kleinen k-Werten oder kurzen Abfragen, bei denen das Überspringen von Dokumenten praktikabler ist.

    • "TAAT_NAIVE": Basic Term-at-a-Time (TAAT) Abfrageverarbeitung. Obwohl er im Vergleich zu DAAT_MAXSCORE und DAAT_WAND langsamer ist, bietet TAAT_NAIVE einen einzigartigen Vorteil. Im Gegensatz zu DAAT-Algorithmen, die zwischengespeicherte Maximalwerte verwenden, die unabhängig von Änderungen des globalen Sammelparameters (avgdl) statisch bleiben, passt sich TAAT_NAIVE dynamisch an solche Änderungen an.

    Weitere Informationen über die für den Index SPARSE_INVERTED_INDEX verfügbaren Erstellungsparameter finden Sie unter Indexerstellungsparameter.

Sobald die Indexparameter konfiguriert sind, können Sie den Index erstellen, indem Sie die Methode create_index() direkt verwenden oder die Indexparameter in der Methode create_collection übergeben. Weitere Informationen finden Sie unter Sammlung erstellen.

Suche im Index

Sobald der Index erstellt und die Entitäten eingefügt sind, können Sie Ähnlichkeitssuchen im Index durchführen.

# Prepare the query vector
query_vector = [{1: 0.2, 50: 0.4, 1000: 0.7}]

res = MilvusClient.search(
    collection_name="your_collection_name", # Collection name
    anns_field="vector_field",  # Vector field name
    data=query_vector,  # Query vector
    limit=3,  # TopK results to return
)

Weitere Suchparameter, die für den Index SPARSE_INVERTED_INDEX verfügbar sind, finden Sie unter Indexspezifische Suchparameter.

Index-Parameter

Dieser Abschnitt bietet einen Überblick über die Parameter, die für den Aufbau eines Index und die Durchführung von Suchvorgängen im Index verwendet werden.

Indexaufbau-Parameter

In der folgenden Tabelle sind die Parameter aufgeführt, die in params beim Aufbau eines Index konfiguriert werden können.

Parameter

Beschreibung

Wertebereich

Tuning-Vorschlag

inverted_index_algo

Der Algorithmus, der für den Aufbau und die Abfrage des Indexes verwendet wird. Er bestimmt, wie der Index Abfragen verarbeitet.

"DAAT_MAXSCORE" (Voreinstellung), "DAAT_WAND", "TAAT_NAIVE"

Verwenden Sie "DAAT_MAXSCORE" für Szenarien mit hohen k-Werten oder Abfragen mit vielen Begriffen, die vom Überspringen nicht-kompetitiver Dokumente profitieren können.

Wählen Sie "DAAT_WAND" für Abfragen mit kleinen k-Werten oder kurzen Abfragen, um ein effizienteres Überspringen zu ermöglichen.

Verwenden Sie "TAAT_NAIVE", wenn eine dynamische Anpassung an Sammlungsänderungen (z. B. avgdl) erforderlich ist.

Indexspezifische Suchparameter

In der folgenden Tabelle sind die Parameter aufgeführt, die in search_params.params für die Suche im Index konfiguriert werden können.

Parameter

Beschreibung

Wertebereich

Tuning-Vorschlag

drop_ratio_search

Der Anteil der kleinsten Werte, der bei der Suche ignoriert wird, um das Rauschen zu reduzieren.

Anteil zwischen 0,0 und 1,0 (z. B. werden bei 0,2 die kleinsten 20 % der Werte ignoriert)

Stellen Sie diesen Parameter auf der Grundlage der Sparsamkeit und des Rauschpegels Ihrer Abfragevektoren ein.

Dieser Parameter steuert den Anteil der Werte mit geringer Größe, die bei der Suche nicht berücksichtigt werden. Eine Erhöhung dieses Wertes (z. B. auf 0.2) kann das Rauschen reduzieren und die Suche auf signifikantere Komponenten konzentrieren, was die Präzision und Effizienz verbessern kann. Das Verwerfen von mehr Werten kann jedoch auch die Auffindbarkeit verringern, da potenziell relevante Signale ausgeschlossen werden. Wählen Sie einen Wert, der für Ihre Arbeitslast ein Gleichgewicht zwischen Auffindbarkeit und Genauigkeit herstellt.

Try Managed Milvus for Free

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

Get Started
Feedback

War diese Seite hilfreich?