Crea un datastore di ricerca

Per creare un datastore e importare i dati per la ricerca, vai alla sezione relativa all'origine che intendi utilizzare:

Per sincronizzare i dati da un'origine dati di terze parti, vedi Connettere un'origine dati di terze parti.

Per informazioni sulla risoluzione dei problemi, consulta Risolvere i problemi relativi all'importazione dei dati.

Crea un datastore utilizzando i contenuti del sito web

Utilizza la seguente procedura per creare un datastore e indicizzare i siti web.

Per utilizzare un datastore del sito web dopo averlo creato, devi collegarlo a un'app con le funzionalità aziendali attive. Puoi attivare Enterprise Edition per un'app quando la crei. Questa operazione comporta costi aggiuntivi. Consulta Crea un'app di ricerca e Informazioni sulle funzionalità avanzate.

Console

Per utilizzare la console Google Cloud per creare un datastore e indicizzare i siti web, segui questi passaggi:

  1. Nella Google Cloud console, vai alla pagina AI Applications.

    Applicazioni di AI

  2. Nel menu di navigazione, fai clic su Datastore.

  3. Fai clic su Crea datastore.

  4. Nella pagina Origine, seleziona Contenuti dei siti web.

  5. Scegli se attivare l'indicizzazione avanzata dei siti web per questo datastore. Questa opzione non può essere attivata o disattivata in un secondo momento.

    L'indicizzazione avanzata dei siti web offre funzionalità aggiuntive come il riepilogo della ricerca, la ricerca con follow-up e le risposte estrattive. L'indicizzazione avanzata dei siti web comporta costi aggiuntivi e richiede la verifica della proprietà del dominio per qualsiasi sito web che indicizzi. Per ulteriori informazioni, consulta le sezioni Indicizzazione avanzata dei siti web e Prezzi.

  6. Nel campo Siti da includere, inserisci i pattern URL corrispondenti ai siti web che vuoi includere nel datastore. Includi un pattern URL per riga, senza virgole. Ad esempio, example.com/docs/*

  7. (Facoltativo) Nel campo Siti da escludere, inserisci i pattern URL che vuoi escludere dal datastore.

    I siti esclusi hanno la priorità rispetto a quelli inclusi. Quindi, se includi example.com/docs/* ma escludi example.com, nessun sito web verrà indicizzato. Per ulteriori informazioni, vedi Dati del sito web.

  8. Fai clic su Continua.

  9. Seleziona una località per il datastore.

    • Quando crei un datastore di base per la ricerca sul sito web, questa opzione è sempre impostata su globale (Globale).
    • Quando crei un datastore con l'indicizzazione avanzata dei siti web, puoi selezionare una località. Poiché i siti web indicizzati devono essere pubblici, Google ti consiglia vivamente di selezionare globale (Global) come località. Ciò garantisce la massima disponibilità di tutti i servizi di ricerca e risposta ed elimina i limiti dei datastore regionali.
  10. Inserisci un nome per il tuo datastore.

  11. Fai clic su Crea. Vertex AI Search crea il datastore e mostra i datastore nella pagina Datastore.

  12. Per visualizzare le informazioni sul datastore, fai clic sul nome del datastore nella colonna Nome. Viene visualizzata la pagina del datastore.

    • Se hai attivato l'indicizzazione avanzata dei siti web, viene visualizzato un avviso che ti chiede di verificare i domini nel datastore.
    • Se hai una quota insufficiente (il numero di pagine nei siti web che hai specificato supera la quota "Numero di documenti per progetto" per il tuo progetto), viene visualizzato un ulteriore avviso che ti chiede di eseguire l'upgrade della quota.
  13. Per verificare i domini per i pattern URL nel tuo datastore, segui le istruzioni nella pagina Verifica i domini del sito web.

  14. Per eseguire l'upgrade della quota:

    1. Fai clic su Esegui upgrade della quota. Viene visualizzata la pagina IAM e amministrazione della console Google Cloud .
    2. Segui le istruzioni riportate in Richiedere un limite di quota più alto nella documentazione di Google Cloud . La quota da aumentare è Numero di documenti nel servizio API Discovery Engine.
    3. Dopo aver inviato la richiesta di un limite di quota più elevato, torna alla pagina Applicazioni AI e fai clic su Datastore nel menu di navigazione.
    4. Fai clic sul nome del datastore nella colonna Nome. La colonna Stato indica che l'indicizzazione è in corso per i siti web che hanno superato la quota. Quando la colonna Stato di un URL mostra Indicizzato, le funzionalità di indicizzazione avanzata dei siti web sono disponibili per quell'URL o pattern URL.

    Per ulteriori informazioni, consulta la sezione Quota per l'indicizzazione delle pagine web nella pagina "Quote e limiti".

Python

Per saperne di più, consulta la documentazione di riferimento dell'API AI Applications per Python.

Per autenticarti in AI Applications, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

Crea un datastore


from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"


def create_data_store_sample(
    project_id: str,
    location: str,
    data_store_id: str,
) -> str:
    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.DataStoreServiceClient(client_options=client_options)

    # The full resource name of the collection
    # e.g. projects/{project}/locations/{location}/collections/default_collection
    parent = client.collection_path(
        project=project_id,
        location=location,
        collection="default_collection",
    )

    data_store = discoveryengine.DataStore(
        display_name="My Data Store",
        # Options: GENERIC, MEDIA, HEALTHCARE_FHIR
        industry_vertical=discoveryengine.IndustryVertical.GENERIC,
        # Options: SOLUTION_TYPE_RECOMMENDATION, SOLUTION_TYPE_SEARCH, SOLUTION_TYPE_CHAT, SOLUTION_TYPE_GENERATIVE_CHAT
        solution_types=[discoveryengine.SolutionType.SOLUTION_TYPE_SEARCH],
        # TODO(developer): Update content_config based on data store type.
        # Options: NO_CONTENT, CONTENT_REQUIRED, PUBLIC_WEBSITE
        content_config=discoveryengine.DataStore.ContentConfig.CONTENT_REQUIRED,
    )

    request = discoveryengine.CreateDataStoreRequest(
        parent=parent,
        data_store_id=data_store_id,
        data_store=data_store,
        # Optional: For Advanced Site Search Only
        # create_advanced_site_search=True,
    )

    # Make the request
    operation = client.create_data_store(request=request)

    print(f"Waiting for operation to complete: {operation.operation.name}")
    response = operation.result()

    # After the operation is complete,
    # get information from operation metadata
    metadata = discoveryengine.CreateDataStoreMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name

Importare siti web

#     from google.api_core.client_options import ClientOptions
#
#     from google.cloud import discoveryengine_v1 as discoveryengine
#
#     # TODO(developer): Uncomment these variables before running the sample.
#     # project_id = "YOUR_PROJECT_ID"
#     # location = "YOUR_LOCATION" # Values: "global"
#     # data_store_id = "YOUR_DATA_STORE_ID"
#     # NOTE: Do not include http or https protocol in the URI pattern
#     # uri_pattern = "cloud.google.com/generative-ai-app-builder/docs/*"
#
#     #  For more information, refer to:
#     # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
#     client_options = (
#         ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
#         if location != "global"
#         else None
#     )
#
#     # Create a client
#     client = discoveryengine.SiteSearchEngineServiceClient(
#         client_options=client_options
#     )
#
#     # The full resource name of the data store
#     # e.g. projects/{project}/locations/{location}/dataStores/{data_store_id}
#     site_search_engine = client.site_search_engine_path(
#         project=project_id, location=location, data_store=data_store_id
#     )
#
#     # Target Site to index
#     target_site = discoveryengine.TargetSite(
#         provided_uri_pattern=uri_pattern,
#         # Options: INCLUDE, EXCLUDE
#         type_=discoveryengine.TargetSite.Type.INCLUDE,
#         exact_match=False,
#     )
#
#     # Make the request
#     operation = client.create_target_site(
#         parent=site_search_engine,
#         target_site=target_site,
#     )
#
#     print(f"Waiting for operation to complete: {operation.operation.name}")
#     response = operation.result()
#
#     # After the operation is complete,
#     # get information from operation metadata
#     metadata = discoveryengine.CreateTargetSiteMetadata(operation.metadata)
#
#     # Handle the response
#     print(response)
#     print(metadata)

Passaggi successivi

Importa da BigQuery

Vertex AI Search supporta la ricerca nei dati BigQuery.

Puoi creare data store dalle tabelle BigQuery in due modi:

  • Importazione una tantum: importi i dati da una tabella BigQuery in un datastore. I dati nel datastore non cambiano a meno che tu non li aggiorni manualmente.

  • Importazione periodica: importi i dati da una o più tabelle BigQuery e imposti una frequenza di sincronizzazione che determina la frequenza con cui gli archivi di dati vengono aggiornati con i dati più recenti del set di dati BigQuery.

La seguente tabella confronta i due modi in cui puoi importare i dati BigQuery nei datastore di Vertex AI Search.

Importazione una tantum Importazione periodica
Disponibilità generale (GA). Anteprima pubblica.
I dati devono essere aggiornati manualmente. I dati vengono aggiornati automaticamente ogni 1, 3 o 5 giorni. I dati non possono essere aggiornati manualmente.
Vertex AI Search crea un unico datastore da una tabella in BigQuery. Vertex AI Search crea un connettore dati per un set di dati BigQuery e un datastore (chiamato datastore entità) per ogni tabella specificata. Per ogni connettore dati, le tabelle devono avere lo stesso tipo di dati (ad esempio, strutturati) e trovarsi nello stesso set di dati BigQuery.
I dati di più tabelle possono essere combinati in un unico datastore prima di inserire i dati di una tabella e poi altri dati da un'altra origine o tabella BigQuery. Poiché l'importazione manuale dei dati non è supportata, i dati in un datastore delle entità possono provenire solo da una tabella BigQuery.
Il controllo dell'accesso all'origine dati è supportato. Controllo dell'accesso all'origine dati non è supportato. I dati importati possono contenere controlli dell'accesso, ma questi controlli non verranno rispettati.
Puoi creare un datastore utilizzando la consoleGoogle Cloud o l'API. Devi utilizzare la console per creare i connettori di dati e i relativi archivi di dati delle entità.
Conforme a CMEK. Conforme a CMEK.

Importa una volta da BigQuery

Per importare i dati da una tabella BigQuery, segui questi passaggi per creare un datastore e importare i dati utilizzando la console Google Cloud o l'API.

Prima di importare i dati, consulta Preparare i dati per l'importazione.

Console

Per utilizzare la console Google Cloud per importare i dati da BigQuery, segui questi passaggi:

  1. Nella Google Cloud console, vai alla pagina AI Applications.

    Applicazioni di AI

  2. Vai alla pagina Datastore.

  3. Fai clic su Crea datastore.

  4. Nella pagina Origine, seleziona BigQuery.

  5. Seleziona il tipo di dati che importerai dalla sezione Che tipo di dati stai importando?

  6. Seleziona Una volta nella sezione Frequenza della sincronizzazione.

  7. Nel campo Percorso BigQuery, fai clic su Sfoglia, seleziona una tabella che hai preparato per l'importazione e poi fai clic su Seleziona. In alternativa, inserisci la posizione della tabella direttamente nel campo Percorso BigQuery.

  8. Fai clic su Continua.

  9. Se esegui un'importazione una tantum di dati strutturati:

    1. Mappa i campi alle proprietà chiave.

    2. Se mancano campi importanti nello schema, utilizza Aggiungi nuovo campo per aggiungerli.

      Per saperne di più, consulta Informazioni sul rilevamento e la modifica automatici.

    3. Fai clic su Continua.

  10. Scegli una regione per il datastore.

  11. Inserisci un nome per il tuo datastore.

  12. Fai clic su Crea.

  13. Per controllare lo stato dell'importazione, vai alla pagina Datastore e fai clic sul nome del datastore per visualizzarne i dettagli nella pagina Data (Dati). Quando la colonna Stato nella scheda Attività passa da In corso a Importazione completata, l'importazione è terminata.

    A seconda delle dimensioni dei dati, l'importazione può richiedere diversi minuti o diverse ore.

REST

Per utilizzare la riga di comando per creare un datastore e importare i dati da BigQuery, segui questi passaggi.

  1. 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": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"]
    }'
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto.
    • DATA_STORE_ID: l'ID del datastore Vertex AI Search che vuoi creare. Questo ID può contenere solo lettere minuscole, cifre, trattini bassi e trattini.
    • DATA_STORE_DISPLAY_NAME: il nome visualizzato del datastore Vertex AI Search che vuoi creare.

    (Facoltativo) Se carichi dati non strutturati e vuoi configurare l'analisi dei documenti o attivare la suddivisione dei documenti per RAG, specifica l'oggetto documentProcessingConfig e includilo nella richiesta di creazione del datastore. La configurazione di un analizzatore OCR per i PDF è consigliata se importi PDF scansionati. Per informazioni su come configurare le opzioni di analisi o suddivisione in blocchi, vedi Analizzare e dividere i documenti in blocchi.

  2. Importa i dati da BigQuery.

    Se hai definito uno schema, assicurati che i dati siano conformi.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents:import" \
    -d '{
      "bigquerySource": {
        "projectId": "PROJECT_ID",
        "datasetId":"DATASET_ID",
        "tableId": "TABLE_ID",
        "dataSchema": "DATA_SCHEMA",
        "aclEnabled": "BOOLEAN"
      },
      "reconciliationMode": "RECONCILIATION_MODE",
      "autoGenerateIds": "AUTO_GENERATE_IDS",
      "idField": "ID_FIELD",
      "errorConfig": {
        "gcsPrefix": "ERROR_DIRECTORY"
      }
    }'
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto.
    • DATA_STORE_ID: l'ID del datastore Vertex AI Search.
    • DATASET_ID: l'ID del set di dati BigQuery.
    • TABLE_ID: l'ID della tabella BigQuery.
      • Se la tabella BigQuery non si trova in PROJECT_ID, devi concedere all'account di servizio service-<project number>@gcp-sa-discoveryengine.iam.gserviceaccount.com l'autorizzazione "Visualizzatore dati BigQuery" per la tabella BigQuery. Ad esempio, se importi una tabella BigQuery dal progetto di origine "123" al progetto di destinazione "456", concedi service-456@gcp-sa-discoveryengine.iam.gserviceaccount.com autorizzazioni per la tabella BigQuery nel progetto "123".
    • DATA_SCHEMA: facoltativo. I valori sono document e custom. Il valore predefinito è document.
      • document: la tabella BigQuery che utilizzi deve essere conforme allo schema BigQuery predefinito fornito in Preparare i dati per l'importazione. Puoi definire l'ID di ogni documento, inserendo tutti i dati nella stringa jsonData.
      • custom: viene accettato qualsiasi schema di tabella BigQuery e Vertex AI Search genera automaticamente gli ID per ogni documento importato.
    • ERROR_DIRECTORY: facoltativo. Una directory Cloud Storage per informazioni sugli errori relativi all'importazione, ad esempio gs://<your-gcs-bucket>/directory/import_errors. Google consiglia di lasciare vuoto questo campo per consentire a Vertex AI Search di creare automaticamente una directory temporanea.
    • RECONCILIATION_MODE: facoltativo. I valori sono FULL e INCREMENTAL. Il valore predefinito è INCREMENTAL. Se specifichi INCREMENTAL, viene eseguito un aggiornamento incrementale dei dati da BigQuery al tuo datastore. Esegue un'operazione di upsert, che aggiunge nuovi documenti e sostituisce quelli esistenti con documenti aggiornati con lo stesso ID. La specifica di FULL causa una ribasatura completa dei documenti nel datastore. In altre parole, i documenti nuovi e aggiornati vengono aggiunti al tuo datastore e i documenti che non si trovano in BigQuery vengono rimossi dal tuo datastore. La modalità FULL è utile se vuoi eliminare automaticamente i documenti che non ti servono più.
    • AUTO_GENERATE_IDS: facoltativo. Specifica se generare automaticamente gli ID documento. Se impostato su true, gli ID documento vengono generati in base a un hash del payload. Tieni presente che gli ID documento generati potrebbero non rimanere coerenti in più importazioni. Se generi automaticamente ID in più importazioni, Google consiglia vivamente di impostare reconciliationMode su FULL per mantenere ID documento coerenti.

      Specifica autoGenerateIds solo quando bigquerySource.dataSchema è impostato su custom. In caso contrario, viene restituito un errore INVALID_ARGUMENT. Se non specifichi autoGenerateIds o lo imposti su false, devi specificare idField. In caso contrario, l'importazione dei documenti non andrà a buon fine.

    • ID_FIELD: facoltativo. Specifica quali campi sono gli ID documento. Per i file di origine BigQuery, idField indica il nome della colonna nella tabella BigQuery che contiene gli ID documento.

      Specifica idField solo quando: (1) bigquerySource.dataSchema è impostato su custom e (2) auto_generate_ids è impostato su false o non è specificato. In caso contrario, viene restituito un errore INVALID_ARGUMENT.

      Il valore del nome della colonna BigQuery deve essere di tipo stringa, deve essere compreso tra 1 e 63 caratteri e deve essere conforme allo standard RFC-1034. In caso contrario, l'importazione dei documenti non andrà a buon fine.

C#

Per saperne di più, consulta la documentazione di riferimento dell'API AI Applications per C#.

Per autenticarti in AI Applications, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

Crea un datastore

using Google.Cloud.DiscoveryEngine.V1;
using Google.LongRunning;

public sealed partial class GeneratedDataStoreServiceClientSnippets
{
    /// <summary>Snippet for CreateDataStore</summary>
    /// <remarks>
    /// This snippet has been automatically generated and should be regarded as a code template only.
    /// It will require modifications to work:
    /// - It may require correct/in-range values for request initialization.
    /// - It may require specifying regional endpoints when creating the service client as shown in
    ///   https://cloud.google.com/dotnet/docs/reference/help/client-configuration#endpoint.
    /// </remarks>
    public void CreateDataStoreRequestObject()
    {
        // Create client
        DataStoreServiceClient dataStoreServiceClient = DataStoreServiceClient.Create();
        // Initialize request argument(s)
        CreateDataStoreRequest request = new CreateDataStoreRequest
        {
            ParentAsCollectionName = CollectionName.FromProjectLocationCollection("[PROJECT]", "[LOCATION]", "[COLLECTION]"),
            DataStore = new DataStore(),
            DataStoreId = "",
            CreateAdvancedSiteSearch = false,
            CmekConfigNameAsCmekConfigName = CmekConfigName.FromProjectLocation("[PROJECT]", "[LOCATION]"),
            SkipDefaultSchemaCreation = false,
        };
        // Make the request
        Operation<DataStore, CreateDataStoreMetadata> response = dataStoreServiceClient.CreateDataStore(request);

        // Poll until the returned long-running operation is complete
        Operation<DataStore, CreateDataStoreMetadata> completedResponse = response.PollUntilCompleted();
        // Retrieve the operation result
        DataStore result = completedResponse.Result;

        // Or get the name of the operation
        string operationName = response.Name;
        // This name can be stored, then the long-running operation retrieved later by name
        Operation<DataStore, CreateDataStoreMetadata> retrievedResponse = dataStoreServiceClient.PollOnceCreateDataStore(operationName);
        // Check if the retrieved long-running operation has completed
        if (retrievedResponse.IsCompleted)
        {
            // If it has completed, then access the result
            DataStore retrievedResult = retrievedResponse.Result;
        }
    }
}

Importa documenti

using Google.Cloud.DiscoveryEngine.V1;
using Google.LongRunning;
using Google.Protobuf.WellKnownTypes;

public sealed partial class GeneratedDocumentServiceClientSnippets
{
    /// <summary>Snippet for ImportDocuments</summary>
    /// <remarks>
    /// This snippet has been automatically generated and should be regarded as a code template only.
    /// It will require modifications to work:
    /// - It may require correct/in-range values for request initialization.
    /// - It may require specifying regional endpoints when creating the service client as shown in
    ///   https://cloud.google.com/dotnet/docs/reference/help/client-configuration#endpoint.
    /// </remarks>
    public void ImportDocumentsRequestObject()
    {
        // Create client
        DocumentServiceClient documentServiceClient = DocumentServiceClient.Create();
        // Initialize request argument(s)
        ImportDocumentsRequest request = new ImportDocumentsRequest
        {
            ParentAsBranchName = BranchName.FromProjectLocationDataStoreBranch("[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]"),
            InlineSource = new ImportDocumentsRequest.Types.InlineSource(),
            ErrorConfig = new ImportErrorConfig(),
            ReconciliationMode = ImportDocumentsRequest.Types.ReconciliationMode.Unspecified,
            UpdateMask = new FieldMask(),
            AutoGenerateIds = false,
            IdField = "",
            ForceRefreshContent = false,
        };
        // Make the request
        Operation<ImportDocumentsResponse, ImportDocumentsMetadata> response = documentServiceClient.ImportDocuments(request);

        // Poll until the returned long-running operation is complete
        Operation<ImportDocumentsResponse, ImportDocumentsMetadata> completedResponse = response.PollUntilCompleted();
        // Retrieve the operation result
        ImportDocumentsResponse result = completedResponse.Result;

        // Or get the name of the operation
        string operationName = response.Name;
        // This name can be stored, then the long-running operation retrieved later by name
        Operation<ImportDocumentsResponse, ImportDocumentsMetadata> retrievedResponse = documentServiceClient.PollOnceImportDocuments(operationName);
        // Check if the retrieved long-running operation has completed
        if (retrievedResponse.IsCompleted)
        {
            // If it has completed, then access the result
            ImportDocumentsResponse retrievedResult = retrievedResponse.Result;
        }
    }
}

Go

Per saperne di più, consulta la documentazione di riferimento dell'API AI Applications per Go.

Per autenticarti in AI Applications, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

Crea un datastore


package main

import (
	"context"

	discoveryengine "cloud.google.com/go/discoveryengine/apiv1"
	discoveryenginepb "cloud.google.com/go/discoveryengine/apiv1/discoveryenginepb"
)

func main() {
	ctx := context.Background()
	// This snippet has been automatically generated and should be regarded as a code template only.
	// It will require modifications to work:
	// - It may require correct/in-range values for request initialization.
	// - It may require specifying regional endpoints when creating the service client as shown in:
	//   https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options
	c, err := discoveryengine.NewDataStoreClient(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	defer c.Close()

	req := &discoveryenginepb.CreateDataStoreRequest{
		// TODO: Fill request struct fields.
		// See https://pkg.go.dev/cloud.google.com/go/discoveryengine/apiv1/discoveryenginepb#CreateDataStoreRequest.
	}
	op, err := c.CreateDataStore(ctx, req)
	if err != nil {
		// TODO: Handle error.
	}

	resp, err := op.Wait(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	// TODO: Use resp.
	_ = resp
}

Importa documenti


package main

import (
	"context"

	discoveryengine "cloud.google.com/go/discoveryengine/apiv1"
	discoveryenginepb "cloud.google.com/go/discoveryengine/apiv1/discoveryenginepb"
)

func main() {
	ctx := context.Background()
	// This snippet has been automatically generated and should be regarded as a code template only.
	// It will require modifications to work:
	// - It may require correct/in-range values for request initialization.
	// - It may require specifying regional endpoints when creating the service client as shown in:
	//   https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options
	c, err := discoveryengine.NewDocumentClient(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	defer c.Close()

	req := &discoveryenginepb.ImportDocumentsRequest{
		// TODO: Fill request struct fields.
		// See https://pkg.go.dev/cloud.google.com/go/discoveryengine/apiv1/discoveryenginepb#ImportDocumentsRequest.
	}
	op, err := c.ImportDocuments(ctx, req)
	if err != nil {
		// TODO: Handle error.
	}

	resp, err := op.Wait(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	// TODO: Use resp.
	_ = resp
}

Java

Per saperne di più, consulta la documentazione di riferimento dell'API AI Applications per Java.

Per autenticarti in AI Applications, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

Crea un datastore

import com.google.cloud.discoveryengine.v1.CollectionName;
import com.google.cloud.discoveryengine.v1.CreateDataStoreRequest;
import com.google.cloud.discoveryengine.v1.DataStore;
import com.google.cloud.discoveryengine.v1.DataStoreServiceClient;

public class SyncCreateDataStore {

  public static void main(String[] args) throws Exception {
    syncCreateDataStore();
  }

  public static void syncCreateDataStore() throws Exception {
    // This snippet has been automatically generated and should be regarded as a code template only.
    // It will require modifications to work:
    // - It may require correct/in-range values for request initialization.
    // - It may require specifying regional endpoints when creating the service client as shown in
    // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
    try (DataStoreServiceClient dataStoreServiceClient = DataStoreServiceClient.create()) {
      CreateDataStoreRequest request =
          CreateDataStoreRequest.newBuilder()
              .setParent(CollectionName.of("[PROJECT]", "[LOCATION]", "[COLLECTION]").toString())
              .setDataStore(DataStore.newBuilder().build())
              .setDataStoreId("dataStoreId929489618")
              .setCreateAdvancedSiteSearch(true)
              .setSkipDefaultSchemaCreation(true)
              .build();
      DataStore response = dataStoreServiceClient.createDataStoreAsync(request).get();
    }
  }
}

Importa documenti

import com.google.cloud.discoveryengine.v1.BranchName;
import com.google.cloud.discoveryengine.v1.DocumentServiceClient;
import com.google.cloud.discoveryengine.v1.ImportDocumentsRequest;
import com.google.cloud.discoveryengine.v1.ImportDocumentsResponse;
import com.google.cloud.discoveryengine.v1.ImportErrorConfig;
import com.google.protobuf.FieldMask;

public class SyncImportDocuments {

  public static void main(String[] args) throws Exception {
    syncImportDocuments();
  }

  public static void syncImportDocuments() throws Exception {
    // This snippet has been automatically generated and should be regarded as a code template only.
    // It will require modifications to work:
    // - It may require correct/in-range values for request initialization.
    // - It may require specifying regional endpoints when creating the service client as shown in
    // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
    try (DocumentServiceClient documentServiceClient = DocumentServiceClient.create()) {
      ImportDocumentsRequest request =
          ImportDocumentsRequest.newBuilder()
              .setParent(
                  BranchName.ofProjectLocationDataStoreBranchName(
                          "[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]")
                      .toString())
              .setErrorConfig(ImportErrorConfig.newBuilder().build())
              .setUpdateMask(FieldMask.newBuilder().build())
              .setAutoGenerateIds(true)
              .setIdField("idField1629396127")
              .setForceRefreshContent(true)
              .build();
      ImportDocumentsResponse response = documentServiceClient.importDocumentsAsync(request).get();
    }
  }
}

Node.js

Per saperne di più, consulta la documentazione di riferimento dell'API AI Applications per Node.js.

Per autenticarti in AI Applications, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

Crea un datastore

/**
 * This snippet has been automatically generated and should be regarded as a code template only.
 * It will require modifications to work.
 * It may require correct/in-range values for request initialization.
 * TODO(developer): Uncomment these variables before running the sample.
 */
