Quando importi dati strutturati utilizzando la console Google Cloud , Gemini Enterprise rileva automaticamente lo schema. Puoi utilizzare questo schema rilevato automaticamente nel tuo motore o utilizzare l'API per fornire uno schema che indichi la struttura dei dati.
Se fornisci uno schema e lo aggiorni in un secondo momento con un nuovo schema, quest'ultimo deve essere compatibile con il precedente. In caso contrario, l'aggiornamento dello schema non va a buon fine.
Per informazioni di riferimento sullo schema, consulta
dataStores.schemas.
Approcci per fornire lo schema per il tuo datastore
Esistono vari approcci per determinare lo schema per i dati strutturati.
Rilevamento e modifica automatici. Lascia che Gemini Enterprise rilevi e suggerisca automaticamente uno schema iniziale. Poi, perfeziona lo schema tramite l'interfaccia della console. Google consiglia vivamente di mappare le proprietà chiave a tutti i campi importanti dopo il rilevamento automatico dei campi.
Questo è l'approccio che utilizzerai quando segui le istruzioni della console Google Cloud per i dati strutturati in Creare un archivio di dati proprietari.
Fornisci lo schema come oggetto JSON. Fornisci lo schema a Gemini Enterprise come oggetto JSON. Devi aver preparato un oggetto JSON corretto. Per un esempio di oggetto JSON, consulta Schema di esempio come oggetto JSON. Dopo aver creato lo schema, carica i dati in base a questo schema.
Questo è l'approccio che puoi utilizzare quando crei un datastore tramite l'API utilizzando un comando (o programma) curl. Ad esempio, consulta Importa una volta da BigQuery. Consulta anche le seguenti istruzioni: Fornisci il tuo schema.
Informazioni sul rilevamento e la modifica automatici
Quando inizi a importare i dati, Gemini Enterprise campiona i primi documenti importati. In base a questi documenti, propone uno schema per i dati, che puoi rivedere o modificare.
Se i campi che vuoi mappare sulle proprietà chiave non sono presenti nei documenti campionati, puoi aggiungerli manualmente quando esamini lo schema.
Se Gemini Enterprise rileva altri campi in un secondo momento durante l'importazione dei dati, li importa comunque e li aggiunge allo schema. Se vuoi modificare lo schema dopo aver importato tutti i dati, consulta Aggiornare lo schema.
Esempio di schema come oggetto JSON
Puoi definire il tuo schema utilizzando il formato JSON Schema, un linguaggio dichiarativo open source per definire, annotare e convalidare i documenti JSON. Ad esempio, questa è un'annotazione dello schema JSON valida:
{ "$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 } } }
Ecco alcuni dei campi in questo esempio di schema:
dynamic. Sedynamicè impostato sul valore stringa"true", tutte le nuove proprietà trovate nei dati importati vengono aggiunte allo schema. Sedynamicè impostato su"false", le nuove proprietà trovate nei dati importati vengono ignorate; le proprietà non vengono aggiunte allo schema e i valori non vengono importati.Ad esempio, uno schema ha due proprietà:
titleedescriptione carichi dati che contengono proprietà pertitle,descriptionerating. Sedynamicè"true", la proprietà e i dati delle valutazioni vengono importati. Sedynamicè"false", le proprietàratingnon vengono importate, anche setitleedescriptionvengono importate.Il valore predefinito è
"true".datetime_detection. Sedatetime_detectionè impostato sul valore booleanotrue, quando vengono importati dati in formato data e ora, il tipo di schema viene impostato sudatetime. I formati supportati sono RFC 3339 e ISO 8601.Ad esempio:
2024-08-05 08:30:00 UTC2024-08-05T08:30:00Z2024-08-05T01:30:00-07:002024-08-052024-08-05T08:30:00+00:00
Se
datatime_detectionè impostato sul valore booleanofalse, quando vengono importati dati in formato datetime, il tipo di schema viene impostato sustring.Il valore predefinito è
true.geolocation_detection. Segeolocation_detectionè impostato sul valore booleanotrue, quando vengono importati dati in formato di geolocalizzazione, il tipo di schema viene impostato sugeolocation. I dati vengono rilevati come geolocalizzazione se sono un oggetto contenente un numero di latitudine e un numero di longitudine o un oggetto contenente una stringa di indirizzo.Ad esempio:
"myLocation": {"latitude":37.42, "longitude":-122.08}"myLocation": {"address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043"}
Se
geolocation_detectionè impostato sul valore booleanofalse, quando vengono importati dati in formato di geolocalizzazione, il tipo di schema viene impostato suobject.Il valore predefinito è
true.keyPropertyMapping. Un campo che mappa le parole chiave predefinite sui campi critici dei tuoi documenti, contribuendo a chiarirne il significato semantico. I valori includonotitle,description,uriecategory. Tieni presente che il nome del campo non deve corrispondere al valore dikeyPropertyValues. Ad esempio, per un campo che hai chiamatomy_title, puoi includere un campokeyPropertyValuescon un valore dititle.I campi contrassegnati con
keyPropertyMappingsono indicizzabili e disponibili per la ricerca per impostazione predefinita, ma non recuperabili, completabili o dinamici. Ciò significa che non è necessario includere i campiindexableosearchablecon un campokeyPropertyValuesper ottenere il comportamento predefinito previsto.type. Il tipo di campo. Si tratta di un valore stringa che èdatetime,geolocationo uno dei tipi primitivi (integer,boolean,object,array,numberostring).retrievable. Indica se questo campo può essere restituito in una risposta di ricerca. Può essere impostato per i campi di tiponumber,string,boolean,integer,datetimeegeolocation. È possibile impostare un massimo di 50 campi come recuperabili. I campi definiti dall'utente e i campikeyPropertyValuesnon sono recuperabili per impostazione predefinita. Per rendere recuperabile un campo, includi"retrievable": truecon il campo.indexable. Indica se questo campo può essere filtrato, sfaccettato, potenziato o ordinato nel metodoservingConfigs.search. Può essere impostato per i campi di tiponumber,string,boolean,integer,datetimeegeolocation. È possibile impostare un massimo di 50 campi come indicizzabili. I campi definiti dall'utente non sono indicizzabili per impostazione predefinita, ad eccezione dei campi contenenti il campokeyPropertyMapping. Per rendere un campo indicizzabile, includi"indexable": truecon il campo.dynamicFacetable. Indica che il campo può essere utilizzato come facet dinamico. Può essere impostato per i campi di tiponumber,string,booleaneinteger. Per rendere un campo dinamicamente sfaccettabile, deve essere anche indicizzabile: includi"dynamicFacetable": truee"indexable": truecon il campo.searchable. Indica se questo campo può essere indicizzato inversamente per corrispondere alle query di testo non strutturato. Può essere impostato solo per i campi di tipostring. È possibile impostare un massimo di 50 campi come ricercabili. I campi definiti dall'utente non sono ricercabili per impostazione predefinita, ad eccezione dei campi contenenti il campokeyPropertyMapping. Per rendere un campo ricercabile, includi"searchable": truecon il campo.completable. Indica se questo campo può essere restituito come suggerimento di completamento automatico. Può essere impostato solo per i campi di tipostring. Per rendere compilabile un campo, includi"completable": truecon il campo.
Fornire il proprio schema come oggetto JSON
Per fornire il tuo schema, crea un datastore che contenga uno schema vuoto e poi aggiorna lo schema fornendo il tuo schema come oggetto JSON. Segui questi passaggi:
Prepara lo schema come oggetto JSON utilizzando Schema di esempio come oggetto JSON come guida.
Crea 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" }'Sostituisci quanto segue:
PROJECT_ID: l'ID progetto.DATA_STORE_ID: l'ID del datastore che vuoi creare. Questo ID può contenere solo lettere minuscole, cifre, trattini bassi e trattini.DATA_STORE_DISPLAY_NAME: il nome visualizzato del datastore che vuoi creare.INDUSTRY_VERTICAL:GENERIC
Utilizza il metodo API schemas.patch per fornire il nuovo schema JSON come oggetto 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 }'Sostituisci quanto segue:
PROJECT_ID: l'ID progetto.DATA_STORE_ID: l'ID del datastore.JSON_SCHEMA_OBJECT: il nuovo schema JSON come oggetto JSON. Ad esempio:{ "$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" } } }
(Facoltativo) Esamina lo schema seguendo la procedura Visualizzare una definizione dello schema.
Passaggi successivi
- Creare un'app di ricerca
- Ottenere la definizione dello schema per i dati strutturati
- Aggiornare uno schema per i dati strutturati