Der Vektorassistent in AlloyDB for PostgreSQL bietet ein deklaratives SQL-Framework, mit dem Sie Arbeitslasten für die Vektorsuche auf Ihren Instanzen bereitstellen, optimieren und verwalten können. Sie können Ihre Anforderungen an die Vektorsuche definieren, empfohlene SQL-Konfigurationen generieren und anwenden sowie die Arbeitslastleistung überwachen. Weitere Informationen zur Funktionsweise von Vector Assist finden Sie unter Vector Assist – Übersicht.
Hinweis
- Prüfen Sie, ob Ihre Instanz die richtige Wartungsversion verwendet. Vector Assist erfordert mindestens die Wartungsversionsnummer
POSTGRES_17.20260128.03_06. Weitere Informationen zur Durchführung der Self-Service-Wartung finden Sie unter Self-Service-Wartung durchführen. Aktivieren Sie die Erweiterung „Vector Assist“ mit dem folgenden Befehl in der Datenbank, die Sie verwenden möchten:
CREATE EXTENSION vector_assist CASCADE;Dadurch wird das Schema
vector_assistgeneriert, das von Vector Assist verwendet wird.
Vektorarbeitslast mit Vector Assist bereitstellen
Wenn Sie Vector Assist zum Bereitstellen und Verwalten einer Vektorarbeitslast verwenden möchten, müssen Sie Folgendes tun:
- Vektorspezifikation definieren
- Empfehlungen des Vektorassistenten ansehen
- Vektorunterstützungsempfehlungen anwenden
Vektorspezifikation definieren
Die Definition der Vektorspezifikation ist der erste Schritt bei der Verwendung der Vektorunterstützung. Je nach Art der Vektorarbeitslast können die Felder, die Sie zum Definieren Ihrer Vektorspezifikation verwenden, unterschiedlich sein.
Wenn Sie beispielsweise die semantische Suche für eine bestimmte Spalte in einer Tabelle aktivieren möchten, führen Sie die Funktion vector_assist.define_spec aus, um Ihre Vektorspezifikation zu definieren:
SELECT
recommendation_id,
REGEXP_REPLACE(query, 'SET hnsw.ef_search TO \d+', 'SET hnsw.ef_search TO') AS query_1,
recommendation,
vector_spec_id,
table_name,
applied,
modified
FROM vector_assist.define_spec(
table_name => 'TABLE_NAME',
vector_column_name => 'VECTOR_COLUMN_NAME',
target_recall => TARGET_RECALL,
tune_vector_index => TUNE_INDEX
);
Ersetzen Sie die folgenden Parameter:
TABLE_NAME: Name der Tabelle, die Sie in Ihrer Vektorarbeitslast verwenden möchten.(Optional)
VECTOR_COLUMN_NAME: Spalte, in der Sie eine semantische Suche ausführen möchten. Wenn Ihre Tabelle nur eine Spalte mit Vektoren enthält, kannvector_assistdies automatisch festlegen. Wenn es mehr als eine Tabelle mit Vektoren gibt, müssen Sie angeben, welche Spalte verwendet werden soll.(Optional)
TARGET_RECALL: Ziel-Recall, den Vector Assist erreichen soll. Wenn angegeben, experimentiertvector_assistmit verschiedenenef_search-Werten und vergleicht den Recall bei exakten Suchen nach nächsten Nachbarn.vector_assistlegtef_searchauf den Wert fest, der den nächstgelegenen Ziel-Recall liefert. Der Standardwert ist0.95.(Optional)
TUNE_INDEX: Boolescher Wert, der angibt, ob der Vektorassistent die Vektorindexe in Ihrer Arbeitslast optimiert. Der Standardwert istfalse. Das bedeutet, dass nur die suchbezogenen Parameter (ef_search) optimiert werden. Build-Zeit-Parameter (m,ef_construction) werden nicht optimiert.
Eine vollständige Liste aller verfügbaren Parameter für die Vektorspezifikation finden Sie unter Referenzen für Vector Assist-Funktionen.
Nachdem Sie die Abfrage zum Erstellen Ihrer Vektorspezifikation ausgeführt haben, generiert Vector Assist automatisch Schritte, die als Empfehlungen bezeichnet werden und die Sie ausführen müssen, um Ihre Vektorarbeitslast bereitzustellen.
Vector Assist-Empfehlungen ansehen
Wenn Sie die von Vector Assist anhand Ihrer Vektorspezifikation generierten Empfehlungen aufrufen möchten, führen Sie die Funktion vector_assist.get_recommendations aus:
SELECT vector_assist.get_recommendations(
spec_id => 'SPEC_ID'
);
Ersetzen Sie SPEC_ID durch die Spezifikations-ID der Vektorspezifikation, für die Sie Empfehlungen aufrufen möchten. Eine Liste der verfügbaren Vektorspezifikationen finden Sie unter Vektorspezifikationen auflisten.
vector_assist.get_recommendations gibt eine Tabelle mit dem Namen vector_assist.RECOMMENDATIONS zurück, die alle Empfehlungen enthält. Jede Empfehlung wird in einer Tabelle mit dem zugehörigen spec_id gespeichert. Jede Empfehlung enthält im Allgemeinen die folgenden Informationen:
- SQL-Abfrage, die Sie ausführen müssen
- Detaillierte Erklärung der Empfehlung
- Weitere relevante Informationen, die die Empfehlung erklären
Empfehlungen des Vektorassistenten anwenden
Sie können die generierten Empfehlungen einzeln oder alle zusammen anwenden.
Führen Sie die Funktion vector_assist.apply_recommendation aus, um eine bestimmte Empfehlung anzuwenden:
SELECT vector_assist.apply_recommendation(
recommendation_id => 'RECOMMENDATION_ID'
);
Ersetzen Sie RECOMMENDATION_ID durch die ID der Vector Assist-Empfehlung, die Sie aus der Tabelle vector_assist.RECOMMENDATIONS anwenden möchten.
Wenn Sie alle Empfehlungen gleichzeitig anwenden möchten, führen Sie die Funktion vector_assist.apply_spec mit dem Parameter spec_id oder table_name aus:
SELECT vector_assist.apply_spec(
spec_id => 'SPEC_ID'
);
Ersetzen Sie SPEC_ID durch die ID der Vektorspezifikation, die Sie verwenden möchten.
Optional können Sie auch die Parameter schema_name oder column_name eingeben.
Informationen zu allen verfügbaren Suchparametern finden Sie unter Referenzen zu Vector Assist-Funktionen.
Nachdem Sie die von Vector Assist generierten Empfehlungen angewendet haben, ist der Vektorindex einsatzbereit.
Suchanfragen generieren
Mit dem Vektorassistenten können Sie optimierte Suchanfragen für Ihre bereitgestellten Vektorarbeitslasten erstellen. Dazu werden die Vektorspezifikation der Arbeitslast und der generierte Vektorindex verwendet. Führen Sie die Funktion vector_assist.generate_query aus, um eine optimierte Suchanfrage zu generieren:
SELECT vector_assist.generate_query(
spec_id => 'SPEC_ID',
search_vector => 'SEARCH_VECTOR',
top_k => TOP_K,
target_recall => TARGET_RECALL,
filter_expressions => ARRAY['FILTER_EXPRESSION']
);
Ersetzen Sie die folgenden Parameter:
SPEC_ID: ID der Spezifikation, die Sie verwenden möchten.SEARCH_VECTOR: Vektor für Ihre Suchanfrage. Beispiel:[1, 2, 3].(Optional)
TOP_K: Anzahl der nächsten Nachbarn, die zurückgegeben werden sollen. Wenn keine Angabe erfolgt, beträgt der Standardwert10.(Optional)
TARGET_RECALL: Ziel-Recall, den Vector Assist erreichen soll. Wenn angegeben, experimentiertvector_assistmit verschiedenenef_search-Werten und vergleicht den Recall bei exakten Suchen nach nächsten Nachbarn.vector_assistlegtef_searchauf den Wert fest, der den nächstgelegenen Ziel-Recall liefert.(Optional)
FILTER_EXPRESSION: Alle Filter für die Suchanfrage. Beispiel: Filtern nach anderen Spalten.
Eine vollständige Liste aller verfügbaren Parameter zum Generieren einer Suchanfrage finden Sie in den Referenzen zu Vector Assist-Funktionen.
Die Ausgabe dieser Funktion ist Text, der eine SQL-Abfrage enthält. Sie können diese SQL-Abfrage nach Bedarf ausführen oder speichern.
Vektorspezifikationen auflisten
Wenn Sie die vorhandenen Vektorspezifikationen für eine Tabelle auflisten möchten, führen Sie die Funktion vector_assist.list_specs aus oder verwenden Sie vector_assist.get_spec, um eine einzelne Vektorspezifikation nach ID aufzurufen:
SELECT vector_assist.list_specs(
table_name => 'TABLE_NAME',
column_name => 'COLUMN_NAME'
);
Ersetzen Sie die folgenden Parameter:
TABLE_NAME: Name der Tabelle, die Sie zum Definieren Ihrer Vektorspezifikation verwendet haben.(Optional)
COLUMN_NAME: Name der Vektorspalte in der Tabelle. Wenn nichts angegeben ist, gibtvector_assist.list_specsalle Vektorspezifikationen zurück, die für die angegebene Tabelle definiert sind. Rufen SieSELECT vector_assist.get_spec(spec_id => 'SPEC_ID');auf, um eine bestimmte Vektorspezifikation anhand der ID abzurufen.