/**
 *  Resource name of the CmekConfig to use for protecting this DataStore.
 */
// const cmekConfigName = 'abc123'
/**
 *  DataStore without CMEK protections. If a default CmekConfig is set for
 *  the project, setting this field will override the default CmekConfig as
 *  well.
 */
// const disableCmek = true
/**
 *  Required. The parent resource name, such as
 *  `projects/{project}/locations/{location}/collections/{collection}`.
 */
// const parent = 'abc123'
/**
 *  Required. The DataStore google.cloud.discoveryengine.v1.DataStore  to
 *  create.
 */
// const dataStore = {}
/**
 *  Required. The ID to use for the
 *  DataStore google.cloud.discoveryengine.v1.DataStore, which will become
 *  the final component of the
 *  DataStore google.cloud.discoveryengine.v1.DataStore's resource name.
 *  This field must conform to RFC-1034 (https://tools.ietf.org/html/rfc1034)
 *  standard with a length limit of 63 characters. Otherwise, an
 *  INVALID_ARGUMENT error is returned.
 */
// const dataStoreId = 'abc123'
/**
 *  A boolean flag indicating whether user want to directly create an advanced
 *  data store for site search.
 *  If the data store is not configured as site
 *  search (GENERIC vertical and PUBLIC_WEBSITE content_config), this flag will
 *  be ignored.
 */
// const createAdvancedSiteSearch = true
/**
 *  A boolean flag indicating whether to skip the default schema creation for
 *  the data store. Only enable this flag if you are certain that the default
 *  schema is incompatible with your use case.
 *  If set to true, you must manually create a schema for the data store before
 *  any documents can be ingested.
 *  This flag cannot be specified if `data_store.starting_schema` is specified.
 */
// const skipDefaultSchemaCreation = true

// Imports the Discoveryengine library
const {DataStoreServiceClient} = require('@google-cloud/discoveryengine').v1;

// Instantiates a client
const discoveryengineClient = new DataStoreServiceClient();

async function callCreateDataStore() {
  // Construct request
  const request = {
    parent,
    dataStore,
    dataStoreId,
  };

  // Run request
  const [operation] = await discoveryengineClient.createDataStore(request);
  const [response] = await operation.promise();
  console.log(response);
}

callCreateDataStore();

Importa documenti

/**
 * This snippet has been automatically generated and should be regarded as a code template only.
 * It will require modifications to work.
 * It may require correct/in-range values for request initialization.
 * TODO(developer): Uncomment these variables before running the sample.
 */
/**
 *  The Inline source for the input content for documents.
 */
// const inlineSource = {}
/**
 *  Cloud Storage location for the input content.
 */
// const gcsSource = {}
/**
 *  BigQuery input source.
 */
// const bigquerySource = {}
/**
 *  FhirStore input source.
 */
// const fhirStoreSource = {}
/**
 *  Spanner input source.
 */
// const spannerSource = {}
/**
 *  Cloud SQL input source.
 */
// const cloudSqlSource = {}
/**
 *  Firestore input source.
 */
// const firestoreSource = {}
/**
 *  AlloyDB input source.
 */
// const alloyDbSource = {}
/**
 *  Cloud Bigtable input source.
 */
// const bigtableSource = {}
/**
 *  Required. The parent branch resource name, such as
 *  `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/branches/{branch}`.
 *  Requires create/update permission.
 */
// const parent = 'abc123'
/**
 *  The desired location of errors incurred during the Import.
 */
// const errorConfig = {}
/**
 *  The mode of reconciliation between existing documents and the documents to
 *  be imported. Defaults to
 *  ReconciliationMode.INCREMENTAL google.cloud.discoveryengine.v1.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL.
 */
// const reconciliationMode = {}
/**
 *  Indicates which fields in the provided imported documents to update. If
 *  not set, the default is to update all fields.
 */
// const updateMask = {}
/**
 *  Whether to automatically generate IDs for the documents if absent.
 *  If set to `true`,
 *  Document.id google.cloud.discoveryengine.v1.Document.id s are
 *  automatically generated based on the hash of the payload, where IDs may not
 *  be consistent during multiple imports. In which case
 *  ReconciliationMode.FULL google.cloud.discoveryengine.v1.ImportDocumentsRequest.ReconciliationMode.FULL 
 *  is highly recommended to avoid duplicate contents. If unset or set to
 *  `false`, Document.id google.cloud.discoveryengine.v1.Document.id s have
 *  to be specified using
 *  id_field google.cloud.discoveryengine.v1.ImportDocumentsRequest.id_field,
 *  otherwise, documents without IDs fail to be imported.
 *  Supported data sources:
 *  * GcsSource google.cloud.discoveryengine.v1.GcsSource.
 *  GcsSource.data_schema google.cloud.discoveryengine.v1.GcsSource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * BigQuerySource google.cloud.discoveryengine.v1.BigQuerySource.
 *  BigQuerySource.data_schema google.cloud.discoveryengine.v1.BigQuerySource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * SpannerSource google.cloud.discoveryengine.v1.SpannerSource.
 *  * CloudSqlSource google.cloud.discoveryengine.v1.CloudSqlSource.
 *  * FirestoreSource google.cloud.discoveryengine.v1.FirestoreSource.
 *  * BigtableSource google.cloud.discoveryengine.v1.BigtableSource.
 */
// const autoGenerateIds = true
/**
 *  The field indicates the ID field or column to be used as unique IDs of
 *  the documents.
 *  For GcsSource google.cloud.discoveryengine.v1.GcsSource  it is the key of
 *  the JSON field. For instance, `my_id` for JSON `{"my_id": "some_uuid"}`.
 *  For others, it may be the column name of the table where the unique ids are
 *  stored.
 *  The values of the JSON field or the table column are used as the
 *  Document.id google.cloud.discoveryengine.v1.Document.id s. The JSON field
 *  or the table column must be of string type, and the values must be set as
 *  valid strings conform to RFC-1034 (https://tools.ietf.org/html/rfc1034)
 *  with 1-63 characters. Otherwise, documents without valid IDs fail to be
 *  imported.
 *  Only set this field when
 *  auto_generate_ids google.cloud.discoveryengine.v1.ImportDocumentsRequest.auto_generate_ids 
 *  is unset or set as `false`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  If it is unset, a default value `_id` is used when importing from the
 *  allowed data sources.
 *  Supported data sources:
 *  * GcsSource google.cloud.discoveryengine.v1.GcsSource.
 *  GcsSource.data_schema google.cloud.discoveryengine.v1.GcsSource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * BigQuerySource google.cloud.discoveryengine.v1.BigQuerySource.
 *  BigQuerySource.data_schema google.cloud.discoveryengine.v1.BigQuerySource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * SpannerSource google.cloud.discoveryengine.v1.SpannerSource.
 *  * CloudSqlSource google.cloud.discoveryengine.v1.CloudSqlSource.
 *  * FirestoreSource google.cloud.discoveryengine.v1.FirestoreSource.
 *  * BigtableSource google.cloud.discoveryengine.v1.BigtableSource.
 */
// const idField = 'abc123'
/**
 *  Optional. Whether to force refresh the unstructured content of the
 *  documents.
 *  If set to `true`, the content part of the documents will be refreshed
 *  regardless of the update status of the referencing content.
 */
// const forceRefreshContent = true

// Imports the Discoveryengine library
const {DocumentServiceClient} = require('@google-cloud/discoveryengine').v1;

// Instantiates a client
const discoveryengineClient = new DocumentServiceClient();

async function callImportDocuments() {
  // Construct request
  const request = {
    parent,
  };

  // Run request
  const [operation] = await discoveryengineClient.importDocuments(request);
  const [response] = await operation.promise();
  console.log(response);
}

callImportDocuments();

Python

Per saperne di più, consulta la documentazione di riferimento dell'API AI Applications per Python.

Per autenticarti in AI Applications, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

Crea un datastore


from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"


def create_data_store_sample(
    project_id: str,
    location: str,
    data_store_id: str,
) -> str:
    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.DataStoreServiceClient(client_options=client_options)

    # The full resource name of the collection
    # e.g. projects/{project}/locations/{location}/collections/default_collection
    parent = client.collection_path(
        project=project_id,
        location=location,
        collection="default_collection",
    )

    data_store = discoveryengine.DataStore(
        display_name="My Data Store",
        # Options: GENERIC, MEDIA, HEALTHCARE_FHIR
        industry_vertical=discoveryengine.IndustryVertical.GENERIC,
        # Options: SOLUTION_TYPE_RECOMMENDATION, SOLUTION_TYPE_SEARCH, SOLUTION_TYPE_CHAT, SOLUTION_TYPE_GENERATIVE_CHAT
        solution_types=[discoveryengine.SolutionType.SOLUTION_TYPE_SEARCH],
        # TODO(developer): Update content_config based on data store type.
        # Options: NO_CONTENT, CONTENT_REQUIRED, PUBLIC_WEBSITE
        content_config=discoveryengine.DataStore.ContentConfig.CONTENT_REQUIRED,
    )

    request = discoveryengine.CreateDataStoreRequest(
        parent=parent,
        data_store_id=data_store_id,
        data_store=data_store,
        # Optional: For Advanced Site Search Only
        # create_advanced_site_search=True,
    )

    # Make the request
    operation = client.create_data_store(request=request)

    print(f"Waiting for operation to complete: {operation.operation.name}")
    response = operation.result()

    # After the operation is complete,
    # get information from operation metadata
    metadata = discoveryengine.CreateDataStoreMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name

Importa documenti


from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"
# bigquery_dataset = "YOUR_BIGQUERY_DATASET"
# bigquery_table = "YOUR_BIGQUERY_TABLE"

#  For more information, refer to:
# https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
client_options = (
    ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
    if location != "global"
    else None
)

# Create a client
client = discoveryengine.DocumentServiceClient(client_options=client_options)

# The full resource name of the search engine branch.
# e.g. projects/{project}/locations/{location}/dataStores/{data_store_id}/branches/{branch}
parent = client.branch_path(
    project=project_id,
    location=location,
    data_store=data_store_id,
    branch="default_branch",
)

request = discoveryengine.ImportDocumentsRequest(
    parent=parent,
    bigquery_source=discoveryengine.BigQuerySource(
        project_id=project_id,
        dataset_id=bigquery_dataset,
        table_id=bigquery_table,
        data_schema="custom",
    ),
    # Options: `FULL`, `INCREMENTAL`
    reconciliation_mode=discoveryengine.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL,
)

# Make the request
operation = client.import_documents(request=request)

print(f"Waiting for operation to complete: {operation.operation.name}")
response = operation.result()

# After the operation is complete,
# get information from operation metadata
metadata = discoveryengine.ImportDocumentsMetadata(operation.metadata)

