Referenz für Vektorunterstützung

Auf dieser Seite finden Sie detaillierte Informationen zu allen verfügbaren Funktionen für die Vektorunterstützung sowie zu den erforderlichen und optionalen Parametern.

vector_assist.define_spec

Definiert eine neue Vektorspezifikation oder Vektorspezifikation und gibt Empfehlungen zurück, die für die Steigerung der Vektorarbeitslast erforderlich sind. Bei dieser Funktion werden die von Nutzern angegebenen Spezifikationen verwendet, um die Empfehlungen zu generieren.

Funktion

CREATE OR REPLACE FUNCTION vector_assist.define_spec(
    spec_id TEXT DEFAULT NULL,
    table_name TEXT,
    schema_name TEXT DEFAULT NULL,
    vector_column_name TEXT DEFAULT NULL,
    text_column_name TEXT DEFAULT NULL,
    vector_index_type TEXT DEFAULT NULL, -- Allowed: 'hnsw', 'ivfflat'
    embeddings_available BOOL DEFAULT NULL,
    embedding_model TEXT DEFAULT NULL,
    num_vectors INT DEFAULT NULL,
    dimensionality INT DEFAULT NULL,
    distance_func TEXT DEFAULT NULL, -- Allowed: 'cosine', 'ip', 'l2', 'l1'
    quantization TEXT DEFAULT NULL, -- Allowed: 'none', 'halfvec', 'bit'
    prefilter_column_names TEXT[] DEFAULT NULL,
    memory_budget_kb INT DEFAULT NULL, -- In KB
    target_recall FLOAT DEFAULT NULL,
    target_top_k INT DEFAULT NULL,
    tune_vector_index BOOL DEFAULT FALSE, -- Set to true if target_recall is set
)
RETURNS SETOF vector_assist.RECOMMENDATIONS;

Parameter

Parameter Erforderlich/Optional? Beschreibung
spec_id Erforderlich (automatisch generiert) Eine eindeutige ID für die von Ihnen definierte Vektorspezifikation.
table_name Erforderlich/Optional? Der Tabellenname, der bei der Einrichtung des Vektor-Workloads verwendet werden soll.
schema_name Optional Das Schema mit der Tabelle, die in der Vektor-Arbeitslast verwendet werden soll. Das Schema wird automatisch auf Grundlage des Schemasuchpfads abgeleitet.
vector_column_name Optional oder erforderlich Der Spaltenname für die Spalte mit den Vektoreinbettungen.

Diese Spalte ist erforderlich, wenn Sie mehr als eine Vektorspalte verwenden und text_column_name nicht deklariert ist. Wenn Sie nur eine Vektorspalte verwenden, ist dieser Parameter optional.
text_column_name Optional oder erforderlich Der Spaltenname für die Textspalte. Wenn für Ihre Vektor-Arbeitslast die Generierung von Einbettungen aus einer Textspalte erforderlich ist, ist dieser Parameter erforderlich.

Diese Spalte ist erforderlich, wenn der Parameter vector_column_name NULL ist und keine anderen Vektorspalten vorhanden sind.

Mit diesem Parameter wird die Erweiterung google_ml_integration verwendet, um Einbettungen aus der angegebenen Textspalte zu generieren.
vector_index_type Optional Der Typ des Vektorindex. Unter anderem sind folgende Werte zulässig:
  • HNSW
  • IVFFlat
  • SCANN
