Der ScaNN-Index verwendet die auf der Baumquantisierung basierende Indexierung, bei der Indizes 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. Durch diese Verkleinerung wird die Bewertung der Ähnlichkeit, d. h. des Abstands, zwischen dem Abfragevektor und den Datenbankvektoren beschleunigt.
Um sowohl eine hohe Abfragerate pro Sekunde (QPS) als auch eine hohe Trefferquote 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.
Hochdimensionale Einbettungsmodelle 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 Trefferquote 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 ordnet ScaNN die PCA-Vektorkandidaten anhand der ursprünglichen Vektoren neu.
Weitere Informationen finden Sie unter scann.pre_reordering_num_neighbors.
Nächste Schritte
- Erfahren Sie mehr über die Best Practices für die Optimierung von ScaNN-Indexen.
- Erste Schritte mit Vektoreinbettungen in AlloyDB AI.
- Weitere Informationen zum ScANN-Index von AlloyDB AI