L'assistance vectorielle dans AlloyDB pour PostgreSQL fournit un framework SQL déclaratif qui vous permet de déployer, d'ajuster et de gérer les charges de travail de recherche vectorielle sur vos instances. Vous pouvez définir vos exigences de recherche vectorielle, générer et appliquer les configurations SQL recommandées, et surveiller les performances de la charge de travail. Pour en savoir plus sur le fonctionnement de l'assistance vectorielle, consultez Présentation de l'assistance vectorielle.
Avant de commencer
- Vérifiez que votre instance utilise la bonne version de maintenance. L'assistance vectorielle nécessite un numéro de version de maintenance minimal de
POSTGRES_17.20260128.03_06. Pour en savoir plus sur la maintenance en libre-service, consultez Maintenance en libre-service. Activez l'extension d'assistance vectorielle à l'aide de la commande suivante dans la base de données que vous souhaitez utiliser :
CREATE EXTENSION vector_assist CASCADE;Cela génère le schéma
vector_assist, qui est utilisé par l'assistance vectorielle.
Utiliser l'assistant vectoriel pour déployer une charge de travail vectorielle
Pour utiliser l'assistance vectorielle afin de déployer et de gérer une charge de travail vectorielle, vous devez procéder comme suit :
- Définir votre spécification vectorielle
- Afficher les recommandations de Vector Assist
- Appliquer les recommandations de Vector Assist
Définir votre spécification de vecteur
La première étape pour utiliser l'assistance vectorielle consiste à définir la spécification vectorielle . Selon le type de charge de travail vectorielle, les champs que vous utilisez pour définir votre spécification vectorielle peuvent être différents.
Par exemple, si vous souhaitez activer la recherche sémantique sur une colonne spécifique d'une table, exécutez la fonction vector_assist.define_spec pour définir votre spécification vectorielle :
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
);
Remplacez les paramètres suivants :
TABLE_NAME: nom de la table que vous souhaitez utiliser dans votre charge de travail vectorielle.(Facultatif)
VECTOR_COLUMN_NAME: colonne sur laquelle vous souhaitez effectuer une recherche sémantique. Si votre table ne comporte qu'une seule colonne avec des vecteurs,vector_assistpeut la définir automatiquement. S'il existe plusieurs tables avec des vecteurs, vous devez spécifier la colonne à utiliser.(Facultatif)
TARGET_RECALL: rappel cible que vous souhaitez que l'assistance vectorielle atteigne. Si cette option est spécifiée,vector_assistteste différentes valeursef_search, en comparant le rappel dans les recherches exactes des voisins les plus proches.vector_assistdéfinitef_searchsur la valeur qui fournit le rappel cible le plus proche. La valeur par défaut est0.95.(Facultatif)
TUNE_INDEX: valeur booléenne qui spécifie si l'assistant vectoriel ajuste les index vectoriels de votre charge de travail. La valeur par défaut estfalse, ce qui signifie que seuls les paramètres liés à la recherche (ef_search) sont réglés. Les paramètres de temps de compilation (m,ef_construction) ne sont pas réglés.
Pour afficher la liste complète de tous les paramètres disponibles pour la spécification vectorielle, consultez Documentation de référence sur les fonctions d'assistance vectorielle.
Après avoir exécuté la requête pour créer votre spécification vectorielle, l'assistance vectorielle génère automatiquement des étapes, appelées recommandations, que vous devez exécuter pour déployer votre charge de travail vectorielle.
Afficher les recommandations de Vector Assist
Pour afficher les recommandations générées par l'assistance vectorielle à l'aide de votre spécification vectorielle, exécutez la fonction vector_assist.get_recommendations :
SELECT vector_assist.get_recommendations(
spec_id => 'SPEC_ID'
);
Remplacez SPEC_ID par l'ID de la spécification vectorielle pour laquelle vous souhaitez afficher des recommandations. Pour obtenir la liste des spécifications vectorielles disponibles, consultez Lister vos spécifications vectorielles.
vector_assist.get_recommendations renvoie une table appelée vector_assist.RECOMMENDATIONS qui contient toutes les recommandations. Chaque recommandation est stockée dans une table avec le spec_id associé. Chaque recommandation contient généralement les informations suivantes :
- Requête SQL à exécuter
- Explication détaillée de la recommandation
- Autres informations pertinentes expliquant la recommandation
Appliquer les recommandations de l'assistance vectorielle
Vous pouvez appliquer les recommandations générées individuellement ou toutes en même temps.
Pour appliquer une recommandation spécifique, exécutez la fonction vector_assist.apply_recommendation :
SELECT vector_assist.apply_recommendation(
recommendation_id => 'RECOMMENDATION_ID'
);
Remplacez RECOMMENDATION_ID par l'ID de la recommandation d'assistance vectorielle que vous souhaitez appliquer à partir de la table vector_assist.RECOMMENDATIONS.
Pour appliquer toutes les recommandations en même temps, exécutez la fonction vector_assist.apply_spec avec le paramètre spec_id ou table_name :
SELECT vector_assist.apply_spec(
spec_id => 'SPEC_ID'
);
Remplacez SPEC_ID par l'ID de la spécification vectorielle que vous souhaitez utiliser.
Vous pouvez également saisir les paramètres schema_name ou column_name.
Pour en savoir plus sur tous les paramètres de requête disponibles, consultez la documentation de référence sur les fonctions d'assistance vectorielle.
Une fois que vous avez appliqué les recommandations générées par l'assistance vectorielle, l'index vectoriel est prêt à être utilisé.
Générer des requêtes de recherche
Vous pouvez utiliser l'assistance vectorielle pour créer des requêtes de recherche optimisées pour vos charges de travail vectorielles déployées à l'aide de la spécification vectorielle et de l'index vectoriel généré de la charge de travail. Pour générer une requête de recherche optimisée, exécutez la fonction vector_assist.generate_query :
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']
);
Remplacez les paramètres suivants :
SPEC_ID: ID de la spécification que vous souhaitez utiliser.SEARCH_VECTOR: vecteur de votre requête de recherche. Exemple :[1, 2, 3](Facultatif)
TOP_K: nombre de voisins les plus proches à renvoyer. Si aucune valeur n'est spécifiée, la valeur par défaut est10.(Facultatif)
TARGET_RECALL: rappel cible que vous souhaitez que l'assistance vectorielle atteigne. Si cette option est spécifiée,vector_assistteste différentes valeursef_search, en comparant le rappel dans les recherches exactes des voisins les plus proches.vector_assistdéfinitef_searchsur la valeur qui fournit le rappel cible le plus proche.(Facultatif)
FILTER_EXPRESSION: tous les filtres de la requête de recherche. Par exemple, filtrer en fonction d'autres colonnes.
Pour afficher la liste complète de tous les paramètres disponibles pour générer une requête de recherche, consultez Références des fonctions d'assistance vectorielle.
Le résultat de cette fonction renvoie du texte contenant une requête SQL. Vous pouvez exécuter ou enregistrer cette requête SQL si nécessaire.
Lister vos spécifications vectorielles
Si vous devez lister les spécifications vectorielles existantes d'une table, exécutez la fonction vector_assist.list_specs ou utilisez vector_assist.get_spec pour afficher une spécification vectorielle unique par ID :
SELECT vector_assist.list_specs(
table_name => 'TABLE_NAME',
column_name => 'COLUMN_NAME'
);
Remplacez les paramètres suivants :
TABLE_NAME: nom de la table que vous avez utilisée pour définir votre spécification vectorielle.(Facultatif)
COLUMN_NAME: nom de la colonne vectorielle dans la table. En cas d'omission,vector_assist.list_specsrenvoie toutes les spécifications vectorielles définies sur la table spécifiée. Pour récupérer une spécification vectorielle spécifique par ID, appelezSELECT vector_assist.get_spec(spec_id => 'SPEC_ID');.
Étapes suivantes
- En savoir plus sur l'assistance vectorielle
- Documentation de référence sur les fonctions d'assistance vectorielle