embeddings_available Optional Ein boolescher Wert, der prüft, ob in der ausgewählten Tabelle Vektoreinbettungen vorhanden sind. Dieses Feld wird auf FALSE gesetzt, wenn keine Vektorspalten erkannt werden und der Parameter text_column_name festgelegt ist.
embedding_model Optional oder erforderlich Die Modell-ID aus google_ml.models, die zum Generieren der Einbettungen verwendet werden soll. Dieses Feld ist optional, es sei denn, der Parameter embeddings_available ist FALSE oder NULL.
num_vectors Optional Die Anzahl der Vektoren in der Tabelle.
dismensionality Optional Die Dimension der angegebenen Vektoren.
distance_func Optional Die Distanzfunktion, die zum Vergleichen von Vektoren verwendet werden soll. Zulässige Werte sind cosine, ip, l2 oder l1.
quantization Optional Die Quantisierung für die Vektorindexe. Zulässige Werte sind none, halfvec oder bit.
prefilter_column_names Optional Erstellt einen Index für die angegebene Spalte zum Vorabfiltern. Das kann die Leistung von Abfragen mit einem Filter mit hoher Selektivität für die Spalte verbessern.
memory_budget_kb Optional Der maximale Arbeitsspeicher (in KB) für die Indexerstellung.
target_recall Optional Der Ziel-Recall für Standardvektorabfragen.
target_top_k Optional Die K besten übereinstimmenden Werte, die für die Berechnung des Rückrufs abgerufen werden sollen. Dieser Wert wird verwendet, wenn der Parameter target_recall angegeben ist.
tune_vector_index Optional Optimiert die Vektorindexe in Ihrer Arbeitslast. Wenn diese Option aktiviert ist, wird der Vektorindex oder die Suchanfrage automatisch mithilfe der Vektorspezifikation optimiert und die optimalen Datenbank- und Indexparameter werden berechnet. Zulässige Werte sind TRUE oder FALSE.

Rückgabewert

Gibt eine Tabelle mit Empfehlungen zurück, die angewendet werden müssen, um die angeforderte Vektorarbeitslast einzurichten. Jede Zeile ist eine einzelne Empfehlung, die eine ausführbare SQL-Abfrage und eine detaillierte Erklärung enthält, warum die Empfehlung angewendet werden sollte. Die Empfehlung kann mit der Funktion apply_recommendation() angewendet werden.

Die Empfehlungstabelle enthält die folgenden Spalten:

Spaltenname Typ Beschreibung
recommendation_id Text Die ID der Empfehlung. Die Empfehlung wird mit dieser ID angewendet.
vector_spec_id Text Die ID der Vektorspezifikation, die mit der Empfehlung verknüpft ist.
table_name Text Der Tabellenname, der der Empfehlung zugeordnet ist.
schema_name Text Der Schemaname, der die angegebene Tabelle enthält.
query Text Die ausführbare SQL-Abfrage, die ausgeführt werden soll, um das Ergebnis der Empfehlung zu erzielen.
recommendation Text Die Erklärung für die Empfehlung, einschließlich des erwarteten Ergebnisses nach Umsetzung der Empfehlung. Diese Spalte enthält auch den Grund und die Begründung für die Empfehlung. Sie können diesen Kontext verwenden, um die Abfrage nach Bedarf anzupassen und Empfehlungen neu zu generieren.
applied Boolesch Gibt an, ob die Empfehlung angewendet wurde.
modified Boolesch Gibt an, ob die Empfehlung vom Nutzer geändert wurde.
created_at Zeitstempel mit Zeitzone Der Zeitpunkt, zu dem die Empfehlung generiert wurde, im Format timestamp with time zone. Beispiel: 2024-07-18 09:00:00-08.

vector_assist.list_specs

Gibt die aktuelle Vektorspezifikation für eine bestimmte Tabelle und Spalte zurück.

Funktion

CREATE OR REPLACE FUNCTION vector_assist.list_specs(
  table_name      TEXT,
  column_name     TEXT DEFAULT NULL
)
RETURNS SETOF vector_assist.VECTOR_SPECS

Parameter

Parameter Erforderlich/Optional? Beschreibung
table_name Erforderlich/Optional? Der Name der Tabelle, für die die Vektorspezifikation abgerufen wird.
column_name Optional Der Spaltenname, nach dem die Tabelle gefiltert werden soll, bevor die Spezifikation zurückgegeben wird. Wenn der Spaltenname angegeben ist, werden Spezifikationen zurückgegeben, die Text- oder Vektorspaltennamen enthalten, die mit diesem Spaltennamen übereinstimmen.

Rückgabewert

Gibt eine Tabelle mit Spezifikationen für die angegebene Tabelle und optional den Spaltennamen zurück.

vector_assist.modify_spec

Ändert eine vorhandene Vektorspezifikation. Wenn die Vektorspezifikation geändert wird, werden die zugehörigen Empfehlungen auf Grundlage der neuen Spezifikationen neu generiert.

Funktion

