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 aufSPARSE_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 zuDAAT_MAXSCOREundDAAT_WANDlangsamer ist, bietetTAAT_NAIVEeinen einzigartigen Vorteil. Im Gegensatz zu DAAT-Algorithmen, die zwischengespeicherte Maximalwerte verwenden, die unabhängig von Änderungen des globalen Sammelparameters (avgdl) statisch bleiben, passt sichTAAT_NAIVEdynamisch an solche Änderungen an.
Weitere Informationen über die für den Index
SPARSE_INVERTED_INDEXverfü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 |
|---|---|---|---|
|
Der Algorithmus, der für den Aufbau und die Abfrage des Indexes verwendet wird. Er bestimmt, wie der Index Abfragen verarbeitet. |
|
Verwenden Sie Wählen Sie Verwenden Sie |
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 |
|---|---|---|---|
|
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 |