Crie um repositório de dados de pesquisa

Para criar um arquivo de dados e carregar dados para a pesquisa, aceda à secção da origem que planeia usar:

Em alternativa, para sincronizar dados de uma origem de dados de terceiros, consulte o artigo Associe uma origem de dados de terceiros.

Para ver informações de resolução de problemas, consulte o artigo Resolva problemas de carregamento de dados.

Crie um arquivo de dados com conteúdo do Website

Use o procedimento seguinte para criar um repositório de dados e indexar Websites.

Para usar um arquivo de dados do Website depois de o criar, tem de o anexar a uma app que tenha as funcionalidades Enterprise ativadas. Pode ativar a Enterprise Edition para uma app quando a cria. Isto implica custos adicionais. Consulte os artigos Crie uma app de pesquisa e Acerca das funcionalidades avançadas.

Antes de começar

Se usar o ficheiro robots.txt no seu Website, atualize-o. Para mais informações, veja como preparar o ficheiro robots.txt do Website.

Procedimento

Consola

Para usar a Google Cloud consola para criar um arquivo de dados e indexar Websites, siga estes passos:

  1. Na Google Cloud consola, aceda à página Aplicações de IA.

    Aplicações de IA

  2. No menu de navegação, clique em Armazenamentos de dados.

  3. Clique em Criar arquivo de dados.

  4. Na página Origem, selecione Conteúdo do Website.

  5. Escolha se quer ativar a indexação avançada de Websites para este arquivo de dados. Não é possível ativar ou desativar esta opção mais tarde.

    A indexação avançada de Websites oferece funcionalidades adicionais, como o resumo de pesquisas, a pesquisa com seguimentos e as respostas extrativas. A indexação avançada de Websites incorre em custos adicionais e requer que valide a propriedade do domínio de qualquer Website que indexe. Para mais informações, consulte os artigos Indexação avançada de Websites e Preços.

  6. No campo Sites a incluir, introduza os padrões de URL que correspondem aos Websites que quer incluir no seu repositório de dados. Inclua um padrão do URL por linha, sem separadores de vírgulas. Por exemplo, example.com/docs/*

  7. Opcional: no campo Sites a excluir, introduza padrões de URL que quer excluir do seu repositório de dados.

    Os sites excluídos têm prioridade sobre os sites incluídos. Assim, se incluir example.com/docs/*, mas excluir example.com, nenhum website é indexado. Para mais informações, consulte o artigo Dados do Website.

  8. Clique em Continuar.

  9. Selecione uma localização para o seu repositório de dados.

    • Quando cria um arquivo de dados de pesquisa do Website básico, este é sempre definido como global (Global).
    • Quando cria um arquivo de dados com a indexação avançada de Websites, pode selecionar uma localização. Uma vez que os Websites indexados têm de ser públicos, a Google recomenda vivamente que selecione global (Global) como a sua localização. Isto garante a máxima disponibilidade de todos os serviços de pesquisa e resposta, e elimina as limitações dos armazenamentos de dados regionais.
  10. Introduza um nome para o seu repositório de dados.

  11. Clique em Criar. A Vertex AI Search cria o seu arquivo de dados e apresenta os seus arquivos de dados na página Arquivos de dados.

  12. Para ver informações sobre o seu arquivo de dados, clique no nome do arquivo de dados na coluna Nome. É apresentada a página da loja de dados.

    • Se ativou a Indexação avançada de Websites, é apresentado um aviso a pedir-lhe que valide os domínios na sua base de dados.
    • Se tiver uma falta de quota (o número de páginas nos Websites que especificou excede a quota "Número de documentos por projeto" para o seu projeto), é apresentada um aviso adicional a pedir-lhe que atualize a sua quota.
  13. Para validar os domínios dos padrões de URL no seu repositório de dados, siga as instruções na página Valide domínios de Websites.

  14. Para atualizar a sua quota, siga estes passos:

    1. Clique em Atualizar quota. É apresentada a página IAM e administração da Google Cloud consola.
    2. Siga as instruções em Peça um ajuste da quota na Google Cloud documentação. A quota a aumentar é o número de documentos no serviço da API Discovery Engine.
    3. Depois de enviar o pedido de um limite de quota mais elevado, volte à página Aplicações de IA e clique em Armazenamentos de dados no menu de navegação.
    4. Clique no nome do seu arquivo de dados na coluna Nome. A coluna Estado indica que a indexação está em curso para os Websites que tinham ultrapassado a quota. Quando a coluna Estado de um URL mostra Indexado, as funcionalidades de indexação avançada de Websites estão disponíveis para esse URL ou padrão de URL.

    Para mais informações, consulte o artigo Quota para indexação de páginas Web na página "Quotas e limites".

Python

Para mais informações, consulte a documentação de referência da API Python de aplicações de IA.

Para se autenticar em aplicações de IA, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

Crie um arquivo de dados


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

Importe Websites

#     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)

Passos seguintes

Importação a partir do BigQuery

A Pesquisa da Vertex AI suporta a pesquisa em dados do BigQuery.

Pode criar arquivos de dados a partir de tabelas do BigQuery de duas formas:

  • Ingestão única: importa dados de uma tabela do BigQuery para um armazenamento de dados. Os dados no repositório de dados não são alterados, a menos que atualize os dados manualmente.

  • Ingestão periódica: importa dados de uma ou mais tabelas do BigQuery e define uma frequência de sincronização que determina a frequência com que os arquivos de dados são atualizados com os dados mais recentes do conjunto de dados do BigQuery.

A tabela seguinte compara as duas formas de importar dados do BigQuery para os repositórios de dados do Vertex AI Search.

Carregamento único Carregamento periódico
Disponível globalmente (DG). Pré-visualização pública.
Os dados têm de ser atualizados manualmente. Os dados são atualizados automaticamente a cada 1, 3 ou 5 dias. Não é possível atualizar os dados manualmente.
O Vertex AI Search cria um único repositório de dados a partir de uma tabela no BigQuery. O Vertex AI Search cria um conetor de dados para um conjunto de dados do BigQuery e um arquivo de dados (denominado arquivo de dados de entidades) para cada tabela especificada. Para cada conetor de dados, as tabelas têm de ter o mesmo tipo de dados (por exemplo, estruturados) e estar no mesmo conjunto de dados do BigQuery.
Pode combinar dados de várias tabelas num único armazenamento de dados. Para tal, primeiro, ingira dados de uma tabela e, em seguida, mais dados de outra origem ou tabela do BigQuery. Uma vez que a importação manual de dados não é suportada, os dados num arquivo de dados de entidades só podem ser provenientes de uma tabela do BigQuery.
O controlo de acesso à origem de dados é suportado. O controlo de acesso à origem de dados não é suportado. Os dados importados podem conter controlos de acesso, mas estes controlos não são respeitados.
Pode criar um arquivo de dados através da Google Cloud consola ou da API. Tem de usar a consola para criar conetores de dados e os respetivos armazenamentos de dados de entidades.
Em conformidade com as CMEK. Em conformidade com as CMEK.

Importe uma vez a partir do BigQuery

Para carregar dados de uma tabela do BigQuery, siga estes passos para criar um repositório de dados e carregar dados através da Google Cloud consola ou da API.

Antes de importar os seus dados, reveja o artigo Prepare os dados para carregamento.

Consola

Para usar a Google Cloud consola para carregar dados do BigQuery, siga estes passos:

  1. Na Google Cloud consola, aceda à página Aplicações de IA.

    Aplicações de IA

  2. Aceda à página Armazenamentos de dados.

  3. Clique em Criar arquivo de dados.

  4. Na página Origem, selecione BigQuery.

  5. Selecione o tipo de dados que vai importar na secção Que tipo de dados está a importar.

  6. Selecione Uma vez na secção Frequência de sincronização.

  7. No campo Caminho do BigQuery, clique em Procurar, selecione uma tabela que preparou para carregamento e, de seguida, clique em Selecionar. Em alternativa, introduza a localização da tabela diretamente no campo Caminho do BigQuery.

  8. Clique em Continuar.

  9. Se estiver a fazer uma importação única de dados estruturados:

    1. Mapeie campos para propriedades principais.

    2. Se faltarem campos importantes no esquema, use Adicionar novo campo para os adicionar.

      Para mais informações, consulte o artigo Acerca da deteção e edição automáticas.

    3. Clique em Continuar.

  10. Escolha uma região para o seu repositório de dados.

  11. Introduza um nome para o seu repositório de dados.

  12. Clique em Criar.

  13. Para verificar o estado do carregamento, aceda à página Armazenamentos de dados e clique no nome do armazenamento de dados para ver os respetivos detalhes na página Dados. Quando a coluna de estado no separador Atividade muda de Em curso para Importação concluída, a ingestão está concluída.

    Consoante o tamanho dos seus dados, a carregamento pode demorar vários minutos a várias horas.

REST

Para usar a linha de comandos para criar um arquivo de dados e importar dados do BigQuery, siga estes passos.

  1. Crie um arquivo de dados.

    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"]
    }'
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto Google Cloud .
    • DATA_STORE_ID: o ID do arquivo de dados do Vertex AI Search que quer criar. Este ID só pode conter letras minúsculas, dígitos, sublinhados e hífenes.
    • DATA_STORE_DISPLAY_NAME: o nome a apresentar do arquivo de dados do Vertex AI que quer criar.

    Opcional: se estiver a carregar dados não estruturados e quiser configurar a análise de documentos ou ativar a divisão de documentos para a RAG, especifique o objeto documentProcessingConfig e inclua-o no seu pedido de criação do arquivo de dados. Recomendamos que configure um analisador de OCR para PDFs se estiver a carregar PDFs digitalizados. Para saber como configurar as opções de análise ou divisão, consulte o artigo Analise e divida documentos em partes.

  2. Importar dados do BigQuery.

    Se definiu um esquema, certifique-se de que os dados estão em conformidade com esse esquema.

    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"
      }
    }'
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto Google Cloud .
    • DATA_STORE_ID: o ID do arquivo de dados do Vertex AI Search.
    • DATASET_ID: o ID do conjunto de dados do BigQuery.
    • TABLE_ID: o ID da tabela do BigQuery.
      • Se a tabela do BigQuery não estiver em PROJECT_ID, tem de conceder à conta de serviço service-<project number>@gcp-sa-discoveryengine.iam.gserviceaccount.com autorização "Visualizador de dados do BigQuery" para a tabela do BigQuery. Por exemplo, se estiver a importar uma tabela do BigQuery do projeto de origem "123" para o projeto de destino "456", conceda autorizações service-456@gcp-sa-discoveryengine.iam.gserviceaccount.com para a tabela do BigQuery no projeto "123".
    • DATA_SCHEMA: opcional. Os valores são document e custom. A predefinição é document.
      • : a tabela do BigQuery que usa tem de estar em conformidade com o esquema predefinido do BigQuery fornecido em Prepare os dados para carregamento.document Pode definir o ID de cada documento, enquanto envolve todos os dados na string jsonData.
      • custom: É aceite qualquer esquema de tabela do BigQuery, e a Pesquisa do Vertex AI gera automaticamente os IDs de cada documento importado.
    • ERROR_DIRECTORY: opcional. Um diretório do Cloud Storage com informações de erro sobre a importação, por exemplo, gs://<your-gcs-bucket>/directory/import_errors. A Google recomenda deixar este campo vazio para permitir que a Vertex AI Search crie automaticamente um diretório temporário.
    • RECONCILIATION_MODE: opcional. Os valores são FULL e INCREMENTAL. A predefinição é INCREMENTAL. A especificação de INCREMENTAL provoca uma atualização incremental dos dados do BigQuery para o seu repositório de dados. Esta ação faz uma operação de inserção/atualização, que adiciona novos documentos e substitui os documentos existentes por documentos atualizados com o mesmo ID. A especificação de FULL provoca uma nova base completa dos documentos no seu armazenamento de dados. Por outras palavras, os documentos novos e atualizados são adicionados ao seu repositório de dados, e os documentos que não estão no BigQuery são removidos do seu repositório de dados. O modo FULL é útil se quiser eliminar automaticamente documentos de que já não precisa.
    • AUTO_GENERATE_IDS: opcional. Especifica se os IDs dos documentos devem ser gerados automaticamente. Se estiver definido como true, os IDs dos documentos são gerados com base num hash da carga útil. Tenha em atenção que os IDs dos documentos gerados podem não permanecer consistentes em várias importações. Se gerar automaticamente IDs em várias importações, a Google recomenda vivamente que defina reconciliationMode como FULL para manter IDs de documentos consistentes.

      Especifique autoGenerateIds apenas quando bigquerySource.dataSchema estiver definido como custom. Caso contrário, é devolvido um erro INVALID_ARGUMENT. Se não especificar autoGenerateIds ou o definir como false, tem de especificar idField. Caso contrário, não é possível importar os documentos.

    • ID_FIELD: opcional. Especifica os campos que são os IDs dos documentos. Para ficheiros de origem do BigQuery, idField indica o nome da coluna na tabela do BigQuery que contém os IDs dos documentos.

      Especifique idField apenas quando: (1) bigquerySource.dataSchema estiver definido como custom e (2) auto_generate_ids estiver definido como false ou não estiver especificado. Caso contrário, é devolvido um erro INVALID_ARGUMENT.

      O valor do nome da coluna do BigQuery tem de ser do tipo string, ter entre 1 e 63 carateres e estar em conformidade com a RFC-1034. Caso contrário, a importação dos documentos falha.

C#

Para mais informações, consulte a documentação de referência da API C# de aplicações de IA.

Para se autenticar em aplicações de IA, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

Crie um arquivo de dados

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;
        }
    }
}

Importe documentos

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

Para mais informações, consulte a documentação de referência da API Go de aplicações de IA.

Para se autenticar em aplicações de IA, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

Crie um arquivo de dados


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
}

Importe documentos


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

Para mais informações, consulte a documentação de referência da API Java de aplicações de IA.

Para se autenticar em aplicações de IA, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

Crie um arquivo de dados

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();
    }
  }
}

Importe documentos

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

Para mais informações, consulte a documentação de referência da API Node.js de aplicações de IA.

Para se autenticar em aplicações de IA, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

Crie um arquivo de dados

/**
 * 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();

Importe documentos

/**
 * 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

Para mais informações, consulte a documentação de referência da API Python de aplicações de IA.

Para se autenticar em aplicações de IA, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

Crie um arquivo de dados


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

Importe documentos


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

Para mais informações, consulte a documentação de referência da API Ruby de aplicações de IA.

Para se autenticar em aplicações de IA, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

Crie um arquivo de dados

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

Importe documentos

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

Associe ao BigQuery com sincronização periódica

Antes de importar os seus dados, reveja o artigo Prepare os dados para carregamento.

O procedimento seguinte descreve como criar um conetor de dados que associa um conjunto de dados do BigQuery a um conetor de dados do Vertex AI Search e como especificar uma tabela no conjunto de dados para cada arquivo de dados que quer criar. Os arquivos de dados que são filhos de conetores de dados são denominados arquivos de dados de entidades.

Os dados do conjunto de dados são sincronizados periodicamente com os arquivos de dados de entidades. Pode especificar a sincronização diariamente, a cada três dias ou a cada cinco dias.

Consola

Para usar a Google Cloud consola para criar um conetor que sincronize periodicamente os dados de um conjunto de dados do BigQuery para a Pesquisa da Vertex AI, siga estes passos:

  1. Na Google Cloud consola, aceda à página Aplicações de IA.

    Aplicações de IA

  2. No menu de navegação, clique em Armazenamentos de dados.

  3. Clique em Criar arquivo de dados.

  4. Na página Origem, selecione BigQuery.

  5. Selecione o tipo de dados que está a importar.

  6. Clique em Periódico.

  7. Selecione a Frequência de sincronização, ou seja, a frequência com que quer que o conector do Vertex AI Search seja sincronizado com o conjunto de dados do BigQuery. Pode alterar a frequência mais tarde.

  8. No campo Caminho do conjunto de dados do BigQuery, clique em Procurar, selecione o conjunto de dados que contém as tabelas que preparou para o carregamento. Em alternativa, introduza a localização da tabela diretamente no campo Caminho do BigQuery. O formato do caminho é projectname.datasetname.

  9. No campo Tabelas a sincronizar, clique em Procurar e, de seguida, selecione uma tabela que contenha os dados que quer para o seu repositório de dados.

  10. Se existirem tabelas adicionais no conjunto de dados que quer usar para armazenamentos de dados, clique em Adicionar tabela e especifique também essas tabelas.

  11. Clique em Continuar.

  12. Escolha uma região para o seu repositório de dados, introduza um nome para o conetor de dados e clique em Criar.

    Criou um conetor de dados que vai sincronizar periodicamente os dados com o conjunto de dados do BigQuery. Além disso, criou uma ou mais lojas de dados de entidades. Os armazenamentos de dados têm os mesmos nomes que as tabelas do BigQuery.

  13. Para verificar o estado do carregamento, aceda à página Armazenamentos de dados e clique no nome do conetor de dados para ver os respetivos detalhes na página Dados > separador Atividade de carregamento de dados. Quando a coluna de estado no separador Atividade muda de Em curso para Concluído, a primeira importação está concluída.

    Consoante o tamanho dos seus dados, a carregamento pode demorar vários minutos a várias horas.

Depois de configurar a origem de dados e importar dados pela primeira vez, o armazenamento de dados sincroniza os dados dessa origem com uma frequência que seleciona durante a configuração. Cerca de uma hora após a criação do conetor de dados, ocorre a primeira sincronização. A sincronização seguinte ocorre cerca de 24 horas, 72 horas ou 120 horas mais tarde.

Passos seguintes

  • Para anexar o seu arquivo de dados a uma app, crie uma app e selecione o seu arquivo de dados seguindo os passos em Crie uma app de pesquisa.

  • Para pré-visualizar o aspeto dos resultados da pesquisa depois de configurar a app e o arquivo de dados, consulte o artigo Obtenha resultados da pesquisa.

Importe a partir do Cloud Storage

Pode criar arquivos de dados a partir de tabelas do Cloud Storage de duas formas:

  • Carregamento único: importa dados de uma pasta ou de um ficheiro do Cloud Storage para um arquivo de dados. Os dados no repositório de dados não são alterados, a menos que atualize os dados manualmente.

  • Carregamento periódico: importa dados de uma pasta ou de um ficheiro do Cloud Storage e define uma frequência de sincronização que determina a frequência com que o repositório de dados é atualizado com os dados mais recentes dessa localização do Cloud Storage.

A tabela seguinte compara as duas formas de importar dados do Cloud Storage para os arquivos de dados do Vertex AI Search.

Carregamento único Carregamento periódico
Disponível globalmente (DG). Pré-visualização pública.
Os dados têm de ser atualizados manualmente. Os dados são atualizados automaticamente a cada um, três ou cinco dias. Não é possível atualizar os dados manualmente.
O Vertex AI Search cria um único repositório de dados a partir de uma pasta ou um ficheiro no Cloud Storage. O Vertex AI Search cria um conetor de dados e associa-lhe um arquivo de dados (denominado arquivo de dados de entidades) para o ficheiro ou a pasta especificados. Cada conetor de dados do Cloud Storage pode ter um único arquivo de dados de entidades.
Os dados de vários ficheiros, pastas e contentores podem ser combinados num único repositório de dados. Para tal, comece por carregar dados de uma localização do Cloud Storage e, em seguida, carregue mais dados de outra localização. Uma vez que a importação manual de dados não é suportada, os dados num arquivo de dados de entidades só podem ser provenientes de um ficheiro ou uma pasta do Cloud Storage.
O controlo de acesso à origem de dados é suportado. Para mais informações, consulte o artigo Controlo de acesso à origem de dados. O controlo de acesso à origem de dados não é suportado. Os dados importados podem conter controlos de acesso, mas estes controlos não são respeitados.
Pode criar um arquivo de dados através da Google Cloud consola ou da API. Tem de usar a consola para criar conetores de dados e os respetivos armazenamentos de dados de entidades.
Em conformidade com as CMEK. Em conformidade com as CMEK.

Importe uma vez a partir do Cloud Storage

Para carregar dados do Cloud Storage, siga estes passos para criar um arquivo de dados e carregar dados através da Google Cloud consola ou da API.

Antes de importar os seus dados, reveja o artigo Prepare os dados para carregamento.

Consola

Para usar a consola para carregar dados de um contentor do Cloud Storage, siga estes passos:

  1. Na Google Cloud consola, aceda à página Aplicações de IA.

    Aplicações de IA

  2. Aceda à página Armazenamentos de dados.

  3. Clique em Criar arquivo de dados.

  4. Na página Origem, selecione Cloud Storage.

  5. Na secção Selecione uma pasta ou um ficheiro que quer importar, selecione Pasta ou Ficheiro.

  6. Clique em Procurar e escolha os dados que preparou para carregamento e, de seguida, clique em Selecionar. Em alternativa, introduza a localização diretamente no campo gs://.

  7. Selecione o tipo de dados que está a importar.

  8. Clique em Continuar.

  9. Se estiver a fazer uma importação única de dados estruturados:

    1. Mapeie campos para propriedades principais.

    2. Se faltarem campos importantes no esquema, use Adicionar novo campo para os adicionar.

      Para mais informações, consulte o artigo Acerca da deteção e edição automáticas.

    3. Clique em Continuar.

  10. Escolha uma região para o seu repositório de dados.

  11. Introduza um nome para o seu repositório de dados.

  12. Opcional: se selecionou documentos não estruturados, pode selecionar opções de análise e divisão em blocos para os seus documentos. Para comparar analisadores, consulte o artigo Analise documentos. Para obter informações sobre a divisão em partes, consulte o artigo Divida documentos para a geração aumentada por recuperação (RAG).

    O analisador de OCR e o analisador de esquemas podem incorrer em custos adicionais. Consulte os preços das funcionalidades de IA do Document AI.

    Para selecionar um analisador, expanda Opções de processamento de documentos e especifique as opções do analisador que quer usar.

  13. Clique em Criar.

  14. Para verificar o estado do carregamento, aceda à página Armazenamentos de dados e clique no nome do armazenamento de dados para ver os respetivos detalhes na página Dados. Quando a coluna de estado no separador Atividade muda de Em curso para Importação concluída, a ingestão está concluída.

    Consoante o tamanho dos seus dados, a carregamento pode demorar vários minutos ou várias horas.

REST

Para usar a linha de comandos para criar um arquivo de dados e carregar dados do Cloud Storage, siga estes passos.

  1. Crie um arquivo de dados.

    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"]
    }'
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto Google Cloud .
    • DATA_STORE_ID: o ID do arquivo de dados do Vertex AI Search que quer criar. Este ID só pode conter letras minúsculas, dígitos, sublinhados e hífenes.
    • DATA_STORE_DISPLAY_NAME: o nome a apresentar do arquivo de dados do Vertex AI que quer criar.

    Opcional: se estiver a carregar dados não estruturados e quiser configurar a análise de documentos ou ativar a divisão de documentos para a RAG, especifique o objeto documentProcessingConfig e inclua-o no seu pedido de criação do arquivo de dados. Recomendamos que configure um analisador de OCR para PDFs se estiver a carregar PDFs digitalizados. Para saber como configurar as opções de análise ou divisão, consulte o artigo Analise e divida documentos em partes.

  2. Importe dados do 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"
        }
      }'
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto Google Cloud .
    • DATA_STORE_ID: o ID do arquivo de dados do Vertex AI Search.
    • INPUT_FILE_PATTERN: um padrão de ficheiro no Cloud Storage que contém os seus documentos.

      Para dados estruturados ou dados não estruturados com metadados, um exemplo do padrão de ficheiro de entrada é gs://<your-gcs-bucket>/directory/object.jsone um exemplo de padrão que corresponde a um ou mais ficheiros é gs://<your-gcs-bucket>/directory/*.json.

      Para documentos não estruturados, um exemplo é gs://<your-gcs-bucket>/directory/*.pdf. Cada ficheiro que corresponda ao padrão torna-se um documento.

      Se <your-gcs-bucket> não estiver em PROJECT_ID, tem de conceder à conta de serviço service-<project number>@gcp-sa-discoveryengine.iam.gserviceaccount.com autorizações de "Visualizador de objetos do Storage" para o contentor do Cloud Storage. Por exemplo, se estiver a importar um contentor do Cloud Storage do projeto de origem "123" para o projeto de destino "456", conceda autorizações service-456@gcp-sa-discoveryengine.iam.gserviceaccount.com no contentor do Cloud Storage no projeto "123".

    • DATA_SCHEMA: opcional. Os valores são document, custom, csv e content. A predefinição é document.

      • document: carregue dados não estruturados com metadados para documentos não estruturados. Cada linha do ficheiro tem de seguir um dos seguintes formatos. Pode definir o ID de cada 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: carregue JSON para documentos estruturados. Os dados são organizados de acordo com um esquema. Pode especificar o esquema; caso contrário, é detetado automaticamente. Pode colocar a string JSON do documento num formato consistente diretamente em cada linha e o Vertex AI Search gera automaticamente os IDs para cada documento importado.

      • content: carregue documentos não estruturados (PDF, HTML, DOC, TXT e PPTX). O ID de cada documento é gerado automaticamente como os primeiros 128 bits de SHA256(GCS_URI) codificados como uma string hexadecimal. Pode especificar vários padrões de ficheiros de entrada, desde que os ficheiros correspondentes não excedam o limite de 100 000 ficheiros.

      • csv: inclua uma linha de cabeçalho no ficheiro CSV, com cada cabeçalho mapeado para um campo do documento. Especifique o caminho para o ficheiro CSV através do campo inputUris.

    • ERROR_DIRECTORY: opcional. Um diretório do Cloud Storage para informações de erro sobre a importação, por exemplo, gs://<your-gcs-bucket>/directory/import_errors. A Google recomenda deixar este campo vazio para permitir que a Vertex AI Search crie automaticamente um diretório temporário.

    • RECONCILIATION_MODE: opcional. Os valores são FULL e INCREMENTAL. A predefinição é INCREMENTAL. A especificação de INCREMENTAL provoca uma atualização incremental dos dados do Cloud Storage para o seu repositório de dados. Esta ação faz uma operação de inserção/atualização, que adiciona novos documentos e substitui os documentos existentes por documentos atualizados com o mesmo ID. A especificação de FULL provoca uma nova base completa dos documentos no seu armazenamento de dados. Por outras palavras, os documentos novos e atualizados são adicionados ao seu repositório de dados, e os documentos que não estão no Cloud Storage são removidos do seu repositório de dados. O modo FULL é útil se quiser eliminar automaticamente documentos de que já não precisa.

    • AUTO_GENERATE_IDS: opcional. Especifica se os IDs dos documentos devem ser gerados automaticamente. Se estiver definido como true, os IDs dos documentos são gerados com base num hash da carga útil. Tenha em atenção que os IDs dos documentos gerados podem não permanecer consistentes em várias importações. Se gerar automaticamente IDs em várias importações, a Google recomenda vivamente definir reconciliationMode como FULL para manter IDs de documentos consistentes.

      Especifique autoGenerateIds apenas quando gcsSource.dataSchema estiver definido como custom ou csv. Caso contrário, é devolvido um erro INVALID_ARGUMENT. Se não especificar autoGenerateIds ou o definir como false, tem de especificar idField. Caso contrário, a importação dos documentos falha.

    • ID_FIELD: opcional. Especifica os campos que são os IDs dos documentos. Para documentos de origem do Cloud Storage, idField especifica o nome nos campos JSON que são IDs de documentos. Por exemplo, se {"my_id":"some_uuid"} for o campo de ID do documento num dos seus documentos, especifique "idField":"my_id". Isto identifica todos os campos JSON com o nome "my_id" como IDs de documentos.

      Especifique este campo apenas quando: (1) gcsSource.dataSchema estiver definido como custom ou csv e (2) auto_generate_ids estiver definido como false ou não estiver especificado. Caso contrário, é devolvido um erro INVALID_ARGUMENT.

      Tenha em atenção que o valor do campo JSON do Google Cloud Storage tem de ser do tipo string, ter entre 1 e 63 carateres e estar em conformidade com a RFC-1034. Caso contrário, a importação dos documentos falha.

      Tenha em atenção que o nome do campo JSON especificado por id_field tem de ser do tipo string, ter entre 1 e 63 carateres e estar em conformidade com a RFC-1034. Caso contrário, a importação dos documentos falha.

C#

Para mais informações, consulte a documentação de referência da API C# de aplicações de IA.

Para se autenticar em aplicações de IA, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

Crie um arquivo de dados

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;
        }
    }
}

Importe documentos

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

Para mais informações, consulte a documentação de referência da API Go de aplicações de IA.

Para se autenticar em aplicações de IA, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

Crie um arquivo de dados


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
}

Importe documentos


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

Para mais informações, consulte a documentação de referência da API Java de aplicações de IA.

Para se autenticar em aplicações de IA, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

Crie um arquivo de dados

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();
    }
  }
}

Importe documentos

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

Para mais informações, consulte a documentação de referência da API Node.js de aplicações de IA.

Para se autenticar em aplicações de IA, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

Crie um arquivo de dados

/**
 * 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();

Importe documentos

/**
 * 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

Para mais informações, consulte a documentação de referência da API Python de aplicações de IA.

Para se autenticar em aplicações de IA, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

Crie um arquivo de dados


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

Importe documentos

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

Para mais informações, consulte a documentação de referência da API Ruby de aplicações de IA.

Para se autenticar em aplicações de IA, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

Crie um arquivo de dados

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

Importe documentos

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

Estabeleça ligação ao Cloud Storage com sincronização periódica

Antes de importar os seus dados, reveja o artigo Prepare os dados para carregamento.

O procedimento seguinte descreve como criar um conetor de dados que associa uma localização do Cloud Storage a um conetor de dados do Vertex AI Search e como especificar uma pasta ou um ficheiro nessa localização para o repositório de dados que quer criar. Os repositórios de dados que são filhos de conetores de dados são denominados repositórios de dados de entidades.

Os dados são sincronizados periodicamente com o repositório de dados de entidades. Pode especificar a sincronização diária, a cada três dias ou a cada cinco dias.

Consola

  1. Na Google Cloud consola, aceda à página Aplicações de IA.

    Aplicações de IA

  2. Aceda à página Armazenamentos de dados.

  3. Clique em Criar arquivo de dados.

  4. Na página Origem, selecione Cloud Storage.

  5. Selecione o tipo de dados que está a importar.

  6. Clique em Periódico.

  7. Selecione a Frequência de sincronização, ou seja, a frequência com que quer que o conector do Vertex AI Search seja sincronizado com a localização do Cloud Storage. Pode alterar a frequência mais tarde.

  8. Na secção Selecione uma pasta ou um ficheiro que quer importar, selecione Pasta ou Ficheiro.

  9. Clique em Procurar e escolha os dados que preparou para carregamento e, de seguida, clique em Selecionar. Em alternativa, introduza a localização diretamente no campo gs://.

  10. Clique em Continuar.

  11. Escolha uma região para o conetor de dados.

  12. Introduza um nome para o conetor de dados.

  13. Opcional: se selecionou documentos não estruturados, pode selecionar opções de análise e divisão em blocos para os seus documentos. Para comparar analisadores, consulte o artigo Analise documentos. Para obter informações sobre a divisão em partes, consulte o artigo Divida documentos para a geração aumentada por recuperação (RAG).

    O analisador de OCR e o analisador de esquemas podem incorrer em custos adicionais. Consulte os preços das funcionalidades de IA do Document AI.

    Para selecionar um analisador, expanda Opções de processamento de documentos e especifique as opções do analisador que quer usar.

  14. Clique em Criar.

    Criou um conetor de dados que vai sincronizar periodicamente os dados com a localização do Cloud Storage. Também criou um arquivo de dados de entidades com o nome gcs_store.

  15. Para verificar o estado do carregamento, aceda à página Armazenamentos de dados e clique no nome do conetor de dados para ver os respetivos detalhes na página Dados.

    Separador Atividade de carregamento de dados. Quando a coluna de estado no separador Atividade de carregamento de dados muda de Em curso para Concluído com êxito, o primeiro carregamento está concluído.

    Consoante o tamanho dos seus dados, a carregamento pode demorar vários minutos a várias horas.

Depois de configurar a origem de dados e importar dados pela primeira vez, os dados são sincronizados a partir dessa origem com uma frequência que seleciona durante a configuração. Cerca de uma hora após a criação do conetor de dados, ocorre a primeira sincronização. A sincronização seguinte ocorre cerca de 24 horas, 72 horas ou 120 horas mais tarde.

Passos seguintes

  • Para anexar o seu arquivo de dados a uma app, crie uma app e selecione o seu arquivo de dados seguindo os passos em Crie uma app de pesquisa.

  • Para pré-visualizar o aspeto dos resultados da pesquisa depois de configurar a app e o arquivo de dados, consulte o artigo Obtenha resultados da pesquisa.

Ligue-se ao Google Drive

As aplicações de IA podem pesquisar dados do Google Drive através da federação de dados, que obtém diretamente informações da origem de dados especificada. Uma vez que os dados não são copiados para o índice do Vertex AI Search, não tem de se preocupar com o armazenamento de dados.

Antes de começar

  • Tem de ter sessão iniciada na Google Cloud consola com a mesma conta que usa para a instância do Google Drive à qual planeia estabelecer ligação. As aplicações de IA usam o seu ID de cliente do Google Workspace para se ligarem ao Google Drive.
  • Verifique se todos os documentos estão acessíveis, colocando-os num disco partilhado que seja propriedade do domínio ou atribuindo a propriedade a um utilizador no domínio.

  • Ative as funcionalidades inteligentes do Google Workspace para associar dados do Google Drive a aplicações de IA. Para mais informações, consulte o artigo Ative ou desative as funcionalidades inteligentes do Google Workspace.

  • Se usar controlos de segurança, tenha em atenção as respetivas limitações relacionadas com os dados no Google Drive, conforme abordado na tabela seguinte:

    Controlo de segurança Tenha em atenção o seguinte
    Residência de dados (DRZ) As aplicações de IA só garantem a residência de dados em Google Cloud. Para informações sobre a residência de dados e o Google Drive, consulte as orientações de conformidade e a documentação do Google Workspace, por exemplo, Escolha a região onde os dados são armazenados e Soberania digital.
    Chaves de encriptação geridas pelo cliente (CMEK) As suas chaves apenas encriptam dados no interior de Google Cloud. Os controlos do Serviço de gestão de chaves na nuvem não se aplicam aos dados armazenados no Google Drive.
    Transparência de acesso Os registos da Transparência de acesso registam as ações realizadas pela equipa da Google no projeto Google Cloud . Também tem de rever os registos da Transparência de acesso criados pelo Google Workspace. Para mais informações, consulte o artigo Eventos de registo da Transparência de acesso na documentação de ajuda do administrador do Google Workspace.

Crie um arquivo de dados do Google Drive

Consola

Para usar a consola para tornar os dados do Google Drive pesquisáveis, siga estes passos:

  1. Na Google Cloud consola, aceda à página Aplicações de IA.

    Aplicações de IA

  2. No menu de navegação, clique em Armazenamentos de dados.

  3. Clique em Criar arquivo de dados.

  4. Na página Selecione uma origem de dados, selecione Google Drive.

  5. Especifique a origem da unidade para o seu repositório de dados.

    • Tudo: para adicionar toda a unidade ao repositório de dados.
    • Discos partilhados específicos: adicione o ID da pasta do disco partilhado.
    • Pastas partilhadas específicas: adicione o ID das pastas partilhadas.

    Para localizar o ID da pasta do disco partilhado ou o ID de uma pasta específica, navegue para o disco partilhado ou a pasta e copie o ID do URL. O URL segue este formato: https://drive.google.com/corp/drive/folders/ID.

    Por exemplo, https://drive.google.com/corp/drive/folders/123456789012345678901.

  6. Clique em Continuar.

  7. Escolha uma região para o seu repositório de dados.

  8. Introduza um nome para o seu repositório de dados.

  9. Opcional: para excluir os dados neste repositório de dados da utilização para conteúdo de IA generativa quando consulta dados através da app, clique em Opções de IA generativa e selecione Excluir das funcionalidades de IA generativa.

  10. Clique em Criar.

Mensagens de erro

A tabela seguinte descreve as mensagens de erro que pode encontrar quando trabalha com esta origem de dados da Google e inclui códigos de erro HTTP e passos de resolução de problemas sugeridos.

Código de erro Mensagem de erro Descrição Resolução de problemas
403 (Autorização recusada) A pesquisa com credenciais de contas de serviço não é suportada para armazenamentos de dados do Google Workspace. O motor pesquisado tem arquivos de dados do Google Workspace e as credenciais transmitidas são de uma conta de serviço. A pesquisa com credenciais de contas de serviço em arquivos de dados do Google Workspace não é suportada. Pesquisar chamadas através das credenciais do utilizador ou remover arquivos de dados do Google Workspace do motor.
403 (Autorização recusada) As contas de consumidor não são suportadas para arquivos de dados do Google Workspace. A pesquisa é chamada através de uma credencial de conta de consumidor (@gmail.com), que não é suportada para arquivos de dados do Google Workspace. Remova os arquivos de dados do Google Workspace do motor ou use uma Conta Google gerida.
403 (Autorização recusada) Falha de correspondência do ID de cliente para o arquivo de dados A pesquisa só é permitida para utilizadores que pertencem à mesma organização que os armazenamentos de dados do Google Workspace. Remova os arquivos de dados do Google Workspace do motor ou contacte o apoio técnico se o utilizador e os arquivos de dados do Google Workspace se destinarem a estar em organizações diferentes.
400 (Argumento inválido) O motor não pode conter lojas de dados predefinidos e partilhados do Google Drive. Não pode associar um repositório de dados que tenha todos os seus discos (predefinição) e um repositório de dados que tenha discos partilhados específicos à mesma app. Para associar uma nova origem de dados do Google Drive à sua app, primeiro, desassocie o arquivo de dados desnecessário e, em seguida, adicione o novo arquivo de dados que quer usar.

Resolução de problemas

Se a sua pesquisa não devolver o ficheiro que procura, pode dever-se às seguintes limitações do índice de pesquisa:

  • Só é possível extrair 1 MB de texto e dados de formatação do ficheiro para o tornar pesquisável.

  • Para a maioria dos tipos de ficheiros, o tamanho do ficheiro não pode exceder 10 MB. Seguem-se as exceções:

    • Os tipos de ficheiros XLSX não podem exceder 20 MB.
    • Os ficheiros PDF não podem exceder 30 MB.
    • Os ficheiros de texto não podem exceder 100 MB.
  • O reconhecimento ótico de carateres em ficheiros PDF está limitado a 80 páginas. Os PDFs com mais de 50 MB ou 80 páginas não são indexados, e as palavras-chave que excedam o limite de índice de 1 MB não são pesquisáveis.

Passos seguintes

  • Para anexar o seu arquivo de dados a uma app, crie uma app e selecione o seu arquivo de dados seguindo os passos em Crie uma app de pesquisa.

  • Para obter os resultados da pesquisa depois de configurar a app e o arquivo de dados, consulte o artigo Obtenha resultados da pesquisa.

Associe o Gmail

Siga os passos seguintes para criar um repositório de dados que se liga ao Gmail na consola Google Cloud . Depois de associar o repositório de dados, pode anexá-lo à sua app de pesquisa e pesquisar nos seus dados do Gmail.

Antes de começar

  • Tem de ter sessão iniciada na Google Cloud consola com a mesma conta que usa para a instância do Google Workspace que planeia associar. A Pesquisa da Vertex AI usa o seu ID de cliente do Google Workspace para se ligar ao Gmail.

Limitações

  • Se usar controlos de segurança, tenha em atenção as respetivas limitações relacionadas com os dados no Gmail, conforme abordado na tabela seguinte:

    Controlo de segurança Tenha em atenção o seguinte
    Residência de dados (DRZ) As aplicações de IA só garantem a residência de dados em Google Cloud. Para informações sobre a residência de dados e o Gmail, consulte as orientações de conformidade e a documentação do Google Workspace, por exemplo, Escolha a região onde os dados são armazenados e Soberania digital.
    Chaves de encriptação geridas pelo cliente (CMEK) As suas chaves apenas encriptam dados no interior de Google Cloud. Os controlos do Serviço de gestão de chaves na nuvem não se aplicam aos dados armazenados no Gmail.
    Transparência de acesso Os registos da Transparência de acesso registam as ações realizadas pela equipa da Google no projeto Google Cloud . Também tem de rever os registos da Transparência de acesso criados pelo Google Workspace. Para mais informações, consulte o artigo Eventos de registo da Transparência de acesso na documentação de ajuda do administrador do Google Workspace.

Crie um arquivo de dados do Gmail

Consola

Para usar a consola para tornar os dados do Gmail pesquisáveis, siga estes passos:

  1. Na Google Cloud consola, aceda à página Aplicações de IA.

    Aplicações de IA

  2. No menu de navegação, clique em Armazenamentos de dados.

  3. Clique em Criar arquivo de dados.

  4. Na página Selecione uma origem de dados, selecione Google Gmail.

  5. Escolha uma região para o seu repositório de dados.

  6. Introduza um nome para o seu repositório de dados.

  7. Clique em Criar.

  8. Siga os passos em Crie uma app de pesquisa e anexe o arquivo de dados criado a uma app do Vertex AI Search.

Mensagens de erro

A tabela seguinte descreve as mensagens de erro que pode encontrar quando trabalha com esta origem de dados da Google e inclui códigos de erro HTTP e passos de resolução de problemas sugeridos.

Código de erro Mensagem de erro Descrição Resolução de problemas
403 (Autorização recusada) A pesquisa com credenciais de contas de serviço não é suportada para armazenamentos de dados do Google Workspace. O motor pesquisado tem arquivos de dados do Google Workspace e as credenciais transmitidas são de uma conta de serviço. A pesquisa com credenciais de contas de serviço em arquivos de dados do Google Workspace não é suportada. Pesquisar chamadas através das credenciais do utilizador ou remover arquivos de dados do Google Workspace do motor.
403 (Autorização recusada) As contas de consumidor não são suportadas para arquivos de dados do Google Workspace. A pesquisa é chamada através de uma credencial de conta de consumidor (@gmail.com), que não é suportada para arquivos de dados do Google Workspace. Remova os arquivos de dados do Google Workspace do motor ou use uma Conta Google gerida.
403 (Autorização recusada) Falha de correspondência do ID de cliente para o arquivo de dados A pesquisa só é permitida para utilizadores que pertencem à mesma organização que os armazenamentos de dados do Google Workspace. Remova os arquivos de dados do Google Workspace do motor ou contacte o apoio técnico se o utilizador e os arquivos de dados do Google Workspace se destinarem a estar em organizações diferentes.
400 (Argumento inválido) O motor não pode conter lojas de dados predefinidos e partilhados do Google Drive. Não pode associar um repositório de dados que tenha todos os seus discos (predefinição) e um repositório de dados que tenha discos partilhados específicos à mesma app. Para associar uma nova origem de dados do Google Drive à sua app, primeiro, desassocie o arquivo de dados desnecessário e, em seguida, adicione o novo arquivo de dados que quer usar.

Passos seguintes

Associe o domínio ao Google Sites

Para pesquisar dados do Google Sites, siga os passos abaixo para criar um conetor através da Google Cloud consola.

Antes de começar:

  • Tem de ter sessão iniciada na Google Cloud consola com a mesma conta que usa para a instância do Google Workspace que planeia associar. A Pesquisa do Vertex AI usa o ID de cliente do Google Workspace para se ligar ao Google Sites.

  • Para aplicar o controlo de acesso à origem de dados e proteger os dados nas aplicações de IA, certifique-se de que configurou o seu fornecedor de identidade.

  • Se usar controlos de segurança, tenha em atenção as respetivas limitações relacionadas com os dados nos Sites Google, conforme abordado na tabela seguinte:

    Controlo de segurança Tenha em atenção o seguinte
    Residência de dados (DRZ) As aplicações de IA só garantem a residência de dados em Google Cloud. Para informações sobre a residência de dados e o Google Sites, consulte as orientações de conformidade e a documentação do Google Workspace, por exemplo, Escolha a região onde os dados são armazenados e Soberania digital.
    Chaves de encriptação geridas pelo cliente (CMEK) As suas chaves apenas encriptam dados no interior de Google Cloud. Os controlos do Serviço de gestão de chaves na nuvem não se aplicam aos dados armazenados no Google Sites.
    Transparência de acesso Os registos da Transparência de acesso registam as ações realizadas pela equipa da Google no projeto Google Cloud . Também tem de rever os registos da Transparência de acesso criados pelo Google Workspace. Para mais informações, consulte o artigo Eventos de registo da Transparência de acesso na documentação de ajuda do administrador do Google Workspace.

Consola

Para usar a consola para tornar os dados do Google Sites pesquisáveis, siga estes passos:

  1. Na Google Cloud consola, aceda à página Aplicações de IA.

    Aplicações de IA

  2. Aceda à página Armazenamentos de dados.

  3. Clique em Nova loja de dados.

  4. Na página Origem, selecione Google Sites.

  5. Escolha uma região para o seu repositório de dados.

  6. Introduza um nome para o seu repositório de dados.

  7. Clique em Criar.

Passos seguintes

  • Para anexar o seu arquivo de dados a uma app, crie uma app e selecione o seu arquivo de dados seguindo os passos em Crie uma app de pesquisa.

  • Para pré-visualizar o aspeto dos resultados da pesquisa depois de configurar a app e o arquivo de dados, consulte o artigo Obtenha resultados da pesquisa.

Associe ao Calendário Google

Para pesquisar dados do Calendário Google, siga os passos abaixo para criar um conetor através da Google Cloud consola.

Antes de começar

  • Tem de ter sessão iniciada na Google Cloud consola com a mesma conta que usa para a instância do Google Workspace que planeia associar. A Pesquisa da Vertex AI usa o seu ID de cliente do Google Workspace para se ligar ao Google Calendar.
  • Se usar controlos de segurança, tenha em atenção as respetivas limitações relacionadas com os dados no Calendário Google, conforme abordado na tabela seguinte:

    Controlo de segurança Tenha em atenção o seguinte
    Residência de dados (DRZ) As aplicações de IA só garantem a residência de dados em Google Cloud. Para obter informações sobre a residência de dados e o Google Calendar, consulte as orientações de conformidade e a documentação do Google Workspace, por exemplo, Escolha a região onde os dados são armazenados e Soberania digital.
    Chaves de encriptação geridas pelo cliente (CMEK) As suas chaves apenas encriptam dados no interior de Google Cloud. Os controlos do Serviço de gestão de chaves na nuvem não se aplicam aos dados armazenados no Calendário Google.
    Transparência de acesso Os registos da Transparência de acesso registam as ações realizadas pela equipa da Google no projeto Google Cloud . Também tem de rever os registos da Transparência de acesso criados pelo Google Workspace. Para mais informações, consulte o artigo Eventos de registo da Transparência de acesso na documentação de ajuda do administrador do Google Workspace.

Crie um arquivo de dados do Calendário Google

Consola

Para usar a consola para tornar os dados do Calendário Google pesquisáveis, siga estes passos:

  1. Na Google Cloud consola, aceda à página Aplicações de IA.

    Aplicações de IA

  2. No menu de navegação, clique em Armazenamentos de dados.

  3. Clique em Criar arquivo de dados.

  4. Na página Selecione uma origem de dados, selecione Calendário Google.

  5. Escolha uma região para o seu repositório de dados.

  6. Introduza um nome para o seu repositório de dados.

  7. Clique em Criar.

Mensagens de erro

A tabela seguinte descreve as mensagens de erro que pode encontrar quando trabalha com esta origem de dados da Google e inclui códigos de erro HTTP e passos de resolução de problemas sugeridos.

Código de erro Mensagem de erro Descrição Resolução de problemas
403 (Autorização recusada) A pesquisa com credenciais de contas de serviço não é suportada para armazenamentos de dados do Google Workspace. O motor pesquisado tem arquivos de dados do Google Workspace e as credenciais transmitidas são de uma conta de serviço. A pesquisa com credenciais de contas de serviço em arquivos de dados do Google Workspace não é suportada. Pesquisar chamadas através das credenciais do utilizador ou remover arquivos de dados do Google Workspace do motor.
403 (Autorização recusada) As contas de consumidor não são suportadas para arquivos de dados do Google Workspace. A pesquisa é chamada através de uma credencial de conta de consumidor (@gmail.com), que não é suportada para arquivos de dados do Google Workspace. Remova os arquivos de dados do Google Workspace do motor ou use uma Conta Google gerida.
403 (Autorização recusada) Falha de correspondência do ID de cliente para o arquivo de dados A pesquisa só é permitida para utilizadores que pertencem à mesma organização que os armazenamentos de dados do Google Workspace. Remova os arquivos de dados do Google Workspace do motor ou contacte o apoio técnico se o utilizador e os arquivos de dados do Google Workspace se destinarem a estar em organizações diferentes.
400 (Argumento inválido) O motor não pode conter lojas de dados predefinidos e partilhados do Google Drive. Não pode associar um repositório de dados que tenha todos os seus discos (predefinição) e um repositório de dados que tenha discos partilhados específicos à mesma app. Para associar uma nova origem de dados do Google Drive à sua app, primeiro, desassocie o arquivo de dados desnecessário e, em seguida, adicione o novo arquivo de dados que quer usar.

Passos seguintes

  • Para associar o seu repositório de dados a uma app, crie a app e, de seguida, selecione o seu repositório de dados seguindo as instruções em Crie uma app de pesquisa.

  • Para obter os resultados da pesquisa depois de configurar a app e o arquivo de dados, consulte o artigo Obtenha resultados da pesquisa.

Associe ao Grupos Google

Para pesquisar dados do Google Groups, siga estes passos para criar um conetor através da consola. Google Cloud

Antes de começar:

  • Tem de ter sessão iniciada na Google Cloud consola com a mesma conta que usa para a instância do Google Workspace que planeia associar. A Pesquisa da Vertex AI usa o seu ID de cliente do Google Workspace para se ligar aos Grupos Google.

  • Para aplicar o controlo de acesso à origem de dados e proteger os dados nas aplicações de IA, certifique-se de que configurou o seu fornecedor de identidade.

  • Se usar controlos de segurança, tenha em atenção as respetivas limitações relacionadas com os dados nos Grupos Google, conforme abordado na tabela seguinte:

    Controlo de segurança Tenha em atenção o seguinte
    Residência de dados (DRZ) As aplicações de IA só garantem a residência de dados em Google Cloud. Para informações sobre a residência de dados e o Google Groups, consulte as orientações de conformidade e a documentação do Google Workspace, por exemplo, Escolha a região onde os dados são armazenados e Soberania digital.
    Chaves de encriptação geridas pelo cliente (CMEK) As suas chaves apenas encriptam dados no interior de Google Cloud. Os controlos do Serviço de gestão de chaves na nuvem não se aplicam aos dados armazenados nos Grupos Google.
    Transparência de acesso Os registos da Transparência de acesso registam as ações realizadas pela equipa da Google no projeto Google Cloud . Também tem de rever os registos da Transparência de acesso criados pelo Google Workspace. Para mais informações, consulte o artigo Eventos de registo da Transparência de acesso na documentação de ajuda do administrador do Google Workspace.

Consola

Para usar a consola para tornar os dados do Google Groups pesquisáveis, siga estes passos:

  1. Na Google Cloud consola, aceda à página Aplicações de IA.

    Aplicações de IA

  2. Aceda à página Armazenamentos de dados.

  3. Clique em Nova loja de dados.

  4. Na página Origem, selecione Grupos Google.

  5. Escolha uma região para o seu repositório de dados.

  6. Introduza um nome para o seu repositório de dados.

  7. Clique em Criar. Consoante o tamanho dos seus dados, a carregamento pode demorar vários minutos a várias horas. Aguarde, pelo menos, uma hora antes de usar o seu repositório de dados para pesquisar.

Passos seguintes

  • Para anexar o seu arquivo de dados a uma app, crie uma app e selecione o seu arquivo de dados seguindo os passos em Crie uma app de pesquisa.

  • Para pré-visualizar o aspeto dos resultados da pesquisa depois de configurar a app e o arquivo de dados, consulte o artigo Obtenha resultados da pesquisa.

Importe do Cloud SQL

Para carregar dados do Cloud SQL, siga os passos abaixo para configurar o acesso ao Cloud SQL, criar um repositório de dados e carregar dados.

Configure o acesso ao contentor de preparação para instâncias do Cloud SQL

Quando carrega dados do Cloud SQL, os dados são primeiro preparados num contentor do Cloud Storage. Siga estes passos para conceder a uma instância do Cloud SQL acesso a contentores do Cloud Storage.

  1. Na Google Cloud consola, aceda à página SQL.

    SQL

  2. Clique na instância do Cloud SQL a partir da qual planeia importar.

  3. Copie o identificador da conta de serviço da instância, que se assemelha a um endereço de email, por exemplo, p9876-abcd33f@gcp-sa-cloud-sql.iam.gserviceaccount.com.

  4. Aceda à página IAM e administrador.

    IAM e administrador

  5. Clique em Conceder acesso.

  6. Para Novos principais, introduza o identificador da conta de serviço da instância e selecione a função Cloud Storage > Administrador de armazenamento.

  7. Clique em Guardar.

Seguinte:

Configure o acesso ao Cloud SQL a partir de um projeto diferente

Para conceder ao Vertex AI Search acesso a dados do Cloud SQL que se encontram num projeto diferente, siga estes passos:

  1. Substitua a variável PROJECT_NUMBER seguinte pelo número do seu projeto do Vertex AI Search e, em seguida, copie o conteúdo do bloco de código. Este é o identificador da sua conta de serviço do Vertex AI Search:

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com`
    
  2. Aceda à página IAM e administrador.

    IAM e administrador

  3. Mude para o seu projeto do Cloud SQL na página IAM e administrador e clique em Conceder acesso.

  4. Para Novos membros, introduza o identificador da conta de serviço e selecione a função Cloud SQL > Leitor do Cloud SQL.

  5. Clique em Guardar.

Em seguida, aceda a Importar dados do Cloud SQL.

Importe dados do Cloud SQL

Consola

Para usar a consola para carregar dados do Cloud SQL, siga estes passos:

  1. Na Google Cloud consola, aceda à página Aplicações de IA.

    Aplicações de IA

  2. Aceda à página Armazenamentos de dados.

  3. Clique em Nova loja de dados.

  4. Na página Origem, selecione Cloud SQL.

  5. Especifique o ID do projeto, o ID da instância, o ID da base de dados e o ID da tabela dos dados que planeia importar.

  6. Clique em Procurar e escolha uma localização intermédia do Cloud Storage para exportar dados e, de seguida, clique em Selecionar. Em alternativa, introduza a localização diretamente no campo gs://.

  7. Selecione se quer ativar a exportação sem servidor. A exportação sem servidor incorre em custos adicionais. Para obter informações sobre a exportação sem servidor, consulte o artigo Minimize the performance impact of exports na documentação do Cloud SQL.

  8. Clique em Continuar.

  9. Escolha uma região para o seu repositório de dados.

  10. Introduza um nome para o seu repositório de dados.

  11. Clique em Criar.

  12. Para verificar o estado do carregamento, aceda à página Armazenamentos de dados e clique no nome do armazenamento de dados para ver os respetivos detalhes na página Dados. Quando a coluna de estado no separador Atividade muda de Em curso para Importação concluída, a ingestão está concluída.

    Consoante o tamanho dos seus dados, a carregamento pode demorar vários minutos ou várias horas.

REST

Para usar a linha de comandos para criar um repositório de dados e carregar dados do Cloud SQL, siga estes passos:

  1. Crie um arquivo de dados.

    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"],
    }'
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto.
    • DATA_STORE_ID: o ID do armazenamento de dados. O ID só pode conter letras minúsculas, dígitos, sublinhados e hífenes.
    • DISPLAY_NAME: o nome a apresentar do arquivo de dados. Isto pode ser apresentado na Google Cloud consola.
  2. Importe dados do 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",
      }'
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto do Vertex AI Search.
    • DATA_STORE_ID: o ID do armazenamento de dados. O ID só pode conter letras minúsculas, dígitos, sublinhados e hífenes.
    • SQL_PROJECT_ID: o ID do seu projeto do Cloud SQL.
    • INSTANCE_ID: o ID da sua instância do Cloud SQL.
    • DATABASE_ID: o ID da sua base de dados do Cloud SQL.
    • TABLE_ID: o ID da sua tabela do Cloud SQL.
    • STAGING_DIRECTORY: opcional. Um diretório do Cloud Storage, por exemplo, gs://<your-gcs-bucket>/directory/import_errors.
    • RECONCILIATION_MODE: opcional. Os valores são FULL e INCREMENTAL. A predefinição é INCREMENTAL. A especificação de INCREMENTAL provoca uma atualização incremental dos dados do Cloud SQL para o seu repositório de dados. Esta ação faz uma operação de inserção/atualização, que adiciona novos documentos e substitui os documentos existentes por documentos atualizados com o mesmo ID. A especificação de FULL provoca uma nova base completa dos documentos no seu armazenamento de dados. Por outras palavras, os documentos novos e atualizados são adicionados ao seu armazenamento de dados e os documentos que não estão no Cloud SQL são removidos do seu armazenamento de dados. O modo FULL é útil se quiser eliminar automaticamente documentos de que já não precisa.

Python

Para mais informações, consulte a documentação de referência da API Python de aplicações de IA.

Para se autenticar em aplicações de IA, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

Crie um arquivo de dados


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

Importe documentos

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)

Passos seguintes

  • Para anexar o seu arquivo de dados a uma app, crie uma app e selecione o seu arquivo de dados seguindo os passos em Crie uma app de pesquisa.

  • Para pré-visualizar o aspeto dos resultados da pesquisa depois de configurar a app e o arquivo de dados, consulte o artigo Obtenha resultados da pesquisa.

Importe do Spanner

Para carregar dados do Spanner, siga os passos abaixo para criar um arquivo de dados e carregar dados através da Google Cloud consola ou da API.

Configure o acesso ao Spanner a partir de um projeto diferente

Se os seus dados do Spanner estiverem no mesmo projeto que o Vertex AI Search, avance para Importar dados do Spanner.

Para conceder ao Vertex AI Search acesso a dados do Spanner que se encontram num projeto diferente, siga estes passos:

  1. Substitua a variável PROJECT_NUMBER seguinte pelo número do seu projeto do Vertex AI Search e, em seguida, copie o conteúdo deste bloco de código. Este é o identificador da sua conta de serviço do Vertex AI Search:

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
    
  2. Aceda à página IAM e administrador.

    IAM e administrador

  3. Mude para o seu projeto do Spanner na página IAM e administrador e clique em Conceder acesso.

  4. Para Novos membros, introduza o identificador da conta de serviço e selecione uma das seguintes opções:

    • Se não usar o aumento de dados durante a importação, selecione a função Cloud Spanner > Leitor da base de dados do Cloud Spanner.
    • Se planeia usar o aumento de dados durante a importação, selecione a função Cloud Spanner > Administrador da base de dados do Cloud Spanner ou uma função personalizada com as autorizações de Leitor da base de dados do Cloud Spanner e spanner.databases.useDataBoost. Para informações sobre o Data Boost, consulte o artigo Vista geral do Data Boost na documentação do Spanner.
  5. Clique em Guardar.

Em seguida, aceda a Importar dados do Spanner.

Importe dados do Spanner

Consola

Para usar a consola para carregar dados do Spanner, siga estes passos:

  1. Na Google Cloud consola, aceda à página Aplicações de IA.

    Aplicações de IA

  2. Aceda à página Armazenamentos de dados.

  3. Clique em Nova loja de dados.

  4. Na página Origem, selecione Cloud Spanner.

  5. Especifique o ID do projeto, o ID da instância, o ID da base de dados e o ID da tabela dos dados que planeia importar.

  6. Selecione se quer ativar o aumento de dados. Para informações sobre o Data Boost, consulte o artigo Vista geral do Data Boost na documentação do Spanner.

  7. Clique em Continuar.

  8. Escolha uma região para o seu repositório de dados.

  9. Introduza um nome para o seu repositório de dados.

  10. Clique em Criar.

  11. Para verificar o estado do carregamento, aceda à página Armazenamentos de dados e clique no nome do armazenamento de dados para ver os respetivos detalhes na página Dados. Quando a coluna de estado no separador Atividade muda de Em curso para Importação concluída, a ingestão está concluída.

    Consoante o tamanho dos seus dados, a carregamento pode demorar vários minutos ou várias horas.

REST

Para usar a linha de comandos para criar um repositório de dados e carregar dados do Spanner, siga estes passos:

  1. Crie um arquivo de dados.

    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",
    }'
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto do Vertex AI Search.
    • DATA_STORE_ID: o ID do armazenamento de dados. O ID só pode conter letras minúsculas, dígitos, sublinhados e hífenes.
    • DISPLAY_NAME: o nome a apresentar do arquivo de dados. Isto pode ser apresentado na Google Cloud consola.
  2. Importe dados do 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",
      }'
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto do Vertex AI Search.
    • DATA_STORE_ID: o ID do armazenamento de dados.
    • SPANNER_PROJECT_ID: o ID do seu projeto do Spanner.
    • INSTANCE_ID: o ID da sua instância do Spanner.
    • DATABASE_ID: o ID da sua base de dados do Spanner.
    • TABLE_ID: o ID da sua tabela do Spanner.
    • DATA_BOOST_BOOLEAN: opcional. Se pretende ativar o Aumento de dados. Para obter informações sobre o Data Boost, consulte a vista geral do Data Boost na documentação do Spanner.
    • RECONCILIATION_MODE: opcional. Os valores são FULL e INCREMENTAL. A predefinição é INCREMENTAL. A especificação de INCREMENTAL provoca uma atualização incremental dos dados do Spanner para o seu repositório de dados. Esta ação executa uma operação de inserção/atualização, que adiciona novos documentos e substitui os documentos existentes por documentos atualizados com o mesmo ID. A especificação de FULL faz com que seja feita uma nova base completa dos documentos no seu armazenamento de dados. Por outras palavras, os documentos novos e atualizados são adicionados ao seu repositório de dados, e os documentos que não estão no Spanner são removidos do seu repositório de dados. O modo FULL é útil se quiser eliminar automaticamente documentos de que já não precisa.
    • AUTO_GENERATE_IDS: opcional. Especifica se os IDs dos documentos devem ser gerados automaticamente. Se estiver definido como true, os IDs dos documentos são gerados com base num hash da carga útil. Tenha em atenção que os IDs dos documentos gerados podem não permanecer consistentes em várias importações. Se gerar automaticamente IDs em várias importações, a Google recomenda vivamente definir reconciliationMode como FULL para manter IDs de documentos consistentes.

    • ID_FIELD: opcional. Especifica os campos que são os IDs dos documentos.

Python

Para mais informações, consulte a documentação de referência da API Python de aplicações de IA.

Para se autenticar em aplicações de IA, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

Crie um arquivo de dados


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

Importe documentos

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)

Passos seguintes

  • Para anexar o seu arquivo de dados a uma app, crie uma app e selecione o seu arquivo de dados seguindo os passos em Crie uma app de pesquisa.

  • Para pré-visualizar o aspeto dos resultados da pesquisa depois de configurar a app e o arquivo de dados, consulte o artigo Obtenha resultados da pesquisa.

Importe a partir do Firestore

Para carregar dados do Firestore, siga os passos abaixo para criar um repositório de dados e carregar dados através da Google Cloud consola ou da API.

Se os seus dados do Firestore estiverem no mesmo projeto que o Vertex AI Search, aceda a Importar dados do Firestore.

Se os seus dados do Firestore estiverem num projeto diferente do projeto do Vertex AI Search, aceda a Configurar o acesso ao Firestore.

Configure o acesso ao Firestore a partir de um projeto diferente

Para conceder ao Vertex AI Search acesso a dados do Firestore que se encontram num projeto diferente, siga estes passos:

  1. Substitua a variável PROJECT_NUMBER seguinte pelo número do seu projeto do Vertex AI Search e, em seguida, copie o conteúdo deste bloco de código. Este é o identificador da sua conta de serviço do Vertex AI Search:

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
    
  2. Aceda à página IAM e administrador.

    IAM e administrador

  3. Mude para o seu projeto do Firestore na página IAM e administrador e clique em Conceder acesso.

  4. Para Novos membros, introduza o identificador da conta de serviço da instância e selecione a função Datastore > Administrador de importação/exportação do Cloud Datastore.

  5. Clique em Guardar.

  6. Volte ao seu projeto do Vertex AI Search.

Em seguida, aceda a Importar dados do Firestore.

Importe dados do Firestore

Consola

Para usar a consola para carregar dados do Firestore, siga estes passos:

  1. Na Google Cloud consola, aceda à página Aplicações de IA.

    Aplicações de IA

  2. Aceda à página Armazenamentos de dados.

  3. Clique em Nova loja de dados.

  4. Na página Origem, selecione Firestore.

  5. Especifique o ID do projeto, o ID da base de dados e o ID da coleção dos dados que planeia importar.

  6. Clique em Continuar.

  7. Escolha uma região para o seu repositório de dados.

  8. Introduza um nome para o seu repositório de dados.

  9. Clique em Criar.

  10. Para verificar o estado do carregamento, aceda à página Armazenamentos de dados e clique no nome do armazenamento de dados para ver os respetivos detalhes na página Dados. Quando a coluna de estado no separador Atividade muda de Em curso para Importação concluída, a ingestão está concluída.

    Consoante o tamanho dos seus dados, a carregamento pode demorar vários minutos ou várias horas.

REST

Para usar a linha de comandos para criar um repositório de dados e carregar dados do Firestore, siga estes passos:

  1. Crie um arquivo de dados.

    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"],
    }'
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto.
    • DATA_STORE_ID: o ID do armazenamento de dados. O ID só pode conter letras minúsculas, dígitos, sublinhados e hífenes.
    • DISPLAY_NAME: o nome a apresentar do arquivo de dados. Isto pode ser apresentado na Google Cloud consola.
  2. Importe dados do 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",
      }'
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto do Vertex AI Search.
    • DATA_STORE_ID: o ID do armazenamento de dados. O ID só pode conter letras minúsculas, dígitos, sublinhados e hífenes.
    • FIRESTORE_PROJECT_ID: o ID do seu projeto do Firestore.
    • DATABASE_ID: o ID da sua base de dados do Firestore.
    • COLLECTION_ID: o ID da sua coleção do Firestore.
    • RECONCILIATION_MODE: opcional. Os valores são FULL e INCREMENTAL. A predefinição é INCREMENTAL. A especificação de INCREMENTAL provoca uma atualização incremental dos dados do Firestore para o seu arquivo de dados. Esta ação faz uma operação de inserção/atualização, que adiciona novos documentos e substitui os documentos existentes por documentos atualizados com o mesmo ID. A especificação de FULL provoca uma nova base completa dos documentos no seu armazenamento de dados. Por outras palavras, os documentos novos e atualizados são adicionados à sua loja de dados e os documentos que não estão no Firestore são removidos da sua loja de dados. O modo FULL é útil se quiser eliminar automaticamente documentos de que já não precisa.
    • AUTO_GENERATE_IDS: opcional. Especifica se os IDs dos documentos devem ser gerados automaticamente. Se estiver definido como true, os IDs dos documentos são gerados com base num hash da carga útil. Tenha em atenção que os IDs dos documentos gerados podem não permanecer consistentes em várias importações. Se gerar automaticamente IDs em várias importações, a Google recomenda vivamente definir reconciliationMode como FULL para manter IDs de documentos consistentes.
    • ID_FIELD: opcional. Especifica os campos que são os IDs dos documentos.

Python

Para mais informações, consulte a documentação de referência da API Python de aplicações de IA.

Para se autenticar em aplicações de IA, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

Crie um arquivo de dados


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

Importe documentos

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)

Passos seguintes

  • Para anexar o seu arquivo de dados a uma app, crie uma app e selecione o seu arquivo de dados seguindo os passos em Crie uma app de pesquisa.

  • Para pré-visualizar o aspeto dos resultados da pesquisa depois de configurar a app e o arquivo de dados, consulte o artigo Obtenha resultados da pesquisa.

Importe do Bigtable

Para carregar dados do Bigtable, siga os passos abaixo para criar um repositório de dados e carregar dados através da API.

Configure o acesso ao Bigtable

Para conceder ao Vertex AI Search acesso a dados do Bigtable que se encontram num projeto diferente, siga estes passos:

  1. Substitua a seguinte variável PROJECT_NUMBER pelo número do seu projeto do Vertex AI Search e, em seguida, copie o conteúdo deste bloco de código. Este é o identificador da sua conta de serviço do Vertex AI Search:

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com`
    
  2. Aceda à página IAM e administrador.

    IAM e administrador

  3. Mude para o seu projeto do Bigtable na página IAM e administrador e clique em Conceder acesso.

  4. Para Novos membros, introduza o identificador da conta de serviço da instância e selecione a função Bigtable > Leitor do Bigtable.

  5. Clique em Guardar.

  6. Volte ao seu projeto do Vertex AI Search.

Em seguida, aceda a Importar dados do Bigtable.

Importe dados do Bigtable

REST

Para usar a linha de comandos para criar um repositório de dados e carregar dados do Bigtable, siga estes passos:

  1. Crie um arquivo de dados.

    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"],
    }'
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto.
    • DATA_STORE_ID: o ID do armazenamento de dados. O ID só pode conter letras minúsculas, dígitos, sublinhados e hífenes.
    • DISPLAY_NAME: o nome a apresentar do arquivo de dados. Isto pode ser apresentado na Google Cloud consola.
  2. Importe dados do 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",
      }'
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto do Vertex AI Search.
    • DATA_STORE_ID: o ID do armazenamento de dados. O ID só pode conter letras minúsculas, dígitos, sublinhados e hífenes.
    • BIGTABLE_PROJECT_ID: o ID do seu projeto do Bigtable.
    • INSTANCE_ID: o ID da sua instância do Bigtable.
    • TABLE_ID: o ID da tabela do Bigtable.
    • KEY_FIELD_NAME: opcional, mas recomendado. O nome do campo a usar para o valor da chave da linha após a carregamento para o Vertex AI Search.
    • KEY: obrigatório. Um valor de string para a chave da família de colunas.
    • ENCODING: opcional. O modo de codificação dos valores quando o tipo não é STRING.Isto pode ser substituído para uma coluna específica listando essa coluna em columns e especificando uma codificação para a mesma.
    • COLUMN_TYPE: opcional. O tipo de valores nesta família de colunas.
    • QUALIFIER: obrigatório. Qualificador da coluna.
    • FIELD_NAME: opcional, mas recomendado. O nome do campo a usar para esta coluna após a carregamento para o Vertex AI Search.
    • COLUMN_ENCODING: opcional. O modo de codificação dos valores para uma coluna específica quando o tipo não é STRING.
    • RECONCILIATION_MODE: opcional. Os valores são FULL e INCREMENTAL. A predefinição é INCREMENTAL. A especificação de INCREMENTAL provoca uma atualização incremental dos dados do Bigtable para o seu repositório de dados. Esta ação faz uma operação de inserção/atualização, que adiciona novos documentos e substitui os documentos existentes por documentos atualizados com o mesmo ID. A especificação de FULL provoca uma nova base completa dos documentos no seu armazenamento de dados. Por outras palavras, os documentos novos e atualizados são adicionados ao seu arquivo de dados e os documentos que não estão no Bigtable são removidos do seu arquivo de dados. O modo FULL é útil se quiser eliminar automaticamente documentos de que já não precisa.
    • AUTO_GENERATE_IDS: opcional. Especifica se os IDs dos documentos devem ser gerados automaticamente. Se estiver definido como true, os IDs dos documentos são gerados com base num hash da carga útil. Tenha em atenção que os IDs dos documentos gerados podem não permanecer consistentes em várias importações. Se gerar automaticamente IDs em várias importações, a Google recomenda vivamente definir reconciliationMode como FULL para manter IDs de documentos consistentes.

      Especifique autoGenerateIds apenas quando bigquerySource.dataSchema estiver definido como custom. Caso contrário, é devolvido um erro INVALID_ARGUMENT. Se não especificar autoGenerateIds ou o definir como false, tem de especificar idField. Caso contrário, a importação dos documentos falha.

    • ID_FIELD: opcional. Especifica os campos que são os IDs dos documentos.

Python

Para mais informações, consulte a documentação de referência da API Python de aplicações de IA.

Para se autenticar em aplicações de IA, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

Crie um arquivo de dados


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

Importe documentos

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)

Passos seguintes

  • Para anexar o seu arquivo de dados a uma app, crie uma app e selecione o seu arquivo de dados seguindo os passos em Crie uma app de pesquisa.

  • Para pré-visualizar o aspeto dos resultados da pesquisa depois de configurar a app e o arquivo de dados, consulte o artigo Obtenha resultados da pesquisa.

Importe do AlloyDB para PostgreSQL

Para carregar dados do AlloyDB for PostgreSQL, siga os passos abaixo para criar um arquivo de dados e carregar dados através da Google Cloud consola ou da API.

Se os seus dados do AlloyDB para PostgreSQL estiverem no mesmo projeto que o projeto do Vertex AI Search, aceda a Importar dados do AlloyDB para PostgreSQL.

Se os seus dados do AlloyDB para PostgreSQL estiverem num projeto diferente do projeto do Vertex AI Search, aceda a Configurar o acesso ao AlloyDB para PostgreSQL.

Configure o acesso ao AlloyDB para PostgreSQL a partir de um projeto diferente

Para conceder ao Vertex AI Search acesso a dados do AlloyDB para PostgreSQL que se encontram num projeto diferente, siga estes passos:

  1. Substitua a variável PROJECT_NUMBER seguinte pelo número do seu projeto do Vertex AI Search e, em seguida, copie o conteúdo deste bloco de código. Este é o identificador da sua conta de serviço do Vertex AI Search:

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
    
  2. Mude para o Google Cloud projeto onde residem os seus dados do AlloyDB for PostgreSQL.

  3. Aceda à página IAM.

    IAM

  4. Clique em Conceder acesso.

  5. Para Novos membros, introduza o identificador da conta de serviço do Vertex AI Search e selecione a função Cloud AlloyDB > Administrador do Cloud AlloyDB.

  6. Clique em Guardar.

  7. Volte ao seu projeto do Vertex AI Search.

Em seguida, aceda a Importar dados do AlloyDB para PostgreSQL.

Importe dados do AlloyDB para PostgreSQL

Consola

Para usar a consola para carregar dados do AlloyDB for PostgreSQL, siga estes passos:

  1. Na Google Cloud consola, aceda à página Aplicações de IA.

    Aplicações de IA

  2. No menu de navegação, clique em Armazenamentos de dados.

  3. Clique em Criar arquivo de dados.

  4. Na página Origem, selecione AlloyDB.

  5. Especifique o ID do projeto, o ID da localização, o ID do cluster, o ID da base de dados e o ID da tabela dos dados que planeia importar.

  6. Clique em Continuar.

  7. Escolha uma região para o seu repositório de dados.

  8. Introduza um nome para o seu repositório de dados.

  9. Clique em Criar.

  10. Para verificar o estado do carregamento, aceda à página Armazenamentos de dados e clique no nome do armazenamento de dados para ver os respetivos detalhes na página Dados. Quando a coluna de estado no separador Atividade muda de Em curso para Importação concluída, a ingestão está concluída.

    Consoante o tamanho dos seus dados, a carregamento pode demorar vários minutos ou várias horas.

REST

Para usar a linha de comandos para criar um repositório de dados e carregar dados do AlloyDB para PostgreSQL, siga estes passos:

  1. Crie um arquivo de dados.

    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"],
    }'
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto.
    • DATA_STORE_ID: o ID do armazenamento de dados. O ID só pode conter letras minúsculas, dígitos, sublinhados e hífenes.
    • DISPLAY_NAME: o nome a apresentar do arquivo de dados. Isto pode ser apresentado na Google Cloud consola.
  2. Importe dados do AlloyDB para 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",
      }'
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto do Vertex AI Search.
    • DATA_STORE_ID: o ID do armazenamento de dados. O ID só pode conter letras minúsculas, dígitos, sublinhados e hífenes.
    • ALLOYDB_PROJECT_ID: o ID do seu projeto do AlloyDB for PostgreSQL.
    • LOCATION_ID: o ID da sua localização do AlloyDB for PostgreSQL.
    • CLUSTER_ID: o ID do seu cluster do AlloyDB for PostgreSQL.
    • DATABASE_ID: o ID da sua base de dados do AlloyDB for PostgreSQL.
    • TABLE_ID: o ID da sua tabela do AlloyDB for PostgreSQL.
    • RECONCILIATION_MODE: opcional. Os valores são FULL e INCREMENTAL. A predefinição é INCREMENTAL. A especificação de INCREMENTAL provoca uma atualização incremental dos dados do AlloyDB for PostgreSQL para o seu repositório de dados. Esta ação faz uma operação de inserção/atualização, que adiciona novos documentos e substitui os documentos existentes por documentos atualizados com o mesmo ID. A especificação de FULL provoca uma nova base completa dos documentos no seu armazenamento de dados. Por outras palavras, os documentos novos e atualizados são adicionados ao seu repositório de dados, e os documentos que não estão no AlloyDB for PostgreSQL são removidos do seu repositório de dados. O modo FULL é útil se quiser eliminar automaticamente documentos de que já não precisa.
    • AUTO_GENERATE_IDS: opcional. Especifica se os IDs dos documentos devem ser gerados automaticamente. Se estiver definido como true, os IDs dos documentos são gerados com base num hash da carga útil. Tenha em atenção que os IDs dos documentos gerados podem não permanecer consistentes em várias importações. Se gerar automaticamente IDs em várias importações, a Google recomenda vivamente definir reconciliationMode como FULL para manter IDs de documentos consistentes.
    • ID_FIELD: opcional. Especifica os campos que são os IDs dos documentos.

Python

Para mais informações, consulte a documentação de referência da API Python de aplicações de IA.

Para se autenticar em aplicações de IA, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.

Crie um arquivo de dados


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

Importe documentos

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)

Passos seguintes

  • Para anexar o seu arquivo de dados a uma app, crie uma app e selecione o seu arquivo de dados seguindo os passos em Crie uma app de pesquisa.

  • Para pré-visualizar o aspeto dos resultados da pesquisa depois de configurar a app e o arquivo de dados, consulte o artigo Obtenha resultados da pesquisa.

Carregue dados JSON estruturados com a API

Para carregar diretamente um documento ou um objeto JSON através da API, siga estes passos.

Antes de importar os dados, prepare os dados para carregamento.

REST

Para usar a linha de comandos para criar um repositório de dados e importar dados JSON estruturados, siga estes passos.

  1. Crie um arquivo de dados.

    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"]
    }'
    

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu projeto Google Cloud .
    • DATA_STORE_ID: o ID do arquivo de dados do Vertex AI Search que quer criar. Este ID só pode conter letras minúsculas, dígitos, sublinhados e hífenes.
    • DATA_STORE_DISPLAY_NAME: o nome a apresentar do arquivo de dados do Vertex AI que quer criar.
  2. Importe dados estruturados.

    Existem algumas abordagens que pode usar para carregar dados, incluindo:

    • Carregue um 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"
      }'
      

      Substitua o seguinte:

      • DOCUMENT_ID: um ID único para o documento. Este ID pode ter até 63 carateres e conter apenas letras minúsculas, dígitos, sublinhados e travessões.
      • JSON_DOCUMENT_STRING: o documento JSON como uma única string. Tem de estar em conformidade com o esquema JSON que forneceu no passo anterior, por exemplo:

        { \"title\": \"test title\", \"categories\": [\"cat_1\", \"cat_2\"], \"uri\": \"test uri\"}
        
    • Carregue um objeto 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
      }'
      

      Substitua JSON_DOCUMENT_OBJECT pelo documento JSON como um objeto JSON. Isto tem de estar em conformidade com o esquema JSON que forneceu no passo anterior. Por exemplo:

      ```json
      {
        "title": "test title",
        "categories": [
          "cat_1",
          "cat_2"
        ],
        "uri": "test uri"
      }
      ```
      
    • Atualize com um 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"
      }'
      
    • Atualize com um objeto 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
      }'
      

Passos seguintes

  • Para anexar o seu arquivo de dados a uma app, crie uma app e selecione o seu arquivo de dados seguindo os passos em Crie uma app de pesquisa.

  • Para pré-visualizar o aspeto dos resultados da pesquisa depois de configurar a app e o arquivo de dados, consulte o artigo Obtenha resultados da pesquisa.

Resolva problemas de carregamento de dados

Se tiver problemas com a carregamento de dados, reveja estas sugestões:

  • Se estiver a usar chaves de encriptação geridas pelo cliente e a importação de dados falhar (com a mensagem de erro The caller does not have permission), certifique-se de que a função de encriptar/desencriptar do CryptoKey do IAM (roles/cloudkms.cryptoKeyEncrypterDecrypter) na chave foi concedida ao agente do serviço Cloud Storage. Para mais informações, consulte a secção Antes de começar no artigo "Chaves de encriptação geridas pelo cliente".

  • Se estiver a usar a indexação avançada de Websites e a Utilização de documentos do arquivo de dados for muito inferior ao esperado, reveja os padrões de URL que especificou para a indexação e certifique-se de que os padrões de URL especificados abrangem as páginas que quer indexar e expanda-os, se necessário. Por exemplo, se usou *.en.example.com/*, pode ter de adicionar *.example.com/* aos sites que quer indexados.

Crie um repositório de dados com o Terraform

Pode usar o Terraform para criar um arquivo de dados vazio. Depois de criar o arquivo de dados vazio, pode introduzir dados no arquivo de dados através da Google Cloud consola ou de comandos da API.

Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.

Para criar um arquivo de dados vazio com o Terraform, consulte google_discovery_engine_data_store.