CREATE OR REPLACE FUNCTION vector_assist.modify_spec(
  spec_id                TEXT,
  table_name             TEXT DEFAULT NULL,
  schema_name            TEXT DEFAULT NULL,
  vector_column_name     TEXT DEFAULT NULL,
  text_column_name       TEXT DEFAULT NULL,
  vector_index_type      TEXT DEFAULT NULL,
  embeddings_available   BOOL DEFAULT NULL,
  num_vectors            INT DEFAULT NULL,
  dimensionality         INT DEFAULT NULL,
  embedding_model        TEXT DEFAULT NULL,
  prefilter_column_names TEXT[] DEFAULT NULL,
  distance_func          TEXT DEFAULT NULL,
  quantization           TEXT DEFAULT NULL,
  memory_budget_kb       INT DEFAULT NULL,
  target_recall          FLOAT DEFAULT NULL,
  target_top_k           INT DEFAULT NULL,
  tune_vector_index      BOOL DEFAULT NULL
)
RETURNS SETOF vector_assist.RECOMMENDATIONS

Parameter

Parameter Erforderlich/Optional? Beschreibung
spec_id Erforderlich (automatisch generiert) Eine eindeutige ID für die von Ihnen definierte Vektorspezifikation.
table_name Erforderlich/Optional? Der Tabellenname, der bei der Einrichtung des Vektor-Workloads verwendet werden soll.
schema_name Optional Das Schema mit der Tabelle, die in der Vektor-Arbeitslast verwendet werden soll. Das Schema wird automatisch auf Grundlage des Schemasuchpfads abgeleitet.
vector_column_name Optional oder erforderlich Der Spaltenname für die Spalte mit den Vektoreinbettungen.

Diese Spalte ist erforderlich, wenn Sie mehr als eine Vektorspalte verwenden und text_column_name nicht deklariert ist. Wenn Sie nur eine Vektorspalte verwenden, ist dieser Parameter optional.
text_column_name Optional oder erforderlich Der Spaltenname für die Textspalte. Wenn für Ihre Vektor-Arbeitslast die Generierung von Einbettungen aus einer Textspalte erforderlich ist, ist dieser Parameter erforderlich.

Diese Spalte ist erforderlich, wenn der Parameter vector_column_name NULL ist und keine anderen Vektorspalten vorhanden sind.

Mit diesem Parameter wird die Erweiterung google_ml_integration verwendet, um Einbettungen aus der angegebenen Textspalte zu generieren.
vector_index_type Optional Der Typ des Vektorindex. Unter anderem sind folgende Werte zulässig:
  • HNSW
  • IVFFlat
  • SCANN
embeddings_available Optional Ein boolescher Wert, der prüft, ob in der ausgewählten Tabelle Vektoreinbettungen vorhanden sind. Dieses Feld wird auf FALSE gesetzt, wenn keine Vektorspalten erkannt werden und der Parameter text_column_name festgelegt ist.
embedding_model Optional oder erforderlich Die Modell-ID aus google_ml.models, die zum Generieren der Einbettungen verwendet werden soll. Dieses Feld ist optional, es sei denn, der Parameter embeddings_available ist FALSE oder NULL.
num_vectors Optional Die Anzahl der Vektoren in der Tabelle.
dismensionality Optional Die Dimension der angegebenen Vektoren.
distance_func Optional Die Distanzfunktion, die zum Vergleichen von Vektoren verwendet werden soll. Zulässige Werte sind cosine, ip, l2 oder l1.
quantization Optional Die Quantisierung für die Vektorindexe. Zulässige Werte sind none, halfvec oder bit.
prefilter_column_names Optional Gibt die Spalten an, die für das Vorabfiltern in Vektorsuchanfragen verfügbar sind.
memory_budget_kb Optional Der maximale Arbeitsspeicher (in KB) für die Indexerstellung.
target_recall Optional Der Ziel-Recall für Standardvektorabfragen.
target_top_k Optional Die K besten übereinstimmenden Werte, die für die Berechnung des Rückrufs abgerufen werden sollen. Dieser Wert wird verwendet, wenn der Parameter target_recall angegeben ist.
tune_vector_index Optional Optimiert die Vektorindexe in Ihrer Arbeitslast. Wenn diese Option aktiviert ist, wird der Vektorindex oder die Suchanfrage automatisch mithilfe der Vektorspezifikation optimiert und die optimalen Datenbank- und Indexparameter werden berechnet. Zulässige Werte sind TRUE oder FALSE.

