Cette page fournit des informations détaillées sur toutes les fonctions d'assistance vectorielle disponibles, ainsi que sur leurs paramètres obligatoires et facultatifs.
vector_assist.define_spec
Définit une nouvelle spécification de vecteur, ou spécification de vecteur, et renvoie les recommandations nécessaires pour intensifier la charge de travail du vecteur. Cette fonction applique les spécifications fournies par l'utilisateur pour générer les recommandations.
Fonction
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;
Paramètres
| Paramètre | Obligatoire ? | Description |
|---|---|---|
spec_id |
Obligatoire (généré automatiquement) | ID unique de la spécification vectorielle que vous définissez. |
table_name |
Obligatoire ? | Nom de la table à utiliser dans la configuration de la charge de travail vectorielle. |
schema_name |
Facultatif | Schéma contenant la table à utiliser dans la charge de travail vectorielle. Le schéma est automatiquement déduit en fonction du chemin de recherche du schéma. |
vector_column_name |
Facultatif ou obligatoire | Nom de la colonne contenant les embeddings vectoriels. Cette colonne est obligatoire si vous utilisez plusieurs colonnes de vecteur et que text_column_name n'est pas déclaré. Si vous n'utilisez qu'une seule colonne de vecteur, ce paramètre est facultatif. |
text_column_name |
Facultatif ou obligatoire | Nom de la colonne de texte. Ce paramètre est obligatoire si votre charge de travail vectorielle nécessite la génération d'embeddings à partir d'une colonne de texte. Cette colonne est obligatoire si le paramètre vector_column_name est défini sur NULL et qu'il n'y a pas d'autres colonnes de vecteurs.Ce paramètre utilise l'extension google_ml_integration pour générer des embeddings à partir de la colonne de texte donnée. |
vector_index_type |
Facultatif | Type d'index vectoriel. Les valeurs acceptées incluent les suivantes :
|
embeddings_available |
Facultatif | Valeur booléenne qui vérifie si des embeddings vectoriels existent dans la table sélectionnée.
Ce champ est défini sur FALSE si aucune colonne vectorielle n'est détectée et que le paramètre text_column_name est défini. |
embedding_model |
Facultatif ou obligatoire | ID du modèle à partir de google_ml.models à utiliser pour générer les embeddings. Ce champ est facultatif, sauf si le paramètre embeddings_available est défini sur FALSE ou NULL. |
num_vectors |
Facultatif | Nombre de vecteurs dans la table. |
dismensionality |
Facultatif | Dimension des vecteurs donnés. |
distance_func |
Facultatif | Fonction de distance à utiliser pour comparer les vecteurs. Les valeurs acceptables incluent cosine, ip, l2 ou l1. |
quantization |
Facultatif | Quantification pour les index vectoriels. Les valeurs acceptables sont none, halfvec ou bit. |
prefilter_column_names |
Facultatif | Crée un index pour la colonne spécifiée pour le préfiltrage. Cela peut améliorer les performances des requêtes avec un filtre à sélectivité élevée sur la colonne. |
memory_budget_kb |
Facultatif | Mémoire maximale (en Ko) pour la création d'index. |
target_recall |
Facultatif | Rappel cible pour les requêtes vectorielles standards. |
target_top_k |
Facultatif | Les valeurs correspondantes top K à récupérer pour le calcul du rappel.
Cette valeur est utilisée si le paramètre target_recall est spécifié. |
tune_vector_index |
Facultatif | Règle les index vectoriels de votre charge de travail. Si cette option est activée, l'assistance vectorielle ajuste automatiquement l'index vectoriel ou la requête de recherche à l'aide de la spécification vectorielle, et calcule les paramètres optimaux de la base de données et de l'index. Les valeurs acceptables incluent TRUE ou FALSE. |
Valeur renvoyée
Renvoie un tableau de recommandations à appliquer pour configurer la charge de travail vectorielle demandée. Chaque ligne correspond à une recommandation unique qui contient une requête SQL exécutable et une explication détaillée des raisons pour lesquelles appliquer la recommandation. La recommandation peut être appliquée à l'aide de la fonction apply_recommendation().
Le tableau des recommandations contient les colonnes suivantes :
| Nom de la colonne | Type | Description |
|---|---|---|
recommendation_id |
Texte | ID de la recommandation. La recommandation est appliquée à l'aide de cet ID. |
vector_spec_id |
Texte | ID de la spécification vectorielle associée à la recommandation. |
table_name |
Texte | Nom de la table associée à la recommandation. |
schema_name |
Texte | Nom du schéma contenant la table donnée. |
query |
Texte | Requête SQL exécutable à exécuter pour obtenir le résultat de la recommandation. |
recommendation |
Texte | Explication de la recommandation, y compris le résultat attendu une fois la recommandation appliquée. Cette colonne contient également la raison et la justification de la recommandation. Vous pouvez utiliser ce contexte pour ajuster la requête si nécessaire et générer de nouvelles recommandations. |
applied |
Booléen | Indique si la recommandation a été appliquée. |
modified |
Booléen | Indique si la recommandation a été modifiée par l'utilisateur. |
created_at |
Code temporel avec fuseau horaire | Heure à laquelle la recommandation a été générée, au format timestamp with time zone. Exemple : 2024-07-18 09:00:00-08. |
vector_assist.list_specs
Renvoie la spécification vectorielle actuelle pour une table et une colonne données.
Fonction
CREATE OR REPLACE FUNCTION vector_assist.list_specs(
table_name TEXT,
column_name TEXT DEFAULT NULL
)
RETURNS SETOF vector_assist.VECTOR_SPECS
Paramètres
| Paramètre | Obligatoire ? | Description |
|---|---|---|
table_name |
Obligatoire ? | Nom de la table pour laquelle la spécification vectorielle est récupérée. |
column_name |
Facultatif | Nom de la colonne sur laquelle filtrer le tableau avant de renvoyer la spécification. Si le nom de la colonne est spécifié, les spécifications contenant des noms de colonnes de texte ou de vecteur correspondant à ce nom de colonne sont renvoyées. |
Valeur renvoyée
Renvoie un tableau de spécifications pour la table et, éventuellement, le nom de la colonne.
vector_assist.modify_spec
Modifie une spécification vectorielle existante. Lorsque la spécification vectorielle est modifiée, les recommandations associées sont régénérées en fonction des nouvelles spécifications.
Fonction
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
Paramètres
| Paramètre | Obligatoire ? | Description |
|---|---|---|
spec_id |
Obligatoire (généré automatiquement) | ID unique de la spécification vectorielle que vous définissez. |
table_name |
Obligatoire ? | Nom de la table à utiliser dans la configuration de la charge de travail vectorielle. |
schema_name |
Facultatif | Schéma contenant la table à utiliser dans la charge de travail vectorielle. Le schéma est automatiquement déduit en fonction du chemin de recherche du schéma. |
vector_column_name |
Facultatif ou obligatoire | Nom de la colonne contenant les embeddings vectoriels. Cette colonne est obligatoire si vous utilisez plusieurs colonnes de vecteur et que text_column_name n'est pas déclaré. Si vous n'utilisez qu'une seule colonne de vecteur, ce paramètre est facultatif. |
text_column_name |
Facultatif ou obligatoire | Nom de la colonne de texte. Ce paramètre est obligatoire si votre charge de travail vectorielle nécessite la génération d'embeddings à partir d'une colonne de texte. Cette colonne est obligatoire si le paramètre vector_column_name est défini sur NULL et qu'il n'y a pas d'autres colonnes de vecteurs.Ce paramètre utilise l'extension google_ml_integration pour générer des embeddings à partir de la colonne de texte donnée. |
vector_index_type |
Facultatif | Type d'index vectoriel. Les valeurs acceptées incluent les suivantes :
|
embeddings_available |
Facultatif | Valeur booléenne qui vérifie si des embeddings vectoriels existent dans la table sélectionnée.
Ce champ est défini sur FALSE si aucune colonne vectorielle n'est détectée et que le paramètre text_column_name est défini. |
embedding_model |
Facultatif ou obligatoire | ID du modèle à partir de google_ml.models à utiliser pour générer les embeddings. Ce champ est facultatif, sauf si le paramètre embeddings_available est défini sur FALSE ou NULL. |
num_vectors |
Facultatif | Nombre de vecteurs dans la table. |
dismensionality |
Facultatif | Dimension des vecteurs donnés. |
distance_func |
Facultatif | Fonction de distance à utiliser pour comparer les vecteurs. Les valeurs acceptables incluent cosine, ip, l2 ou l1. |
quantization |
Facultatif | Quantification pour les index vectoriels. Les valeurs acceptables sont none, halfvec ou bit. |
prefilter_column_names |
Facultatif | Identifie les colonnes disponibles pour le préfiltrage dans les requêtes de recherche vectorielle. |
memory_budget_kb |
Facultatif | Mémoire maximale (en Ko) pour la création d'index. |
target_recall |
Facultatif | Rappel cible pour les requêtes vectorielles standards. |
target_top_k |
Facultatif | Les valeurs correspondantes top K à récupérer pour le calcul du rappel.
Cette valeur est utilisée si le paramètre target_recall est spécifié. |
tune_vector_index |
Facultatif | Règle les index vectoriels de votre charge de travail. Si cette option est activée, l'assistance vectorielle ajuste automatiquement l'index vectoriel ou la requête de recherche à l'aide de la spécification vectorielle, et calcule les paramètres optimaux de la base de données et de l'index. Les valeurs acceptables incluent TRUE ou FALSE. |
Valeur renvoyée
Renvoie un tableau de recommandations mis à jour qui doit être appliqué pour configurer la charge de travail vectorielle demandée. Chaque ligne correspond à une recommandation unique qui contient une requête SQL exécutable et une explication détaillée des raisons pour lesquelles appliquer la recommandation. La recommandation peut être appliquée à l'aide de la fonction apply_recommendation().
Le tableau des recommandations contient les colonnes suivantes :
| Nom de la colonne | Type | Description |
|---|---|---|
recommendation_id |
Texte | ID de la recommandation. La recommandation est appliquée à l'aide de cet ID. |
vector_spec_id |
Texte | ID de la spécification vectorielle associée à la recommandation. |
table_name |
Texte | Nom de la table associée à la recommandation. |
schema_name |
Texte | Nom du schéma contenant la table donnée. |
query |
Texte | Requête SQL exécutable à exécuter pour obtenir le résultat de la recommandation. |
recommendation |
Texte | Explication de la recommandation, y compris le résultat attendu une fois la recommandation appliquée. Cette colonne contient également la raison et la justification de la recommandation. Vous pouvez utiliser ce contexte pour ajuster la requête si nécessaire et générer de nouvelles recommandations. |
applied |
Booléen | Indique si la recommandation a été appliquée. |
modified |
Booléen | Indique si la recommandation a été modifiée par l'utilisateur. |
created_at |
Code temporel avec fuseau horaire | Heure à laquelle la recommandation a été générée. |
vector_assist.get_recommendations
Renvoie les recommandations associées à un vecteur spec_id spécifique.
Fonction
CREATE OR REPLACE FUNCTION vector_assist.get_recommendations (
spec_id TEXT
)
RETURNS SETOF vector_assist.RECOMMENDATIONS;
Paramètres
| Paramètre | Obligatoire ? | Description |
|---|---|---|
spec_id |
Obligatoire ? | Obtient des recommandations pour le vecteur spec_id spécifié. |
Valeur renvoyée
Renvoie un tableau des recommandations demandées.
Le tableau des recommandations contient les colonnes suivantes :
| Nom de la colonne | Type | Description |
|---|---|---|
recommendation_id |
Texte | ID de la recommandation. La recommandation est appliquée à l'aide de cet ID. |
vector_spec_id |
Texte | ID de la spécification vectorielle associée à la recommandation. |
table_name |
Texte | Nom de la table associée à la recommandation. |
schema_name |
Texte | Nom du schéma contenant la table donnée. |
query |
Texte | Requête SQL exécutable à exécuter pour obtenir le résultat de la recommandation. |
recommendation |
Texte | Explication de la recommandation, y compris le résultat attendu une fois la recommandation appliquée. Cette colonne contient également la raison et la justification de la recommandation. Vous pouvez utiliser ce contexte pour ajuster la requête si nécessaire et générer de nouvelles recommandations. |
applied |
Booléen | Indique si la recommandation a été appliquée. |
modified |
Booléen | Indique si la recommandation a été modifiée par l'utilisateur. |
created_at |
Code temporel avec fuseau horaire | Heure à laquelle la recommandation a été générée. |
vector_assist.apply_recommendation
Applique une seule recommandation à l'aide de recommendation_id.
Fonction
CREATE OR REPLACE FUNCTION vector_assist.get_recommendations (
spec_id TEXT
)
RETURNS SETOF vector_assist.RECOMMENDATIONS;
Paramètres
| Paramètre | Obligatoire ? | Description |
|---|---|---|
recommenation_id |
Obligatoire ? | ID de la recommandation vectorielle à appliquer. |
Valeur renvoyée
Renvoie une valeur booléenne qui confirme si une recommandation a bien été appliquée et met à jour la colonne applied de la table vector_assist.RECOMMENDATIONS sur TRUE.
Si l'assistance vectorielle ne parvient pas à appliquer la recommandation, un message d'erreur s'affiche.
vector_assist.apply_spec
Applique toutes les recommandations associées à un nom de table ou de vecteur spec_id spécifique. Cette fonction parcourt toutes les recommandations et exécute la fonction vector_assist.apply_recommendation sur chacune d'elles.
Vous devez spécifier un spec_id ou un table_name pour exécuter la fonction.
Fonction
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;
Paramètres
| Paramètre | Obligatoire ? | Description |
|---|---|---|
spec_id |
Facultatif | Applique toutes les recommandations pour le vecteur spec_id donné.
|
table_name |
Facultatif | Applique toutes les recommandations pour la table donnée. |
schema_name |
Facultatif | Schéma contenant la table spécifiée. |
column_name |
Facultatif | Identifie le text_column_name ou le vector_column_name à utiliser si la table contient plusieurs spécifications de vecteur. |
Valeur renvoyée
Renvoie une valeur booléenne qui confirme si toutes les recommandations ont été appliquées et définit la valeur dans la colonne vector_assist.RECOMMENDATIONS de la table applied sur TRUE pour toutes les recommandations.
Si l'assistance vectorielle ne parvient pas à appliquer la recommandation, un message d'erreur s'affiche.
vector_assist.modify_recommendation
Modifie la requête pour une recommandation spécifique et définit le champ modified dans la table vector_assist.RECOMMENDATIONS pour la recommandation associée sur TRUE.
Fonction
CREATE OR REPLACE FUNCTION vector_assist.modify_recommendation(
recommendation_id TEXT,
modified_query TEXT
)
RETURNS BOOLEAN;
Paramètres
| Paramètre | Obligatoire ? | Description |
|---|---|---|
recommendation_id |
Obligatoire ? | ID de la recommandation à modifier. |
modified_query |
Obligatoire ? | Requête SQL modifiée par l'utilisateur pour la recommandation. |
Valeur renvoyée
Renvoie une valeur booléenne qui confirme si une recommandation a été mise à jour et définit la colonne modified de la table vector_assist.RECOMMENDATIONS sur TRUE.
Si l'assistance vectorielle ne parvient pas à mettre à jour la recommandation, un message d'erreur s'affiche.
vector_assist.generate_query
Génère une requête de recherche vectorielle optimisée en fonction de la spécification vectorielle et des paramètres de recherche définis. Cette fonction peut ajuster la valeur ef_search pour répondre à la valeur target_recall définie, le cas échéant.
Fonction
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
Paramètres
| Paramètre | Obligatoire ? | Description |
|---|---|---|
spec_id |
Facultatif | Spécifie le spec_id pour lequel générer la requête. |
table_name |
Facultatif | Spécifie le nom de la table pour laquelle générer la requête de recherche si spec_id n'est pas fourni. Si une table contient plusieurs spécifications, le paramètre renvoie une erreur. |
column_name |
Facultatif | Spécifie le nom de la colonne pour laquelle générer la requête de recherche si spec_id n'est pas fourni. Si la colonne contient plusieurs spécifications, le paramètre renvoie une erreur. column_name peut être text_column_name ou vector_column_name. |
output_column_name |
Facultatif | Noms des colonnes à récupérer dans la requête de sortie. Pour récupérer toutes les colonnes, définissez ce paramètre sur NULL. |
search_text |
Facultatif | Texte de recherche pour lequel générer des embeddings. Nécessite embedding_model dans la spécification du vecteur. L'embedding est généré à l'aide du modèle de la spécification. Vous ne pouvez définir que le paramètre search_text ou search_vector. |
search_vector |
Facultatif | Vecteur de la requête de recherche. Vous ne pouvez définir que le paramètre search_text ou le paramètre search_vector. |
top_k |
Facultatif | Nombre de voisins les plus proches à renvoyer. |
filter_expressions |
Facultatif | Expressions de filtre à appliquer dans la requête de recherche. Les filtres peuvent être appliqués aux champs du tableau, par exemple "prix < 100". |
iterative_index_search |
Facultatif | Indique s'il faut effectuer une recherche d'index itérative pour les requêtes filtrées.Ce paramètre remplace les paramètres de la spécification vectorielle. |
target_recall |
Facultatif | Rappel cible pour la requête de recherche uniquement. Ce paramètre remplace les paramètres de la spécification du vecteur et ajuste ef_search. |
Valeur renvoyée
Renvoie un texte contenant la requête de recherche vectorielle pour les paramètres donnés. Vous pouvez exécuter cette requête ou l'enregistrer pour l'exécuter ultérieurement.
vector_assist.evaluate_query_recall
Évalue le rappel de l'index vectoriel pour une requête donnée. Cette fonction utilise les configurations de base de données et d'index dans une chaîne JSON comme entrées.
Fonction
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
Paramètres
| Paramètre | Obligatoire ? | Description |
|---|---|---|
ann_query |
Obligatoire ? | Requête SQL pour laquelle le rappel doit être évalué. Cette requête doit être une requête ANN pgvector. |
vector_search_configurations |
Facultatif | Configurations pouvant être définies pour la requête ANN. Ce paramètre doit être au format JSON. |
Valeur renvoyée
Renvoie un tableau qui évalue le rappel de l'index vectoriel pour la requête donnée.
Le tableau contient les colonnes suivantes :
| Nom de la colonne | Type | Description |
|---|---|---|
recall |
Float | Pourcentage de vecteurs renvoyés par l'index qui sont de vrais voisins les plus proches. Cette métrique permet de quantifier la qualité de la recherche. Cette fonction vous permet d'ajuster les paramètres pour renvoyer les résultats de rappel de requête vectorielle attendus. |
ann_execution_time |
Float | Temps nécessaire à l'exécution d'une requête vectorielle à l'aide d'analyses d'index. |
ground_truth_execution_time |
Float | Temps nécessaire à l'exécution de la requête à l'aide d'une analyse séquentielle. |
Exemple
L'exemple suivant évalue le rappel pour un index HNSW et remplace le paramètre de configuration HNSW.ef_search :
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}'
);