# Handle the response
print(response)
print(metadata)

Ruby

Per saperne di più, consulta la documentazione di riferimento dell'API AI Applications per Ruby.

Per autenticarti in AI Applications, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

Crea un datastore

require "google/cloud/discovery_engine/v1"

##
# Snippet for the create_data_store call in the DataStoreService service
#
# This snippet has been automatically generated and should be regarded as a code
# template only. It will require modifications to work:
# - It may require correct/in-range values for request initialization.
# - It may require specifying regional endpoints when creating the service
# client as shown in https://cloud.google.com/ruby/docs/reference.
#
# This is an auto-generated example demonstrating basic usage of
# Google::Cloud::DiscoveryEngine::V1::DataStoreService::Client#create_data_store.
#
def create_data_store
  # Create a client object. The client can be reused for multiple calls.
  client = Google::Cloud::DiscoveryEngine::V1::DataStoreService::Client.new

  # Create a request. To set request fields, pass in keyword arguments.
  request = Google::Cloud::DiscoveryEngine::V1::CreateDataStoreRequest.new

  # Call the create_data_store method.
  result = client.create_data_store request

  # The returned object is of type Gapic::Operation. You can use it to
  # check the status of an operation, cancel it, or wait for results.
  # Here is how to wait for a response.
  result.wait_until_done! timeout: 60
  if result.response?
    p result.response
  else
    puts "No response received."
  end
end

Importa documenti

require "google/cloud/discovery_engine/v1"

##
# Snippet for the import_documents call in the DocumentService service
#
# This snippet has been automatically generated and should be regarded as a code
# template only. It will require modifications to work:
# - It may require correct/in-range values for request initialization.
# - It may require specifying regional endpoints when creating the service
# client as shown in https://cloud.google.com/ruby/docs/reference.
#
# This is an auto-generated example demonstrating basic usage of
# Google::Cloud::DiscoveryEngine::V1::DocumentService::Client#import_documents.
#
def import_documents
  # Create a client object. The client can be reused for multiple calls.
  client = Google::Cloud::DiscoveryEngine::V1::DocumentService::Client.new

  # Create a request. To set request fields, pass in keyword arguments.
  request = Google::Cloud::DiscoveryEngine::V1::ImportDocumentsRequest.new

  # Call the import_documents method.
  result = client.import_documents request

  # The returned object is of type Gapic::Operation. You can use it to
  # check the status of an operation, cancel it, or wait for results.
  # Here is how to wait for a response.
  result.wait_until_done! timeout: 60
  if result.response?
    p result.response
  else
    puts "No response received."
  end
end

Connettersi a BigQuery con la sincronizzazione periodica

Prima di importare i dati, consulta Preparare i dati per l'importazione.

La seguente procedura descrive come creare un connettore dati che associa un set di dati BigQuery a un connettore dati Vertex AI Search e come specificare una tabella nel set di dati per ogni datastore che vuoi creare. I datastore secondari dei connettori dati sono chiamati datastore entità.

I dati del set di dati vengono sincronizzati periodicamente con i datastore delle entità. Puoi specificare la sincronizzazione giornaliera, ogni tre giorni o ogni cinque giorni.

Console

Per utilizzare la console Google Cloud per creare un connettore che sincronizzi periodicamente i dati da un set di dati BigQuery a Vertex AI Search, segui questi passaggi:

  1. Nella Google Cloud console, vai alla pagina AI Applications.

    Applicazioni di AI

  2. Nel menu di navigazione, fai clic su Datastore.

  3. Fai clic su Crea datastore.

  4. Nella pagina Origine, seleziona BigQuery.

  5. Seleziona il tipo di dati che stai importando.

  6. Fai clic su Periodico.

  7. Seleziona la frequenza di sincronizzazione, ovvero la frequenza con cui vuoi che il connettore Vertex AI Search si sincronizzi con il set di dati BigQuery. Puoi modificare la frequenza in un secondo momento.

  8. Nel campo Percorso del set di dati BigQuery, fai clic su Sfoglia, seleziona il set di dati che contiene le tabelle che hai preparato per l'importazione. In alternativa, inserisci la posizione della tabella direttamente nel campo Percorso BigQuery. Il formato del percorso è projectname.datasetname.

  9. Nel campo Tabelle da sincronizzare, fai clic su Sfoglia e seleziona una tabella che contiene i dati che vuoi per il datastore.

  10. Se nel set di dati sono presenti altre tabelle che vuoi utilizzare per gli archivi dati, fai clic su Aggiungi tabella e specifica anche queste tabelle.

  11. Fai clic su Continua.

  12. Scegli una regione per il datastore, inserisci un nome per il connettore dati e fai clic su Crea.

    Ora hai creato un connettore dati che sincronizzerà periodicamente i dati con il set di dati BigQuery. Inoltre, hai creato uno o più datastore di entità. I datastore hanno gli stessi nomi delle tabelle BigQuery.

  13. Per controllare lo stato dell'importazione, vai alla pagina Datastore e fai clic sul nome del connettore dati per visualizzarne i dettagli nella pagina Data (Dati) > scheda Attività di importazione dei dati. Quando la colonna dello stato nella scheda Attività passa da In corso a Riuscito, la prima importazione è completata.

    A seconda delle dimensioni dei dati, l'importazione può richiedere diversi minuti o diverse ore.

Dopo aver configurato l'origine dati e importato i dati la prima volta, il datastore sincronizza i dati da questa origine con una frequenza che selezioni durante la configurazione. Circa un'ora dopo la creazione del connettore dati, viene eseguita la prima sincronizzazione. La sincronizzazione successiva avviene circa 24 ore, 72 ore o 120 ore dopo.

Passaggi successivi

  • Per collegare il datastore a un'app, crea un'app e seleziona il datastore seguendo i passaggi descritti in Creare un'app di ricerca.

  • Per visualizzare l'anteprima dell'aspetto dei risultati di ricerca dopo la configurazione dell'app e del datastore, consulta Ottenere i risultati di ricerca.

Importa da Cloud Storage

Puoi creare data store dalle tabelle Cloud Storage in due modi:

  • Importazione una tantum: importi i dati da una cartella o un file Cloud Storage in un datastore. I dati nel datastore non cambiano a meno che tu non aggiorni manualmente i dati.

  • Importazione periodica: importi i dati da una cartella o un file Cloud Storage e imposti una frequenza di sincronizzazione che determina la frequenza con cui l'archivio dati viene aggiornato con i dati più recenti da quella posizione Cloud Storage.

La seguente tabella confronta i due modi in cui puoi importare i dati di Cloud Storage nei datastore di Vertex AI Search.

Importazione una tantum Importazione periodica
Disponibilità generale (GA). Anteprima pubblica.
I dati devono essere aggiornati manualmente. I dati vengono aggiornati automaticamente ogni 1, 3 o 5 giorni. I dati non possono essere aggiornati manualmente.
Vertex AI Search crea un unico datastore da una cartella o un file in Cloud Storage. Vertex AI Search crea un connettore dati e associa un datastore (chiamato datastore entità) al file o alla cartella specificati. Ogni connettore dati Cloud Storage può avere un unico datastore di entità.
I dati di più file, cartelle e bucket possono essere combinati in un unico datastore importando prima i dati da una posizione Cloud Storage e poi altri dati da un'altra posizione. Poiché l'importazione manuale dei dati non è supportata, i dati in un datastore delle entità possono provenire solo da un file o una cartella Cloud Storage.
Il controllo dell'accesso all'origine dati è supportato. Per saperne di più, consulta Controllo dell'accesso all'origine dati. Controllo dell'accesso all'origine dati non è supportato. I dati importati possono contenere controlli dell'accesso, ma questi controlli non verranno rispettati.
Puoi creare un datastore utilizzando la consoleGoogle Cloud o l'API. Devi utilizzare la console per creare i connettori di dati e i relativi archivi di dati delle entità.
Conforme a CMEK. Conforme a CMEK.

Importa una volta da Cloud Storage

Per importare i dati da Cloud Storage, segui questi passaggi per creare un datastore e importare i dati utilizzando la console Google Cloud o l'API.

Prima di importare i dati, consulta Preparare i dati per l'importazione.

Console

Per utilizzare la console per importare i dati da un bucket Cloud Storage, segui questi passaggi:

  1. Nella Google Cloud console, vai alla pagina AI Applications.

    Applicazioni di AI

  2. Vai alla pagina Datastore.

  3. Fai clic su Crea datastore.

  4. Nella pagina Origine, seleziona Cloud Storage.

  5. Nella sezione Seleziona una cartella o un file da importare, seleziona Cartella o File.

  6. Fai clic su Sfoglia e scegli i dati che hai preparato per l'importazione, poi fai clic su Seleziona. In alternativa, inserisci la posizione direttamente nel campo gs://.

  7. Seleziona il tipo di dati che stai importando.

  8. Fai clic su Continua.

  9. Se esegui un'importazione una tantum di dati strutturati:

    1. Mappa i campi alle proprietà chiave.

    2. Se mancano campi importanti nello schema, utilizza Aggiungi nuovo campo per aggiungerli.

      Per saperne di più, consulta Informazioni sul rilevamento e la modifica automatici.

    3. Fai clic su Continua.

  10. Scegli una regione per il datastore.

  11. Inserisci un nome per il tuo datastore.

  12. (Facoltativo) Se hai selezionato documenti non strutturati, puoi selezionare le opzioni di analisi e chunking per i tuoi documenti. Per confrontare i parser, vedi Analizzare i documenti. Per informazioni sulla suddivisione in blocchi, vedi Suddividere i documenti in blocchi per RAG.

    Il parser OCR e il parser di layout possono comportare costi aggiuntivi. Consulta i prezzi delle funzionalità di Document AI.

    Per selezionare un parser, espandi Opzioni di elaborazione dei documenti e specifica le opzioni del parser che vuoi utilizzare.

  13. Fai clic su Crea.

  14. Per controllare lo stato dell'importazione, vai alla pagina Datastore e fai clic sul nome del datastore per visualizzarne i dettagli nella pagina Data (Dati). Quando la colonna Stato nella scheda Attività passa da In corso a Importazione completata, l'importazione è terminata.

    A seconda delle dimensioni dei dati, l'importazione può richiedere diversi minuti o diverse ore.

REST

Per utilizzare la riga di comando per creare un datastore e importare i dati da Cloud Storage, segui questi passaggi.

  1. 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": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"]
    }'
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto.
    • DATA_STORE_ID: l'ID del datastore Vertex AI Search che vuoi creare. Questo ID può contenere solo lettere minuscole, cifre, trattini bassi e trattini.
    • DATA_STORE_DISPLAY_NAME: il nome visualizzato del datastore Vertex AI Search che vuoi creare.

    (Facoltativo) Se carichi dati non strutturati e vuoi configurare l'analisi dei documenti o attivare la suddivisione dei documenti per RAG, specifica l'oggetto documentProcessingConfig e includilo nella richiesta di creazione del datastore. La configurazione di un analizzatore OCR per i PDF è consigliata se importi PDF scansionati. Per informazioni su come configurare le opzioni di analisi o suddivisione in blocchi, vedi Analizzare e dividere i documenti in blocchi.

  2. Importa i dati da Cloud Storage.

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents:import" \
      -d '{
        "gcsSource": {
          "inputUris": ["INPUT_FILE_PATTERN_1", "INPUT_FILE_PATTERN_2"],
          "dataSchema": "DATA_SCHEMA",
        },
        "reconciliationMode": "RECONCILIATION_MODE",
        "autoGenerateIds": "AUTO_GENERATE_IDS",
        "idField": "ID_FIELD",
        "errorConfig": {
          "gcsPrefix": "ERROR_DIRECTORY"
        }
      }'
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto.
    • DATA_STORE_ID: l'ID del datastore Vertex AI Search.
    • INPUT_FILE_PATTERN: un pattern di file in Cloud Storage contenente i tuoi documenti.

      Per i dati strutturati o per i dati non strutturati con metadati, un esempio di pattern del file di input è gs://<your-gcs-bucket>/directory/object.json e un esempio di pattern che corrisponde a uno o più file è gs://<your-gcs-bucket>/directory/*.json.

      Per i documenti non strutturati, un esempio è gs://<your-gcs-bucket>/directory/*.pdf. Ogni file corrispondente al pattern diventa un documento.

      Se <your-gcs-bucket> non si trova in PROJECT_ID, devi concedere al account di servizio service-<project number>@gcp-sa-discoveryengine.iam.gserviceaccount.com le autorizzazioni "Visualizzatore oggetti Storage" per il bucket Cloud Storage. Ad esempio, se importi un bucket Cloud Storage dal progetto di origine "123" al progetto di destinazione "456", concedi service-456@gcp-sa-discoveryengine.iam.gserviceaccount.com autorizzazioni sul bucket Cloud Storage nel progetto "123".

    • DATA_SCHEMA: facoltativo. I valori sono document, custom, csv e content. Il valore predefinito è document.

      • document: Carica dati non strutturati con metadati per documenti non strutturati. Ogni riga del file deve seguire uno dei seguenti formati. Puoi definire l'ID di ogni documento:

        • { "id": "<your-id>", "jsonData": "<JSON string>", "content": { "mimeType": "<application/pdf or text/html>", "uri": "gs://<your-gcs-bucket>/directory/filename.pdf" } }
        • { "id": "<your-id>", "structData": <JSON object>, "content": { "mimeType": "<application/pdf or text/html>", "uri": "gs://<your-gcs-bucket>/directory/filename.pdf" } }
      • custom: carica il file JSON per i documenti strutturati. I dati sono organizzati in base a uno schema. Puoi specificare lo schema; in caso contrario, viene rilevato automaticamente. Puoi inserire la stringa JSON del documento in un formato coerente direttamente in ogni riga e Vertex AI Search genera automaticamente gli ID per ogni documento importato.

      • content: carica documenti non strutturati (PDF, HTML, DOC, TXT, PPTX). L'ID di ogni documento viene generato automaticamente come i primi 128 bit di SHA256(GCS_URI) codificati come stringa esadecimale. Puoi specificare più pattern di file di input, purché i file corrispondenti non superino il limite di 100.000 file.

      • csv: includi una riga di intestazione nel file CSV, con ogni intestazione mappata a un campo del documento. Specifica il percorso del file CSV utilizzando il campo inputUris.

    • ERROR_DIRECTORY: facoltativo. Una directory Cloud Storage per informazioni sugli errori relativi all'importazione, ad esempio gs://<your-gcs-bucket>/directory/import_errors. Google consiglia di lasciare vuoto questo campo per consentire a Vertex AI Search di creare automaticamente una directory temporanea.

    • RECONCILIATION_MODE: facoltativo. I valori sono FULL e INCREMENTAL. Il valore predefinito è INCREMENTAL. Se specifichi INCREMENTAL viene eseguito un aggiornamento incrementale dei dati da Cloud Storage all'datastore. Esegue un'operazione di upsert, che aggiunge nuovi documenti e sostituisce quelli esistenti con documenti aggiornati con lo stesso ID. La specifica di FULL causa una ribasatura completa dei documenti nel datastore. In altre parole, i documenti nuovi e aggiornati vengono aggiunti al datastore e i documenti che non si trovano in Cloud Storage vengono rimossi dal datastore. La modalità FULL è utile se vuoi eliminare automaticamente i documenti che non ti servono più.

    • AUTO_GENERATE_IDS: facoltativo. Specifica se generare automaticamente gli ID documento. Se impostato su true, gli ID documento vengono generati in base a un hash del payload. Tieni presente che gli ID documento generati potrebbero non rimanere coerenti in più importazioni. Se generi automaticamente ID in più importazioni, Google consiglia vivamente di impostare reconciliationMode su FULL per mantenere ID documento coerenti.

      Specifica autoGenerateIds solo quando gcsSource.dataSchema è impostato su custom o csv. In caso contrario, viene restituito un errore INVALID_ARGUMENT. Se non specifichi autoGenerateIds o lo imposti su false, devi specificare idField. In caso contrario, l'importazione dei documenti non andrà a buon fine.

    • ID_FIELD: facoltativo. Specifica quali campi sono gli ID documento. Per i documenti di origine Cloud Storage, idField specifica il nome nei campi JSON che sono ID documento. Ad esempio, se {"my_id":"some_uuid"} è il campo ID documento in uno dei tuoi documenti, specifica "idField":"my_id". Identifica tutti i campi JSON con il nome "my_id" come ID documento.

      Specifica questo campo solo quando: (1) gcsSource.dataSchema è impostato su custom o csv e (2) auto_generate_ids è impostato su false o non è specificato. In caso contrario, viene restituito un errore INVALID_ARGUMENT.

      Tieni presente che il valore del campo JSON di Cloud Storage deve essere di tipo stringa, deve essere compreso tra 1 e 63 caratteri e deve essere conforme a RFC-1034. In caso contrario, l'importazione dei documenti non andrà a buon fine.

      Tieni presente che il nome del campo JSON specificato da id_field deve essere di tipo stringa, deve essere compreso tra 1 e 63 caratteri e deve essere conforme allo standard RFC-1034. In caso contrario, l'importazione dei documenti non andrà a buon fine.

C#

Per saperne di più, consulta la documentazione di riferimento dell'API AI Applications per C#.

Per autenticarti in AI Applications, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

Crea un datastore

using Google.Cloud.DiscoveryEngine.V1;
using Google.LongRunning;

public sealed partial class GeneratedDataStoreServiceClientSnippets
{
    /// <summary>Snippet for CreateDataStore</summary>
    /// <remarks>
    /// This snippet has been automatically generated and should be regarded as a code template only.
    /// It will require modifications to work:
    /// - It may require correct/in-range values for request initialization.
    /// - It may require specifying regional endpoints when creating the service client as shown in
    ///   https://cloud.google.com/dotnet/docs/reference/help/client-configuration#endpoint.
    /// </remarks>
    public void CreateDataStoreRequestObject()
    {
        // Create client
        DataStoreServiceClient dataStoreServiceClient = DataStoreServiceClient.Create();
        // Initialize request argument(s)
        CreateDataStoreRequest request = new CreateDataStoreRequest
        {
            ParentAsCollectionName = CollectionName.FromProjectLocationCollection("[PROJECT]", "[LOCATION]", "[COLLECTION]"),
            DataStore = new DataStore(),
            DataStoreId = "",
            CreateAdvancedSiteSearch = false,
            CmekConfigNameAsCmekConfigName = CmekConfigName.FromProjectLocation("[PROJECT]", "[LOCATION]"),
            SkipDefaultSchemaCreation = false,
        };
        // Make the request
        Operation<DataStore, CreateDataStoreMetadata> response = dataStoreServiceClient.CreateDataStore(request);

        // Poll until the returned long-running operation is complete
        Operation<DataStore, CreateDataStoreMetadata> completedResponse = response.PollUntilCompleted();
        // Retrieve the operation result
        DataStore result = completedResponse.Result;

        // Or get the name of the operation
        string operationName = response.Name;
        // This name can be stored, then the long-running operation retrieved later by name
        Operation<DataStore, CreateDataStoreMetadata> retrievedResponse = dataStoreServiceClient.PollOnceCreateDataStore(operationName);
        // Check if the retrieved long-running operation has completed
        if (retrievedResponse.IsCompleted)
        {
            // If it has completed, then access the result
            DataStore retrievedResult = retrievedResponse.Result;
        }
    }
}