Rückgabewert

Gibt eine aktualisierte Tabelle mit Empfehlungen zurück, die angewendet werden müssen, um die angeforderte Vektor-Arbeitslast einzurichten. Jede Zeile ist eine einzelne Empfehlung, die eine ausführbare SQL-Abfrage und eine detaillierte Erklärung enthält, warum die Empfehlung angewendet werden sollte. Die Empfehlung kann mit der Funktion apply_recommendation() angewendet werden.

Die Empfehlungstabelle enthält die folgenden Spalten:

Spaltenname Typ Beschreibung
recommendation_id Text Die ID der Empfehlung. Die Empfehlung wird mit dieser ID angewendet.
vector_spec_id Text Die ID der Vektorspezifikation, die mit der Empfehlung verknüpft ist.
table_name Text Der Tabellenname, der der Empfehlung zugeordnet ist.
schema_name Text Der Schemaname, der die angegebene Tabelle enthält.
query Text Die ausführbare SQL-Abfrage, die ausgeführt werden soll, um das Ergebnis der Empfehlung zu erzielen.
recommendation Text Die Erklärung für die Empfehlung, einschließlich des erwarteten Ergebnisses nach Umsetzung der Empfehlung. Diese Spalte enthält auch den Grund und die Begründung für die Empfehlung. Sie können diesen Kontext verwenden, um die Abfrage nach Bedarf anzupassen und Empfehlungen neu zu generieren.
applied Boolesch Gibt an, ob die Empfehlung angewendet wurde.
modified Boolesch Gibt an, ob die Empfehlung vom Nutzer geändert wurde.
created_at Zeitstempel mit Zeitzone Der Zeitpunkt, zu dem die Empfehlung generiert wurde.

vector_assist.get_recommendations

Gibt Empfehlungen zurück, die einem bestimmten Vektor spec_id zugeordnet sind.

Funktion

CREATE OR REPLACE FUNCTION vector_assist.get_recommendations (
    spec_id TEXT
)
RETURNS SETOF vector_assist.RECOMMENDATIONS;

Parameter

Parameter Erforderlich/Optional? Beschreibung
spec_id Erforderlich/Optional? Ruft Empfehlungen für den angegebenen Vektor spec_id ab.

Rückgabewert

Gibt eine Tabelle mit den angeforderten Empfehlungen zurück.

Die Empfehlungstabelle enthält die folgenden Spalten:

Spaltenname Typ Beschreibung
recommendation_id Text Die ID der Empfehlung. Die Empfehlung wird mit dieser ID angewendet.
vector_spec_id Text Die ID der Vektorspezifikation, die mit der Empfehlung verknüpft ist.
table_name Text Der Tabellenname, der der Empfehlung zugeordnet ist.
schema_name Text Der Schemaname, der die angegebene Tabelle enthält.
query Text Die ausführbare SQL-Abfrage, die ausgeführt werden soll, um das Ergebnis der Empfehlung zu erzielen.
recommendation Text Die Erklärung für die Empfehlung, einschließlich des erwarteten Ergebnisses nach Umsetzung der Empfehlung. Diese Spalte enthält auch den Grund und die Begründung für die Empfehlung. Sie können diesen Kontext verwenden, um die Abfrage nach Bedarf anzupassen und Empfehlungen neu zu generieren.
applied Boolesch Gibt an, ob die Empfehlung angewendet wurde.
modified Boolesch Gibt an, ob die Empfehlung vom Nutzer geändert wurde.
created_at Zeitstempel mit Zeitzone Der Zeitpunkt, zu dem die Empfehlung generiert wurde.

vector_assist.apply_recommendation

Wendet eine einzelne Empfehlung mit dem recommendation_id an.

Funktion

CREATE OR REPLACE FUNCTION vector_assist.get_recommendations (
    spec_id TEXT
)
RETURNS SETOF vector_assist.RECOMMENDATIONS;

Parameter

Parameter Erforderlich/Optional? Beschreibung
recommenation_id Erforderlich/Optional? Die ID der anzuwendenden Vektorempfehlung.

Rückgabewert

Gibt einen booleschen Wert zurück, der bestätigt, ob eine Empfehlung erfolgreich angewendet wurde, und aktualisiert die Tabellenspalte applied der Tabelle vector_assist.RECOMMENDATIONS auf TRUE.

