Découvrez comment classer et reclasser les résultats de recherche pour les applications à l'aide de modèles de classement Vertex AI tels que semantic-ranker-default-003
.
Vous pouvez utiliser la fonction ai.rank()
pour attribuer un score aux documents en fonction de leur pertinence par rapport à une requête, et améliorer les résultats de la recherche vectorielle en les reclassant pour un meilleur ordre des requêtes.
L'API Vertex AI Ranking prend une liste de documents et les classe en fonction de leur pertinence par rapport à une requête donnée (une chaîne de recherche). Lorsque vous utilisez la fonction ai.rank()
, elle renvoie des scores indiquant dans quelle mesure un document répond à une requête donnée.
Pour utiliser les instructions de cette page, vous devez comprendre AlloyDB pour PostgreSQL et connaître les concepts de l'IA générative.
AlloyDB réserve et crée le schéma ai
.
Avant de commencer
Avant de classer les résultats de recherche, procédez comme suit :
- Vérifiez que l'extension
google_ml_integration
est installée. - Vérifiez que l'indicateur
google_ml_integration.enable_model_support
est défini suron
. - Intégration à Vertex AI
- Activez l'API Discovery Engine.
- Obtenez les rôles requis pour utiliser les modèles de classement.
Activer l'API Discovery Engine
Console
- Activer l'API
- À l'étape Confirmer le projet, cliquez sur Suivant pour confirmer le nom du projet que vous allez modifier.
- À l'étape Activer les API, cliquez sur Activer pour activer l'API Discovery Engine. Si vous avez déjà activé cette API, elle ne s'affichera pas ici.
gcloud
Pour utiliser les modèles de classement, vous devez activer l'API Discovery Engine.
Remplacez PROJECT_ID
par l'ID de votre projet Google Cloud et PROJECT_NUMBER
par le numéro de projet correspondant.
# Enable Discovery Engine API gcloud services enable discoveryengine.googleapis.com --project=PROJECT_ID gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com" \ --role="roles/discoveryengine.viewer"
L'enregistrement de modèles pour le classement n'est pas obligatoire pour les modèles Vertex AI.
Vous pouvez utiliser le nom du modèle Vertex AI comme model_id
, comme illustré dans l'exemple suivant.
SELECT index, score FROM ai.rank( model_id => 'semantic-ranker-default-003', search_string => 'Affordable family-friendly vacation spots in Southeast Asia?', documents => ARRAY[ 'Luxury resorts in South Korea', 'Family vacation packages for Vietnam: Ha Long Bay and Hoi An', 'Budget-friendly beaches in Thailand perfect for families', 'A backpacker guide to solo travel in India'])
Un cas d'utilisation courant du classificateur sémantique consiste à reclasser les résultats renvoyés par la recherche vectorielle pour un meilleur ordre des requêtes. L'exemple suivant montre comment utiliser le modèle de classement sémantique pour ce cas d'utilisation. L'exemple récupère un ensemble de résultats initial pour la requête personal fitness
equipment
à l'aide de la recherche vectorielle. Ces résultats sont ensuite reclassés pour renvoyer les cinq premiers résultats.
WITH initial_ranking AS ( SELECT id, description, ROW_NUMBER() OVER () AS ref_number FROM product ORDER BY embedding <=> google_ml.embedding( 'gemini-embedding-001', 'personal fitness equipment')::vector LIMIT 10 ), reranked_results AS ( SELECT index, score FROM ai.rank( model_id => 'semantic-ranker-default-003', search_string => 'personal fitness equipment', documents => (SELECT ARRAY_AGG(description ORDER BY ref_number) FROM initial_ranking), top_n => 5) ) SELECT id, description FROM initial_ranking, reranked_results WHERE initial_ranking.ref_number = reranked_results.index ORDER BY reranked_results.score DESC;
Pour obtenir la liste des modèles et des cas d'utilisation disponibles, consultez Modèles compatibles.
Intégrer Vertex AI et installer l'extension
- Intégration à Vertex AI
- Assurez-vous que la dernière version de
google_ml_integration
est installée.Pour vérifier la version installée, exécutez la commande suivante :
SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration'; extversion ------------ 1.4.3 (1 row)
Si l'extension n'est pas installée ou si la version installée est antérieure à la version 1.4.3, mettez-la à jour en exécutant les commandes suivantes :
CREATE EXTENSION IF NOT EXISTS google_ml_integration; ALTER EXTENSION google_ml_integration UPDATE;
Si vous rencontrez des problèmes lors de l'exécution des commandes précédentes ou si l'extension n'est pas mise à jour vers la version 1.4.3 après l'exécution des commandes précédentes, contactez l'assistance AlloyDB.
Une fois que vous avez vérifié que la version est à jour, installez la fonctionnalité d'aperçu en exécutant la procédure
upgrade_to_preview_version
:CALL google_ml.upgrade_to_preview_version(); SELECT extversion FROM pg_extension WHERE extname = 'google_ml_integration'; extversion ------------ 1.4.4 (1 row)
Rôles requis
Pour obtenir les autorisations nécessaires pour utiliser les modèles de classement de Discovery Engine, demandez à votre administrateur de vous accorder le rôle Identity and Access Management (IAM) Lecteur Discovery Engine (roles/discoveryengine.viewer
) sur your project
. Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises grâce aux rôles personnalisés ou à d'autres rôles prédéfinis.
Classer vos résultats de recherche
La requête SQL suivante montre comment classer vos résultats de recherche :
SELECT
ai.rank(
model_id => 'MODEL_ID',
search_string => 'SEARCH_STRING',
documents => ARRAY['DOCUMENT_1', 'DOCUMENT_2', 'DOCUMENT_3']);
Remplacez les éléments suivants :
Paramètre | Description |
---|---|
MODEL_ID |
ID unique du point de terminaison du modèle que vous définissez. |
SEARCH_STRING |
Chaîne de recherche par rapport à laquelle les enregistrements sont classés. |
DOCUMENTS |
Chaîne unique qui identifie l'enregistrement. |
Pour obtenir la liste des modèles de classement Vertex AI compatibles, consultez Modèles compatibles.
Exemples
Pour classer les résultats de recherche à l'aide d'un modèle de classement Vertex AI, exécutez la requête suivante :
SELECT index, score
FROM
ai.rank(
model_id => 'semantic-ranker-default-003',
search_string => 'AlloyDB is a PostgreSQL compatible AI database that is ready for production.',
documents =>
ARRAY[
'Alloys are made from combination of metals',
'The best enterprise-ready PostgreSQL database.',
'You can feel the heat in Alloy apartments.']);
La réponse est un tableau qui affiche chaque document et le score de pertinence par rapport à la requête de recherche. Voici un exemple de réponse :
index | score
-------+------------
2 | 0.33
1 | 0.28
3 | 0.16
(3 rows)
Prenons l'exemple d'une base de données AlloyDB contenant une liste de descriptions d'avis converties en embeddings. L'extrait de code suivant montre comment utiliser le modèle de classement pour récupérer le nom des produits les mieux classés en fonction de la similarité sémantique de la description de leurs avis avec une requête.
WITH initial_ranking AS (
SELECT product_id, name, review, review_id, ROW_NUMBER() OVER () AS ref_number
FROM user_reviews
ORDER BY
review_desc_embedding <=> google_ml.embedding(
'gemini-embedding-001', 'good desserts')::vector
LIMIT 10
), reranked_results AS (
SELECT index, score
FROM
ai.rank(
model_id => 'semantic-ranker-512',
search_string => 'good desserts',
documents => (SELECT ARRAY_AGG(review ORDER BY ref_number) FROM initial_ranking),
top_n => 5)
)
SELECT product_id, name
FROM initial_ranking, reranked_results
WHERE initial_ranking.ref_number = reranked_results.index
ORDER BY reranked_results.score DESC;
Étapes suivantes
Enregistrez un point de terminaison de modèle avec la gestion des points de terminaison de modèle.
Interrogez vos données à l'aide d'opérateurs SQL optimisés par l'IA.