Cette page explique comment classer ou évaluer les résultats de recherche pour les applications à l'aide du point de terminaison du modèle de classement Vertex AI enregistré dans la gestion des points de terminaison du modèle.
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 suivre les instructions de cette page, vous devez connaître AlloyDB pour PostgreSQL et les concepts d'IA générative.
AlloyDB réserve le schéma ai
et tente de le créer lorsque vous installez l'extension google_ml_integration
. Si la création du schéma échoue, utilisez les fonctions du même nom dans le schéma google_ml
.
Avant de commencer
Demandez l'accès pour classer vos résultats de recherche à l'aide de modèles de classement et attendez de recevoir la confirmation d'activation avant de suivre les instructions de cette page.
Assurez-vous que le modèle de classement Vertex AI est enregistré. Pour en savoir plus, consultez Modèles de classement Vertex AI.
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 |
Identifiant unique du point de terminaison du modèle que vous définissez. |
SEARCH_STRING |
Chaîne de recherche en fonction de laquelle les enregistrements sont classés ou évalués. |
DOCUMENTS |
Chaîne unique qui identifie l'enregistrement. |
Examples
Pour classer les résultats de recherche à l'aide du point de terminaison de classement enregistré, exécutez la requête suivante:
SELECT index, score
FROM
ai.rank(
model_id => 'semantic-ranker-512-002',
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 en fonction de la pertinence par rapport à la requête de recherche.Voici un exemple de réponse:
index | score
-------+-------
1 | 0.03
2 | 0.02
3 | 0.01
(3 rows)
Prenons l'exemple d'une base de données AlloyDB contenant une liste de descriptions de critiques 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 leurs descriptions de critiques avec une requête. Il suppose que les points de terminaison des modèles text-embedding-005
et semantic-ranker-512@002
sont enregistrés.
WITH
initial_results 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(
'text-embedding-005', 'good desserts')
LIMIT 100
),
reranked AS (
SELECT
ai.rank(
model_id => 'semantic-ranker-512@002',
search_string => 'good desserts',
documents => ARRAY_AGG(review ORDER BY ref_number))
FROM initial_results
)
SELECT product_id, name
FROM initial_results, reranked
WHERE initial_results.ref_number = reranked.index
ORDER BY reranked.score;