Wenn Vector Assist die Empfehlung nicht anwenden kann, wird eine Fehlermeldung angezeigt.

vector_assist.apply_spec

Wendet alle Empfehlungen an, die einem bestimmten Vektor spec_id oder Tabellennamen zugeordnet sind. Diese Funktion durchläuft alle Empfehlungen und führt die Funktion vector_assist.apply_recommendation für jede Empfehlung aus.

Sie müssen entweder spec_id oder table_name angeben, um die Funktion auszuführen.

Funktion

CREATE OR REPLACE FUNCTION vector_assist.apply_spec(
    spec_id TEXT DEFAULT NULL,
    table_name TEXT DEFAULT NULL,
    schema_name TEXT DEFAULT NULL,
    column_name TEXT DEFAULT NULL -- text_column_name or vector_column_name
)
RETURNS BOOLEAN;

Parameter

Parameter Erforderlich/Optional? Beschreibung
spec_id Optional Übernimmt alle Empfehlungen für den angegebenen Vektor spec_id.
table_name Optional Wendet alle Empfehlungen für die angegebene Tabelle an.
schema_name Optional Das Schema, das die angegebene Tabelle enthält.
column_name Optional Gibt die text_column_name oder vector_column_name an, die verwendet werden soll, wenn die Tabelle mehrere Vektorspezifikationen enthält.

Rückgabewert

Gibt einen booleschen Wert zurück, der bestätigt, ob alle Empfehlungen erfolgreich angewendet wurden, und legt den Wert in der Tabellenspalte vector_assist.RECOMMENDATIONS applied für alle Empfehlungen auf TRUE fest.

Wenn Vector Assist die Empfehlung nicht anwenden kann, wird eine Fehlermeldung angezeigt.

vector_assist.modify_recommendation

Ändert die Abfrage für eine bestimmte Empfehlung und legt das Feld modified in der Tabelle vector_assist.RECOMMENDATIONS für die zugehörige Empfehlung auf TRUE fest.

Funktion

CREATE OR REPLACE FUNCTION vector_assist.modify_recommendation(
    recommendation_id TEXT,
    modified_query TEXT
)
RETURNS BOOLEAN;

Parameter

Parameter Erforderlich/Optional? Beschreibung
recommendation_id Erforderlich/Optional? Die ID der zu ändernden Empfehlung.
modified_query Erforderlich/Optional? Eine vom Nutzer geänderte SQL-Abfrage für die Empfehlung.

Rückgabewert

Gibt einen booleschen Wert zurück, der bestätigt, ob eine Empfehlung erfolgreich aktualisiert wurde, und legt die Tabellenspalte vector_assist.RECOMMENDATIONS modified auf TRUE fest.

Wenn Vector Assist die Empfehlung nicht aktualisieren kann, wird eine Fehlermeldung angezeigt.

vector_assist.generate_query

Generiert eine optimierte Vektorsuchanfrage basierend auf der definierten Vektorspezifikation und den Suchparametern. Diese Funktion kann den ef_search-Wert an den festgelegten target_recall-Wert anpassen, sofern zutreffend.

Funktion

CREATE OR REPLACE FUNCTION vector_assist.generate_query(
    spec_id TEXT DEFAULT NULL,
    table_name TEXT DEFAULT NULL,
    schema_name TEXT DEFAULT NULL,
    column_name TEXT DEFAULT NULL, -- text_column_name or vector_column_name of the spec
    search_text TEXT DEFAULT NULL,
    search_vector VECTOR DEFAULT NULL, -- e.g. '[1.0,2.0,3.0]'::vector
   output_column_names TEXT[] DEFAULT NULL, -- Columns to retrieve, NULL for SELECT *
    top_k INT DEFAULT NULL,
    filter_expressions TEXT[] DEFAULT NULL,
    target_recall FLOAT DEFAULT NULL, -- Inherited from spec, can be overridden
    iterative_index_search BOOL DEFAULT NULL
)
RETURNS TEXT; -- Returns the text representing the search query

Parameter

