La récupération d'agent (anciennement Vector Search 2.0) fournit VertexRanker pour le reclassement sémantique, qui est alimenté par l'API Ranking.
Une fois que la récupération d'agent a récupéré et fusionné les résultats candidats (à l'aide de la Reciprocal Rank Fusion (RRF)), VertexRanker réévalue les candidats fusionnés par rapport à votre requête en langage naturel à l'aide d'un modèle sémantique dédié.
Cela améliore la pertinence des k premiers résultats, en particulier pour les requêtes où la recherche seule ne permet pas de saisir les nuances. Le reclassement s'effectue côté serveur avec des appels à BatchSearchDataObjects. Aucun câblage côté client ni aucun aller-retour supplémentaire n'est nécessaire.
VertexRanker
VertexRanker est configuré comme reclasseur pour le champ combine.ranker de l'objet BatchSearchDataObjectsRequest. Vous devez configurer un classeur principal (seule la RRF est acceptée). Le reclasseur s'exécute après l'étape de fusion RRF et remplace la sortie par la liste réévaluée sémantiquement.
Le tableau suivant répertorie les champs de configuration du classeur.
| Champ | Obligatoire | Description |
|---|---|---|
combine.ranker.rrf.weights |
Oui | Pondérations pour la fusion RRF des résultats de recherche sous-jacents. |
combine.ranker.vertex_ranker.model |
Oui | Nom du modèle de classement. Valeurs acceptées : semantic-ranker-fast@latest, semantic-ranker-default@latest, semantic-ranker-fast-004, semantic-ranker-default-004. Pour en savoir plus sur chacun d'eux, consultez les modèles de l'API Ranking. |
combine.ranker.vertex_ranker.top_n |
Oui | Nombre maximal de candidats de la liste fusionnée à envoyer au classeur. Les valeurs valides sont comprises entre 1 et 1000. |
combine.ranker.vertex_ranker.text_record_spec.query |
Oui | Requête en langage naturel utilisée par le classeur pour évaluer les enregistrements. |
combine.ranker.vertex_ranker.text_record_spec.title_template |
Oui | Chaîne de modèle, par exemple {title}, spécifiant comment extraire (construire) le titre de chaque enregistrement. Utilisez des chemins d'accès pour spécifier les champs de données. |
combine.ranker.vertex_ranker.text_record_spec.content_template |
Oui | Chaîne de modèle, par exemple {body.text}, spécifiant comment extraire (construire) le contenu principal de chaque enregistrement. Utilisez des chemins d'accès pour spécifier les champs de données. |
combine.top_k |
Facultatif | Nombre final de résultats à renvoyer après le reclassement. Cette valeur doit être inférieure ou égale à vertex_ranker.top_n et inférieure ou égale à 1 000. |
L'exemple suivant illustre le corps d'une requête.
{
"searches": [
{ "semantic_search": { "search_text": "running shoes", "search_field": "embedding", "task_type": "RETRIEVAL_QUERY", "top_k": 50 } },
{ "text_search": { "search_text": "running shoes", "data_field_names": ["title"], "top_k": 50 } }
],
"combine": {
"top_k": 10,
"ranker": {
"rrf": { "weights": [1.0, 1.0] },
"vertex_ranker": {
"model": "semantic-ranker-fast@latest",
"top_n": 50,
"text_record_spec": {
"query": "running shoes",
"title_template": "{title}",
"content_template": "{body.text}"
}
}
}
}
}
Les modèles utilisent des chemins d'accès aux champs de données de l'objet de données, par exemple {title} ou {nested.field}. Ces champs doivent exister dans le schéma de la collection. Sinon, la requête est rejetée lors de la validation. Si un objet de données ne contient pas le champ fourni, le serveur récupère de manière transparente l'enregistrement complet à partir du stockage afin que le modèle puisse toujours être rempli.
Quotas et tarifs
VertexRanker sur la récupération d'agent utilise une allocation de niveau sans frais avec facturation des dépassements basée sur l'utilisation. Chaque projet reçoit une allocation sans frais d'utilisation du classement par période de 30 jours. L'utilisation dans cette allocation n'entraîne aucun coût. Les tarifs standards de l'API Ranking s'appliquent au projet client pour toute utilisation au-delà de cette allocation.
Le tableau suivant répertorie les valeurs de quota.
| Élément | Valeur |
|---|---|
| Allocation de niveau sans frais | 80 000 unités de classement par projet client et par période de 30 jours. |
| Dépassement | Facturé au tarif standard de l'API Ranking sur le projet client. |
| Nombre maximal d'enregistrements par appel de reclassement | 1 000 (top_n doit être compris entre [1, 1000] et top_k <= top_n). |
Le fait d'atteindre l'allocation de niveau sans frais n'entraîne pas l'échec de vos requêtes. Une fois l'allocation de 80 000 unités de classement consommée, l'utilisation ultérieure de VertexRanker continue de fonctionner et est facturée en dépassement. L'allocation est réinitialisée 30 jours après votre première utilisation.
Les unités de classement sont calculées à partir du nombre d'enregistrements envoyés au classeur et de la taille de leurs modèles de titre et de contenu, en utilisant la même comptabilité que l'API Ranking autonome. Pour en savoir plus, consultez les tarifs de l'API Ranking.
Avant de pouvoir utiliser VertexRanker, vous devez activer Discovery Engine sur le projet client. Pour en savoir plus, consultez la section Conditions de fin "échec".
Gestion des échecs et avertissements
VertexRanker est un reclasseur qui fonctionne de la manière la plus optimale possible. Si l'appel de classement échoue, le RPC BatchSearchDataObjects réussit toujours et renvoie les résultats fusionnés par RRF tronqués à top_k. L'échec est signalé dans le champ search_response_metadata.warnings de la réponse. Le code d'état complet de l'API Ranking est conservé. Le code d'avertissement pour les états inattendus est
UNAVAILABLE avec le message d'avertissement suivant :
"Reranking is temporarily unavailable. Returning fused (RRF) results without
semantic reranking."
Conditions de fin "échec"
L'ensemble du RPC BatchSearchDataObjects échoue avec FAILED_PRECONDITION (aucun retour à la RRF) dans les cas suivants.
- API Discovery Engine non activée : l'API Ranking renvoie
FAILED_PRECONDITIONavec le messageDiscovery Engine API is not enabled for the consumer project /<N/>. Please enable the API and try again."Solution : activez l'API Discovery Engine sur le projet client.
Le client doit activer Discovery Engine pour le projet client afin que le reclassement puisse avoir lieu.
Le tableau suivant répertorie les codes d'avertissement, les causes typiques qui génèrent les avertissements et le message expliquant l'avertissement.
| Code d'avertissement | Cause typique | Message d'avertissement |
|---|---|---|
RESOURCE_EXHAUSTED |
Dépassement d'un quota de l'API Ranking sur le projet client. Remarque : Le dépassement de l'allocation de 80 000 unités de classement n'entraîne pas cet avertissement. Le dépassement est facturé à la place. | <Quota exceeded message>; RankService.Rank call failed for consumer project <N> with request query: <query> and <model>: semantic-ranker-fast@latest number of records: <N> |
DEADLINE_EXCEEDED |
Ranker.Rank ne s'est pas terminé dans le délai de la requête. |
<deadline-exceeded message from Ranker.Rank>; RankService.Rank call failed for consumer project <N> with request query: <query> and <model>: semantic-ranker-fast@latest number of records: <N> |
UNAVAILABLE |
Ranker.Rank a renvoyé UNAVAILABLE ou un code non conservé (par exemple, INTERNAL) qui est réduit à UNAVAILABLE. |
Si le code sous-jacent est UNAVAILABLE : "RankService.Rank call failed for consumer project... Sinon : "Reranking is temporarily unavailable. Returning fused (RRF) results without semantic reranking." |
FAILED_PRECONDITION |
Tout FAILED_PRECONDITION renvoyé par l'API Ranking. |
RankService.Rank call failed for consumer project <N> with request query: <query> and <model>: semantic-ranker-fast@latest number of records: <N> |
CANCELLED |
L'appelant a annulé le RPC BatchSearchDataObjects avant la fin du reclassement. |
<cancellation message from the cancelled RankService.Rank RPC>; RankService.Rank call failed for consumer project <N> with request query: <query> and <model>: semantic-ranker-fast@latest number of records: <N> |