Importa documenti

using Google.Cloud.DiscoveryEngine.V1;
using Google.LongRunning;
using Google.Protobuf.WellKnownTypes;

public sealed partial class GeneratedDocumentServiceClientSnippets
{
    /// <summary>Snippet for ImportDocuments</summary>
    /// <remarks>
    /// This snippet has been automatically generated and should be regarded as a code template only.
    /// It will require modifications to work:
    /// - It may require correct/in-range values for request initialization.
    /// - It may require specifying regional endpoints when creating the service client as shown in
    ///   https://cloud.google.com/dotnet/docs/reference/help/client-configuration#endpoint.
    /// </remarks>
    public void ImportDocumentsRequestObject()
    {
        // Create client
        DocumentServiceClient documentServiceClient = DocumentServiceClient.Create();
        // Initialize request argument(s)
        ImportDocumentsRequest request = new ImportDocumentsRequest
        {
            ParentAsBranchName = BranchName.FromProjectLocationDataStoreBranch("[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]"),
            InlineSource = new ImportDocumentsRequest.Types.InlineSource(),
            ErrorConfig = new ImportErrorConfig(),
            ReconciliationMode = ImportDocumentsRequest.Types.ReconciliationMode.Unspecified,
            UpdateMask = new FieldMask(),
            AutoGenerateIds = false,
            IdField = "",
            ForceRefreshContent = false,
        };
        // Make the request
        Operation<ImportDocumentsResponse, ImportDocumentsMetadata> response = documentServiceClient.ImportDocuments(request);

        // Poll until the returned long-running operation is complete
        Operation<ImportDocumentsResponse, ImportDocumentsMetadata> completedResponse = response.PollUntilCompleted();
        // Retrieve the operation result
        ImportDocumentsResponse result = completedResponse.Result;

        // Or get the name of the operation
        string operationName = response.Name;
        // This name can be stored, then the long-running operation retrieved later by name
        Operation<ImportDocumentsResponse, ImportDocumentsMetadata> retrievedResponse = documentServiceClient.PollOnceImportDocuments(operationName);
        // Check if the retrieved long-running operation has completed
        if (retrievedResponse.IsCompleted)
        {
            // If it has completed, then access the result
            ImportDocumentsResponse retrievedResult = retrievedResponse.Result;
        }
    }
}

Go

Per saperne di più, consulta la documentazione di riferimento dell'API AI Applications per Go.

Per autenticarti in AI Applications, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

Crea un datastore


package main

import (
	"context"

	discoveryengine "cloud.google.com/go/discoveryengine/apiv1"
	discoveryenginepb "cloud.google.com/go/discoveryengine/apiv1/discoveryenginepb"
)

