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 Approximate Nearest Neighbor) von AlloyDB AI. Weitere Informationen finden Sie unter Indexe erstellen und Vektoren abfragen.

Der ScaNN-Index verwendet die baumbasierte Quantisierungsindexierung, bei der Indizes einen Suchbaum zusammen mit einer Quantisierungs- oder Hash-Funktion lernen. Wenn Sie eine Abfrage ausführen, wird der Suchbaum verwendet, um den Suchraum zu verkleinern. Die Quantisierung wird verwendet, um die Indexgröße zu komprimieren. Durch diese Bereinigung wird die Berechnung der Ähnlichkeit – also der Distanz – zwischen dem Abfragevektor und den Datenbankvektoren beschleunigt.

Um sowohl eine hohe QPS-Rate (Queries per Second, Abfragen pro Sekunde) als auch einen hohen Recall mit 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.

Mit hochdimensionalen Einbettungsmodellen lässt sich ein Großteil der Informationen bei einer viel geringeren Dimensionalität beibehalten. So können Sie beispielsweise 90% der Informationen mit nur 20% der Dimensionen des Embeddings beibehalten. Um die Verarbeitung solcher Datasets zu beschleunigen, wird im AlloyDB AI ScaNN-Index automatisch eine Dimensionsreduzierung mithilfe der Hauptkomponentenanalyse (Principal Component Analysis, PCA) für die indexierten Vektoren durchgeführt. Dadurch wird die CPU- und Speicherauslastung für die Vektorsuche weiter reduziert. Weitere Informationen finden Sie unter scann.enable_pca.

Da die Dimensionsreduzierung zu einem geringfügigen Recall-Verlust im Index führt, wird dieser Verlust im AlloyDB AI ScaNN-Index dadurch kompensiert, dass zuerst ein Ranking-Schritt mit einer größeren Anzahl von PCA-Vektorkandidaten aus dem Index durchgeführt wird. Anschließend werden die PCA-Vektorkandidaten von ScaNN anhand der Originalvektoren neu eingestuft. Weitere Informationen finden Sie unter scann.pre_reordering_num_neighbors.

Nächste Schritte