Leistung von ScaNN-Vektorabfragen

Wählen Sie eine Dokumentationsversion aus:

Auf dieser Seite finden Sie einen konzeptionellen Überblick über die Verbesserung der Leistung von Vektorabfragen mit dem ScaNN-Index (Scalable Nearest Neighbor) von AlloyDB AI. Weitere Informationen finden Sie unter Indexe erstellen und Vektoren abfragen.

Der ScaNN-Index verwendet die baumquantisierungsbasierte Indexierung, bei der Indexe einen Suchbaum zusammen mit einer Quantisierungs- oder Hashing-Funktion lernen. Wenn Sie eine Abfrage ausführen, wird der Suchbaum verwendet, um den Suchraum zu verkleinern, während die Quantisierung verwendet wird, um die Indexgröße zu komprimieren. Diese Verkleinerung beschleunigt die Bewertung der Ähnlichkeit, d. h. des Abstands, zwischen dem Abfragevektor und den Datenbankvektoren.

Um sowohl eine hohe Abfragerate pro Sekunde (QPS) als auch eine hohe Genauigkeit bei Ihren Abfragen nach dem nächsten Nachbarn zu erzielen, müssen Sie den Baum Ihres ScaNN-Index so partitionieren, dass er am besten zu Ihren Daten und Abfragen passt.

Einbettungsmodelle mit hoher Dimensionalität können viele Informationen bei viel geringerer Dimensionalität beibehalten. So können Sie beispielsweise 90% der Informationen mit nur 20% der Dimensionen der Einbettung beibehalten. Um solche Datasets zu beschleunigen, führt der ScaNN-Index von AlloyDB AI automatisch eine Dimensionsreduktion mithilfe der Hauptkomponentenanalyse (Principal Component Analysis, PCA) für die indexierten Vektoren durch. Dadurch wird die CPU- und Arbeitsspeichernutzung für die Vektorsuche weiter reduziert. Weitere Informationen finden Sie unter scann.enable_pca.

Da die Dimensionsreduktion zu einem geringfügigen Verlust der Genauigkeit im Index führt, kompensiert der ScaNN-Index von AlloyDB AI diesen Verlust, indem er zuerst einen Ranking-Schritt mit einer größeren Anzahl von PCA-Vektorkandidaten aus dem Index durchführt. Anschließend werden die PCA-Vektorkandidaten von ScaNN anhand der ursprünglichen Vektoren neu eingestuft. Weitere Informationen finden Sie unter scann.pre_reordering_num_neighbors.

Nächste Schritte