func main() {
	ctx := context.Background()
	// This snippet has been automatically generated and should be regarded as a code template only.
	// It will require modifications to work:
	// - It may require correct/in-range values for request initialization.
	// - It may require specifying regional endpoints when creating the service client as shown in:
	//   https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options
	c, err := discoveryengine.NewDataStoreClient(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	defer c.Close()

	req := &discoveryenginepb.CreateDataStoreRequest{
		// TODO: Fill request struct fields.
		// See https://pkg.go.dev/cloud.google.com/go/discoveryengine/apiv1/discoveryenginepb#CreateDataStoreRequest.
	}
	op, err := c.CreateDataStore(ctx, req)
	if err != nil {
		// TODO: Handle error.
	}

	resp, err := op.Wait(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	// TODO: Use resp.
	_ = resp
}

Importa documenti


package main

import (
	"context"

	discoveryengine "cloud.google.com/go/discoveryengine/apiv1"
	discoveryenginepb "cloud.google.com/go/discoveryengine/apiv1/discoveryenginepb"
)

func main() {
	ctx := context.Background()
	// This snippet has been automatically generated and should be regarded as a code template only.
	// It will require modifications to work:
	// - It may require correct/in-range values for request initialization.
	// - It may require specifying regional endpoints when creating the service client as shown in:
	//   https://pkg.go.dev/cloud.google.com/go#hdr-Client_Options
	c, err := discoveryengine.NewDocumentClient(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	defer c.Close()

	req := &discoveryenginepb.ImportDocumentsRequest{
		// TODO: Fill request struct fields.
		// See https://pkg.go.dev/cloud.google.com/go/discoveryengine/apiv1/discoveryenginepb#ImportDocumentsRequest.
	}
	op, err := c.ImportDocuments(ctx, req)
	if err != nil {
		// TODO: Handle error.
	}

	resp, err := op.Wait(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	// TODO: Use resp.
	_ = resp
}

Java

Per saperne di più, consulta la documentazione di riferimento dell'API AI Applications per Java.

Per autenticarti in AI Applications, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

Crea un datastore

import com.google.cloud.discoveryengine.v1.CollectionName;
import com.google.cloud.discoveryengine.v1.CreateDataStoreRequest;
import com.google.cloud.discoveryengine.v1.DataStore;
import com.google.cloud.discoveryengine.v1.DataStoreServiceClient;

public class SyncCreateDataStore {

  public static void main(String[] args) throws Exception {
    syncCreateDataStore();
  }

  public static void syncCreateDataStore() throws Exception {
    // This snippet has been automatically generated and should be regarded as a code template only.
    // It will require modifications to work:
    // - It may require correct/in-range values for request initialization.
    // - It may require specifying regional endpoints when creating the service client as shown in
    // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
    try (DataStoreServiceClient dataStoreServiceClient = DataStoreServiceClient.create()) {
      CreateDataStoreRequest request =
          CreateDataStoreRequest.newBuilder()
              .setParent(CollectionName.of("[PROJECT]", "[LOCATION]", "[COLLECTION]").toString())
              .setDataStore(DataStore.newBuilder().build())
              .setDataStoreId("dataStoreId929489618")
              .setCreateAdvancedSiteSearch(true)
              .setSkipDefaultSchemaCreation(true)
              .build();
      DataStore response = dataStoreServiceClient.createDataStoreAsync(request).get();
    }
  }
}

Importa documenti

import com.google.cloud.discoveryengine.v1.BranchName;
import com.google.cloud.discoveryengine.v1.DocumentServiceClient;
import com.google.cloud.discoveryengine.v1.ImportDocumentsRequest;
import com.google.cloud.discoveryengine.v1.ImportDocumentsResponse;
import com.google.cloud.discoveryengine.v1.ImportErrorConfig;
import com.google.protobuf.FieldMask;

public class SyncImportDocuments {

  public static void main(String[] args) throws Exception {
    syncImportDocuments();
  }

  public static void syncImportDocuments() throws Exception {
    // This snippet has been automatically generated and should be regarded as a code template only.
    // It will require modifications to work:
    // - It may require correct/in-range values for request initialization.
    // - It may require specifying regional endpoints when creating the service client as shown in
    // https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
    try (DocumentServiceClient documentServiceClient = DocumentServiceClient.create()) {
      ImportDocumentsRequest request =
          ImportDocumentsRequest.newBuilder()
              .setParent(
                  BranchName.ofProjectLocationDataStoreBranchName(
                          "[PROJECT]", "[LOCATION]", "[DATA_STORE]", "[BRANCH]")
                      .toString())
              .setErrorConfig(ImportErrorConfig.newBuilder().build())
              .setUpdateMask(FieldMask.newBuilder().build())
              .setAutoGenerateIds(true)
              .setIdField("idField1629396127")
              .setForceRefreshContent(true)
              .build();
      ImportDocumentsResponse response = documentServiceClient.importDocumentsAsync(request).get();
    }
  }
}

Node.js

Per saperne di più, consulta la documentazione di riferimento dell'API AI Applications per Node.js.

Per autenticarti in AI Applications, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

Crea un datastore

/**
 * This snippet has been automatically generated and should be regarded as a code template only.
 * It will require modifications to work.
 * It may require correct/in-range values for request initialization.
 * TODO(developer): Uncomment these variables before running the sample.
 */
/**
 *  Resource name of the CmekConfig to use for protecting this DataStore.
 */
// const cmekConfigName = 'abc123'
/**
 *  DataStore without CMEK protections. If a default CmekConfig is set for
 *  the project, setting this field will override the default CmekConfig as
 *  well.
 */
// const disableCmek = true
/**
 *  Required. The parent resource name, such as
 *  `projects/{project}/locations/{location}/collections/{collection}`.
 */
// const parent = 'abc123'
/**
 *  Required. The DataStore google.cloud.discoveryengine.v1.DataStore  to
 *  create.
 */
// const dataStore = {}
/**
 *  Required. The ID to use for the
 *  DataStore google.cloud.discoveryengine.v1.DataStore, which will become
 *  the final component of the
 *  DataStore google.cloud.discoveryengine.v1.DataStore's resource name.
 *  This field must conform to RFC-1034 (https://tools.ietf.org/html/rfc1034)
 *  standard with a length limit of 63 characters. Otherwise, an
 *  INVALID_ARGUMENT error is returned.
 */
// const dataStoreId = 'abc123'
/**
 *  A boolean flag indicating whether user want to directly create an advanced
 *  data store for site search.
 *  If the data store is not configured as site
 *  search (GENERIC vertical and PUBLIC_WEBSITE content_config), this flag will
 *  be ignored.
 */
// const createAdvancedSiteSearch = true
/**
 *  A boolean flag indicating whether to skip the default schema creation for
 *  the data store. Only enable this flag if you are certain that the default
 *  schema is incompatible with your use case.
 *  If set to true, you must manually create a schema for the data store before
 *  any documents can be ingested.
 *  This flag cannot be specified if `data_store.starting_schema` is specified.
 */
// const skipDefaultSchemaCreation = true

// Imports the Discoveryengine library
const {DataStoreServiceClient} = require('@google-cloud/discoveryengine').v1;

// Instantiates a client
const discoveryengineClient = new DataStoreServiceClient();

async function callCreateDataStore() {
  // Construct request
  const request = {
    parent,
    dataStore,
    dataStoreId,
  };

  // Run request
  const [operation] = await discoveryengineClient.createDataStore(request);
  const [response] = await operation.promise();
  console.log(response);
}

callCreateDataStore();

Importa documenti

/**
 * This snippet has been automatically generated and should be regarded as a code template only.
 * It will require modifications to work.
 * It may require correct/in-range values for request initialization.
 * TODO(developer): Uncomment these variables before running the sample.
 */
/**
 *  The Inline source for the input content for documents.
 */
// const inlineSource = {}
/**
 *  Cloud Storage location for the input content.
 */
// const gcsSource = {}
/**
 *  BigQuery input source.
 */
// const bigquerySource = {}
/**
 *  FhirStore input source.
 */
// const fhirStoreSource = {}
/**
 *  Spanner input source.
 */
// const spannerSource = {}
/**
 *  Cloud SQL input source.
 */
// const cloudSqlSource = {}
/**
 *  Firestore input source.
 */
// const firestoreSource = {}
/**
 *  AlloyDB input source.
 */
// const alloyDbSource = {}
/**
 *  Cloud Bigtable input source.
 */
// const bigtableSource = {}
/**
 *  Required. The parent branch resource name, such as
 *  `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}/branches/{branch}`.
 *  Requires create/update permission.
 */
// const parent = 'abc123'
/**
 *  The desired location of errors incurred during the Import.
 */
// const errorConfig = {}
/**
 *  The mode of reconciliation between existing documents and the documents to
 *  be imported. Defaults to
 *  ReconciliationMode.INCREMENTAL google.cloud.discoveryengine.v1.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL.
 */
// const reconciliationMode = {}
/**
 *  Indicates which fields in the provided imported documents to update. If
 *  not set, the default is to update all fields.
 */
// const updateMask = {}
/**
 *  Whether to automatically generate IDs for the documents if absent.
 *  If set to `true`,
 *  Document.id google.cloud.discoveryengine.v1.Document.id s are
 *  automatically generated based on the hash of the payload, where IDs may not
 *  be consistent during multiple imports. In which case
 *  ReconciliationMode.FULL google.cloud.discoveryengine.v1.ImportDocumentsRequest.ReconciliationMode.FULL 
 *  is highly recommended to avoid duplicate contents. If unset or set to
 *  `false`, Document.id google.cloud.discoveryengine.v1.Document.id s have
 *  to be specified using
 *  id_field google.cloud.discoveryengine.v1.ImportDocumentsRequest.id_field,
 *  otherwise, documents without IDs fail to be imported.
 *  Supported data sources:
 *  * GcsSource google.cloud.discoveryengine.v1.GcsSource.
 *  GcsSource.data_schema google.cloud.discoveryengine.v1.GcsSource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * BigQuerySource google.cloud.discoveryengine.v1.BigQuerySource.
 *  BigQuerySource.data_schema google.cloud.discoveryengine.v1.BigQuerySource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * SpannerSource google.cloud.discoveryengine.v1.SpannerSource.
 *  * CloudSqlSource google.cloud.discoveryengine.v1.CloudSqlSource.
 *  * FirestoreSource google.cloud.discoveryengine.v1.FirestoreSource.
 *  * BigtableSource google.cloud.discoveryengine.v1.BigtableSource.
 */
// const autoGenerateIds = true
/**
 *  The field indicates the ID field or column to be used as unique IDs of
 *  the documents.
 *  For GcsSource google.cloud.discoveryengine.v1.GcsSource  it is the key of
 *  the JSON field. For instance, `my_id` for JSON `{"my_id": "some_uuid"}`.
 *  For others, it may be the column name of the table where the unique ids are
 *  stored.
 *  The values of the JSON field or the table column are used as the
 *  Document.id google.cloud.discoveryengine.v1.Document.id s. The JSON field
 *  or the table column must be of string type, and the values must be set as
 *  valid strings conform to RFC-1034 (https://tools.ietf.org/html/rfc1034)
 *  with 1-63 characters. Otherwise, documents without valid IDs fail to be
 *  imported.
 *  Only set this field when
 *  auto_generate_ids google.cloud.discoveryengine.v1.ImportDocumentsRequest.auto_generate_ids 
 *  is unset or set as `false`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  If it is unset, a default value `_id` is used when importing from the
 *  allowed data sources.
 *  Supported data sources:
 *  * GcsSource google.cloud.discoveryengine.v1.GcsSource.
 *  GcsSource.data_schema google.cloud.discoveryengine.v1.GcsSource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * BigQuerySource google.cloud.discoveryengine.v1.BigQuerySource.
 *  BigQuerySource.data_schema google.cloud.discoveryengine.v1.BigQuerySource.data_schema 
 *  must be `custom` or `csv`. Otherwise, an INVALID_ARGUMENT error is thrown.
 *  * SpannerSource google.cloud.discoveryengine.v1.SpannerSource.
 *  * CloudSqlSource google.cloud.discoveryengine.v1.CloudSqlSource.
 *  * FirestoreSource google.cloud.discoveryengine.v1.FirestoreSource.
 *  * BigtableSource google.cloud.discoveryengine.v1.BigtableSource.
 */
// const idField = 'abc123'
/**
 *  Optional. Whether to force refresh the unstructured content of the
 *  documents.
 *  If set to `true`, the content part of the documents will be refreshed
 *  regardless of the update status of the referencing content.
 */
// const forceRefreshContent = true

// Imports the Discoveryengine library
const {DocumentServiceClient} = require('@google-cloud/discoveryengine').v1;

// Instantiates a client
const discoveryengineClient = new DocumentServiceClient();

async function callImportDocuments() {
  // Construct request
  const request = {
    parent,
  };

  // Run request
  const [operation] = await discoveryengineClient.importDocuments(request);
  const [response] = await operation.promise();
  console.log(response);
}

callImportDocuments();

Python

Per saperne di più, consulta la documentazione di riferimento dell'API AI Applications per Python.

Per autenticarti in AI Applications, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

Crea un datastore


from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"


def create_data_store_sample(
    project_id: str,
    location: str,
    data_store_id: str,
) -> str:
    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.DataStoreServiceClient(client_options=client_options)

    # The full resource name of the collection
    # e.g. projects/{project}/locations/{location}/collections/default_collection
    parent = client.collection_path(
        project=project_id,
        location=location,
        collection="default_collection",
    )

    data_store = discoveryengine.DataStore(
        display_name="My Data Store",
        # Options: GENERIC, MEDIA, HEALTHCARE_FHIR
        industry_vertical=discoveryengine.IndustryVertical.GENERIC,
        # Options: SOLUTION_TYPE_RECOMMENDATION, SOLUTION_TYPE_SEARCH, SOLUTION_TYPE_CHAT, SOLUTION_TYPE_GENERATIVE_CHAT
        solution_types=[discoveryengine.SolutionType.SOLUTION_TYPE_SEARCH],
        # TODO(developer): Update content_config based on data store type.
        # Options: NO_CONTENT, CONTENT_REQUIRED, PUBLIC_WEBSITE
        content_config=discoveryengine.DataStore.ContentConfig.CONTENT_REQUIRED,
    )

    request = discoveryengine.CreateDataStoreRequest(
        parent=parent,
        data_store_id=data_store_id,
        data_store=data_store,
        # Optional: For Advanced Site Search Only
        # create_advanced_site_search=True,
    )

    # Make the request
    operation = client.create_data_store(request=request)

    print(f"Waiting for operation to complete: {operation.operation.name}")
    response = operation.result()

    # After the operation is complete,
    # get information from operation metadata
    metadata = discoveryengine.CreateDataStoreMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name

Importa documenti

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"

# Examples:
# - Unstructured documents
#   - `gs://bucket/directory/file.pdf`
#   - `gs://bucket/directory/*.pdf`
# - Unstructured documents with JSONL Metadata
#   - `gs://bucket/directory/file.json`
# - Unstructured documents with CSV Metadata
#   - `gs://bucket/directory/file.csv`
# gcs_uri = "YOUR_GCS_PATH"

#  For more information, refer to:
# https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
client_options = (
    ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
    if location != "global"
    else None
)

# Create a client
client = discoveryengine.DocumentServiceClient(client_options=client_options)

# The full resource name of the search engine branch.
# e.g. projects/{project}/locations/{location}/dataStores/{data_store_id}/branches/{branch}
parent = client.branch_path(
    project=project_id,
    location=location,
    data_store=data_store_id,
    branch="default_branch",
)

request = discoveryengine.ImportDocumentsRequest(
    parent=parent,
    gcs_source=discoveryengine.GcsSource(
        # Multiple URIs are supported
        input_uris=[gcs_uri],
        # Options:
        # - `content` - Unstructured documents (PDF, HTML, DOC, TXT, PPTX)
        # - `custom` - Unstructured documents with custom JSONL metadata
        # - `document` - Structured documents in the discoveryengine.Document format.
        # - `csv` - Unstructured documents with CSV metadata
        data_schema="content",
    ),
    # Options: `FULL`, `INCREMENTAL`
    reconciliation_mode=discoveryengine.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL,
)

# Make the request
operation = client.import_documents(request=request)

print(f"Waiting for operation to complete: {operation.operation.name}")
response = operation.result()

# After the operation is complete,
# get information from operation metadata
metadata = discoveryengine.ImportDocumentsMetadata(operation.metadata)

# Handle the response
print(response)
print(metadata)

Ruby

Per saperne di più, consulta la documentazione di riferimento dell'API AI Applications per Ruby.

Per autenticarti in AI Applications, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

Crea un datastore

require "google/cloud/discovery_engine/v1"

##
# Snippet for the create_data_store call in the DataStoreService service
#
# This snippet has been automatically generated and should be regarded as a code
# template only. It will require modifications to work:
# - It may require correct/in-range values for request initialization.
# - It may require specifying regional endpoints when creating the service
# client as shown in https://cloud.google.com/ruby/docs/reference.
#
# This is an auto-generated example demonstrating basic usage of
# Google::Cloud::DiscoveryEngine::V1::DataStoreService::Client#create_data_store.
#
def create_data_store
  # Create a client object. The client can be reused for multiple calls.
  client = Google::Cloud::DiscoveryEngine::V1::DataStoreService::Client.new

  # Create a request. To set request fields, pass in keyword arguments.
  request = Google::Cloud::DiscoveryEngine::V1::CreateDataStoreRequest.new

  # Call the create_data_store method.
  result = client.create_data_store request

  # The returned object is of type Gapic::Operation. You can use it to
  # check the status of an operation, cancel it, or wait for results.
  # Here is how to wait for a response.
  result.wait_until_done! timeout: 60
  if result.response?
    p result.response
  else
    puts "No response received."
  end
end

Importa documenti

require "google/cloud/discovery_engine/v1"

##
# Snippet for the import_documents call in the DocumentService service
#
# This snippet has been automatically generated and should be regarded as a code
# template only. It will require modifications to work:
# - It may require correct/in-range values for request initialization.
# - It may require specifying regional endpoints when creating the service
# client as shown in https://cloud.google.com/ruby/docs/reference.
#
# This is an auto-generated example demonstrating basic usage of
# Google::Cloud::DiscoveryEngine::V1::DocumentService::Client#import_documents.
#
def import_documents
  # Create a client object. The client can be reused for multiple calls.
  client = Google::Cloud::DiscoveryEngine::V1::DocumentService::Client.new

  # Create a request. To set request fields, pass in keyword arguments.
  request = Google::Cloud::DiscoveryEngine::V1::ImportDocumentsRequest.new

  # Call the import_documents method.
  result = client.import_documents request

  # The returned object is of type Gapic::Operation. You can use it to
  # check the status of an operation, cancel it, or wait for results.
  # Here is how to wait for a response.
  result.wait_until_done! timeout: 60
  if result.response?
    p result.response
  else
    puts "No response received."
  end
end

Connettersi a Cloud Storage con sincronizzazione periodica

Prima di importare i dati, consulta Preparare i dati per l'importazione.

La seguente procedura descrive come creare un connettore dati che associa una posizione Cloud Storage a un connettore dati Vertex AI Search e come specificare una cartella o un file in quella posizione per il datastore che vuoi creare. I datastore figli dei connettori di dati sono chiamati datastore entità.

I dati vengono sincronizzati periodicamente con il datastore delle entità. Puoi specificare la sincronizzazione giornaliera, ogni tre giorni o ogni cinque giorni.

Console

  1. Nella Google Cloud console, vai alla pagina AI Applications.

    Applicazioni di AI

  2. Vai alla pagina Datastore.

  3. Fai clic su Crea datastore.

  4. Nella pagina Origine, seleziona Cloud Storage.

  5. Seleziona il tipo di dati che stai importando.

  6. Fai clic su Periodico.

  7. Seleziona la frequenza di sincronizzazione, ovvero la frequenza con cui vuoi che il connettore Vertex AI Search si sincronizzi con la posizione Cloud Storage. Puoi modificare la frequenza in un secondo momento.

  8. Nella sezione Seleziona una cartella o un file da importare, seleziona Cartella o File.

  9. Fai clic su Sfoglia e scegli i dati che hai preparato per l'importazione, poi fai clic su Seleziona. In alternativa, inserisci la posizione direttamente nel campo gs://.

  10. Fai clic su Continua.

  11. Scegli una regione per il connettore dati.

  12. Inserisci un nome per il tuo connettore dati.

  13. (Facoltativo) Se hai selezionato documenti non strutturati, puoi selezionare le opzioni di analisi e chunking per i tuoi documenti. Per confrontare i parser, vedi Analizzare i documenti. Per informazioni sulla suddivisione in blocchi, vedi Suddividere i documenti in blocchi per RAG.

    Il parser OCR e il parser di layout possono comportare costi aggiuntivi. Consulta i prezzi delle funzionalità di Document AI.

    Per selezionare un parser, espandi Opzioni di elaborazione dei documenti e specifica le opzioni del parser che vuoi utilizzare.

  14. Fai clic su Crea.

    Ora hai creato un connettore dati che sincronizzerà periodicamente i dati con la posizione Cloud Storage. Hai anche creato un datastore di entità, denominato gcs_store.

  15. Per controllare lo stato dell'importazione, vai alla pagina Datastore e fai clic sul nome del connettore dati per visualizzarne i dettagli nella pagina Data (Dati).

    Scheda Attività di importazione dati. Quando la colonna dello stato nella scheda Attività di importazione dei dati cambia da In corso a Riuscito, la prima importazione è completata.

    A seconda delle dimensioni dei dati, l'importazione può richiedere diversi minuti o diverse ore.

Dopo aver configurato l'origine dati e importato i dati la prima volta, i dati vengono sincronizzati da questa origine con una frequenza che selezioni durante la configurazione. Circa un'ora dopo la creazione del connettore dati, viene eseguita la prima sincronizzazione. La sincronizzazione successiva avviene circa 24 ore, 72 ore o 120 ore dopo.

Passaggi successivi

  • Per collegare il datastore a un'app, crea un'app e seleziona il datastore seguendo i passaggi descritti in Creare un'app di ricerca.

  • Per visualizzare l'anteprima dell'aspetto dei risultati di ricerca dopo la configurazione dell'app e del datastore, consulta Ottenere i risultati di ricerca.

Collegati a Google Drive

Le applicazioni AI possono cercare dati da Google Drive utilizzando la federazione dei dati, che recupera direttamente le informazioni dall'origine dati specificata. Poiché i dati non vengono copiati nell'indice di Vertex AI Search, non devi preoccuparti dell'archiviazione dei dati.

Prima di iniziare

  • Devi aver eseguito l'accesso alla console Google Cloud con lo stesso account che utilizzi per l'istanza di Google Drive che prevedi di connettere. AI Applications utilizza l'ID cliente Google Workspace per connettersi a Google Drive.
  • Verifica che tutti i documenti siano accessibili posizionandoli in un Drive condiviso di proprietà del dominio o assegnando la proprietà a un utente del dominio.

  • Attiva le funzionalità intelligenti di Google Workspace per collegare i dati di Google Drive alle applicazioni AI. Per informazioni, vedi Attivare o disattivare le funzionalità intelligenti di Google Workspace.

  • Se utilizzi i controlli di sicurezza, tieni presente le loro limitazioni relative ai dati in Google Drive, come descritto nella tabella seguente:

    Controllo di sicurezza Tieni presente quanto segue
    Data Residency (DRZ) AI Applications garantisce la residenza dei dati solo in Google Cloud. Per informazioni sulla residenza dei dati e su Google Drive, consulta le linee guida e la documentazione sulla conformità di Google Workspace, ad esempio Scegliere la regione in cui vengono archiviati i dati e Sovranità digitale.
    Chiavi di crittografia gestite dal cliente (CMEK) Le tue chiavi criptano solo i dati all'interno di Google Cloud. I controlli di Cloud Key Management Service non si applicano ai dati archiviati in Google Drive.
    Access Transparency I log di Access Transparency registrano le azioni intraprese dal personale Google sul progetto Google Cloud . Dovrai anche esaminare i log di Access Transparency creati da Google Workspace. Per ulteriori informazioni, consulta Eventi dei log di Access Transparency nella documentazione del Centro assistenza amministratore Google Workspace.

Crea un datastore Google Drive

Console

Per utilizzare la console per rendere ricercabili i dati di Google Drive, segui questi passaggi:

  1. Nella Google Cloud console, vai alla pagina AI Applications.

    Applicazioni di AI

  2. Nel menu di navigazione, fai clic su Datastore.

  3. Fai clic su Crea datastore.

  4. Nella pagina Seleziona un'origine dati, scegli Google Drive.

  5. Specifica l'origine Drive per il tuo datastore

    • Tutto: per aggiungere l'intero drive al datastore.
    • Drive condivisi specifici: aggiungi l'ID cartella del Drive condiviso.
    • Cartelle condivise specifiche: aggiungi l'ID delle cartelle condivise.

    Per trovare l'ID della cartella del Drive condiviso o di una cartella specifica, vai al Drive condiviso o alla cartella e copia l'ID dall'URL. L'URL segue questo formato: https://drive.google.com/corp/drive/folders/ID.

    Ad esempio, https://drive.google.com/corp/drive/folders/123456789012345678901.

  6. Fai clic su Continua.

  7. Scegli una regione per il datastore.

  8. Inserisci un nome per il tuo datastore.

  9. (Facoltativo) Per escludere l'utilizzo dei dati in questo datastore per i contenuti di AI generativa quando esegui query sui dati utilizzando l'app, fai clic su Opzioni di AI generativa e seleziona Escludi dalle funzionalità di AI generativa.

  10. Fai clic su Crea.

Messaggi di errore

La tabella seguente descrive i messaggi di errore che potresti riscontrare quando utilizzi questa origine dati Google e include i codici di errore HTTP e i passaggi consigliati per la risoluzione dei problemi.

Codice di errore Messaggio di errore Descrizione Risoluzione dei problemi
403 (Autorizzazione negata) La ricerca utilizzando le credenziali del service account non è supportata per i datastore Google Workspace. Il motore in cui viene eseguita la ricerca dispone di datastore Google Workspace e le credenziali trasmesse sono di un account di servizio. La ricerca utilizzando le credenziali dell'account di servizio nei datastore di Google Workspace non è supportata. Chiama la ricerca utilizzando le credenziali utente o rimuovi i datastore di Google Workspace dal motore.
403 (Autorizzazione negata) Gli account consumer non sono supportati per i datastore Google Workspace. La ricerca viene chiamata utilizzando una credenziale di account consumer (@gmail.com), che non è supportata per i datastore Google Workspace. Rimuovi i datastore di Google Workspace dal motore o utilizza un Account Google gestito.
403 (Autorizzazione negata) ID cliente non corrispondente per il datastore La ricerca è consentita solo agli utenti che appartengono alla stessa organizzazione dei datastore di Google Workspace. Rimuovi i datastore di Google Workspace dal motore o contatta l'assistenza se l'utente e i datastore di Google Workspace devono trovarsi in organizzazioni diverse.
400 (Argomento non valido) Il motore non può contenere datastore Google Drive predefiniti e condivisi. Non puoi connettere un datastore con tutti i tuoi drive (impostazione predefinita) e un datastore con Drive condivisi specifici alla stessa app. Per connettere una nuova origine dati Google Drive alla tua app, prima scollega il datastore non necessario, poi aggiungi il nuovo datastore che vuoi utilizzare.

Risoluzione dei problemi

Se la ricerca non restituisce il file che stai cercando, potrebbe essere a causa di questi limiti dell'indice di ricerca:

  • Per rendere il file ricercabile, è possibile estrarre solo 1 MB di dati di testo e formattazione.

  • Per la maggior parte dei tipi di file, le dimensioni non possono superare i 10 MB. Di seguito sono riportate le eccezioni:

    • I tipi di file XLSX non possono superare i 20 MB.
    • I file PDF non possono superare i 30 MB.
    • I file di testo non possono superare i 100 MB.
  • Il riconoscimento ottico dei caratteri nei file PDF è limitato a 80 pagine. I PDF di dimensioni superiori a 50 MB o 80 pagine non vengono indicizzati e le parole chiave che superano il limite di 1 MB dell'indice non sono ricercabili.

Passaggi successivi

Collegati a Gmail

Per creare un datastore che si connette a Gmail nella console Google Cloud , segui questi passaggi. Dopo aver collegato il datastore, puoi allegarlo all'app di ricerca e cercare nei tuoi dati di Gmail.

Prima di iniziare

  • Devi aver eseguito l'accesso alla console Google Cloud con lo stesso account che utilizzi per l'istanza di Google Workspace che prevedi di connettere. Vertex AI Search utilizza l'ID cliente Google Workspace per connettersi a Gmail.

Limitazioni

  • Se utilizzi controlli di sicurezza, tieni presente le loro limitazioni relative ai dati in Gmail, come descritto nella tabella seguente:

    Controllo di sicurezza Tieni presente quanto segue
    Data Residency (DRZ) AI Applications garantisce la residenza dei dati solo in Google Cloud. Per informazioni sulla residenza dei dati e su Gmail, consulta le linee guida e la documentazione sulla conformità di Google Workspace, ad esempio Scegliere la regione in cui vengono archiviati i dati e Sovranità digitale.
    Chiavi di crittografia gestite dal cliente (CMEK) Le tue chiavi criptano solo i dati all'interno di Google Cloud. I controlli di Cloud Key Management Service non si applicano ai dati archiviati in Gmail.
    Access Transparency I log di Access Transparency registrano le azioni intraprese dal personale Google sul progetto Google Cloud . Dovrai anche esaminare i log di Access Transparency creati da Google Workspace. Per ulteriori informazioni, consulta Eventi dei log di Access Transparency nella documentazione del Centro assistenza amministratore Google Workspace.

Crea un datastore Gmail

Console

Per utilizzare la console per rendere ricercabili i dati di Gmail, segui questi passaggi:

  1. Nella Google Cloud console, vai alla pagina AI Applications.

    Applicazioni di AI

  2. Nel menu di navigazione, fai clic su Datastore.

  3. Fai clic su Crea datastore.

  4. Nella pagina Seleziona un'origine dati, seleziona Google Gmail.

  5. Scegli una regione per il datastore.

  6. Inserisci un nome per il tuo datastore.

  7. Fai clic su Crea.

  8. Segui i passaggi descritti in Creare un'app di ricerca e collega il datastore creato a un'app Vertex AI Search.

Messaggi di errore

La tabella seguente descrive i messaggi di errore che potresti riscontrare quando utilizzi questa origine dati Google e include i codici di errore HTTP e i passaggi consigliati per la risoluzione dei problemi.

Codice di errore Messaggio di errore Descrizione Risoluzione dei problemi
403 (Autorizzazione negata) La ricerca utilizzando le credenziali del service account non è supportata per i datastore Google Workspace. Il motore in cui viene eseguita la ricerca dispone di datastore Google Workspace e le credenziali trasmesse sono di un account di servizio. La ricerca utilizzando le credenziali dell'account di servizio nei datastore di Google Workspace non è supportata. Chiama la ricerca utilizzando le credenziali utente o rimuovi i datastore di Google Workspace dal motore.
403 (Autorizzazione negata) Gli account consumer non sono supportati per i datastore Google Workspace. La ricerca viene chiamata utilizzando una credenziale di account consumer (@gmail.com), che non è supportata per i datastore Google Workspace. Rimuovi i datastore di Google Workspace dal motore o utilizza un Account Google gestito.
403 (Autorizzazione negata) ID cliente non corrispondente per il datastore La ricerca è consentita solo agli utenti che appartengono alla stessa organizzazione dei datastore di Google Workspace. Rimuovi i datastore di Google Workspace dal motore o contatta l'assistenza se l'utente e i datastore di Google Workspace devono trovarsi in organizzazioni diverse.
400 (Argomento non valido) Il motore non può contenere datastore Google Drive predefiniti e condivisi. Non puoi connettere un datastore con tutti i tuoi drive (impostazione predefinita) e un datastore con Drive condivisi specifici alla stessa app. Per connettere una nuova origine dati Google Drive alla tua app, prima scollega il datastore non necessario, poi aggiungi il nuovo datastore che vuoi utilizzare.

Passaggi successivi

Connettersi a Google Sites

Per cercare dati da Google Sites, segui questi passaggi per creare un connettore utilizzando la console Google Cloud .

Prima di iniziare:

  • Devi aver eseguito l'accesso alla console Google Cloud con lo stesso account che utilizzi per l'istanza di Google Workspace che prevedi di connettere. Vertex AI Search utilizza l'ID cliente Google Workspace per connettersi a Google Sites.

  • Per applicare controllo dell'accesso all'origine dati e proteggere i dati in AI Applications, assicurati di aver configurato il tuo provider di identità.

  • Se utilizzi controlli di sicurezza, tieni presente le loro limitazioni relative ai dati in Google Sites, come descritto nella tabella seguente:

    Controllo di sicurezza Tieni presente quanto segue
    Data Residency (DRZ) AI Applications garantisce la residenza dei dati solo in Google Cloud. Per informazioni sulla residenza dei dati e su Google Sites, consulta le linee guida e la documentazione sulla conformità di Google Workspace, ad esempio Scegliere la regione in cui vengono archiviati i dati e Sovranità digitale.
    Chiavi di crittografia gestite dal cliente (CMEK) Le tue chiavi criptano solo i dati all'interno di Google Cloud. I controlli di Cloud Key Management Service non si applicano ai dati archiviati in Google Sites.
    Access Transparency I log di Access Transparency registrano le azioni intraprese dal personale Google sul progetto Google Cloud . Dovrai anche esaminare i log di Access Transparency creati da Google Workspace. Per ulteriori informazioni, consulta Eventi dei log di Access Transparency nella documentazione del Centro assistenza amministratore Google Workspace.

Console

Per utilizzare la console per rendere ricercabili i dati di Google Sites, segui questi passaggi:

  1. Nella Google Cloud console, vai alla pagina AI Applications.

    Applicazioni di AI

  2. Vai alla pagina Datastore.

  3. Fai clic su Nuovo datastore.

  4. Nella pagina Origine, seleziona Google Sites.

  5. Scegli una regione per il datastore.

  6. Inserisci un nome per il tuo datastore.

  7. Fai clic su Crea.

Passaggi successivi

  • Per collegare il datastore a un'app, crea un'app e seleziona il datastore seguendo i passaggi descritti in Creare un'app di ricerca.

  • Per visualizzare l'anteprima dell'aspetto dei risultati di ricerca dopo la configurazione dell'app e del datastore, consulta Ottenere i risultati di ricerca.

Collegati a Google Calendar

Per cercare dati da Google Calendar, segui questi passaggi per creare un connettore utilizzando la console Google Cloud .

Prima di iniziare

  • Devi aver eseguito l'accesso alla console Google Cloud con lo stesso account che utilizzi per l'istanza di Google Workspace che prevedi di connettere. Vertex AI Search utilizza l'ID cliente Google Workspace per connettersi a Google Calendar.
  • Se utilizzi controlli di sicurezza, tieni presente le loro limitazioni relative ai dati in Google Calendar, come descritto nella tabella seguente:

    Controllo di sicurezza Tieni presente quanto segue
    Data Residency (DRZ) AI Applications garantisce la residenza dei dati solo in Google Cloud. Per informazioni sulla residenza dei dati e su Google Calendar, consulta le linee guida e la documentazione sulla conformità di Google Workspace, ad esempio Scegliere la regione in cui vengono archiviati i dati e Sovranità digitale.
    Chiavi di crittografia gestite dal cliente (CMEK) Le tue chiavi criptano solo i dati all'interno di Google Cloud. I controlli di Cloud Key Management Service non si applicano ai dati archiviati in Google Calendar.
    Access Transparency I log di Access Transparency registrano le azioni intraprese dal personale Google sul progetto Google Cloud . Dovrai anche esaminare i log di Access Transparency creati da Google Workspace. Per ulteriori informazioni, consulta Eventi dei log di Access Transparency nella documentazione del Centro assistenza amministratore Google Workspace.

Crea un datastore Google Calendar

Console

Per utilizzare la console per rendere ricercabili i dati di Google Calendar, segui questi passaggi:

  1. Nella Google Cloud console, vai alla pagina AI Applications.

    Applicazioni di AI

  2. Nel menu di navigazione, fai clic su Datastore.

  3. Fai clic su Crea datastore.

  4. Nella pagina Seleziona un'origine dati, scegli Google Calendar.

  5. Scegli una regione per il datastore.

  6. Inserisci un nome per il tuo datastore.

  7. Fai clic su Crea.

Messaggi di errore

La tabella seguente descrive i messaggi di errore che potresti riscontrare quando utilizzi questa origine dati Google e include i codici di errore HTTP e i passaggi consigliati per la risoluzione dei problemi.

Codice di errore Messaggio di errore Descrizione Risoluzione dei problemi
403 (Autorizzazione negata) La ricerca utilizzando le credenziali del service account non è supportata per i datastore Google Workspace. Il motore in cui viene eseguita la ricerca dispone di datastore Google Workspace e le credenziali trasmesse sono di un account di servizio. La ricerca utilizzando le credenziali dell'account di servizio nei datastore di Google Workspace non è supportata. Chiama la ricerca utilizzando le credenziali utente o rimuovi i datastore di Google Workspace dal motore.
403 (Autorizzazione negata) Gli account consumer non sono supportati per i datastore Google Workspace. La ricerca viene chiamata utilizzando una credenziale di account consumer (@gmail.com), che non è supportata per i datastore Google Workspace. Rimuovi i datastore di Google Workspace dal motore o utilizza un Account Google gestito.
403 (Autorizzazione negata) ID cliente non corrispondente per il datastore La ricerca è consentita solo agli utenti che appartengono alla stessa organizzazione dei datastore di Google Workspace. Rimuovi i datastore di Google Workspace dal motore o contatta l'assistenza se l'utente e i datastore di Google Workspace devono trovarsi in organizzazioni diverse.
400 (Argomento non valido) Il motore non può contenere datastore Google Drive predefiniti e condivisi. Non puoi connettere un datastore con tutti i tuoi drive (impostazione predefinita) e un datastore con Drive condivisi specifici alla stessa app. Per connettere una nuova origine dati Google Drive alla tua app, prima scollega il datastore non necessario, poi aggiungi il nuovo datastore che vuoi utilizzare.

Passaggi successivi

Connettersi a Google Gruppi

Per cercare dati da Google Gruppi, segui questi passaggi per creare un connettore utilizzando la console Google Cloud .

Prima di iniziare:

  • Devi aver eseguito l'accesso alla console Google Cloud con lo stesso account che utilizzi per l'istanza di Google Workspace che prevedi di connettere. Vertex AI Search utilizza l'ID cliente Google Workspace per connettersi a Google Gruppi.

  • Per applicare controllo dell'accesso all'origine dati e proteggere i dati in AI Applications, assicurati di aver configurato il tuo provider di identità.

  • Se utilizzi controlli di sicurezza, tieni presente le loro limitazioni relative ai dati in Google Gruppi, come descritto nella tabella seguente:

    Controllo di sicurezza Tieni presente quanto segue
    Data Residency (DRZ) AI Applications garantisce la residenza dei dati solo in Google Cloud. Per informazioni sulla residenza dei dati e su Google Gruppi, consulta le linee guida e la documentazione sulla conformità di Google Workspace, ad esempio Scegliere la regione in cui vengono archiviati i dati e Sovranità digitale.
    Chiavi di crittografia gestite dal cliente (CMEK) Le tue chiavi criptano solo i dati all'interno di Google Cloud. I controlli di Cloud Key Management Service non si applicano ai dati archiviati in Google Gruppi.
    Access Transparency I log di Access Transparency registrano le azioni intraprese dal personale Google sul progetto Google Cloud . Dovrai anche esaminare i log di Access Transparency creati da Google Workspace. Per ulteriori informazioni, consulta Eventi dei log di Access Transparency nella documentazione del Centro assistenza amministratore Google Workspace.

Console

Per utilizzare la console per rendere ricercabili i dati di Gruppi Google, segui questi passaggi:

  1. Nella Google Cloud console, vai alla pagina AI Applications.

    Applicazioni di AI

  2. Vai alla pagina Datastore.

  3. Fai clic su Nuovo datastore.

  4. Nella pagina Origine, seleziona Google Gruppi.

  5. Scegli una regione per il datastore.

  6. Inserisci un nome per il tuo datastore.

  7. Fai clic su Crea. A seconda delle dimensioni dei dati, l'importazione può richiedere diversi minuti o diverse ore. Attendi almeno un'ora prima di utilizzare il tuo datastore per la ricerca.

Passaggi successivi

  • Per collegare il datastore a un'app, crea un'app e seleziona il datastore seguendo i passaggi descritti in Creare un'app di ricerca.

  • Per visualizzare l'anteprima dell'aspetto dei risultati di ricerca dopo la configurazione dell'app e del datastore, consulta Ottenere i risultati di ricerca.

Importa da Cloud SQL

Per importare dati da Cloud SQL, segui questi passaggi per configurare l'accesso a Cloud SQL, creare un datastore e importare i dati.

Configura l'accesso al bucket di staging per le istanze Cloud SQL

Quando vengono importati dati da Cloud SQL, questi vengono prima preparati in un bucket Cloud Storage. Segui questi passaggi per concedere a un'istanza Cloud SQL l'accesso ai bucket Cloud Storage.

  1. Nella Google Cloud console, vai alla pagina SQL.

    SQL

  2. Fai clic sull'istanza Cloud SQL da cui prevedi di importare.

  3. Copia l'identificatore del account di servizio dell'istanza, che ha l'aspetto di un indirizzo email, ad esempio p9876-abcd33f@gcp-sa-cloud-sql.iam.gserviceaccount.com.

  4. Vai alla pagina IAM e amministrazione.

    IAM e amministrazione

  5. Fai clic su Concedi accesso.

  6. In Nuove entità, inserisci l'identificatore dell'account di servizio dell'istanza e seleziona il ruolo Cloud Storage > Amministratore Storage.

  7. Fai clic su Salva.

Successivo:

Configurare l'accesso a Cloud SQL da un altro progetto

Per concedere a Vertex AI Search l'accesso ai dati Cloud SQL che si trovano in un progetto diverso, segui questi passaggi:

  1. Sostituisci la seguente variabile PROJECT_NUMBER con il numero del tuo progetto Vertex AI Search, quindi copia i contenuti del blocco di codice. Questo è l'identificatore del account di servizio di Vertex AI Search:

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com`
    
  2. Vai alla pagina IAM e amministrazione.

    IAM e amministrazione

  3. Passa al tuo progetto Cloud SQL nella pagina IAM e amministrazione e fai clic su Concedi l'accesso.

  4. Per Nuove entità, inserisci l'identificatore dell'account di servizio e seleziona il ruolo Cloud SQL > Visualizzatore Cloud SQL.

  5. Fai clic su Salva.

Poi, vai a Importa dati da Cloud SQL.

Importare dati da Cloud SQL

Console

Per utilizzare la console per importare i dati da Cloud SQL, segui questi passaggi:

  1. Nella Google Cloud console, vai alla pagina AI Applications.

    Applicazioni di AI

  2. Vai alla pagina Datastore.

  3. Fai clic su Nuovo datastore.

  4. Nella pagina Origine, seleziona Cloud SQL.

  5. Specifica l'ID progetto, l'ID istanza, l'ID database e l'ID tabella dei dati che prevedi di importare.

  6. Fai clic su Sfoglia e scegli una posizione Cloud Storage intermedia in cui esportare i dati, poi fai clic su Seleziona. In alternativa, inserisci la posizione direttamente nel campo gs://.

  7. Seleziona se attivare l'esportazione serverless. L'esportazione serverless comporta costi aggiuntivi. Per informazioni sull'esportazione serverless, consulta Ridurre al minimo l'impatto sulle prestazioni delle esportazioni nella documentazione di Cloud SQL.

  8. Fai clic su Continua.

  9. Scegli una regione per il datastore.

  10. Inserisci un nome per il tuo datastore.

  11. Fai clic su Crea.

  12. Per controllare lo stato dell'importazione, vai alla pagina Datastore e fai clic sul nome del datastore per visualizzarne i dettagli nella pagina Data (Dati). Quando la colonna Stato nella scheda Attività passa da In corso a Importazione completata, l'importazione è terminata.

    A seconda delle dimensioni dei dati, l'importazione può richiedere diversi minuti o diverse ore.

REST

Per utilizzare la riga di comando per creare un datastore e importare dati da Cloud SQL:

  1. 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/v1alpha/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"],
    }'
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto.
    • DATA_STORE_ID: l'ID del datastore. L'ID può contenere solo lettere minuscole, cifre, trattini bassi e trattini.
    • DISPLAY_NAME: il nome visualizzato del datastore. Questo messaggio potrebbe essere visualizzato nella console Google Cloud .
  2. Importa i dati da Cloud SQL.

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents:import" \
      -d '{
        "cloudSqlSource": {
          "projectId": "SQL_PROJECT_ID",
          "instanceId": "INSTANCE_ID",
          "databaseId": "DATABASE_ID",
          "tableId": "TABLE_ID",
          "gcsStagingDir": "STAGING_DIRECTORY"
        },
        "reconciliationMode": "RECONCILIATION_MODE",
        "autoGenerateIds": "AUTO_GENERATE_IDS",
        "idField": "ID_FIELD",
      }'
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo progetto Vertex AI Search.
    • DATA_STORE_ID: l'ID del datastore. L'ID può contenere solo lettere minuscole, cifre, trattini bassi e trattini.
    • SQL_PROJECT_ID: l'ID del tuo progetto Cloud SQL.
    • INSTANCE_ID: l'ID dell'istanza Cloud SQL.
    • DATABASE_ID: l'ID del tuo database Cloud SQL.
    • TABLE_ID: l'ID della tabella Cloud SQL.
    • STAGING_DIRECTORY: facoltativo. Una directory Cloud Storage, ad esempio gs://<your-gcs-bucket>/directory/import_errors.
    • RECONCILIATION_MODE: facoltativo. I valori sono FULL e INCREMENTAL. Il valore predefinito è INCREMENTAL. Se specifichi INCREMENTAL , viene eseguito un aggiornamento incrementale dei dati da Cloud SQL al tuo datastore. Esegue un'operazione di upsert, che aggiunge nuovi documenti e sostituisce quelli esistenti con documenti aggiornati con lo stesso ID. La specifica di FULL causa una ribasatura completa dei documenti nel datastore. In altre parole, i documenti nuovi e aggiornati vengono aggiunti all'archivio dati e i documenti che non si trovano in Cloud SQL vengono rimossi dall'archivio datastore. La modalità FULL è utile se vuoi eliminare automaticamente i documenti che non ti servono più.

Python

Per saperne di più, consulta la documentazione di riferimento dell'API AI Applications per Python.

Per autenticarti in AI Applications, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

Crea un datastore


from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"


def create_data_store_sample(
    project_id: str,
    location: str,
    data_store_id: str,
) -> str:
    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.DataStoreServiceClient(client_options=client_options)

    # The full resource name of the collection
    # e.g. projects/{project}/locations/{location}/collections/default_collection
    parent = client.collection_path(
        project=project_id,
        location=location,
        collection="default_collection",
    )

    data_store = discoveryengine.DataStore(
        display_name="My Data Store",
        # Options: GENERIC, MEDIA, HEALTHCARE_FHIR
        industry_vertical=discoveryengine.IndustryVertical.GENERIC,
        # Options: SOLUTION_TYPE_RECOMMENDATION, SOLUTION_TYPE_SEARCH, SOLUTION_TYPE_CHAT, SOLUTION_TYPE_GENERATIVE_CHAT
        solution_types=[discoveryengine.SolutionType.SOLUTION_TYPE_SEARCH],
        # TODO(developer): Update content_config based on data store type.
        # Options: NO_CONTENT, CONTENT_REQUIRED, PUBLIC_WEBSITE
        content_config=discoveryengine.DataStore.ContentConfig.CONTENT_REQUIRED,
    )

    request = discoveryengine.CreateDataStoreRequest(
        parent=parent,
        data_store_id=data_store_id,
        data_store=data_store,
        # Optional: For Advanced Site Search Only
        # create_advanced_site_search=True,
    )

    # Make the request
    operation = client.create_data_store(request=request)

    print(f"Waiting for operation to complete: {operation.operation.name}")
    response = operation.result()

    # After the operation is complete,
    # get information from operation metadata
    metadata = discoveryengine.CreateDataStoreMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name

Importa documenti

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"
# sql_project_id = "YOUR_SQL_PROJECT_ID"
# sql_instance_id = "YOUR_SQL_INSTANCE_ID"
# sql_database_id = "YOUR_SQL_DATABASE_ID"
# sql_table_id = "YOUR_SQL_TABLE_ID"

#  For more information, refer to:
# https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
client_options = (
    ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
    if location != "global"
    else None
)

# Create a client
client = discoveryengine.DocumentServiceClient(client_options=client_options)

# The full resource name of the search engine branch.
# e.g. projects/{project}/locations/{location}/dataStores/{data_store_id}/branches/{branch}
parent = client.branch_path(
    project=project_id,
    location=location,
    data_store=data_store_id,
    branch="default_branch",
)

request = discoveryengine.ImportDocumentsRequest(
    parent=parent,
    cloud_sql_source=discoveryengine.CloudSqlSource(
        project_id=sql_project_id,
        instance_id=sql_instance_id,
        database_id=sql_database_id,
        table_id=sql_table_id,
    ),
    # Options: `FULL`, `INCREMENTAL`
    reconciliation_mode=discoveryengine.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL,
)

# Make the request
operation = client.import_documents(request=request)

print(f"Waiting for operation to complete: {operation.operation.name}")
response = operation.result()

# After the operation is complete,
# get information from operation metadata
metadata = discoveryengine.ImportDocumentsMetadata(operation.metadata)

# Handle the response
print(response)
print(metadata)

Passaggi successivi

  • Per collegare il datastore a un'app, crea un'app e seleziona il datastore seguendo i passaggi descritti in Creare un'app di ricerca.

  • Per visualizzare l'anteprima dell'aspetto dei risultati di ricerca dopo la configurazione dell'app e del datastore, consulta Ottenere i risultati di ricerca.

Importare da Spanner

Per importare i dati da Spanner, segui questi passaggi per creare un datastore e importare i dati utilizzando la console Google Cloud o l'API.

Configurare l'accesso a Spanner da un altro progetto

Se i tuoi dati Spanner si trovano nello stesso progetto di Vertex AI Search, vai a Importare i dati da Spanner.

Per concedere a Vertex AI Search l'accesso ai dati Spanner che si trovano in un progetto diverso, segui questi passaggi:

  1. Sostituisci la seguente variabile PROJECT_NUMBER con il numero del tuo progetto Vertex AI Search, quindi copia i contenuti di questo blocco di codice. Questo è l'identificatore del account di servizio di Vertex AI Search:

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
    
  2. Vai alla pagina IAM e amministrazione.

    IAM e amministrazione

  3. Passa al progetto Spanner nella pagina IAM e amministrazione e fai clic su Concedi l'accesso.

  4. In Nuove entità, inserisci l'identificatore dell'account di servizio e seleziona una delle seguenti opzioni:

    • Se non utilizzerai Data Boost durante l'importazione, seleziona il ruolo Cloud Spanner > Cloud Spanner Database Reader.
    • Se prevedi di utilizzare Data Boost durante l'importazione, seleziona il ruolo Cloud Spanner > Amministratore database Cloud Spanner o un ruolo personalizzato con le autorizzazioni di Lettore database Cloud Spanner e spanner.databases.useDataBoost. Per informazioni su Data Boost, consulta la Panoramica di Data Boost nella documentazione di Spanner.
  5. Fai clic su Salva.

Poi, vai a Importare i dati da Spanner.

Importare dati da Spanner

Console

Per utilizzare la console per importare i dati da Spanner, segui questi passaggi:

  1. Nella Google Cloud console, vai alla pagina AI Applications.

    Applicazioni di AI

  2. Vai alla pagina Datastore.

  3. Fai clic su Nuovo datastore.

  4. Nella pagina Origine, seleziona Cloud Spanner.

  5. Specifica l'ID progetto, l'ID istanza, l'ID database e l'ID tabella dei dati che prevedi di importare.

  6. Seleziona se attivare Data Boost. Per informazioni su Data Boost, consulta la Panoramica di Data Boost nella documentazione di Spanner.

  7. Fai clic su Continua.

  8. Scegli una regione per il datastore.

  9. Inserisci un nome per il tuo datastore.

  10. Fai clic su Crea.

  11. Per controllare lo stato dell'importazione, vai alla pagina Datastore e fai clic sul nome del datastore per visualizzarne i dettagli nella pagina Data (Dati). Quando la colonna Stato nella scheda Attività passa da In corso a Importazione completata, l'importazione è terminata.

    A seconda delle dimensioni dei dati, l'importazione può richiedere diversi minuti o diverse ore.

REST

Per utilizzare la riga di comando per creare un datastore e importare dati da Spanner, segui questi passaggi:

  1. 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/v1alpha/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"],
      "contentConfig": "CONTENT_REQUIRED",
    }'
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo progetto Vertex AI Search.
    • DATA_STORE_ID: l'ID del datastore. L'ID può contenere solo lettere minuscole, cifre, trattini bassi e trattini.
    • DISPLAY_NAME: il nome visualizzato del datastore. Questo messaggio potrebbe essere visualizzato nella console Google Cloud .
  2. Importa i dati da Spanner.

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents:import" \
      -d '{
        "cloudSpannerSource": {
          "projectId": "SPANNER_PROJECT_ID",
          "instanceId": "INSTANCE_ID",
          "databaseId": "DATABASE_ID",
          "tableId": "TABLE_ID",
          "enableDataBoost": "DATA_BOOST_BOOLEAN"
        },
        "reconciliationMode": "RECONCILIATION_MODE",
        "autoGenerateIds": "AUTO_GENERATE_IDS",
        "idField": "ID_FIELD",
      }'
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo progetto Vertex AI Search.
    • DATA_STORE_ID: l'ID del datastore.
    • SPANNER_PROJECT_ID: l'ID del tuo progetto Spanner.
    • INSTANCE_ID: l'ID dell'istanza Spanner.
    • DATABASE_ID: l'ID del tuo database Spanner.
    • TABLE_ID: l'ID della tabella Spanner.
    • DATA_BOOST_BOOLEAN: facoltativo. Se attivare Data Boost. Per informazioni su Data Boost, consulta la panoramica di Data Boost nella documentazione di Spanner.
    • RECONCILIATION_MODE: facoltativo. I valori sono FULL e INCREMENTAL. Il valore predefinito è INCREMENTAL. La specifica di INCREMENTAL causa un aggiornamento incrementale dei dati da Spanner al datastore. Viene eseguita un'operazione di upsert, che aggiunge nuovi documenti e sostituisce quelli esistenti con documenti aggiornati con lo stesso ID. La specifica di FULL comporta una ribasatura completa dei documenti nel datastore. In altre parole, i documenti nuovi e aggiornati vengono aggiunti al datastore, mentre quelli che non sono presenti in Spanner vengono rimossi. La modalità FULL è utile se vuoi eliminare automaticamente i documenti che non ti servono più.
    • AUTO_GENERATE_IDS: facoltativo. Specifica se generare automaticamente gli ID documento. Se impostato su true, gli ID documento vengono generati in base a un hash del payload. Tieni presente che gli ID documento generati potrebbero non rimanere coerenti in più importazioni. Se generi automaticamente ID in più importazioni, Google consiglia vivamente di impostare reconciliationMode su FULL per mantenere ID documento coerenti.

    • ID_FIELD: facoltativo. Specifica quali campi sono gli ID documento.

Python

Per saperne di più, consulta la documentazione di riferimento dell'API AI Applications per Python.

Per autenticarti in AI Applications, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

Crea un datastore


from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"


def create_data_store_sample(
    project_id: str,
    location: str,
    data_store_id: str,
) -> str:
    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.DataStoreServiceClient(client_options=client_options)

    # The full resource name of the collection
    # e.g. projects/{project}/locations/{location}/collections/default_collection
    parent = client.collection_path(
        project=project_id,
        location=location,
        collection="default_collection",
    )

    data_store = discoveryengine.DataStore(
        display_name="My Data Store",
        # Options: GENERIC, MEDIA, HEALTHCARE_FHIR
        industry_vertical=discoveryengine.IndustryVertical.GENERIC,
        # Options: SOLUTION_TYPE_RECOMMENDATION, SOLUTION_TYPE_SEARCH, SOLUTION_TYPE_CHAT, SOLUTION_TYPE_GENERATIVE_CHAT
        solution_types=[discoveryengine.SolutionType.SOLUTION_TYPE_SEARCH],
        # TODO(developer): Update content_config based on data store type.
        # Options: NO_CONTENT, CONTENT_REQUIRED, PUBLIC_WEBSITE
        content_config=discoveryengine.DataStore.ContentConfig.CONTENT_REQUIRED,
    )

    request = discoveryengine.CreateDataStoreRequest(
        parent=parent,
        data_store_id=data_store_id,
        data_store=data_store,
        # Optional: For Advanced Site Search Only
        # create_advanced_site_search=True,
    )

    # Make the request
    operation = client.create_data_store(request=request)

    print(f"Waiting for operation to complete: {operation.operation.name}")
    response = operation.result()

    # After the operation is complete,
    # get information from operation metadata
    metadata = discoveryengine.CreateDataStoreMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name

Importa documenti

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"
# spanner_project_id = "YOUR_SPANNER_PROJECT_ID"
# spanner_instance_id = "YOUR_SPANNER_INSTANCE_ID"
# spanner_database_id = "YOUR_SPANNER_DATABASE_ID"
# spanner_table_id = "YOUR_SPANNER_TABLE_ID"

#  For more information, refer to:
# https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
client_options = (
    ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
    if location != "global"
    else None
)

# Create a client
client = discoveryengine.DocumentServiceClient(client_options=client_options)

# The full resource name of the search engine branch.
# e.g. projects/{project}/locations/{location}/dataStores/{data_store_id}/branches/{branch}
parent = client.branch_path(
    project=project_id,
    location=location,
    data_store=data_store_id,
    branch="default_branch",
)

request = discoveryengine.ImportDocumentsRequest(
    parent=parent,
    spanner_source=discoveryengine.SpannerSource(
        project_id=spanner_project_id,
        instance_id=spanner_instance_id,
        database_id=spanner_database_id,
        table_id=spanner_table_id,
    ),
    # Options: `FULL`, `INCREMENTAL`
    reconciliation_mode=discoveryengine.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL,
)

# Make the request
operation = client.import_documents(request=request)

print(f"Waiting for operation to complete: {operation.operation.name}")
response = operation.result()

# After the operation is complete,
# get information from operation metadata
metadata = discoveryengine.ImportDocumentsMetadata(operation.metadata)

# Handle the response
print(response)
print(metadata)

Passaggi successivi

  • Per collegare il datastore a un'app, crea un'app e seleziona il datastore seguendo i passaggi descritti in Creare un'app di ricerca.

  • Per visualizzare l'anteprima dell'aspetto dei risultati di ricerca dopo la configurazione dell'app e del datastore, consulta Ottenere i risultati di ricerca.

Importa da Firestore

Per importare i dati da Firestore, segui questi passaggi per creare un datastore e importare i dati utilizzando la console Google Cloud o l'API.

Se i tuoi dati Firestore si trovano nello stesso progetto di Vertex AI Search, vai a Importa dati da Firestore.

Se i dati Firestore si trovano in un progetto diverso da quello di Vertex AI Search, vai a Configurare l'accesso a Firestore.

Configurare l'accesso a Firestore da un altro progetto

Per concedere a Vertex AI Search l'accesso ai dati Firestore che si trovano in un progetto diverso, segui questi passaggi:

  1. Sostituisci la seguente variabile PROJECT_NUMBER con il numero del tuo progetto Vertex AI Search, quindi copia i contenuti di questo blocco di codice. Questo è l'identificatore del account di servizio di Vertex AI Search:

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
    
  2. Vai alla pagina IAM e amministrazione.

    IAM e amministrazione

  3. Passa al progetto Firestore nella pagina IAM e amministrazione e fai clic su Concedi l'accesso.

  4. In Nuove entità, inserisci l'identificatore dell'account di servizio dell'istanza e seleziona il ruolo Datastore > Amministratore importazione/esportazione di Cloud Datastore.

  5. Fai clic su Salva.

  6. Torna al progetto Vertex AI Search.

Poi vai a Importare dati da Firestore.

Importa dati da Firestore

Console

Per utilizzare la console per importare i dati da Firestore, segui questi passaggi:

  1. Nella Google Cloud console, vai alla pagina AI Applications.

    Applicazioni di AI

  2. Vai alla pagina Datastore.

  3. Fai clic su Nuovo datastore.

  4. Nella pagina Origine, seleziona Firestore.

  5. Specifica l'ID progetto, l'ID database e l'ID raccolta dei dati che intendi importare.

  6. Fai clic su Continua.

  7. Scegli una regione per il datastore.

  8. Inserisci un nome per il tuo datastore.

  9. Fai clic su Crea.

  10. Per controllare lo stato dell'importazione, vai alla pagina Datastore e fai clic sul nome del datastore per visualizzarne i dettagli nella pagina Data (Dati). Quando la colonna Stato nella scheda Attività passa da In corso a Importazione completata, l'importazione è terminata.

    A seconda delle dimensioni dei dati, l'importazione può richiedere diversi minuti o diverse ore.

REST

Per utilizzare la riga di comando per creare un datastore e importare dati da Firestore, segui questi passaggi:

  1. 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/v1alpha/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"],
    }'
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto.
    • DATA_STORE_ID: l'ID del datastore. L'ID può contenere solo lettere minuscole, cifre, trattini bassi e trattini.
    • DISPLAY_NAME: il nome visualizzato del datastore. Questo messaggio potrebbe essere visualizzato nella console Google Cloud .
  2. Importa i dati da Firestore.

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents:import" \
      -d '{
        "firestoreSource": {
          "projectId": "FIRESTORE_PROJECT_ID",
          "databaseId": "DATABASE_ID",
          "collectionId": "COLLECTION_ID",
        },
        "reconciliationMode": "RECONCILIATION_MODE",
        "autoGenerateIds": "AUTO_GENERATE_IDS",
        "idField": "ID_FIELD",
      }'
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo progetto Vertex AI Search.
    • DATA_STORE_ID: l'ID del datastore. L'ID può contenere solo lettere minuscole, cifre, trattini bassi e trattini.
    • FIRESTORE_PROJECT_ID: l'ID del tuo progetto Firestore.
    • DATABASE_ID: l'ID del database Firestore.
    • COLLECTION_ID: l'ID della raccolta Firestore.
    • RECONCILIATION_MODE: facoltativo. I valori sono FULL e INCREMENTAL. Il valore predefinito è INCREMENTAL. Se specifichi INCREMENTAL , viene eseguito un aggiornamento incrementale dei dati da Firestore al tuo datastore. Esegue un'operazione di upsert, che aggiunge nuovi documenti e sostituisce quelli esistenti con documenti aggiornati con lo stesso ID. La specifica di FULL causa una ribasatura completa dei documenti nel datastore. In altre parole, i documenti nuovi e aggiornati vengono aggiunti al tuo archivio dati e i documenti che non sono in Firestore vengono rimossi dall'datastore. La modalità FULL è utile se vuoi eliminare automaticamente i documenti che non ti servono più.
    • AUTO_GENERATE_IDS: facoltativo. Specifica se generare automaticamente gli ID documento. Se impostato su true, gli ID documento vengono generati in base a un hash del payload. Tieni presente che gli ID documento generati potrebbero non rimanere coerenti in più importazioni. Se generi automaticamente ID in più importazioni, Google consiglia vivamente di impostare reconciliationMode su FULL per mantenere ID documento coerenti.
    • ID_FIELD: facoltativo. Specifica quali campi sono gli ID documento.

Python

Per saperne di più, consulta la documentazione di riferimento dell'API AI Applications per Python.

Per autenticarti in AI Applications, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

Crea un datastore


from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"


def create_data_store_sample(
    project_id: str,
    location: str,
    data_store_id: str,
) -> str:
    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.DataStoreServiceClient(client_options=client_options)

    # The full resource name of the collection
    # e.g. projects/{project}/locations/{location}/collections/default_collection
    parent = client.collection_path(
        project=project_id,
        location=location,
        collection="default_collection",
    )

    data_store = discoveryengine.DataStore(
        display_name="My Data Store",
        # Options: GENERIC, MEDIA, HEALTHCARE_FHIR
        industry_vertical=discoveryengine.IndustryVertical.GENERIC,
        # Options: SOLUTION_TYPE_RECOMMENDATION, SOLUTION_TYPE_SEARCH, SOLUTION_TYPE_CHAT, SOLUTION_TYPE_GENERATIVE_CHAT
        solution_types=[discoveryengine.SolutionType.SOLUTION_TYPE_SEARCH],
        # TODO(developer): Update content_config based on data store type.
        # Options: NO_CONTENT, CONTENT_REQUIRED, PUBLIC_WEBSITE
        content_config=discoveryengine.DataStore.ContentConfig.CONTENT_REQUIRED,
    )

    request = discoveryengine.CreateDataStoreRequest(
        parent=parent,
        data_store_id=data_store_id,
        data_store=data_store,
        # Optional: For Advanced Site Search Only
        # create_advanced_site_search=True,
    )

    # Make the request
    operation = client.create_data_store(request=request)

    print(f"Waiting for operation to complete: {operation.operation.name}")
    response = operation.result()

    # After the operation is complete,
    # get information from operation metadata
    metadata = discoveryengine.CreateDataStoreMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name

Importa documenti

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"
# firestore_project_id = "YOUR_FIRESTORE_PROJECT_ID"
# firestore_database_id = "YOUR_FIRESTORE_DATABASE_ID"
# firestore_collection_id = "YOUR_FIRESTORE_COLLECTION_ID"

#  For more information, refer to:
# https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
client_options = (
    ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
    if location != "global"
    else None
)

# Create a client
client = discoveryengine.DocumentServiceClient(client_options=client_options)

# The full resource name of the search engine branch.
# e.g. projects/{project}/locations/{location}/dataStores/{data_store_id}/branches/{branch}
parent = client.branch_path(
    project=project_id,
    location=location,
    data_store=data_store_id,
    branch="default_branch",
)

request = discoveryengine.ImportDocumentsRequest(
    parent=parent,
    firestore_source=discoveryengine.FirestoreSource(
        project_id=firestore_project_id,
        database_id=firestore_database_id,
        collection_id=firestore_collection_id,
    ),
    # Options: `FULL`, `INCREMENTAL`
    reconciliation_mode=discoveryengine.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL,
)

# Make the request
operation = client.import_documents(request=request)

print(f"Waiting for operation to complete: {operation.operation.name}")
response = operation.result()

# After the operation is complete,
# get information from operation metadata
metadata = discoveryengine.ImportDocumentsMetadata(operation.metadata)

# Handle the response
print(response)
print(metadata)

Passaggi successivi

  • Per collegare il datastore a un'app, crea un'app e seleziona il datastore seguendo i passaggi descritti in Creare un'app di ricerca.

  • Per visualizzare l'anteprima dell'aspetto dei risultati di ricerca dopo la configurazione dell'app e del datastore, consulta Ottenere i risultati di ricerca.

Importa da Bigtable

Per importare i dati da Bigtable, segui questi passaggi per creare un datastore e importare i dati utilizzando l'API.

Configurare l'accesso a Bigtable

Per concedere a Vertex AI Search l'accesso ai dati Bigtable che si trovano in un progetto diverso, segui questi passaggi:

  1. Sostituisci la seguente variabile PROJECT_NUMBER con il numero del tuo progetto Vertex AI Search, quindi copia i contenuti di questo blocco di codice. Questo è l'identificatore del account di servizio di Vertex AI Search:

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com`
    
  2. Vai alla pagina IAM e amministrazione.

    IAM e amministrazione

  3. Passa al progetto Bigtable nella pagina IAM e amministrazione e fai clic su Concedi l'accesso.

  4. In Nuove entità, inserisci l'identificatore dell'account di servizio dell'istanza e seleziona il ruolo Bigtable > Bigtable Reader.

  5. Fai clic su Salva.

  6. Torna al progetto Vertex AI Search.

Poi, vai a Importare i dati da Bigtable.

Importa dati da Bigtable

REST

Per utilizzare la riga di comando per creare un datastore e importare i dati da Bigtable, segui questi passaggi:

  1. 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/v1alpha/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"],
    }'
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto.
    • DATA_STORE_ID: l'ID del datastore. L'ID può contenere solo lettere minuscole, cifre, trattini bassi e trattini.
    • DISPLAY_NAME: il nome visualizzato del datastore. Questo messaggio potrebbe essere visualizzato nella console Google Cloud .
  2. Importa i dati da Bigtable.

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents:import" \
      -d '{
        "bigtableSource ": {
          "projectId": "BIGTABLE_PROJECT_ID",
          "instanceId": "INSTANCE_ID",
          "tableId": "TABLE_ID",
          "bigtableOptions": {
            "keyFieldName": "KEY_FIELD_NAME",
            "families": {
              "key": "KEY",
              "value": {
                "fieldName": "FIELD_NAME",
                "encoding": "ENCODING",
                "type": "TYPE",
                "columns": [
                  {
                    "qualifier": "QUALIFIER",
                    "fieldName": "FIELD_NAME",
                    "encoding": "COLUMN_ENCODING",
                    "type": "COLUMN_VALUES_TYPE"
                  }
                ]
              }
             }
             ...
          }
        },
        "reconciliationMode": "RECONCILIATION_MODE",
        "autoGenerateIds": "AUTO_GENERATE_IDS",
        "idField": "ID_FIELD",
      }'
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo progetto Vertex AI Search.
    • DATA_STORE_ID: l'ID del datastore. L'ID può contenere solo lettere minuscole, cifre, trattini bassi e trattini.
    • BIGTABLE_PROJECT_ID: l'ID del tuo progetto Bigtable.
    • INSTANCE_ID: l'ID dell'istanza Bigtable.
    • TABLE_ID: l'ID della tabella Bigtable.
    • KEY_FIELD_NAME: facoltativo, ma consigliato. Il nome del campo da utilizzare per il valore della chiave di riga dopo l'importazione in Vertex AI Search.
    • KEY: obbligatorio. Un valore stringa per la chiave della famiglia di colonne.
    • ENCODING: facoltativo. La modalità di codifica dei valori quando il tipo non è STRING.Questo può essere sostituito per una colonna specifica elencando la colonna in columns e specificando una codifica.
    • COLUMN_TYPE: facoltativo. Il tipo di valori nella famiglia di colonne.
    • QUALIFIER: obbligatorio. Qualificatore della colonna.
    • FIELD_NAME: facoltativo, ma consigliato. Il nome del campo da utilizzare per questa colonna dopo l'importazione in Vertex AI Search.
    • COLUMN_ENCODING: facoltativo. La modalità di codifica dei valori per una colonna specifica quando il tipo non è STRING.
    • RECONCILIATION_MODE: facoltativo. I valori sono FULL e INCREMENTAL. Il valore predefinito è INCREMENTAL. Se specifichi INCREMENTAL viene eseguito un aggiornamento incrementale dei dati da Bigtable al datastore. Esegue un'operazione di upsert, che aggiunge nuovi documenti e sostituisce quelli esistenti con documenti aggiornati con lo stesso ID. La specifica di FULL causa una ribasatura completa dei documenti nel datastore. In altre parole, i documenti nuovi e aggiornati vengono aggiunti al datastore e i documenti che non si trovano in Bigtable vengono rimossi dal datastore. La modalità FULL è utile se vuoi eliminare automaticamente i documenti che non ti servono più.
    • AUTO_GENERATE_IDS: facoltativo. Specifica se generare automaticamente gli ID documento. Se impostato su true, gli ID documento vengono generati in base a un hash del payload. Tieni presente che gli ID documento generati potrebbero non rimanere coerenti in più importazioni. Se generi automaticamente ID in più importazioni, Google consiglia vivamente di impostare reconciliationMode su FULL per mantenere ID documento coerenti.

      Specifica autoGenerateIds solo quando bigquerySource.dataSchema è impostato su custom. In caso contrario, viene restituito un errore INVALID_ARGUMENT. Se non specifichi autoGenerateIds o lo imposti su false, devi specificare idField. In caso contrario, l'importazione dei documenti non andrà a buon fine.

    • ID_FIELD: facoltativo. Specifica quali campi sono gli ID documento.

Python

Per saperne di più, consulta la documentazione di riferimento dell'API AI Applications per Python.

Per autenticarti in AI Applications, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

Crea un datastore


from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"


def create_data_store_sample(
    project_id: str,
    location: str,
    data_store_id: str,
) -> str:
    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.DataStoreServiceClient(client_options=client_options)

    # The full resource name of the collection
    # e.g. projects/{project}/locations/{location}/collections/default_collection
    parent = client.collection_path(
        project=project_id,
        location=location,
        collection="default_collection",
    )

    data_store = discoveryengine.DataStore(
        display_name="My Data Store",
        # Options: GENERIC, MEDIA, HEALTHCARE_FHIR
        industry_vertical=discoveryengine.IndustryVertical.GENERIC,
        # Options: SOLUTION_TYPE_RECOMMENDATION, SOLUTION_TYPE_SEARCH, SOLUTION_TYPE_CHAT, SOLUTION_TYPE_GENERATIVE_CHAT
        solution_types=[discoveryengine.SolutionType.SOLUTION_TYPE_SEARCH],
        # TODO(developer): Update content_config based on data store type.
        # Options: NO_CONTENT, CONTENT_REQUIRED, PUBLIC_WEBSITE
        content_config=discoveryengine.DataStore.ContentConfig.CONTENT_REQUIRED,
    )

    request = discoveryengine.CreateDataStoreRequest(
        parent=parent,
        data_store_id=data_store_id,
        data_store=data_store,
        # Optional: For Advanced Site Search Only
        # create_advanced_site_search=True,
    )

    # Make the request
    operation = client.create_data_store(request=request)

    print(f"Waiting for operation to complete: {operation.operation.name}")
    response = operation.result()

    # After the operation is complete,
    # get information from operation metadata
    metadata = discoveryengine.CreateDataStoreMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name

Importa documenti

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"
# bigtable_project_id = "YOUR_BIGTABLE_PROJECT_ID"
# bigtable_instance_id = "YOUR_BIGTABLE_INSTANCE_ID"
# bigtable_table_id = "YOUR_BIGTABLE_TABLE_ID"

#  For more information, refer to:
# https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
client_options = (
    ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
    if location != "global"
    else None
)

# Create a client
client = discoveryengine.DocumentServiceClient(client_options=client_options)

# The full resource name of the search engine branch.
# e.g. projects/{project}/locations/{location}/dataStores/{data_store_id}/branches/{branch}
parent = client.branch_path(
    project=project_id,
    location=location,
    data_store=data_store_id,
    branch="default_branch",
)

bigtable_options = discoveryengine.BigtableOptions(
    families={
        "family_name_1": discoveryengine.BigtableOptions.BigtableColumnFamily(
            type_=discoveryengine.BigtableOptions.Type.STRING,
            encoding=discoveryengine.BigtableOptions.Encoding.TEXT,
            columns=[
                discoveryengine.BigtableOptions.BigtableColumn(
                    qualifier="qualifier_1".encode("utf-8"),
                    field_name="field_name_1",
                ),
            ],
        ),
        "family_name_2": discoveryengine.BigtableOptions.BigtableColumnFamily(
            type_=discoveryengine.BigtableOptions.Type.INTEGER,
            encoding=discoveryengine.BigtableOptions.Encoding.BINARY,
        ),
    }
)

request = discoveryengine.ImportDocumentsRequest(
    parent=parent,
    bigtable_source=discoveryengine.BigtableSource(
        project_id=bigtable_project_id,
        instance_id=bigtable_instance_id,
        table_id=bigtable_table_id,
        bigtable_options=bigtable_options,
    ),
    # Options: `FULL`, `INCREMENTAL`
    reconciliation_mode=discoveryengine.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL,
)

# Make the request
operation = client.import_documents(request=request)

print(f"Waiting for operation to complete: {operation.operation.name}")
response = operation.result()

# After the operation is complete,
# get information from operation metadata
metadata = discoveryengine.ImportDocumentsMetadata(operation.metadata)

# Handle the response
print(response)
print(metadata)

Passaggi successivi

  • Per collegare il datastore a un'app, crea un'app e seleziona il datastore seguendo i passaggi descritti in Creare un'app di ricerca.

  • Per visualizzare l'anteprima dell'aspetto dei risultati di ricerca dopo la configurazione dell'app e del datastore, consulta Ottenere i risultati di ricerca.

Importa da AlloyDB per PostgreSQL

Per importare dati da AlloyDB per PostgreSQL, segui questi passaggi per creare un datastore e importare i dati utilizzando la console Google Cloud o l'API.

Se i tuoi dati AlloyDB per PostgreSQL si trovano nello stesso progetto del progetto Vertex AI Search, vai a Importa dati da AlloyDB per PostgreSQL.

Se i tuoi dati AlloyDB per PostgreSQL si trovano in un progetto diverso da quello di Vertex AI Search, vai a Configurare l'accesso ad AlloyDB per PostgreSQL.

Configurare l'accesso ad AlloyDB per PostgreSQL da un altro progetto

Per concedere a Vertex AI Search l'accesso ai dati di AlloyDB per PostgreSQL che si trovano in un altro progetto, segui questi passaggi:

  1. Sostituisci la seguente variabile PROJECT_NUMBER con il numero del tuo progetto Vertex AI Search, quindi copia i contenuti di questo blocco di codice. Questo è l'identificatore del account di servizio di Vertex AI Search:

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
    
  2. Passa al progetto Google Cloud in cui si trovano i dati di AlloyDB per PostgreSQL.

  3. Vai alla pagina IAM.

    IAM

  4. Fai clic su Concedi l'accesso.

  5. In Nuove entità, inserisci l'identificatore dell'account di servizio Vertex AI Search e seleziona il ruolo Cloud AlloyDB > Amministratore Cloud AlloyDB.

  6. Fai clic su Salva.

  7. Torna al progetto Vertex AI Search.

Poi, vai a Importare dati da AlloyDB per PostgreSQL.

Importa dati da AlloyDB per PostgreSQL

Console

Per utilizzare la console per importare i dati da AlloyDB per PostgreSQL, segui questi passaggi:

  1. Nella Google Cloud console, vai alla pagina AI Applications.

    Applicazioni di AI

  2. Nel menu di navigazione, fai clic su Datastore.

  3. Fai clic su Crea datastore.

  4. Nella pagina Origine, seleziona AlloyDB.

  5. Specifica l'ID progetto, l'ID località, l'ID cluster, l'ID database e l'ID tabella dei dati che intendi importare.

  6. Fai clic su Continua.

  7. Scegli una regione per il datastore.

  8. Inserisci un nome per il tuo datastore.

  9. Fai clic su Crea.

  10. Per controllare lo stato dell'importazione, vai alla pagina Datastore e fai clic sul nome del datastore per visualizzarne i dettagli nella pagina Data (Dati). Quando la colonna Stato nella scheda Attività passa da In corso a Importazione completata, l'importazione è terminata.

    A seconda delle dimensioni dei dati, l'importazione può richiedere diversi minuti o diverse ore.

REST

Per utilizzare la riga di comando per creare un datastore e importare dati da AlloyDB per PostgreSQL, segui questi passaggi:

  1. 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/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"],
    }'
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto.
    • DATA_STORE_ID: l'ID del datastore. L'ID può contenere solo lettere minuscole, cifre, trattini bassi e trattini.
    • DISPLAY_NAME: il nome visualizzato del datastore. Questo messaggio potrebbe essere visualizzato nella console Google Cloud .
  2. Importa dati da AlloyDB per PostgreSQL.

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents:import" \
      -d '{
        "alloydbSource": {
          "projectId": "ALLOYDB_PROJECT_ID",
          "locationId": "LOCATION_ID",
          "clusterId": "CLUSTER_ID",
          "databaseId": "DATABASE_ID",
          "tableId": "TABLE_ID",
        },
        "reconciliationMode": "RECONCILIATION_MODE",
        "autoGenerateIds": "AUTO_GENERATE_IDS",
        "idField": "ID_FIELD",
      }'
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo progetto Vertex AI Search.
    • DATA_STORE_ID: l'ID del datastore. L'ID può contenere solo lettere minuscole, cifre, trattini bassi e trattini.
    • ALLOYDB_PROJECT_ID: l'ID del tuo progetto AlloyDB per PostgreSQL.
    • LOCATION_ID: l'ID della località di AlloyDB per PostgreSQL.
    • CLUSTER_ID: l'ID del cluster AlloyDB per PostgreSQL.
    • DATABASE_ID: l'ID del tuo database AlloyDB per PostgreSQL.
    • TABLE_ID: l'ID della tabella AlloyDB per PostgreSQL.
    • RECONCILIATION_MODE: facoltativo. I valori sono FULL e INCREMENTAL. Il valore predefinito è INCREMENTAL. Se specifichi INCREMENTAL , viene eseguito un aggiornamento incrementale dei dati da AlloyDB per PostgreSQL al tuo datastore. Esegue un'operazione di upsert, che aggiunge nuovi documenti e sostituisce quelli esistenti con documenti aggiornati con lo stesso ID. La specifica di FULL causa una ribasatura completa dei documenti nel datastore. In altre parole, i documenti nuovi e aggiornati vengono aggiunti all'archivio dati e i documenti che non si trovano in AlloyDB per PostgreSQL vengono rimossi dall'archivio dati. La modalità FULL è utile se vuoi eliminare automaticamente i documenti che non ti servono più.
    • AUTO_GENERATE_IDS: facoltativo. Specifica se generare automaticamente gli ID documento. Se impostato su true, gli ID documento vengono generati in base a un hash del payload. Tieni presente che gli ID documento generati potrebbero non rimanere coerenti in più importazioni. Se generi automaticamente ID in più importazioni, Google consiglia vivamente di impostare reconciliationMode su FULL per mantenere ID documento coerenti.
    • ID_FIELD: facoltativo. Specifica quali campi sono gli ID documento.

