La fonctionnalité d'ancrage avec la recherche Google de l'API Gemini et d'AI Studio peut être utilisée pour améliorer la précision et la fraîcheur des réponses du modèle. En plus de fournir des réponses plus factuelles, lorsque l'ancrage avec la recherche Google est activé, l'API Gemini renvoie des sources d'ancrage (liens d'accompagnement intégrés) et des suggestions de recherche Google avec le contenu de la réponse. Les suggestions de recherche redirigent les utilisateurs vers les résultats de recherche correspondant à la réponse ancrée.
L'ancrage avec la recherche Google n'est compatible qu'avec les requêtes textuelles. Il n'est pas compatible avec les requêtes multimodales (texte et image, texte et audio, etc.). L'ancrage avec la recherche Google est compatible avec toutes les langues disponibles pour les modèles Gemini.
Ce guide vous aidera à vous lancer avec l'ancrage dans la recherche Google à l'aide de l'un des SDK de l'API Gemini ou de l'API REST.
Configurer un modèle pour qu'il utilise la recherche Google
Pourquoi l'Ancrage dans la recherche Google est-il utile ?
Dans l'IA générative, l'ancrage désigne le processus de connexion du modèle à des sources d'information vérifiables. Ces sources peuvent fournir des informations sur le lieu de travail réel ou un autre contexte spécifique. L'ancrage permet d'améliorer la précision, la fiabilité et l'utilité des sorties d'IA.
L'ancrage est particulièrement important pour les requêtes qui nécessitent des informations à jour sur le Web. Grâce à l'ancrage, le modèle peut accéder à des informations au-delà de sa date limite de connaissances, obtenir des sources d'informations et répondre à des questions auxquelles il n'aurait pas pu répondre avec précision autrement.
Avec Google AI Studio ou l'API Gemini, vous pouvez ancrer la sortie du modèle sur la recherche Google. L'ancrage avec la recherche Google offre les avantages suivants:
- Permet les réponses du modèle associées à un contenu spécifique.
- Réduit les hallucinations du modèle, c'est-à-dire les cas où le modèle génère un contenu qui n'est pas factuel.
- Ancre les réponses du modèle aux sources sur lesquelles un utilisateur peut cliquer et ouvrir.
- Améliore la fiabilité et l'applicabilité du contenu généré.
Lorsque vous utilisez l'ancrage avec la recherche Google, vous associez efficacement le modèle à des résultats de recherche fiables sur Internet. Étant donné que les réponses d'un modèle sans ancrage sont basées sur des schémas appris, vous ne recevrez peut-être pas de réponses factuelles aux requêtes concernant l'actualité (par exemple, si vous demandez des prévisions météorologiques ou le score final d'un match de football récent). Étant donné qu'Internet permet d'accéder à de nouvelles informations, une requête avec ancrage peut générer des réponses plus à jour, avec des sources citées.
Voici un exemple comparant une réponse sans ancrage et une réponse avec ancrage générée à l'aide de l'API. (Les réponses ont été générées en octobre 2024.)
Gemini sans ancrage | Ancrage avec la recherche Google |
---|---|
Invite:Qui a remporté le Super Bowl cette année ? Réponse:Les Kansas City Chiefs ont remporté le Super Bowl LVII cette année (2023). |
Invite:Qui a remporté le Super Bowl cette année ? Réponse:Les Kansas City Chiefs ont remporté le Super Bowl LVIII cette année, en battant les San Francisco 49ers en prolongation sur le score de 25 à 22. |
Dans la réponse non fondée, le modèle fait référence à la victoire des Kansas City Chiefs au Super Bowl 2023. Dans la réponse ancrée, le modèle fait référence correctement à sa victoire la plus récente en 2024.
L'image suivante montre à quoi ressemble une réponse étayée dans AI Studio.
Suggestions de recherche Google
Pour utiliser l'ancrage avec la recherche Google, vous devez afficher les suggestions de recherche Google, qui sont des requêtes suggérées incluses dans les métadonnées de la réponse ancrée. Pour en savoir plus sur les exigences d'affichage, consultez Utiliser les suggestions de recherche Google.
Récupération dynamique
Certaines requêtes sont plus susceptibles de bénéficier de l'ancrage avec la recherche Google que d'autres. La fonctionnalité de récuperation dynamique vous permet de mieux contrôler quand utiliser l'ancrage avec la recherche Google.
Si le mode de récupération dynamique n'est pas spécifié, l'ancrage avec la recherche Google est toujours déclenché. Si le mode est défini sur "dynamique", le modèle décide quand utiliser la mise à la terre en fonction d'un seuil que vous pouvez configurer. Le seuil est une valeur à virgule flottante comprise dans la plage [0,1] et sa valeur par défaut est 0,3. Si la valeur du seuil est égale à 0, la réponse est toujours ancrée dans la recherche Google. Si elle est égale à 1, elle ne l'est jamais.
Fonctionnement de la récupération dynamique
Vous pouvez utiliser la récupération dynamique dans votre requête pour choisir quand activer l'ancrage dans la recherche Google. Cela est utile lorsque la requête n'exige pas de réponse basée sur la recherche Google et que le modèle peut fournir une réponse basée sur ses propres connaissances sans ancrage. Cela vous permet de gérer plus efficacement la latence, la qualité et les coûts.
Avant d'appeler la configuration de récupération dynamique dans votre requête, familiarisez-vous avec la terminologie suivante:
Score de prédiction: lorsque vous demandez une réponse ancrée, Gemini attribue un score de prédiction à la requête. Le score de prédiction est une valeur à virgule flottante comprise dans la plage [0,1]. Sa valeur dépend de la possibilité d'ancrer la réponse avec les informations les plus récentes de la recherche Google. Par conséquent, si une requête nécessite une réponse basée sur les faits les plus récents sur le Web, elle obtient un score de prédiction plus élevé. Une requête pour laquelle une réponse générée par un modèle est suffisante présente un score de prédiction inférieur.
Voici quelques exemples de requêtes et leurs scores de prédiction.
Requête Score de prédiction Commentaire "Écris un poème sur les pivoines" 0,13 Le modèle peut s'appuyer sur ses connaissances, et la réponse n'a pas besoin d'être ancrée. "Suggérez un jouet pour un enfant de 2 ans" 0,36 Le modèle peut s'appuyer sur ses connaissances, et la réponse n'a pas besoin d'être ancrée. "Pouvez-vous me donner la recette d'un guacamole inspiré de l'Asie ?" 0,55 La recherche Google peut fournir une réponse justifiée, mais ce n'est pas strictement nécessaire. Les connaissances du modèle peuvent suffire. "Qu'est-ce qu'Agent Builder ? Comment la mise à la terre est-elle facturée dans Agent Builder ?" 0.72 Nécessite la recherche Google pour générer une réponse pertinente. "Qui a remporté le dernier Grand Prix de F1 ?" 0,97 Nécessite la recherche Google pour générer une réponse pertinente. Seuil: dans votre requête API, vous pouvez spécifier une configuration de récupération dynamique avec un seuil. Le seuil est une valeur à virgule flottante comprise dans la plage [0,1] et est défini par défaut sur 0,7. Si la valeur du seuil est nulle, la réponse est toujours ancrée dans la recherche Google. Pour toutes les autres valeurs de seuil, les éléments suivants s'appliquent:
- Si le score de prédiction est supérieur ou égal au seuil, la réponse est basée sur la recherche Google. Un seuil inférieur implique que davantage de requêtes ont des réponses générées à l'aide de l'ancrage avec la recherche Google.
- Si le score de prédiction est inférieur au seuil, le modèle peut toujours générer la réponse, mais elle n'est pas ancrée dans la recherche Google.
Pour savoir comment définir le seuil de récupération dynamique à l'aide d'un SDK ou de l'API REST, consultez l'exemple de code approprié.
Si vous utilisez AI Studio, vous pouvez définir le seuil de récupération dynamique en cliquant sur Edit grounding (Modifier l'ancrage).
Pour trouver un bon seuil adapté aux besoins de votre entreprise, vous pouvez créer un ensemble représentatif des requêtes que vous êtes susceptible de rencontrer. Vous pouvez ensuite trier les requêtes en fonction du score de prédiction dans la réponse et sélectionner un bon seuil pour votre cas d'utilisation.
Une réponse fondée
Si votre requête est correctement ancrée dans la recherche Google, la réponse inclura groundingMetadata
. Une réponse justifiée peut se présenter comme suit (certaines parties de la réponse ont été omises par souci de concision):
{
"candidates": [
{
"content": {
"parts": [
{
"text": "Carlos Alcaraz won the Gentlemen's Singles title at the 2024 Wimbledon Championships. He defeated Novak Djokovic in the final, winning his second consecutive Wimbledon title and fourth Grand Slam title overall. \n"
}
],
"role": "model"
},
...
"groundingMetadata": {
"searchEntryPoint": {
"renderedContent": "\u003cstyle\u003e\n.container {\n align-items: center;\n border-radius: 8px;\n display: flex;\n font-family: Google Sans, Roboto, sans-serif;\n font-size: 14px;\n line-height: 20px;\n padding: 8px 12px;\n}\n.chip {\n display: inline-block;\n border: solid 1px;\n border-radius: 16px;\n min-width: 14px;\n padding: 5px 16px;\n text-align: center;\n user-select: none;\n margin: 0 8px;\n -webkit-tap-highlight-color: transparent;\n}\n.carousel {\n overflow: auto;\n scrollbar-width: none;\n white-space: nowrap;\n margin-right: -12px;\n}\n.headline {\n display: flex;\n margin-right: 4px;\n}\n.gradient-container {\n position: relative;\n}\n.gradient {\n position: absolute;\n transform: translate(3px, -9px);\n height: 36px;\n width: 9px;\n}\n@media (prefers-color-scheme: light) {\n .container {\n background-color: #fafafa;\n box-shadow: 0 0 0 1px #0000000f;\n }\n .headline-label {\n color: #1f1f1f;\n }\n .chip {\n background-color: #ffffff;\n border-color: #d2d2d2;\n color: #5e5e5e;\n text-decoration: none;\n }\n .chip:hover {\n background-color: #f2f2f2;\n }\n .chip:focus {\n background-color: #f2f2f2;\n }\n .chip:active {\n background-color: #d8d8d8;\n border-color: #b6b6b6;\n }\n .logo-dark {\n display: none;\n }\n .gradient {\n background: linear-gradient(90deg, #fafafa 15%, #fafafa00 100%);\n }\n}\n@media (prefers-color-scheme: dark) {\n .container {\n background-color: #1f1f1f;\n box-shadow: 0 0 0 1px #ffffff26;\n }\n .headline-label {\n color: #fff;\n }\n .chip {\n background-color: #2c2c2c;\n border-color: #3c4043;\n color: #fff;\n text-decoration: none;\n }\n .chip:hover {\n background-color: #353536;\n }\n .chip:focus {\n background-color: #353536;\n }\n .chip:active {\n background-color: #464849;\n border-color: #53575b;\n }\n .logo-light {\n display: none;\n }\n .gradient {\n background: linear-gradient(90deg, #1f1f1f 15%, #1f1f1f00 100%);\n }\n}\n\u003c/style\u003e\n\u003cdiv class=\"container\"\u003e\n \u003cdiv class=\"headline\"\u003e\n \u003csvg class=\"logo-light\" width=\"18\" height=\"18\" viewBox=\"9 9 35 35\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n \u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M42.8622 27.0064C42.8622 25.7839 42.7525 24.6084 42.5487 23.4799H26.3109V30.1568H35.5897C35.1821 32.3041 33.9596 34.1222 32.1258 35.3448V39.6864H37.7213C40.9814 36.677 42.8622 32.2571 42.8622 27.0064V27.0064Z\" fill=\"#4285F4\"/\u003e\n \u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M26.3109 43.8555C30.9659 43.8555 34.8687 42.3195 37.7213 39.6863L32.1258 35.3447C30.5898 36.3792 28.6306 37.0061 26.3109 37.0061C21.8282 37.0061 18.0195 33.9811 16.6559 29.906H10.9194V34.3573C13.7563 39.9841 19.5712 43.8555 26.3109 43.8555V43.8555Z\" fill=\"#34A853\"/\u003e\n \u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M16.6559 29.8904C16.3111 28.8559 16.1074 27.7588 16.1074 26.6146C16.1074 25.4704 16.3111 24.3733 16.6559 23.3388V18.8875H10.9194C9.74388 21.2072 9.06992 23.8247 9.06992 26.6146C9.06992 29.4045 9.74388 32.022 10.9194 34.3417L15.3864 30.8621L16.6559 29.8904V29.8904Z\" fill=\"#FBBC05\"/\u003e\n \u003cpath fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M26.3109 16.2386C28.85 16.2386 31.107 17.1164 32.9095 18.8091L37.8466 13.8719C34.853 11.082 30.9659 9.3736 26.3109 9.3736C19.5712 9.3736 13.7563 13.245 10.9194 18.8875L16.6559 23.3388C18.0195 19.2636 21.8282 16.2386 26.3109 16.2386V16.2386Z\" fill=\"#EA4335\"/\u003e\n \u003c/svg\u003e\n \u003csvg class=\"logo-dark\" width=\"18\" height=\"18\" viewBox=\"0 0 48 48\" xmlns=\"http://www.w3.org/2000/svg\"\u003e\n \u003ccircle cx=\"24\" cy=\"23\" fill=\"#FFF\" r=\"22\"/\u003e\n \u003cpath d=\"M33.76 34.26c2.75-2.56 4.49-6.37 4.49-11.26 0-.89-.08-1.84-.29-3H24.01v5.99h8.03c-.4 2.02-1.5 3.56-3.07 4.56v.75l3.91 2.97h.88z\" fill=\"#4285F4\"/\u003e\n \u003cpath d=\"M15.58 25.77A8.845 8.845 0 0 0 24 31.86c1.92 0 3.62-.46 4.97-1.31l4.79 3.71C31.14 36.7 27.65 38 24 38c-5.93 0-11.01-3.4-13.45-8.36l.17-1.01 4.06-2.85h.8z\" fill=\"#34A853\"/\u003e\n \u003cpath d=\"M15.59 20.21a8.864 8.864 0 0 0 0 5.58l-5.03 3.86c-.98-2-1.53-4.25-1.53-6.64 0-2.39.55-4.64 1.53-6.64l1-.22 3.81 2.98.22 1.08z\" fill=\"#FBBC05\"/\u003e\n \u003cpath d=\"M24 14.14c2.11 0 4.02.75 5.52 1.98l4.36-4.36C31.22 9.43 27.81 8 24 8c-5.93 0-11.01 3.4-13.45 8.36l5.03 3.85A8.86 8.86 0 0 1 24 14.14z\" fill=\"#EA4335\"/\u003e\n \u003c/svg\u003e\n \u003cdiv class=\"gradient-container\"\u003e\u003cdiv class=\"gradient\"\u003e\u003c/div\u003e\u003c/div\u003e\n \u003c/div\u003e\n \u003cdiv class=\"carousel\"\u003e\n \u003ca class=\"chip\" href=\"https://vertexaisearch.cloud.google.com/grounding-api-redirect/AWhgh4x8Epe-gzpwRBvp7o3RZh2m1ygq1EHktn0OWCtvTXjad4bb1zSuqfJd6OEuZZ9_SXZ_P2SvCpJM7NaFfQfiZs6064MeqXego0vSbV9LlAZoxTdbxWK1hFeqTG6kA13YJf7Fbu1SqBYM0cFM4zo0G_sD9NKYWcOCQMvDLDEJFhjrC9DM_QobBIAMq-gWN95G5tvt6_z6EuPN8QY=\"\u003ewho won wimbledon 2024\u003c/a\u003e\n \u003c/div\u003e\n\u003c/div\u003e\n"
},
"groundingChunks": [
{
"web": {
"uri": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AWhgh4whET1ta3sDETZvcicd8FeNe4z0VuduVsxrT677KQRp2rYghXI0VpfYbIMVI3THcTuMwggRCbFXS_wVvW0UmGzMe9h2fyrkvsnQPJyikJasNIbjJLPX0StM4Bd694-ZVle56MmRA4YiUvwSqad1w6O2opmWnw==",
"title": "wikipedia.org"
}
},
{
"web": {
"uri": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AWhgh4wR1M-9-yMPUr_KdHlnoAmQ8ZX90DtQ_vDYTjtP2oR5RH4tRP04uqKPLmesvo64BBkPeYLC2EpVDxv9ngO3S1fs2xh-e78fY4m0GAtgNlahUkm_tBm_sih5kFPc7ill9u2uwesNGUkwrQlmP2mfWNU5lMMr23HGktr6t0sV0QYlzQq7odVoBxYWlQ_sqWFH",
"title": "wikipedia.org"
}
},
{
"web": {
"uri": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AWhgh4wsDmROzbP-tmt8GdwCW_pqISTZ4IRbBuoaMyaHfcQg8WW-yKRQQvMDTPAuLxJh-8_U8_iw_6JKFbQ8M9oVYtaFdWFK4gOtL4RrC9Jyqc5BNpuxp6uLEKgL5-9TggtNvO97PyCfziDFXPsxylwI1HcfQdrz3Jy7ZdOL4XM-S5rC0lF2S3VWW0IEAEtS7WX861meBYVjIuuF_mIr3spYPqWLhbAY2Spj-4_ba8DjRvmevIFUhRuESTKvBfmpxNSM",
"title": "cbssports.com"
}
},
{
"web": {
"uri": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AWhgh4yzjLkorHiUKjhOPkWaZ9b4cO-cLG-02vlEl6xTBjMUjyhK04qSIclAa7heR41JQ6AAVXmNdS3WDrLOV4Wli-iezyzW8QPQ4vgnmO_egdsuxhcGk3-Fp8-yfqNLvgXFwY5mPo6QRhvplOFv0_x9mAcka18QuAXtj0SPvJfZhUEgYLCtCrucDS5XFc5HmRBcG1tqFdKSE1ihnp8KLdaWMhrUQI21hHS9",
"title": "jagranjosh.com"
}
},
{
"web": {
"uri": "https://vertexaisearch.cloud.google.com/grounding-api-redirect/AWhgh4y9L4oeNGWCatFz63b9PpP3ys-Wi_zwnkUT5ji9lY7gPUJQcsmmE87q88GSdZqzcx5nZG9usot5FYk2yK-FAGvCRE6JsUQJB_W11_kJU2HVV1BTPiZ4SAgm8XDFIxpCZXnXmEx5HUfRqQm_zav7CvS2qjA2x3__qLME6Jy7R5oza1C5_aqjQu422le9CaigThS5bvJoMo-ZGcXdBUCj2CqoXNVjMA==",
"title": "apnews.com"
}
}
],
"groundingSupports": [
{
"segment": {
"endIndex": 85,
"text": "Carlos Alcaraz won the Gentlemen's Singles title at the 2024 Wimbledon Championships."
},
"groundingChunkIndices": [
0,
1,
2,
3
],
"confidenceScores": [
0.97380733,
0.97380733,
0.97380733,
0.97380733
]
},
{
"segment": {
"startIndex": 86,
"endIndex": 210,
"text": "He defeated Novak Djokovic in the final, winning his second consecutive Wimbledon title and fourth Grand Slam title overall."
},
"groundingChunkIndices": [
1,
0,
4
],
"confidenceScores": [
0.96145374,
0.96145374,
0.96145374
]
}
],
"webSearchQueries": [
"who won wimbledon 2024"
]
}
}
],
...
}
Si la réponse n'inclut pas groundingMetadata
, cela signifie que la réponse n'a pas été correctement mise à la terre. Plusieurs raisons peuvent expliquer cette situation, comme une faible pertinence de la source ou des informations incomplètes dans la réponse du modèle.
Lorsqu'un résultat ancré est généré, les métadonnées contiennent des URI qui redirigent vers les éditeurs du contenu utilisé pour générer le résultat ancré.
Ces URI contiennent le sous-domaine vertexaisearch
, comme dans cet exemple tronqué : https://vertexaisearch.cloud.google.com/grounding-api-redirect/...
. Les métadonnées contiennent également les domaines des éditeurs. Les URI fournis restent accessibles pendant 30 jours après la génération du résultat.
Le champ renderedContent
dans searchEntryPoint
est le code fourni pour implémenter les suggestions de recherche Google. Pour en savoir plus, consultez Utiliser les suggestions de recherche Google.