Lorsque vous importez des données structurées à l'aide de la console Google Cloud , Gemini Enterprise détecte automatiquement le schéma. Vous pouvez utiliser ce schéma détecté automatiquement dans votre moteur ou utiliser l'API pour fournir un schéma indiquant la structure des données.
Si vous fournissez un schéma et que vous le mettez à jour ultérieurement avec un nouveau schéma, ce nouveau schéma doit être rétrocompatible avec le schéma d'origine. Sinon, la mise à jour du schéma échoue.
Pour en savoir plus sur le schéma, consultez dataStores.schemas
.
Approches pour fournir le schéma de votre data store
Il existe différentes approches pour déterminer le schéma des données structurées.
Détection et modification automatiques. Laissez Gemini Enterprise détecter automatiquement un schéma initial et le suggérer. Vous affinez ensuite le schéma via l'interface de la console. Google vous recommande vivement de mapper les propriétés clés sur tous les champs importants une fois que vos champs ont été détectés automatiquement.
C'est l'approche que vous utiliserez en suivant les instructions de la console Google Cloud pour les données structurées dans Créer un magasin de données first party.
Fournissez le schéma en tant qu'objet JSON. Fournissez le schéma à Gemini Enterprise sous forme d'objet JSON. Vous devez avoir préparé un objet JSON correct. Pour obtenir un exemple d'objet JSON, consultez Exemple de schéma en tant qu'objet JSON. Après avoir créé le schéma, vous importez vos données en fonction de ce schéma.
Il s'agit de l'approche que vous pouvez utiliser lorsque vous créez un data store via l'API à l'aide d'une commande curl (ou d'un programme). Par exemple, consultez Importer une fois depuis BigQuery. Consultez également les instructions suivantes : Fournir votre propre schéma.
À propos de la détection et de la modification automatiques
Lorsque vous commencez à importer des données, Gemini Enterprise échantillonne les premiers documents importés. Sur la base de ces documents, il propose un schéma pour les données, que vous pouvez ensuite examiner ou modifier.
Si les champs que vous souhaitez mapper à des propriétés clés ne sont pas présents dans les documents échantillonnés, vous pouvez les ajouter manuellement lorsque vous examinez le schéma.
Si Gemini Enterprise rencontre des champs supplémentaires plus tard dans l'importation de données, il les importe quand même et les ajoute au schéma. Si vous souhaitez modifier le schéma une fois toutes les données importées, consultez Mettre à jour votre schéma.
Exemple de schéma en tant qu'objet JSON
Vous pouvez définir votre propre schéma au format JSON Schema, qui est un langage déclaratif Open Source permettant de définir, d'annoter et de valider des documents JSON. Par exemple, voici une annotation de schéma JSON valide :
{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "dynamic": "true", "datetime_detection": true, "geolocation_detection": true, "properties": { "title": { "type": "string", "keyPropertyMapping": "title", "retrievable": true, "completable": true }, "description": { "type": "string", "keyPropertyMapping": "description" }, "categories": { "type": "array", "items": { "type": "string", "keyPropertyMapping": "category" } }, "uri": { "type": "string", "keyPropertyMapping": "uri" }, "brand": { "type": "string", "indexable": true, "dynamicFacetable": true }, "location": { "type": "geolocation", "indexable": true, "retrievable": true }, "creationDate": { "type": "datetime", "indexable": true, "retrievable": true }, "isCurrent": { "type": "boolean", "indexable": true, "retrievable": true } } }
Voici quelques-uns des champs de cet exemple de schéma :
dynamic
: sidynamic
est défini sur la valeur de chaîne"true"
, toutes les nouvelles propriétés trouvées dans les données importées sont ajoutées au schéma. Sidynamic
est défini sur"false"
, les nouvelles propriétés trouvées dans les données importées sont ignorées. Elles ne sont pas ajoutées au schéma et leurs valeurs ne sont pas importées.Par exemple, un schéma comporte deux propriétés :
title
etdescription
. Vous importez des données qui contiennent des propriétés pourtitle
,description
etrating
. Sidynamic
est défini sur"true"
, la propriété et les données de notes sont importées. Sidynamic
est défini sur"false"
, les propriétésrating
ne sont pas importées, contrairement àtitle
etdescription
.La valeur par défaut est
"true"
.datetime_detection
. Sidatetime_detection
est défini sur le booléentrue
, le type de schéma est défini surdatetime
lorsque des données au format datetime sont importées. Les formats acceptés sont RFC 3339 et ISO 8601.Exemple :
2024-08-05 08:30:00 UTC
2024-08-05T08:30:00Z
2024-08-05T01:30:00-07:00
2024-08-05
2024-08-05T08:30:00+00:00
Si
datatime_detection
est défini sur la valeur booléennefalse
, le type de schéma est défini surstring
lorsque des données au format date/heure sont importées.La valeur par défaut est
true
.geolocation_detection
. Sigeolocation_detection
est défini sur le booléentrue
, le type de schéma est défini surgeolocation
lorsque des données au format de géolocalisation sont importées. Les données sont détectées comme des données de géolocalisation si elles sont un objet contenant un nombre de latitude et un nombre de longitude, ou un objet contenant une chaîne d'adresse.Exemple :
"myLocation": {"latitude":37.42, "longitude":-122.08}
"myLocation": {"address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043"}
Si
geolocation_detection
est défini sur la valeur booléennefalse
, le type de schéma est défini surobject
lorsque des données au format de géolocalisation sont importées.La valeur par défaut est
true
.keyPropertyMapping
: champ qui mappe des mots clés prédéfinis à des champs critiques dans vos documents, ce qui permet de clarifier leur signification sémantique. Les valeurs incluenttitle
,description
,uri
etcategory
. Notez que le nom de votre champ ne doit pas nécessairement correspondre à la valeurkeyPropertyValues
. Par exemple, pour un champ que vous avez nommémy_title
, vous pouvez inclure un champkeyPropertyValues
avec une valeur detitle
.Les champs marqués avec
keyPropertyMapping
sont indexables et consultables par défaut, mais ne sont pas récupérables, complétables ni dynamicFacetable. Cela signifie que vous n'avez pas besoin d'inclure les champsindexable
ousearchable
avec un champkeyPropertyValues
pour obtenir le comportement par défaut attendu.type
: type du champ. Il s'agit d'une valeur de chaîne qui estdatetime
,geolocation
ou l'un des types primitifs (integer
,boolean
,object
,array
,number
oustring
).retrievable
: indique si ce champ peut être renvoyé dans une réponse de recherche. Cette valeur peut être définie pour les champs de typenumber
,string
,boolean
,integer
,datetime
etgeolocation
. Vous pouvez définir jusqu'à 50 champs comme récupérables. Les champs définis par l'utilisateur et les champskeyPropertyValues
ne sont pas récupérables par défaut. Pour qu'un champ puisse être récupéré, incluez"retrievable": true
avec le champ.indexable
: indique si ce champ peut être filtré, facetté, boosté ou trié dans la méthodeservingConfigs.search
. Cette valeur peut être définie pour les champs de typenumber
,string
,boolean
,integer
,datetime
etgeolocation
. Vous pouvez définir jusqu'à 50 champs comme indexables. Par défaut, les champs définis par l'utilisateur ne sont pas indexables, à l'exception de ceux contenant le champkeyPropertyMapping
. Pour rendre un champ indexable, incluez"indexable": true
avec le champ.dynamicFacetable
: indique que le champ peut être utilisé comme attribut dynamique. Cette valeur peut être définie pour les champs de typenumber
,string
,boolean
etinteger
. Pour qu'un champ soit dynamiquement facetable, il doit également être indexable : incluez"dynamicFacetable": true
et"indexable": true
avec le champ.searchable
. Indique si ce champ peut être indexé inversément pour correspondre aux requêtes de texte non structuré. Cela ne peut être défini que pour les champs de typestring
. Vous pouvez définir jusqu'à 50 champs comme pouvant faire l'objet d'une recherche. Par défaut, les champs définis par l'utilisateur ne sont pas inclus dans l'index de recherche, à l'exception de ceux contenant le champkeyPropertyMapping
. Pour rendre un champ consultable, incluez"searchable": true
avec le champ.completable
: indique si ce champ peut être renvoyé en tant que suggestion de saisie semi-automatique. Cela ne peut être défini que pour les champs de typestring
. Pour qu'un champ puisse être complété, incluez"completable": true
avec le champ.
Fournir votre propre schéma en tant qu'objet JSON
Pour fournir votre propre schéma, vous devez créer un data store contenant un schéma vide, puis mettre à jour le schéma en fournissant le vôtre sous forme d'objet JSON. Procédez comme suit :
Préparez le schéma en tant qu'objet JSON, en vous basant sur l'exemple de schéma en tant qu'objet JSON.
Créer un datastore
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/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \ -d '{ "displayName": "DATA_STORE_DISPLAY_NAME", "industryVertical": "INDUSTRY_VERTICAL" }'
Remplacez les éléments suivants :
PROJECT_ID
: par l'ID du projet.DATA_STORE_ID
: ID du data store que vous souhaitez créer. Cet ID ne peut contenir que des lettres minuscules, des chiffres, des traits de soulignement et des traits d'union.DATA_STORE_DISPLAY_NAME
: nom à afficher du data store que vous souhaitez créer.INDUSTRY_VERTICAL
:GENERIC
Utilisez la méthode d'API schemas.patch pour fournir votre nouveau schéma JSON en tant qu'objet JSON.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/schemas/default_schema" \ -d '{ "structSchema": JSON_SCHEMA_OBJECT }'
Remplacez les éléments suivants :
PROJECT_ID
: par l'ID du projet.DATA_STORE_ID
: ID du data store.JSON_SCHEMA_OBJECT
: votre nouveau schéma JSON sous forme d'objet JSON. Exemple :{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "title": { "type": "string", "keyPropertyMapping": "title" }, "categories": { "type": "array", "items": { "type": "string", "keyPropertyMapping": "category" } }, "uri": { "type": "string", "keyPropertyMapping": "uri" } } }
Facultatif : Examinez le schéma en suivant la procédure Afficher une définition de schéma.
Étapes suivantes
- Créer une application de recherche
- Obtenir la définition du schéma pour les données structurées
- Mettre à jour un schéma pour des données structurées