Python

Per saperne di più, consulta la documentazione di riferimento dell'API AI Applications per Python.

Per autenticarti in AI Applications, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

Crea un datastore


from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"


def create_data_store_sample(
    project_id: str,
    location: str,
    data_store_id: str,
) -> str:
    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.DataStoreServiceClient(client_options=client_options)

    # The full resource name of the collection
    # e.g. projects/{project}/locations/{location}/collections/default_collection
    parent = client.collection_path(
        project=project_id,
        location=location,
        collection="default_collection",
    )

    data_store = discoveryengine.DataStore(
        display_name="My Data Store",
        # Options: GENERIC, MEDIA, HEALTHCARE_FHIR
        industry_vertical=discoveryengine.IndustryVertical.GENERIC,
        # Options: SOLUTION_TYPE_RECOMMENDATION, SOLUTION_TYPE_SEARCH, SOLUTION_TYPE_CHAT, SOLUTION_TYPE_GENERATIVE_CHAT
        solution_types=[discoveryengine.SolutionType.SOLUTION_TYPE_SEARCH],
        # TODO(developer): Update content_config based on data store type.
        # Options: NO_CONTENT, CONTENT_REQUIRED, PUBLIC_WEBSITE
        content_config=discoveryengine.DataStore.ContentConfig.CONTENT_REQUIRED,
    )

    request = discoveryengine.CreateDataStoreRequest(
        parent=parent,
        data_store_id=data_store_id,
        data_store=data_store,
        # Optional: For Advanced Site Search Only
        # create_advanced_site_search=True,
    )

    # Make the request
    operation = client.create_data_store(request=request)

    print(f"Waiting for operation to complete: {operation.operation.name}")
    response = operation.result()

    # After the operation is complete,
    # get information from operation metadata
    metadata = discoveryengine.CreateDataStoreMetadata(operation.metadata)

    # Handle the response
    print(response)
    print(metadata)

    return operation.operation.name

