Leistung von ScaNN-Vektorabfragen

Wählen Sie eine Dokumentationsversion aus:

Auf dieser Seite erhalten Sie einen konzeptionellen Überblick über die Verbesserung der Leistung von Vektorabfragen mit dem ScaNN-Index.

Der ScaNN-Index verwendet eine baumbasierte Quantisierung. Bei der Baumquantisierung wird ein Suchbaum zusammen mit einer Quantisierungs- oder Hash-Funktion gelernt. Wenn Sie eine Abfrage ausführen, wird der Suchbaum verwendet, um den Suchraum zu verkleinern, während die Quantisierung zur Komprimierung der Indexgröße dient. Durch diese Bereinigung wird die Berechnung der Ähnlichkeit (d.h. des Abstands) zwischen dem Anfragevektor und den Datenbankvektoren beschleunigt.

Um sowohl eine hohe QPS-Rate (Queries per Second, Abfragen pro Sekunde) als auch einen hohen Recall bei Ihren Nearest-Neighbor-Abfragen zu erzielen, müssen Sie den Baum Ihres ScaNN-Index so partitionieren, dass er am besten zu Ihren Daten und Abfragen passt.

Ein gemeinsames Merkmal der aktuellen Generation von hochdimensionalen Einbettungsmodellen ist, dass sie einen Großteil der Informationen bei einer viel geringeren Dimensionalität beibehalten können. So können beispielsweise 90% der Informationen mit nur 20% der Dimensionen der Einbettung beibehalten werden. Um die Verarbeitung solcher Datasets zu beschleunigen, führt AlloyDB ScaNN automatisch eine Dimensionsreduzierung mithilfe der Hauptkomponentenanalyse (siehe scann.enable_pca below) für die indexierten Vektoren durch. Dadurch wird die CPU- und Speicherauslastung für die Vektorsuche weiter reduziert. Da die Dimensionsreduzierung immer noch zu einem geringfügigen Verlust des Rückrufs im Index führt, wird dies bei AlloyDB ScaNN durch einen ersten Ranking-Schritt mit einer größeren Anzahl von PCA-Vektorkandidaten aus dem Index kompensiert. Anschließend werden sie anhand der Originalvektoren neu gerankt (siehe scann.pre_reordering_num_neighbors).

Nächste Schritte