Dans le cadre de votre expérience de génération augmentée par récupération (RAG) dans Vertex AI Agent Builder, vous pouvez classer un ensemble de documents en fonction d'une requête.
L'API de classement prend une liste de documents et les classe à nouveau en fonction de leur pertinence par rapport à une requête. Contrairement aux représentations vectorielles continues, qui ne tiennent compte que de la similarité sémantique d'un document et d'une requête, l'API de classement peut vous fournir des scores précis sur la qualité de la réponse d'un document à une requête donnée. L'API de classement peut être utilisée pour améliorer la qualité des résultats de recherche après avoir récupéré un ensemble initial de documents candidats.
L'API de classement est sans état. Il n'est donc pas nécessaire d'indexer les documents avant d'appeler l'API. Il vous suffit de transmettre la requête et les documents. L'API est donc particulièrement adaptée pour reclasser les documents de Vector Search et d'autres solutions de recherche.
Cette page explique comment utiliser l'API de classement pour classer un ensemble de documents en fonction d'une requête.
Cas d'utilisation
Le principal cas d'utilisation de l'API de classement est d'améliorer la qualité des résultats de recherche.
Toutefois, l'API de classement peut être utile dans tous les cas où vous devez trouver les contenus les plus pertinents par rapport à la requête d'un utilisateur. Par exemple, l'API de classement peut vous aider à:
Trouver le bon contenu à transmettre à un LLM pour l'ancrage
Améliorer la pertinence d'une expérience de recherche existante
Identifier les sections pertinentes d'un document
Le flux suivant décrit comment utiliser l'API de classement pour améliorer la qualité des résultats pour les documents segmentés:
Utilisez l'API Document AI Layout Parser pour diviser un ensemble de documents en fragments.
Utilisez une API d'embeddings pour créer des embeddings pour chacun des segments.
Chargez les embeddings dans Vector Search ou dans une autre solution de recherche.
Interrogez votre index de recherche et récupérez les segments les plus pertinents.
Reclassez les segments pertinents à l'aide de l'API de classement.
Données d'entrée
L'API de classement nécessite les entrées suivantes:
Requête pour laquelle vous classez les enregistrements.
Exemple :
"query": "Why is the sky blue?"
Ensemble d'enregistrements pertinents pour la requête. Les enregistrements sont fournis sous la forme d'un tableau d'objets. Chaque enregistrement peut inclure un identifiant unique, un titre et le contenu du document. Pour chaque enregistrement, incluez un titre, un contenu ou les deux. Si la longueur du titre et du contenu dépasse 512 jetons, le contenu supplémentaire est tronqué. Vous pouvez inclure jusqu'à 200 enregistrements par requête.
Par exemple, un tableau d'enregistrements se présente comme suit : En réalité, de nombreux autres enregistrements seraient inclus dans le tableau et le contenu serait beaucoup plus long:
"records": [ { "id": "1", "title": "The Color of the Sky: A Poem", "content": "A canvas stretched across the day,\nWhere sunlight learns to dance and play.\nBlue, a hue of scattered light,\nA gentle whisper, soft and bright." }, { "id": "2", "title": "The Science of a Blue Sky", "content": "The sky appears blue due to a phenomenon called Rayleigh scattering. Sunlight is comprised of all the colors of the rainbow. Blue light has shorter wavelengths than other colors, and is thus scattered more easily." } ]
Facultatif: Nombre maximal d'enregistrements que vous souhaitez que l'API de classement renvoie. Par défaut, tous les enregistrements sont renvoyés. Toutefois, vous pouvez utiliser le champ
topN
pour renvoyer moins d'enregistrements. Tous les enregistrements sont classés, quelle que soit la valeur définie.Par exemple, la requête suivante renvoie les 10 meilleurs enregistrements:
"topN": 10,
Facultatif: paramètre qui spécifie si vous souhaitez uniquement que l'ID de l'enregistrement soit renvoyé par l'API ou si vous souhaitez également que le titre et le contenu de l'enregistrement soient renvoyés. Par défaut, l'enregistrement complet est renvoyé. La raison principale de définir cette valeur est que vous souhaitez réduire la taille de la charge utile de la réponse.
Par exemple, la valeur
true
ne renvoie que l'ID d'enregistrement, et non le titre ni le contenu:"ignoreRecordDetailsInResponse": true,
Facultatif: nom du modèle. Ce paramètre spécifie le modèle à utiliser pour classer les documents. Si aucun modèle n'est spécifié,
semantic-ranker-512@latest
est utilisé, ce qui pointe automatiquement vers le dernier modèle disponible. Pour faire référence à un modèle spécifique, spécifiez l'un des noms de modèle listés dans Modèles compatibles, par exemplesemantic-ranker-512-002
.Dans l'exemple suivant,
model
est défini sursemantic-ranker-512@latest
. Cela signifie que l'API de classement utilisera toujours le dernier modèle disponible."model": "semantic-ranker-512@latest"
Données de sortie
L'API de classement renvoie une liste d'enregistrements classés avec les résultats suivants:
Score: valeur flottante comprise entre 0 et 1 qui indique la pertinence de l'enregistrement.
ID: identifiant unique de l'enregistrement.
Si nécessaire, l'objet complet: l'ID, le titre et le contenu.
Exemple :
{
"records": [
{
"id": "2",
"score": 0.98,
"title": "The Science of a Blue Sky",
"content": "The sky appears blue due to a phenomenon called Rayleigh scattering. Sunlight is comprised of all the colors of the rainbow. Blue light has shorter wavelengths than other colors, and is thus scattered more easily."
},
{
"id": "1",
"score": 0.64,
"title": "The Color of the Sky: A Poem",
"content": "A canvas stretched across the day,\nWhere sunlight learns to dance and play.\nBlue, a hue of scattered light,\nA gentle whisper, soft and bright."
}
]
}
Classer (ou reclasser) un ensemble d'enregistrements en fonction d'une requête
En règle générale, vous fournissez à l'API de classement une requête et un ensemble d'enregistrements pertinents pour cette requête et qui ont déjà été classés par une autre méthode, telle qu'une recherche par mot clé ou une recherche vectorielle. Vous utilisez ensuite l'API de classement pour améliorer la qualité du classement et déterminer un score qui indique la pertinence de chaque enregistrement par rapport à la requête.
Obtenez la requête et les enregistrements qui en résultent. Assurez-vous que chaque enregistrement comporte un ID et un titre, un contenu ou les deux.
Le modèle accepte jusqu'à 512 jetons par enregistrement. Si la longueur combinée du titre et du contenu dépasse 512 jetons, le contenu supplémentaire est tronqué.
Appelez la méthode
rankingConfigs.rank
à l'aide du code suivant:
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
"https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/rankingConfigs/default_ranking_config:rank" \
-d '{
"model": "semantic-ranker-512@latest",
"query": "QUERY",
"records": [
{
"id": "RECORD_ID_1",
"title": "TITLE_1",
"content": "CONTENT_1"
},
{
"id": "RECORD_ID_2",
"title": "TITLE_2",
"content": "CONTENT_2"
},
{
"id": "RECORD_ID_3",
"title": "TITLE_3",
"content": "CONTENT_3"
}
]
}'
Remplacez les éléments suivants :
PROJECT_ID
: ID de votre projet Google Cloud.QUERY
: requête sur laquelle les enregistrements sont classés et évalués.RECORD_ID_n
: chaîne unique qui identifie l'enregistrement.TITLE_n
: titre de l'enregistrement.CONTENT_n
: contenu de l'enregistrement.
Pour en savoir plus sur cette méthode, consultez rankingConfigs.rank
.
Cliquez ici pour voir un exemple de commande curl et de réponse.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: my-project-123" \ "https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/rankingConfigs/default_ranking_config:rank" \ -d '{ "model": "semantic-ranker-512@latest", "query": "what is Google gemini?", "records": [ { "id": "1", "title": "Gemini", "content": "The Gemini zodiac symbol often depicts two figures standing side-by-side." }, { "id": "2", "title": "Gemini", "content": "Gemini is a cutting edge large language model created by Google." }, { "id": "3", "title": "Gemini Constellation", "content": "Gemini is a constellation that can be seen in the night sky." } ] }'
{ "records": [ { "id": "2", "title": "Gemini", "content": "Gemini is a cutting edge large language model created by Google.", "score": 0.97 }, { "id": "3", "title": "Gemini Constellation", "content": "Gemini is a constellation that can be seen in the night sky.", "score": 0.18 }, { "id": "1", "title": "Gemini", "content": "The Gemini zodiac symbol often depicts two figures standing side-by-side.", "score": 0.05 } ] }
Python
Pour en savoir plus, consultez la documentation de référence de l'API Python de Vertex AI Agent Builder.
Pour vous authentifier auprès de Vertex AI Agent Builder, configurez les Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Modèles compatibles
Les modèles suivants sont disponibles.
Nom du modèle | Dernier modèle (semantic-ranker-512@latest ) |
Entrée | Fenêtre de contexte | Date de disponibilité | Date d'arrêt |
---|---|---|---|---|---|
semantic-ranker-512-003 |
Oui | Texte (25 langues) | 512 | 10 septembre 2024 | À déterminer |
semantic-ranker-512-002 |
Non | Texte (en uniquement) | 512 | 3 juin 2024 | À déterminer |
Étape suivante
Découvrez comment utiliser la méthode de classement avec d'autres API de RAG pour générer des réponses étayées à partir de données non structurées.