Importa documenti

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine_v1 as discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION" # Values: "global"
# data_store_id = "YOUR_DATA_STORE_ID"
# alloy_db_project_id = "YOUR_ALLOY_DB_PROJECT_ID"
# alloy_db_location_id = "YOUR_ALLOY_DB_LOCATION_ID"
# alloy_db_cluster_id = "YOUR_ALLOY_DB_CLUSTER_ID"
# alloy_db_database_id = "YOUR_ALLOY_DB_DATABASE_ID"
# alloy_db_table_id = "YOUR_ALLOY_DB_TABLE_ID"

# For more information, refer to:
# https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
client_options = (
    ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
    if location != "global"
    else None
)

# Create a client
client = discoveryengine.DocumentServiceClient(client_options=client_options)

# The full resource name of the search engine branch.
# e.g. projects/{project}/locations/{location}/dataStores/{data_store_id}/branches/{branch}
parent = client.branch_path(
    project=project_id,
    location=location,
    data_store=data_store_id,
    branch="default_branch",
)

request = discoveryengine.ImportDocumentsRequest(
    parent=parent,
    alloy_db_source=discoveryengine.AlloyDbSource(
        project_id=alloy_db_project_id,
        location_id=alloy_db_location_id,
        cluster_id=alloy_db_cluster_id,
        database_id=alloy_db_database_id,
        table_id=alloy_db_table_id,
    ),
    # Options: `FULL`, `INCREMENTAL`
    reconciliation_mode=discoveryengine.ImportDocumentsRequest.ReconciliationMode.INCREMENTAL,
)