Parameter Erforderlich/Optional? Beschreibung
spec_id Optional Gibt die spec_id an, für die die Abfrage generiert werden soll.
table_name Optional Gibt den Tabellennamen an, für den die Suchanfrage generiert werden soll, wenn spec_id nicht angegeben ist. Wenn eine Tabelle mehrere Spezifikationen enthält, wird ein Fehler zurückgegeben.
column_name Optional Gibt den Spaltennamen an, für den die Suchanfrage generiert werden soll, wenn spec_id nicht angegeben ist. Wenn die Spalte mehrere Spezifikationen enthält, wird ein Fehler zurückgegeben. Die column_name kann die text_column_name oder die vector_column_name sein.
output_column_name Optional Die Spaltennamen, die in der Ausgabequery abgerufen werden sollen. Wenn Sie alle Spalten abrufen möchten, setzen Sie diesen Parameter auf NULL.
search_text Optional Der Suchtext, für den Einbettungen generiert werden sollen. Erfordert embedding_model in der Vektorspezifikation. Die Einbettung wird mit dem Modell aus der Spezifikation generiert. Sie können nur entweder den Parameter search_text oder search_vector festlegen.
search_vector Optional Der Vektor für die Suchanfrage. Sie können nur entweder den Parameter search_text oder den Parameter search_vector festlegen.
top_k Optional Die Anzahl der zurückzugebenden nächsten Nachbarn.
filter_expressions Optional Die Filterausdrücke, die in der Suchanfrage angewendet werden sollen. Die Filter können auf Felder in der Tabelle angewendet werden, z. B. „Preis < 100“.
iterative_index_search Optional Gibt an, ob für gefilterte Anfragen eine iterative Indexsuche durchgeführt werden soll.Dieser Parameter überschreibt die Einstellungen in der Vektorspezifikation.
target_recall Optional Der Ziel-Recall nur für die Suchanfrage. Dieser Parameter überschreibt die Einstellungen in der Vektorspezifikation und optimiert ef_search.

Rückgabewert

Gibt einen Text mit der Vektorsuchanfrage für die angegebenen Parameter zurück. Diese Abfrage kann ausgeführt oder gespeichert werden, um sie später auszuführen.

vector_assist.evaluate_query_recall

Bewertet den Recall des Vektorindex für eine bestimmte Anfrage. Diese Funktion verwendet die Datenbank- und Indexkonfigurationen in einem JSON-String als Eingaben.

Funktion

CREATE OR REPLACE FUNCTION vector_assist.evaluate_query_recall(
  IN ann_query text,
  IN vector_search_configurations json DEFAULT NULL,
  OUT recall float,
  OUT ann_execution_time float,
  OUT ground_truth_execution_time float,
  OUT index_type text)
RETURNS RECORD

Parameter

Parameter Erforderlich/Optional? Beschreibung
ann_query Erforderlich/Optional? Die SQL-Abfrage, für die der Recall bewertet werden muss. Diese Anfrage sollte eine pgvector-ANN-Anfrage sein.
vector_search_configurations Optional Die Konfigurationen, die für die ANN-Abfrage festgelegt werden können. Dieser Parameter muss im JSON-Format vorliegen.

Rückgabewert

Gibt eine Tabelle zurück, in der der Recall des Vektorindex für die angegebene Anfrage ausgewertet wird.

Die Tabelle enthält die folgenden Spalten:

Spaltenname Typ Beschreibung
recall Float Der Prozentsatz der Vektoren, die vom Index zurückgegeben werden und die tatsächlichen nächsten Nachbarn sind. Mit diesem Messwert wird die Suchqualität quantifiziert. Mit dieser Funktion können Sie die Parameter so anpassen, dass Sie die erwarteten Recall-Ergebnisse für Vektorabfragen erzielen.
ann_execution_time Float Die Zeit, die für die Ausführung einer Vektorabfrage mit Indexscans benötigt wird.
ground_truth_execution_time Float Die Zeit, die für die Ausführung der Abfrage mit einem sequenziellen Scan benötigt wird.

Beispiel

Im folgenden Beispiel wird der Recall für einen HNSW-Index ausgewertet und der Konfigurationsparameter HNSW.ef_search wird überschrieben:

SELECT * FROM vector_assist.evaluate_query_recall(
  ann_query => 'SELECT id FROM items ORDER BY embedding <=> ''[1,2,3]'' LIMIT 10',
  vector_search_configurations => '{"hnsw.ef_search": 30}'
);