Der ScaNN-Index ist ein baumbasierter Quantisierungsindex von Google für die Suche nach dem ungefähren nächsten Nachbarn. Im Vergleich zu HNSW ist die Indexerstellung schneller und der Speicherbedarf geringer. Außerdem bietet es im Vergleich zu HNSW je nach Arbeitslast eine höhere Abfragerate pro Sekunde.
Hinweis
Bevor Sie mit dem Erstellen von Indexen beginnen können, müssen Sie die folgenden Voraussetzungen erfüllen.
Einbettungsvektoren wurden einer Tabelle in Ihrer AlloyDB Omni-Datenbank hinzugefügt.
Wenn Sie versuchen, einen ScaNN-Index für eine leere oder partitionierte Tabelle zu erstellen, können Probleme auftreten. Weitere Informationen zu den generierten Fehlern finden Sie unter Fehlerbehebung bei ScaNN-Indexfehlern. Informationen zum Erstellen eines Index für eine leere oder kleine Tabelle finden Sie unter Verzögerte Indexerstellung für leere oder fast leere Tabellen.
Die Erweiterungen
vectorundalloydb_scannsind installiert:CREATE EXTENSION IF NOT EXISTS alloydb_scann CASCADE;Wenn Sie die Erweiterung
alloydb_scanninstallieren, wird automatisch geprüft, ob die Erweiterungvectorinstalliert ist. Falls nicht, wird sie installiert. Sie müssenvectornicht separat manuell installieren.Wenn Sie einen vierstufigen ScaNN-Index erstellen möchten, müssen Sie zuerst die Vorschau-Funktion für Ihre AlloyDB Omni-Instanz aktivieren. Wählen Sie eine der folgenden beiden Methoden aus, um die Vorabversion zu aktivieren:
Aktivieren Sie das Datenbank-Flag
scann.enable_preview_features.Weitere Informationen zum Konfigurieren von Datenbank-Flags finden Sie unter Datenbank-Flags konfigurieren.
Legen Sie das Datenbank-Flag
scann.max_allowed_num_levelsauf der Sitzungs- oder Instanzebene auf3fest. Führen Sie den folgenden Befehl aus, um das Flag auf Sitzungsebene festzulegen:SET scann.max_allowed_num_levels = 3;Wenn Sie das Flag auf Instanzebene festlegen möchten, führen Sie
gcloud alloydb alloydb instances updatemit dem Feld--database-flagsaus.
Automatisch optimierten Index erstellen
Automatisch optimierte ScaNN-Indexe vereinfachen die Indexerstellung, da AlloyDB Omni die Indexstruktur verwalten und optimieren kann. Wenn Sie eine detaillierte Kontrolle über die Indexoptimierung benötigen, erstellen Sie einen manuell optimierten ScaNN-Index.
Automatisch optimierte Indexe können auf zwei Arten optimiert werden:
- (Standard) Recall und Latenz der Vektorsuche auf Kosten der Index-Build-Zeit
- Build-Dauer des Index und Suchleistung ausgleichen
Führen Sie den folgenden Befehl aus, um einen automatisch optimierten ScaNN-Index zu erstellen.
CREATE INDEX INDEX_NAME ON TABLE
USING scann (EMBEDDING_COLUMN DISTANCE_FUNCTION)
Ersetzen Sie Folgendes:
INDEX_NAME: Name des Index, den Sie erstellen möchten. Beispiel:my_scann_index. Indexnamen gelten für die gesamte Datenbank. Prüfen Sie, ob jeder Indexname für jede Tabelle in Ihrer Datenbank eindeutig ist.TABLE: Tabelle, der der Index hinzugefügt werden soll.EMBEDDING_COLUMN: Spalte, in dervector-Daten gespeichert werden.DISTANCE_FUNCTION: Die Distanzfunktion, die für diesen Index verwendet werden soll. Wählen Sie eine der folgenden Optionen aus:L2-Distanz:
l2Skalarprodukt:
dot_productKosinus-Distanz:
cosine
Mit diesem Befehl wird ein ScaNN-Index erstellt, der für die Suchleistung optimiert ist. Wenn Sie diese Einstellung ändern möchten, führen Sie den folgenden Befehl aus:
CREATE INDEX INDEX_NAME ON TABLE
USING scann (EMBEDDING_COLUMN DISTANCE_FUNCTION)
WITH (MODE='AUTO',
OPTIMIZATION='OPTIMIZATION')
Ersetzen Sie Folgendes:
INDEX_NAME: Name des Index, den Sie erstellen möchten. Beispiel:my_scann_index. Indexnamen gelten für die gesamte Datenbank. Prüfen Sie, ob jeder Indexname für jede Tabelle in Ihrer Datenbank eindeutig ist.TABLE: Tabelle, der der Index hinzugefügt werden soll.EMBEDDING_COLUMN: Spalte, in dervector-Daten gespeichert werden.DISTANCE_FUNCTION: Die Distanzfunktion, die für diesen Index verwendet werden soll. Wählen Sie eine der folgenden Optionen aus:L2-Distanz:
l2Skalarprodukt:
dot_productKosinus-Distanz:
cosine
(Optional)
OPTIMIZATION: Legen Sie dafür Folgendes fest:(Standard)
SEARCH_OPTIMIZED: Optimiert sowohl die Trefferquote als auch die Latenz der Vektorsuche auf Kosten längerer Indexerstellungszeiten.BALANCED: Ausgewogenes Verhältnis zwischen Indexerstellungszeit und Suchleistung.
Wenn
OPTIMIZATIONfestgelegt ist, muss auchMODE='AUTO'enthalten sein.
Manuell optimierten Index erstellen
Wenn Ihre Anwendung bestimmte Anforderungen an die Recall- und Indexerstellungszeiten hat, können Sie den ScaNN-Index manuell erstellen und optimieren.
Wenn Sie manuell einen ScaNN-Index für eine Spalte mit gespeicherten Vektoreinbettungen erstellen möchten, verwenden Sie die folgenden Befehle.
Zweistufiger Baumindex
CREATE INDEX INDEX_NAME ON TABLE USING scann (EMBEDDING_COLUMN DISTANCE_FUNCTION) WITH (mode='MANUAL', num_leaves=NUM_LEAVES_VALUE, quantizer=QUANTIZER);
-
INDEX_NAME: Name des Index, den Sie erstellen möchten. Beispiel:my_scann_index. Die Indexnamen werden in Ihrer Datenbank freigegeben. Jeder Indexname muss für jede Tabelle in Ihrer Datenbank eindeutig sein. -
TABLE: Tabelle, der der Index hinzugefügt werden soll. -
EMBEDDING_COLUMN: Spalte, in der „vector“-Daten gespeichert werden. -
DISTANCE_FUNCTION: Die Distanzfunktion, die für diesen Index verwendet werden soll. Wählen Sie eine der folgenden Optionen aus:- L2-Distanz:
l2 - Skalarprodukt:
dot_product - Kosinus-Distanz:
cosine
- L2-Distanz:
-
NUM_LEAVES_VALUE: Anzahl der Partitionen, die auf diesen Index angewendet werden sollen. Kann auf einen beliebigen Wert zwischen 1 und 30 Millionen festgelegt werden. Weitere Informationen dazu, wie Sie diesen Wert auswählen, finden Sie unterScaNN-Index abstimmen. -
QUANTIZER: Der zu verwendende Quantisierungstyp. Der ScaNN-Index kann in die spaltenbasierte Engine geladen werden, um die Vektorsuche weiter zu beschleunigen. Wählen Sie eine der folgenden Optionen aus:-
(Standard)
SQ8: bietet ein ausgewogenes Verhältnis zwischen Abfrageleistung und minimalem Recall-Verlust. Dieser Wert liegt normalerweise unter 1–2%. -
(Vorabversion)
AH: Asymmetrisches Hashing (AH) ist im Vergleich zuSQ8bis zu viermal komprimierter. Wenn die spaltenorientierte Engine aktiviert ist und die Index- und Tabellendaten in die spaltenorientierte Engine eingefügt werden, sollten Sie dies für eine potenziell bessere Abfrageleistung in Betracht ziehen. Weitere Informationen finden Sie unter Best Practices für die Optimierung von ScaNN. -
FLAT: Bietet den höchsten Recall (99% oder höher), allerdings auf Kosten der Suchleistung.
-
(Standard)
Baumindex mit drei Ebenen
CREATE INDEX INDEX_NAME ON TABLE USING scann (EMBEDDING_COLUMN DISTANCE_FUNCTION) WITH (mode='MANUAL', num_leaves=NUM_LEAVES_VALUE, quantizer=QUANTIZER, auto_maintenance=AUTO_MAINTENANCE, max_num_levels = 2);
-
INDEX_NAME: Name des Index, den Sie erstellen möchten. Beispiel:my_scann_index. Die Indexnamen werden in Ihrer Datenbank freigegeben. Achten Sie darauf, dass jeder Indexname für jede Tabelle in Ihrer Datenbank eindeutig ist. -
TABLE: Tabelle, der der Index hinzugefügt werden soll. -
EMBEDDING_COLUMN: Spalte, in der „vector“-Daten gespeichert werden. -
DISTANCE_FUNCTION: Die Distanzfunktion, die für diesen Index verwendet werden soll. Wählen Sie eine der folgenden Optionen aus:- L2-Distanz:
l2 - Skalarprodukt:
dot_product - Kosinus-Distanz:
cosine
- L2-Distanz:
-
NUM_LEAVES_VALUE: Anzahl der Partitionen, die auf diesen Index angewendet werden sollen. Kann auf einen beliebigen Wert zwischen 1 und 30 Millionen festgelegt werden. Weitere Informationen dazu, wie Sie diesen Wert festlegen, finden Sie unterScaNN-Index abstimmen. -
QUANTIZER: Der zu verwendende Quantisierungstyp. Der ScaNN-Index kann in die spaltenbasierte Engine geladen werden, um die Vektorsuche weiter zu beschleunigen. Wählen Sie eine der folgenden Optionen aus:-
(Standard)
SQ8: Bietet ein ausgewogenes Verhältnis zwischen Abfrageleistung und minimalem Recall-Verlust. Das sind in der Regel weniger als 1–2%. -
(Vorschau)
AH: Asymmetrisches Hashing (AH) ist im Vergleich zuSQ8bis zu viermal komprimiert. Wenn die spaltenorientierte Engine aktiviert ist und die Index- und Tabellendaten in die spaltenorientierte Engine eingefügt werden, kann dies die Abfrageleistung potenziell verbessern. Weitere Informationen finden Sie unter Best Practices für die Optimierung von ScaNN. -
FLAT: bietet den höchsten Recall (99% oder höher), allerdings auf Kosten der Suchleistung.
-
(Standard)
-
(Optional)
AUTO_MAINTENANCE: Steuert, ob die automatische Wartung des Index aktiviert oder deaktiviert ist. Weitere Informationen zur automatischen Wartung finden Sie unter Vektorindexe verwalten.-
(Standard)
ON: AlloyDB Omni führt eine automatische Wartung des Index durch. -
OFF: AlloyDB Omni führt keine automatische Wartung des Index durch.
-
(Standard)
-
max_num_levels = 2: die maximale Anzahl von Schwerpunkt-Ebenen im K-Means-Clustering-Baum. Legen Sie diesen Parameter auf2fest, um einen dreistufigen Index zu erstellen.
Baumindex mit vier Ebenen
CREATE INDEX INDEX_NAME ON TABLE USING scann (EMBEDDING_COLUMN DISTANCE_FUNCTION) WITH (mode='MANUAL', num_leaves=NUM_LEAVES_VALUE, quantizer=QUANTIZER, auto_maintenance=AUTO_MAINTENANCE, max_num_levels = 3);
-
INDEX_NAME: Name des Index, den Sie erstellen möchten. Beispiel:my_scann_index. Die Indexnamen werden in Ihrer Datenbank freigegeben. Achten Sie darauf, dass jeder Indexname für jede Tabelle in Ihrer Datenbank eindeutig ist. -
TABLE: Tabelle, der der Index hinzugefügt werden soll. -
EMBEDDING_COLUMN: Spalte, in der „vector“-Daten gespeichert werden. -
DISTANCE_FUNCTION: Die Distanzfunktion, die für diesen Index verwendet werden soll. Wählen Sie eine der folgenden Optionen aus:- L2-Distanz:
l2 - Skalarprodukt:
dot_product - Kosinus-Distanz:
cosine
- L2-Distanz:
-
NUM_LEAVES_VALUE: Anzahl der Partitionen, die auf diesen Index angewendet werden sollen. Kann auf einen beliebigen Wert zwischen 1 und 30 Millionen festgelegt werden. Weitere Informationen dazu, wie Sie diesen Wert festlegen, finden Sie unterScaNN-Index abstimmen. -
QUANTIZER: Der zu verwendende Quantisierungstyp. Der ScaNN-Index kann in die spaltenbasierte Engine geladen werden, um die Vektorsuche weiter zu beschleunigen. Wählen Sie eine der folgenden Optionen aus:-
(Standard)
SQ8: Bietet ein ausgewogenes Verhältnis zwischen Abfrageleistung und minimalem Recall-Verlust. Das sind in der Regel weniger als 1–2%. -
Vorschau
AH: Asymmetrisches Hashing (AH) ist im Vergleich zuSQ8bis zu viermal stärker komprimiert. Wenn die spaltenorientierte Engine aktiviert ist und die Index- und Tabellendaten in die spaltenorientierte Engine eingefügt werden, sollten Sie dies für eine potenziell bessere Abfrageleistung in Betracht ziehen. Weitere Informationen finden Sie unter Best Practices für die Optimierung von ScaNN. -
FLAT: bietet den höchsten Recall (99% oder höher), allerdings auf Kosten der Suchleistung.
-
(Standard)
-
(Optional)
AUTO_MAINTENANCE: Steuert, ob die automatische Wartung des Index aktiviert oder deaktiviert ist. Weitere Informationen zur automatischen Wartung finden Sie unter Vektorindexe verwalten.-
(Standard)
ON: In AlloyDB Omni wird die automatische Wartung des Index aktiviert. -
OFF: AlloyDB Omni deaktiviert die automatische Wartung des Index.
-
(Standard)
-
max_num_levels = 3: die maximale Anzahl von Schwerpunkt-Ebenen im K-Means-Clustering-Baum. Legen Sie diesen Parameter auf3fest, um einen Index mit vier Ebenen zu erstellen.
Manuell optimierten Index in einen automatisch optimierten Index umwandeln
So wandeln Sie einen manuell optimierten Index in einen automatisch optimierten Index um:
Setzen Sie alle Suchparameter zurück, die für Ihren manuell optimierten Index definiert sind.
ALTER INDEX INDEX_NAME RESET (PARAMETER_NAME);Ersetzen Sie die folgenden Variablen:
INDEX_NAME: Name des Index, den Sie konvertieren möchten. Beispiel:my_scann_index. Indexnamen werden in Ihrer Datenbank freigegeben. Prüfen Sie, ob jeder Indexname für jede Tabelle in Ihrer Datenbank eindeutig ist.PARAMETER_NAME: durch Kommas getrennte Liste mit den Namen der Suchparameter, die Sie zurücksetzen möchten. Beispiel:num_leaves, quantization.Beachten Sie, dass Sie alle anderen Suchparameter zurücksetzen müssen, bevor Sie
num_leaveszurücksetzen.
Indexieren Sie Ihren manuell optimierten Index neu, um ihn in einen automatisch optimierten Index umzuwandeln.
REINDEX INDEX CONCURRENTLY INDEX_NAME;
ScaNN-Index für real[]-Datentypen erstellen
Wenn Sie einen Index für eine Einbettungsspalte erstellen möchten, die den Datentyp real[] anstelle von vector verwendet, wandeln Sie die Spalte in den Datentyp vector um:
CREATE INDEX INDEX_NAME ON TABLE
USING scann (CAST(EMBEDDING_COLUMN AS vector(DIMENSIONS)) DISTANCE_FUNCTION)
Ersetzen Sie Folgendes:
INDEX_NAME: Name des Index, den Sie erstellen möchten. Beispiel:my_scann_index. Indexnamen gelten für die gesamte Datenbank. Prüfen Sie, ob jeder Indexname für jede Tabelle in Ihrer Datenbank eindeutig ist.TABLE: Tabelle, der der Index hinzugefügt werden soll.DIMENSIONS: Die Anzahl der Dimensionen, die vom Modell unterstützt werden.EMBEDDING_COLUMN: Spalte, in dervector-Daten gespeichert werden.DISTANCE_FUNCTION: Die Distanzfunktion, die für diesen Index verwendet werden soll. Wählen Sie eine der folgenden Optionen aus:L2-Distanz:
l2Skalarprodukt:
dot_productKosinus-Distanz:
cosine
Indexierungsfortschritt ansehen
Verwenden Sie zum Anzeigen des Indexierungsfortschritts die pg_stat_progress_create_index-Ansicht:
SELECT * FROM pg_stat_progress_create_index;
In der Spalte phase sehen Sie den aktuellen Status der Indexerstellung. Nach Abschluss der Indexerstellungsphase ist die Zeile für den Index nicht mehr sichtbar.
Verzögerten Index für leere Tabellen oder Tabellen mit unzureichenden Zeilen erstellen
Standardmäßig können Sie keinen ScaNN-Index für eine Tabelle erstellen, die leer ist oder weniger Zeilen als der Wert der Indexoption num_leaves hat.
Um diese Einschränkung zu umgehen, aktivieren Sie die zurückgestellte Indexerstellung, damit AlloyDB Omni die Indexerstellung so lange zurückstellt, bis die Anzahl der Zeilen in der Tabelle den von num_leaves definierten Schwellenwert erreicht. Nach Erreichen des Schwellenwerts startet AlloyDB Omni den Index-Build im Hintergrund.
Dieser verzögerte Vorgang ist ein nicht blockierender Prozess, sodass andere Datenbankvorgänge wie Lese- und Schreibvorgänge ohne Unterbrechung fortgesetzt werden können. Da der Index im Hintergrund neu erstellt wird, eignet sich die zurückgestellte Indexerstellung, wenn Tabellen Datenzeilen in kleinen Batches aufnehmen. Der Index wird automatisch neu erstellt, wenn die Anzahl der Zeilen den Schwellenwert erreicht.
Wenn Sie jedoch eine große Anzahl von Zeilen in einer einzelnen Transaktion in die Tabelle einfügen möchten, empfehlen wir, die Transaktion in mehrere Transaktionen aufzuteilen oder einen ScaNN-Index zu generieren, ohne die zurückgestellte Indexerstellung zu aktivieren.
Zurückgestellte Indexerstellung aktivieren
So aktivieren Sie die zurückgestellte Indexerstellung:
Achten Sie darauf, dass das Flag
scann.enable_index_maintenanceund eines der folgenden Flags aktiviert sind:scann.enable_preview_features: Mit diesem Flag werden auch andere Vorschaufunktionen aktiviert.scann.enable_index_with_insufficient_data: Mit diesem Flag wird explizit nur die Funktion für die zurückgestellte Indexerstellung aktiviert.
Verwenden Sie die
gcloud-Befehlszeile, um die Nutzung zu konfigurieren:So aktivieren Sie die zurückgestellte Indexerstellung zusammen mit anderen Funktionen in der Vorabversion:
gcloud alloydb instances update INSTANCE_ID \ --database-flags scann.enable_index_maintenance=on \ --database-flags scann.enable_preview_features=on \ --region=REGION_ID \ --cluster=CLUSTER_ID \ --project=PROJECT_IDSo aktivieren Sie die zurückgestellte Indexerstellung explizit, ohne andere Funktionen in der Vorabversion zu aktivieren:
gcloud alloydb instances update INSTANCE_ID \ --database-flags scann.enable_index_maintenance=on \ --database-flags scann.enable_index_with_insufficient_data=on \ --region=REGION_ID \ --cluster=CLUSTER_ID \ --project=PROJECT_ID
Ersetzen Sie Folgendes:
INSTANCE_ID: Die ID der Instanz.REGION_ID: Die Region, in der die Instanz platziert wird, z. B.us-central1.CLUSTER_ID: Die ID des Clusters, in dem sich die Instanz befindet.PROJECT_ID: Die ID des Projekts, in dem sich der Cluster befindet.
ScaNN-Index erstellen Wenn Sie einen Index im manuellen Modus erstellen, muss der Parameter
auto_maintenanceaufongesetzt sein. Weitere Informationen finden Sie unter Manuell optimierten Index erstellen.
Beschränkungen
- Der Hintergrundprozess für die automatische Indexerstellung verwendet Flag-Werte auf Datenbankebene. Auch wenn Sie mit dem Befehl
SET LOCALFlags auf Sitzungsebene festlegen, wird der auf Datenbankebene festgelegte Flag-Wert berücksichtigt. - Wenn Sie eine große Datenmenge in einer einzelnen Transaktion in eine leere Tabelle einfügen möchten, empfehlen wir, die einzelne Einfügetransaktion auszuführen und dann einen ScaNN-Index zu erstellen.
Erzwingen der Indexerstellung für leere oder kleine Tabellen
AlloyDB Omni verwendet Validierungen, um die Erstellung eines ScaNN-Index für eine leere Tabelle oder eine Tabelle mit sehr wenigen Zeilen zu verhindern. Das hat folgende Gründe:
Der ScaNN-Index wird mit unzureichenden Daten trainiert. Dies kann zu einem schlechten Recall bei Vektorähnlichkeitssuchen führen.
Die Schreibleistung für die Datenbank kann sich verschlechtern.
Wir empfehlen, die Indexierung zu verschieben, wenn die Leistung nicht optimal ist.
In einigen Entwicklungs- oder Testszenarien müssen Sie jedoch möglicherweise einen Index für eine leere oder kleine Tabelle erstellen. In diesen Fällen können Sie die Indexerstellung erzwingen. Für das Erzwingen der Indexerstellung sind SUPERUSER-Berechtigungen erforderlich.
So erzwingen Sie die Indexerstellung:
Legen Sie den Parameter
scann.allow_blocked_operationsauf Sitzungsebene in der Datenbank auftruefest:SET scann.allow_blocked_operations = true;Wenn der Nutzer, mit dem Sie diese Abfragen ausführen, keine
SUPERUSER-Berechtigungen hat, weisen Sie sie ihm zu:CREATE USER USERNAME WITH SUPERUSER PASSWORD PASSWORD;Ersetzen Sie die folgenden Variablen:
USERNAME: Name des Nutzers, dem SieSUPERUSER-Berechtigungen gewähren möchten.PASSWORD: Das Passwort des Nutzers.
Indexe parallel erstellen
Je nach Dataset und Art des Index, den Sie erstellen möchten, kann AlloyDB Omni automatisch mehrere parallele Worker starten, um den Index schneller zu erstellen. Dies wird häufig ausgelöst, wenn Sie einen ScaNN-Index mit drei oder vier Ebenen erstellen oder Ihr Dataset mehr als 100 Millionen Zeilen umfasst.
Obwohl AlloyDB Omni die Anzahl der parallelen Worker automatisch optimiert, können Sie die parallelen Worker mit den folgenden PostgreSQL-Parametern für die Abfrageplanung anpassen:
Damit beim Erstellen des ScaNN-Index keine Probleme mit dem Arbeitsspeicher auftreten, müssen die Datenbankflags maintenance_work_mem und shared_buffers auf einen Wert festgelegt sein, der kleiner als der gesamte Arbeitsspeicher der Maschine ist.
Abfrage ausführen
Nachdem Sie die Einbettungen in Ihrer Datenbank gespeichert und indexiert haben, können Sie mit der Abfrage Ihrer Daten beginnen. Mit der alloydb_scann-Erweiterung können keine Bulk-Suchanfragen ausgeführt werden.
Wenn Sie die semantisch nächsten Nachbarn für einen Textstring finden möchten, können Sie die Funktion google_ml.embedding() verwenden, um den Text in einen Vektor zu übersetzen.
Da google_ml.embedding() ein reales Array zurückgibt, müssen Sie den Funktionsaufruf explizit in vector umwandeln, bevor Sie ihn auf einen der Operatoren für die Suche nach dem nächsten Nachbarn anwenden, z. B. <-> für die L2-Distanz. Diese Operatoren können dann den ScaNN-Index verwenden, um die Datenbankzeilen mit den semantisch ähnlichsten Einbettungen zu finden.
SELECT * FROM TABLE
ORDER BY EMBEDDING_COLUMN DISTANCE_FUNCTION_QUERY
google_ml.embedding(
model_id => 'MODEL_ID',
content => 'CONTENT')::vector
LIMIT ROW_COUNT
Ersetzen Sie die folgenden Variablen:
TABLE: Tabelle, die die Einbettung enthält, mit der der Text verglichen werden soll.EMBEDDING_COLUMN: Spalte mit den gespeicherten Einbettungen.DISTANCE_FUNCTION_QUERY: Die Distanzfunktion, die für diese Abfrage verwendet werden soll. Wählen Sie das Abfrageäquivalent für die Distanzfunktion aus, die Sie beim Erstellen des Index verwendet haben:L2-Distanz:
<->Inneres Produkt:
<#>Kosinus-Distanz:
<=>
MODEL_ID: ID des registrierten Einbettungsmodells, das Sie verwenden möchten.CONTENT: Der Textstring, den Sie in eine Einbettung übersetzen und nach dem Sie suchen möchten.ROW_COUNT: Anzahl der zurückzugebenden Zeilen. Geben Sie beispielsweise1an, wenn Sie nur das beste Ergebnis erhalten möchten.
Nächste Schritte
- Suchen nach Vektorähnlichkeiten durchführen
- Leistung von Vektorabfragen optimieren
- Messwerte für Vektorindexe
- Informationen zum Erstellen eines intelligenten Einkaufsassistenten mit AlloyDB, pgvector und Modellendpunktverwaltung