# Make the request
operation = client.import_documents(request=request)

print(f"Waiting for operation to complete: {operation.operation.name}")
response = operation.result()

# After the operation is complete,
# get information from operation metadata
metadata = discoveryengine.ImportDocumentsMetadata(operation.metadata)

# Handle the response
print(response)
print(metadata)

Passaggi successivi

  • Per collegare il datastore a un'app, crea un'app e seleziona il datastore seguendo i passaggi descritti in Creare un'app di ricerca.

  • Per visualizzare l'anteprima dell'aspetto dei risultati di ricerca dopo la configurazione dell'app e del datastore, consulta Ottenere i risultati di ricerca.

Caricare dati JSON strutturati con l'API

Per caricare direttamente un documento o un oggetto JSON utilizzando l'API, segui questi passaggi.

Prima di importare i dati, preparali per l'importazione.

REST

Per utilizzare la riga di comando per creare un datastore e importare dati JSON strutturati, segui questi passaggi.

  1. 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/v1alpha/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DATA_STORE_DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"]
    }'
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del tuo Google Cloud progetto.
    • DATA_STORE_ID: l'ID del datastore Vertex AI Search che vuoi creare. Questo ID può contenere solo lettere minuscole, cifre, trattini bassi e trattini.
    • DATA_STORE_DISPLAY_NAME: il nome visualizzato del datastore Vertex AI Search che vuoi creare.
  2. Importa i dati strutturati.

    Esistono diversi approcci per caricare i dati, tra cui:

    • Carica un documento JSON.

      curl -X POST \
      -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/branches/0/documents?documentId=DOCUMENT_ID" \
      -d '{
        "jsonData": "JSON_DOCUMENT_STRING"
      }'
      

      Sostituisci quanto segue:

      • DOCUMENT_ID: un ID univoco per il documento. Questo ID può contenere fino a 63 caratteri e solo lettere minuscole, cifre, trattini bassi e trattini.
      • JSON_DOCUMENT_STRING: il documento JSON come singola stringa. Deve essere conforme allo schema JSON che hai fornito nel passaggio precedente, ad esempio:

        { \"title\": \"test title\", \"categories\": [\"cat_1\", \"cat_2\"], \"uri\": \"test uri\"}
        
    • Carica un oggetto JSON.

      curl -X POST \
      -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/branches/0/documents?documentId=DOCUMENT_ID" \
      -d '{
        "structData": JSON_DOCUMENT_OBJECT
      }'
      

      Sostituisci JSON_DOCUMENT_OBJECT con il documento JSON come oggetto JSON. Deve essere conforme allo schema JSON che hai fornito nel passaggio precedente, ad esempio:

      ```json
      {
        "title": "test title",
        "categories": [
          "cat_1",
          "cat_2"
        ],
        "uri": "test uri"
      }
      ```
      
    • Aggiorna con un documento 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/branches/0/documents/DOCUMENT_ID" \
      -d '{
        "jsonData": "JSON_DOCUMENT_STRING"
      }'
      
    • Aggiorna con un 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/branches/0/documents/DOCUMENT_ID" \
      -d '{
        "structData": JSON_DOCUMENT_OBJECT
      }'
      

Passaggi successivi

  • Per collegare il datastore a un'app, crea un'app e seleziona il datastore seguendo i passaggi descritti in Creare un'app di ricerca.

  • Per visualizzare l'anteprima dell'aspetto dei risultati di ricerca dopo la configurazione dell'app e del datastore, consulta Ottenere i risultati di ricerca.

Risolvere i problemi relativi all'importazione dati

Se riscontri problemi con l'importazione dati, consulta questi suggerimenti:

  • Se utilizzi chiavi di crittografia gestite dal cliente e l'importazione dei dati non va a buon fine (con il messaggio di errore The caller does not have permission), assicurati che il ruolo IAM Autore crittografia/decrittografia CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) sulla chiave sia stato concesso all'agente di servizio Cloud Storage. Per saperne di più, vedi Prima di iniziare in "Chiavi di crittografia gestite dal cliente".

  • Se utilizzi l'indicizzazione avanzata dei siti web e l'utilizzo dei documenti per il datastoree è molto inferiore alle tue aspettative, esamina i pattern URL che hai specificato per l'indicizzazione e assicurati che coprano le pagine che vuoi indicizzare ed espandili se necessario. Ad esempio, se hai utilizzato *.en.example.com/*, potresti dover aggiungere *.example.com/* ai siti che vuoi indicizzare.

Crea un datastore utilizzando Terraform

Puoi utilizzare Terraform per creare un datastore vuoto. Una volta creato l'datastore vuoto, puoi importare i dati nell'datastore utilizzando la console Google Cloud o i comandi API.

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Per creare un datastore vuoto utilizzando Terraform, consulta google_discovery_engine_data_store.