Vektorunterstützung verwenden

Mit der Vektorunterstützung können Sie eine Vektorarbeitslast auf Ihren AlloyDB for PostgreSQL-Instanzen bereitstellen und verwalten.

Weitere Informationen zur Vektorunterstützung und ihrer Funktionsweise finden Sie unter Übersicht zur Vektorunterstützung.

Hinweis

  • Prüfen Sie, ob Ihre Instanz die richtige Wartungsversion verwendet. Für die Vektorunterstützung ist mindestens die Wartungsversion POSTGRES_17.20260128.03_06 erforderlich. Weitere Informationen zur Self-Service-Wartung finden Sie unter Self-Service-Wartung für die Leistung.
  • Aktivieren Sie die Erweiterung für die Vektorunterstützung mit dem folgenden Befehl in der gewünschten Datenbank:

    CREATE EXTENSION vector_assist CASCADE;
    

    Dadurch wird das Schema vector_assist generiert, das von der Vektorunterstützung verwendet wird.

Vektorarbeitslast mit der Vektorunterstützung bereitstellen

Wenn Sie eine Vektorarbeitslast mit der Vektorunterstützung bereitstellen und verwalten möchten, müssen Sie Folgendes tun:

Vektorspezifikation definieren

Die Definition der Vektorspezifikation, oder Vektorspezifikation, ist der erste Schritt bei der Verwendung der Vektorunterstützung. Je nach Art der Vektorarbeitslast können sich die Felder unterscheiden, die Sie zum Definieren der Vektorspezifikation verwenden.

Wenn Sie beispielsweise die semantische Suche für eine bestimmte Spalte in einer Tabelle aktivieren möchten, führen Sie die vector_assist.define_spec Funktion aus, um die 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, kann vector_assist diese automatisch festlegen. Wenn es mehrere Tabellen mit Vektoren gibt, müssen Sie angeben, welche Spalte verwendet werden soll.
  • (Optional) TARGET_RECALL: Ziel-Recall, den die Vektorunterstützung erreichen soll. Wenn dieser Wert angegeben ist, testet vector_assist verschiedene ef_search-Werte und vergleicht den Recall bei genauen Suchen und bei Suchen nach dem nächsten Nachbarn. vector_assist legt ef_search auf den Wert fest, der den Ziel-Recall am besten erreicht. Der Standardwert ist 0.95.
  • (Optional) TUNE_INDEX: Boolescher Wert, der angibt, ob die Vektorunterstützung die Vektorindizes in Ihrer Arbeitslast optimiert. Der Standardwert ist false. Das bedeutet, dass nur die suchbezogenen Parameter (ef_search) optimiert werden. Parameter für die Erstellungszeit (m, ef_construction) werden nicht optimiert.

Eine vollständige Liste aller verfügbaren Parameter für die Vektorspezifikation finden Sie unter siehe Funktionsreferenzen für die Vektorunterstützung.

Nachdem Sie die Abfrage zum Erstellen der Vektorspezifikation ausgeführt haben, generiert die Vektorunterstützung automatisch Schritte, sogenannte Empfehlungen, die Sie ausführen müssen, um Ihre Vektorarbeitslast bereitzustellen.

Empfehlungen der Vektorunterstützung ansehen

Wenn Sie die Empfehlungen ansehen möchten, die von der Vektorunterstützung mit Ihrer Vektorspezifikation generiert wurden, führen Sie die vector_assist.get_recommendations Funktion 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 ansehen möchten. Eine Liste der verfügbaren Vektorspezifikationen finden Sie unter Vektorspezifikationen auflisten.

vector_assist.get_recommendations gibt eine Tabelle namens vector_assist.RECOMMENDATIONS zurück, die alle Empfehlungen enthält. Jede Empfehlung wird in einer Tabelle mit der zugehörigen spec_id gespeichert. Jede Empfehlung enthält in der Regel die folgenden Informationen:

  • SQL-Abfrage, die Sie ausführen müssen
  • Detaillierte Erläuterung der Empfehlung
  • Weitere relevante Informationen, die die Empfehlung erläutern

Empfehlungen der Vektorunterstützung anwenden

Sie können die generierten Empfehlungen einzeln oder als Ganzes anwenden.

Wenn Sie eine bestimmte Empfehlung anwenden möchten, führen Sie die vector_assist.apply_recommendation Funktion aus:

SELECT vector_assist.apply_recommendation(
  recommendation_id => 'RECOMMENDATION_ID'
);

Ersetzen Sie RECOMMENDATION_ID durch die ID der Empfehlung der Vektorunterstützung, die Sie aus der Tabelle vector_assist.RECOMMENDATIONS anwenden möchten.

Wenn Sie alle Empfehlungen zusammen anwenden möchten, führen Sie die vector_assist.apply_spec Funktion 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 Funktionsreferenzen für die Vektorunterstützung.

Nachdem Sie die von der Vektorunterstützung generierten Empfehlungen angewendet haben, ist der Vektorindex einsatzbereit.

Suchanfragen generieren

Mit der Vektorunterstützung können Sie optimierte Suchanfragen für Ihre bereitgestellten Vektorarbeitslasten erstellen. Dazu werden die Vektorspezifikation und der generierte Vektorindex der Arbeitslast verwendet. Führen Sie die vector_assist.generate_query Funktion 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_expression => '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 zurückzugebenden nächsten Nachbarn. Ohne explizite Angabe beträgt der Standardwert 10.
  • (Optional) TARGET_RECALL: Ziel-Recall, den die Vektorunterstützung erreichen soll. Wenn dieser Wert angegeben ist, testet vector_assist verschiedene ef_search-Werte und vergleicht den Recall bei genauen Suchen und bei Suchen nach dem nächsten Nachbarn. vector_assist legt ef_search auf den Wert fest, der den Ziel-Recall am besten erreicht.
  • (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 Such anfrage finden Sie unter Funktionsreferenzen für die Vektorunterstützung.

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 eine einzelne oder alle vorhandenen Vektorspezifikationen auflisten möchten, führen Sie die Funktion vector_assist.list_specs aus:

SELECT vector_assist.list_specs(
  spec_id => 'SPEC_ID',
  table_name => 'TABLE_NAME'
);

Ersetzen Sie die folgenden Parameter:

  • (Optional) SPEC_ID: ID der Vektorspezifikation, die Sie verwenden möchten.
  • TABLE_NAME: Name der Tabelle, die Sie zum Definieren der Vektorspezifikation verwendet haben.

Nächste Schritte