GPU_IVF_FLAT
Der GPU_IVF_FLAT-Index ist eine GPU-beschleunigte Version des IVF_FLAT-Index, die ausschließlich für GPU-Umgebungen entwickelt wurde. Er unterteilt Vektordaten in nlist Cluster-Einheiten und berechnet die Ähnlichkeit, indem er zunächst den Zielabfragevektor mit dem Zentrum jedes Clusters vergleicht. Durch die Einstellung des Parameters nprobe werden nur die vielversprechendsten Cluster durchsucht, was die Abfragezeit reduziert und gleichzeitig ein Gleichgewicht zwischen Genauigkeit und Geschwindigkeit gewährleistet. Weitere Informationen zu den grundlegenden Konzepten finden Sie unter IVF_FLAT.
Index erstellen
Um einen GPU_IVF_FLAT -Index für ein Vektorfeld in Milvus zu erstellen, verwenden Sie die Methode add_index() und geben Sie die Parameter 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_vector_field_name", # Name of the vector field to be indexed
index_type="GPU_IVF_FLAT", # Type of the index to create
index_name="vector_index", # Name of the index to create
metric_type="L2", # Metric type used to measure similarity
params={
"nlist": 1024, # Number of clusters for the index
} # Index building params
)
In dieser Konfiguration:
index_type: Der Typ des zu erstellenden Index. In diesem Beispiel setzen Sie den Wert aufGPU_IVF_FLAT.metric_type: Die Methode zur Berechnung des Abstands zwischen Vektoren. Einzelheiten finden Sie unter Metrische Typen.params: Zusätzliche Konfigurationsoptionen für die Erstellung des Indexes.nlist: Anzahl der Cluster zur Unterteilung des Datensatzes.
Weitere Informationen zu den für den Index
GPU_IVF_FLATverfügbaren Erstellungsparametern 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.
search_params = {
"params": {
"nprobe": 10, # Number of clusters to search
}
}
res = MilvusClient.search(
collection_name="your_collection_name", # Collection name
anns_field="vector_field",
data=[[0.1, 0.2, 0.3, 0.4, 0.5]], # Query vector
limit=3, # TopK results to return
search_params=search_params
)
In dieser Konfiguration:
params: Zusätzliche Konfigurationsoptionen für die Suche im Index.nprobe: Anzahl der Cluster, nach denen gesucht werden soll.
Weitere Suchparameter, die für den Index
GPU_IVF_FLATverfügbar sind, finden Sie unter Indexspezifische Suchparameter.
Index-Parameter
Dieser Abschnitt gibt einen Überblick über die Parameter, die für den Aufbau eines Index und die Durchführung von Suchen 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 |
|---|---|---|---|
|
Die Anzahl der Cluster, die bei der Indexerstellung mit dem k-means-Algorithmus erstellt werden. Jeder Cluster, der durch einen Zentroid repräsentiert wird, speichert eine Liste von Vektoren. Durch Erhöhen dieses Parameters wird die Anzahl der Vektoren in jedem Cluster reduziert, wodurch kleinere, konzentriertere Partitionen entstehen. |
Typ: Integer Bereich: [1, 65536] Standardwert: |
Größere |
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 |
|---|---|---|---|
|
Die Anzahl der Cluster, in denen nach Kandidaten gesucht werden soll. Höhere Werte ermöglichen die Suche in mehr Clustern, was die Wiederauffindbarkeit durch die Erweiterung des Suchbereichs verbessert, allerdings auf Kosten einer erhöhten Abfragelatenz. |
Typ: Integer Bereich: [1, nlist] Standardwert: |
Eine Erhöhung dieses Wertes verbessert die Wiederauffindbarkeit, kann aber die Suche verlangsamen. In den meisten Fällen wird empfohlen, einen Wert innerhalb dieses Bereichs einzustellen: [1, nlist]. |