Der ScaNN-Index verwendet die baumquantisierungsbasierte 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. 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.
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 Genauigkeit im Index führt, gleicht der ScaNN-Index von AlloyDB AI diesen Verlust aus, 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 nach den 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