Criar um repositório de dados de pesquisa

Para criar um repositório de dados e ingerir dados para pesquisa, acesse a seção da fonte que você planeja usar:

Para sincronizar dados de uma fonte de dados de terceiros, consulte Conectar uma fonte de dados de terceiros.

Criar um repositório de dados usando o conteúdo do site

Use o procedimento a seguir para criar um repositório de dados e indexar sites.

Para usar um repositório de dados de site depois de criá-lo, anexe-o a um app que tenha os recursos empresariais ativados. Você pode ativar a Enterprise Edition para um app ao criá-lo. Isso gera custos adicionais. Consulte Criar um app de pesquisa e Sobre os recursos avançados.

Console

Para usar o console do Google Cloud para criar um repositório de dados e indexar sites, siga estas etapas:

  1. No console Google Cloud , acesse a página Aplicativos de IA.

    Aplicativos de IA

  2. No menu de navegação, clique em Repositórios de dados.

  3. Clique em Criar repositório de dados.

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

  5. Escolha se quer ativar a indexação avançada de sites para esse repositório de dados. Essa opção não pode ser ativada ou desativada depois.

    A indexação avançada de sites oferece recursos adicionais, como resumo da pesquisa, pesquisa com acompanhamentos e respostas extrativas. A indexação avançada de sites tem um custo adicional e exige que você verifique a propriedade do domínio de qualquer site que indexar. Para mais informações, consulte Indexação avançada de sites e Preços.

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

  7. Opcional: no campo Sites a serem excluídos, insira padrões de URL que você quer excluir do repositório de dados.

    Os sites excluídos têm prioridade sobre os incluídos. Portanto, se você incluir example.com/docs/*, mas excluir example.com, nenhum site será indexado. Para mais informações, consulte Dados do site.

  8. Clique em Continuar.

  9. Selecione um local para o repositório de dados.

    • Ao criar um repositório de dados básico de pesquisa no site, essa opção sempre é definida como global (Global).
    • Ao criar um repositório de dados com indexação avançada de sites, você pode selecionar um local. Como os sites indexados precisam ser públicos, o Google recomenda que você selecione global (Global) como seu local. Isso garante a máxima disponibilidade de todos os serviços de pesquisa e resposta e elimina as limitações dos repositórios de dados regionais.
  10. Insira um nome para o repositório de dados.

  11. Clique em Criar. A Vertex AI para Pesquisa cria e exibe os repositórios de dados na página Repositórios de dados.

  12. Para conferir informações sobre seu repositório de dados, clique no nome dele na coluna Nome. A página do repositório de dados vai aparecer.

    • Se você ativou a indexação avançada de sites, um aviso vai aparecer pedindo para verificar os domínios no seu repositório de dados.
    • Se você tiver uma falta de cota (o número de páginas nos sites especificados excede a cota "Número de documentos por projeto"), um aviso adicional vai aparecer solicitando que você faça upgrade da cota.
  13. Para verificar os domínios dos padrões de URL no seu repositório de dados, siga as instruções na página Verificar domínios de sites.

  14. Para fazer upgrade da cota, siga estas etapas:

    1. Clique em Fazer upgrade da cota. A página IAM e administrador do console Google Cloud aparece.
    2. Siga as instruções em Solicitar um limite de cota maior na documentação do Google Cloud . A cota a ser aumentada é Número de documentos no serviço API Discovery Engine.
    3. Depois de enviar o pedido de um limite de cota maior, volte para a página Aplicativos de IA e clique em Repositórios de dados no menu de navegação.
    4. Clique no nome do repositório de dados na coluna Nome. A coluna Status indica que a indexação está em andamento para os sites que excederam a cota. Quando a coluna Status de um URL mostra Indexado, os recursos de indexação avançada de sites estão disponíveis para esse URL ou padrão de URL.

    Para mais informações, consulte Cota para indexação de páginas da Web na página "Cotas e limites".

Python

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

Para autenticar no AI Applications, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Criar um repositório 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

Importar sites

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

Próximas etapas

Importar do BigQuery

A Pesquisa da Vertex AI permite pesquisar dados do BigQuery.

É possível criar repositórios de dados com base em tabelas do BigQuery de duas maneiras:

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

  • Ingestão periódica: você 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 armazenamentos de dados são atualizados com os dados mais recentes do conjunto de dados do BigQuery.

A tabela a seguir compara as duas maneiras de importar dados do BigQuery para repositórios de dados da Pesquisa da Vertex AI.

Ingestão única Ingestão periódica
Disponibilidade geral (GA). Pré-lançamento público.
Os dados precisam ser atualizados manualmente. Os dados são atualizados automaticamente a cada 1, 3 ou 5 dias. Não é possível atualizar os dados manualmente.
A Pesquisa da Vertex AI cria um único repositório de dados com base em uma tabela do BigQuery. A Vertex AI Search cria um conector de dados para um conjunto de dados do BigQuery e um repositório de dados (chamado de repositório de dados de entidade) para cada tabela especificada. Para cada conector de dados, as tabelas precisam ter o mesmo tipo de dados (por exemplo, estruturados) e estar no mesmo conjunto de dados do BigQuery.
Os dados de várias tabelas podem ser combinados em um repositório de dados. Primeiro, ingira os dados de uma tabela e depois mais dados de outra fonte ou tabela do BigQuery. Como a importação manual de dados não é compatível, os dados em um repositório de dados de entidade só podem ser originados de uma tabela do BigQuery.
O controle de acesso à fonte de dados é compatível. O controle de acesso à fonte de dados não é compatível. Os dados importados podem conter controles de acesso, mas eles não serão respeitados.
É possível criar um repositório de dados usando o consoleGoogle Cloud ou a API. Você precisa usar o console para criar conectores de dados e os armazenamentos de dados de entidades deles.
Compatível com CMEK. Compatível com CMEK.

Importar uma vez do BigQuery

Para ingerir dados de uma tabela do BigQuery, siga estas etapas para criar um repositório de dados e ingerir dados usando o console Google Cloud ou a API.

Antes de importar seus dados, consulte Preparar dados para ingestão.

Console

Para usar o console Google Cloud e ingerir dados do BigQuery, siga estas etapas:

  1. No console Google Cloud , acesse a página Aplicativos de IA.

    Aplicativos de IA

  2. Acesse a página Repositórios de dados.

  3. Clique em Criar repositório de dados.

  4. Na página Origem, selecione BigQuery.

  5. Selecione o tipo de dados que você vai importar na seção Que tipo de dados você está importando?.

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

  7. No campo Caminho do BigQuery, clique em Procurar, selecione uma tabela que você preparou para ingestão e clique em Selecionar. Se preferir, insira o local da tabela diretamente no campo Caminho do BigQuery.

  8. Clique em Continuar.

  9. Se você estiver fazendo uma importação única de dados estruturados:

    1. Mapeie campos para propriedades principais.

    2. Se houver campos importantes faltando no esquema, use Adicionar novo campo para incluir.

      Para mais informações, consulte Sobre a detecção e edição automáticas.

    3. Clique em Continuar.

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

  11. Insira um nome para o repositório de dados.

  12. Clique em Criar.

  13. Para verificar o status da ingestão, acesse a página Repositórios de dados e clique no nome do repositório de dados para conferir os detalhes na página Dados. Quando a coluna de status na guia Atividade mudar de Em andamento para Importação concluída, a ingestão será concluída.

    Dependendo do tamanho dos dados, a ingestão pode levar de vários minutos a várias horas.

REST

Para usar a linha de comando e criar um repositório de dados e importar dados do BigQuery, siga estas etapas.

  1. Crie um repositório 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:

    • PROJECT_ID: o ID do seu Google Cloud projeto.
    • DATA_STORE_ID: o ID do repositório de dados da Vertex AI para Pesquisa que você quer criar. Esse ID só pode conter letras minúsculas, dígitos, sublinhados e hífens.
    • DATA_STORE_DISPLAY_NAME: o nome de exibição do repositório de dados da Vertex AI para Pesquisa que você quer criar.

    Opcional: se você estiver enviando dados não estruturados e quiser configurar a análise de documentos ou ativar a divisão de documentos para RAG, especifique o objeto documentProcessingConfig e inclua-o na solicitação de criação do repositório de dados. Recomendamos configurar um analisador de OCR para PDFs se você estiver ingerindo PDFs digitalizados. Para saber como configurar opções de análise ou divisão em partes, consulte Analisar e dividir documentos.

  2. Importe dados do BigQuery.

    Se você definiu um esquema, verifique se os dados estão em conformidade com ele.

    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:

    • PROJECT_ID: o ID do seu Google Cloud projeto.
    • DATA_STORE_ID: o ID do repositório de dados da Vertex AI para Pesquisa.
    • 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, conceda à conta de serviço service-<project number>@gcp-sa-discoveryengine.iam.gserviceaccount.com a permissão "Leitor de dados do BigQuery" para a tabela do BigQuery. Por exemplo, se você estiver importando uma tabela do BigQuery do projeto de origem "123" para o projeto de destino "456", conceda permissõ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. O padrão é document.
      • document: a tabela do BigQuery usada precisa estar de acordo com o esquema padrão do BigQuery fornecido em Preparar dados para ingestão. Você pode definir o ID de cada documento e incluir todos os dados na string jsonData.
      • custom: qualquer esquema de tabela do BigQuery é aceito, e a Vertex AI Search gera automaticamente os IDs de cada documento importado.
    • 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. O Google recomenda deixar esse campo em branco para permitir que a Vertex AI para Pesquisa crie automaticamente um diretório temporário.
    • RECONCILIATION_MODE: opcional. Os valores são FULL e INCREMENTAL. O padrão é INCREMENTAL. Especificar INCREMENTAL causa uma atualização incremental de dados do BigQuery para seu repositório de dados. Isso faz uma operação de upsert, que adiciona novos documentos e substitui os documentos existentes por documentos atualizados com o mesmo ID. Especificar FULL causa uma rebase completa dos documentos no repositório de dados. Em outras palavras, documentos novos e atualizados são adicionados ao repositório de dados, e os documentos que não estão no BigQuery são removidos dele. O modo FULL é útil se você quiser excluir automaticamente documentos que não precisa mais.
    • AUTO_GENERATE_IDS: opcional. Especifica se os IDs de documentos serão gerados automaticamente. Se definido como true, os IDs de documento serão gerados com base em um hash do payload. Os IDs de documentos gerados podem não permanecer consistentes em várias importações. Se você gerar IDs automaticamente em várias importações, o Google recomenda definir reconciliationMode como FULL para manter IDs de documento consistentes.

      Especifique autoGenerateIds somente quando bigquerySource.dataSchema estiver definido como custom. Caso contrário, um erro INVALID_ARGUMENT será retornado. Se você não especificar autoGenerateIds ou definir como false, precisará especificar idField. Caso contrário, a importação dos documentos vai falhar.

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

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

      O valor do nome da coluna do BigQuery precisa ser do tipo string, ter entre 1 e 63 caracteres e estar de acordo com a RFC-1034. Caso contrário, a importação dos documentos vai falhar.

C#

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

Para autenticar no AI Applications, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Criar um repositório 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;
        }
    }
}

Importar 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 aplicativos de IA.

Para autenticar no AI Applications, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Criar um repositório 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
}

Importar 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 aplicativos de IA.

Para autenticar no AI Applications, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Criar um repositório 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();
    }
  }
}

Importar 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 aplicativos de IA.

Para autenticar no AI Applications, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Criar um repositório 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();

Importar 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 aplicativos de IA.

Para autenticar no AI Applications, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Criar um repositório 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

Importar 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 aplicativos de IA.

Para autenticar no AI Applications, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Criar um repositório 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

Importar 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

Conectar-se ao BigQuery com sincronização periódica

Antes de importar seus dados, consulte Preparar dados para ingestão.

O procedimento a seguir descreve como criar um conector de dados que associa um conjunto de dados do BigQuery a um conector de dados da Pesquisa da Vertex AI e como especificar uma tabela no conjunto de dados para cada repositório de dados que você quer criar. Os repositórios de dados filhos de conectores de dados são chamados de repositórios de dados de entidade.

Os dados do conjunto de dados são sincronizados periodicamente com os repositórios de dados de entidades. É possível especificar a sincronização diária, a cada três dias ou a cada cinco dias.

Console

Para usar o console do Google Cloud e criar um conector que sincroniza dados periodicamente de um conjunto de dados do BigQuery para a Pesquisa da Vertex AI, siga estas etapas:

  1. No console Google Cloud , acesse a página Aplicativos de IA.

    Aplicativos de IA

  2. No menu de navegação, clique em Repositórios de dados.

  3. Clique em Criar repositório de dados.

  4. Na página Origem, selecione BigQuery.

  5. Selecione o tipo de dados que você está importando.

  6. Clique em Periódica.

  7. Selecione a Frequência de sincronização, ou seja, a frequência com que você quer que o conector da Pesquisa da Vertex AI seja sincronizado com o conjunto de dados do BigQuery. É possível mudar a frequência depois.

  8. No campo Caminho do conjunto de dados do BigQuery, clique em Procurar e selecione o conjunto de dados que contém as tabelas preparadas para ingestão. Ou insira o local da tabela diretamente no campo Caminho do BigQuery. O formato do caminho é projectname.datasetname.

  9. No campo Tabelas a serem sincronizadas, clique em Procurar e selecione uma tabela que contenha os dados desejados para o repositório de dados.

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

  11. Clique em Continuar.

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

    Agora você criou um conector de dados que vai sincronizar periodicamente os dados com o conjunto de dados do BigQuery. e você criou um ou mais repositórios de dados de entidades. Os repositórios de dados têm os mesmos nomes das tabelas do BigQuery.

  13. Para verificar o status da ingestão, acesse a página Repositórios de dados e clique no nome do conector de dados para conferir os detalhes na página Dados > guia Atividade de ingestão de dados. Quando a coluna de status na guia Atividade mudar de Em andamento para Concluída, a primeira ingestão será concluída.

    Dependendo do tamanho dos dados, a ingestão pode levar de vários minutos a várias horas.

Depois de configurar a fonte de dados e importar os dados pela primeira vez, o repositório de dados sincroniza as informações dessa fonte com uma frequência que você seleciona durante a configuração. Cerca de uma hora depois da criação do conector de dados, a primeira sincronização ocorre. A próxima sincronização ocorre cerca de 24, 72 ou 120 horas depois.

Próximas etapas

  • Para anexar seu repositório de dados a um app, crie um app e selecione o repositório seguindo as etapas em Criar um app de pesquisa.

  • Para ver como os resultados da pesquisa aparecem depois que o app e o repositório de dados são configurados, consulte Receber resultados da pesquisa.

Importar do Cloud Storage

É possível criar repositórios de dados com tabelas do Cloud Storage de duas maneiras:

  • Ingestão única: você importa dados de uma pasta ou arquivo do Cloud Storage para um repositório de dados. Os dados no repositório de dados não mudam, a menos que você atualize manualmente.

  • Ingestão periódica: você importa dados de uma pasta ou arquivo 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 desse local do Cloud Storage.

A tabela a seguir compara as duas maneiras de importar dados do Cloud Storage para repositórios de dados da Vertex AI para Pesquisa.

Ingestão única Ingestão periódica
Disponibilidade geral (GA). Pré-lançamento público.
Os dados precisam 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.
A Pesquisa da Vertex AI cria um único repositório de dados de uma pasta ou arquivo no Cloud Storage. A Vertex AI para Pesquisa cria um conector de dados e associa a ele um repositório de dados (chamado de repositório de dados de entidade) para o arquivo ou a pasta especificados. Cada conector de dados do Cloud Storage pode ter um único repositório de dados de entidade.
É possível combinar dados de vários arquivos, pastas e buckets em um repositório de dados. Para isso, primeiro ingira dados de um local do Cloud Storage e depois de outro. Como a importação manual de dados não é compatível, os dados em um repositório de dados de entidade só podem ser originados de um arquivo ou pasta do Cloud Storage.
O controle de acesso à fonte de dados é compatível. Para mais informações, consulte Controle de acesso à fonte de dados. O controle de acesso à fonte de dados não é compatível. Os dados importados podem conter controles de acesso, mas eles não serão respeitados.
É possível criar um repositório de dados usando o consoleGoogle Cloud ou a API. Você precisa usar o console para criar conectores de dados e os armazenamentos de dados de entidades deles.
Compatível com CMEK. Compatível com CMEK.

Importar uma vez do Cloud Storage

Para ingerir dados do Cloud Storage, siga estas etapas para criar um repositório de dados e ingerir dados usando o console do Google Cloud ou a API.

Antes de importar seus dados, consulte Preparar dados para ingestão.

Console

Para usar o console e ingerir dados de um bucket do Cloud Storage, siga estas etapas:

  1. No console Google Cloud , acesse a página Aplicativos de IA.

    Aplicativos de IA

  2. Acesse a página Repositórios de dados.

  3. Clique em Criar repositório de dados.

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

  5. Na seção Selecionar uma pasta ou um arquivo para importar, escolha Pasta ou Arquivo.

  6. Clique em Procurar, escolha os dados que você preparou para ingestão e clique em Selecionar. Se preferir, insira o local diretamente no campo gs://.

  7. Selecione o tipo de dados que você está importando.

  8. Clique em Continuar.

  9. Se você estiver fazendo uma importação única de dados estruturados:

    1. Mapeie campos para propriedades principais.

    2. Se houver campos importantes faltando no esquema, use Adicionar novo campo para incluir.

      Para mais informações, consulte Sobre a detecção e edição automáticas.

    3. Clique em Continuar.

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

  11. Insira um nome para o repositório de dados.

  12. Opcional: se você selecionou documentos não estruturados, é possível escolher opções de análise e divisão em partes para eles. Para comparar analisadores, consulte Analisar documentos. Para informações sobre fragmentação, consulte Fragmentar documentos para RAG.

    O analisador de OCR e o analisador de layout podem gerar custos adicionais. Consulte os preços dos recursos da Document AI.

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

  13. Clique em Criar.

  14. Para verificar o status da ingestão, acesse a página Repositórios de dados e clique no nome do repositório de dados para conferir os detalhes na página Dados. Quando a coluna de status na guia Atividade mudar de Em andamento para Importação concluída, a ingestão será concluída.

    Dependendo do tamanho dos dados, a ingestão pode levar de vários minutos a várias horas.

REST

Para usar a linha de comando e criar um repositório de dados e ingerir dados do Cloud Storage, siga estas etapas.

  1. Crie um repositório 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:

    • PROJECT_ID: o ID do seu Google Cloud projeto.
    • DATA_STORE_ID: o ID do repositório de dados da Vertex AI para Pesquisa que você quer criar. Esse ID só pode conter letras minúsculas, dígitos, sublinhados e hífens.
    • DATA_STORE_DISPLAY_NAME: o nome de exibição do repositório de dados da Vertex AI para Pesquisa que você quer criar.

    Opcional: se você estiver enviando dados não estruturados e quiser configurar a análise de documentos ou ativar a divisão de documentos para RAG, especifique o objeto documentProcessingConfig e inclua-o na solicitação de criação do repositório de dados. Recomendamos configurar um analisador de OCR para PDFs se você estiver ingerindo PDFs digitalizados. Para saber como configurar opções de análise ou divisão em partes, consulte Analisar e dividir documentos.

  2. Importa 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:

    • PROJECT_ID: o ID do seu Google Cloud projeto.
    • DATA_STORE_ID: o ID do repositório de dados da Vertex AI para Pesquisa.
    • INPUT_FILE_PATTERN: um padrão de arquivo no Cloud Storage que contém seus documentos.

      Para dados estruturados ou não estruturados com metadados, um exemplo de padrão de arquivo de entrada é gs://<your-gcs-bucket>/directory/object.json, e um exemplo de correspondência de padrão com um ou mais arquivos é gs://<your-gcs-bucket>/directory/*.json.

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

      Se <your-gcs-bucket> não estiver em PROJECT_ID, será necessário conceder à conta de serviço as permissões service-<project number>@gcp-sa-discoveryengine.iam.gserviceaccount.com "Leitor de objetos do Storage" para o bucket do Cloud Storage. Por exemplo, se você estiver importando um bucket do Cloud Storage do projeto de origem "123" para o projeto de destino "456", conceda permissões de service-456@gcp-sa-discoveryengine.iam.gserviceaccount.com no bucket do Cloud Storage no projeto "123".

    • DATA_SCHEMA: opcional. Os valores são document, custom, csv e content. O padrão é document.

      • document: faça upload de dados não estruturados com metadados para documentos não estruturados. Cada linha do arquivo precisa seguir um dos seguintes formatos. É possível 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: faça upload de JSON para documentos estruturados. Os dados são organizados de acordo com um esquema. É possível especificar o esquema. Caso contrário, ele será detectado automaticamente. Você pode colocar a string JSON do documento em um formato consistente diretamente em cada linha, e a Pesquisa da Vertex AI gera automaticamente os IDs de cada documento importado.

      • content: faça upload de documentos não estruturados (PDF, HTML, DOC, TXT, PPTX). O ID de cada documento é gerado automaticamente como os primeiros 128 bits de SHA256(GCS_URI) codificados como uma string hexadecimal. É possível especificar vários padrões de arquivo de entrada, desde que os arquivos correspondentes não excedam o limite de 100 mil arquivos.

      • csv: inclua uma linha de cabeçalho no arquivo CSV, com cada cabeçalho mapeado para um campo do documento. Especifique o caminho para o arquivo CSV usando o 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. O Google recomenda deixar esse campo em branco para permitir que a Vertex AI Search crie automaticamente um diretório temporário.

    • RECONCILIATION_MODE: opcional. Os valores são FULL e INCREMENTAL. O padrão é INCREMENTAL. Especificar INCREMENTAL causa uma atualização incremental de dados do Cloud Storage para seu repositório de dados. Isso faz uma operação de upsert, que adiciona novos documentos e substitui os documentos atuais por documentos atualizados com o mesmo ID. Especificar FULL causa uma rebase completa dos documentos no seu repositório de dados. Em outras palavras, documentos novos e atualizados são adicionados ao repositório de dados, e os que não estão no Cloud Storage são removidos. O modo FULL é útil se você quiser excluir automaticamente documentos que não são mais necessários.

    • AUTO_GENERATE_IDS: opcional. Especifica se os IDs de documentos serão gerados automaticamente. Se definido como true, os IDs de documento serão gerados com base em um hash do payload. Os IDs de documentos gerados podem não permanecer consistentes em várias importações. Se você gerar IDs automaticamente em várias importações, o Google recomenda definir reconciliationMode como FULL para manter IDs de documento consistentes.

      Especifique autoGenerateIds apenas quando gcsSource.dataSchema estiver definido como custom ou csv. Caso contrário, um erro INVALID_ARGUMENT será retornado. Se você não especificar autoGenerateIds ou definir como false, precisará especificar idField. Caso contrário, a importação dos documentos vai falhar.

    • ID_FIELD: opcional. Especifica quais campos são os IDs de documento. 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 em um dos seus documentos, especifique "idField":"my_id". Isso identifica todos os campos JSON com o nome "my_id" como IDs de documento.

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

      O valor do campo JSON do Cloud Storage precisa ser do tipo string, ter entre 1 e 63 caracteres e estar em conformidade com a RFC-1034. Caso contrário, os documentos não serão importados.

      O nome do campo JSON especificado por id_field precisa ser do tipo string, ter entre 1 e 63 caracteres e estar de acordo com a RFC-1034. Caso contrário, os documentos não serão importados.

C#

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

Para autenticar no AI Applications, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Criar um repositório 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;
        }
    }
}

Importar 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 aplicativos de IA.

Para autenticar no AI Applications, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Criar um repositório 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
}

Importar 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 aplicativos de IA.

Para autenticar no AI Applications, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Criar um repositório 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();
    }
  }
}

Importar 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 aplicativos de IA.

Para autenticar no AI Applications, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Criar um repositório 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();

Importar 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 aplicativos de IA.

Para autenticar no AI Applications, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Criar um repositório 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

Importar 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 aplicativos de IA.

Para autenticar no AI Applications, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Criar um repositório 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

Importar 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

Conectar-se ao Cloud Storage com sincronização periódica

Antes de importar seus dados, consulte Preparar dados para ingestão.

O procedimento a seguir descreve como criar um conector de dados que associa um local do Cloud Storage a um conector de dados da Pesquisa da Vertex AI e como especificar uma pasta ou um arquivo nesse local para o repositório de dados que você quer criar. Os repositórios de dados filhos de conectores de dados são chamados de repositórios de dados de entidade.

Os dados são sincronizados periodicamente com o repositório de dados da entidade. É possível especificar a sincronização diária, a cada três dias ou a cada cinco dias.

Console

  1. No console Google Cloud , acesse a página Aplicativos de IA.

    Aplicativos de IA

  2. Acesse a página Repositórios de dados.

  3. Clique em Criar repositório de dados.

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

  5. Selecione o tipo de dados que você está importando.

  6. Clique em Periódica.

  7. Selecione a Frequência de sincronização, ou seja, com que frequência você quer que o conector da Pesquisa da Vertex AI seja sincronizado com o local do Cloud Storage. É possível mudar a frequência depois.

  8. Na seção Selecionar uma pasta ou um arquivo para importar, escolha Pasta ou Arquivo.

  9. Clique em Procurar, escolha os dados que você preparou para ingestão e clique em Selecionar. Se preferir, insira o local diretamente no campo gs://.

  10. Clique em Continuar.

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

  12. Insira um nome para o conector de dados.

  13. Opcional: se você selecionou documentos não estruturados, é possível escolher opções de análise e divisão em partes para eles. Para comparar analisadores, consulte Analisar documentos. Para informações sobre fragmentação, consulte Fragmentar documentos para RAG.

    O analisador de OCR e o analisador de layout podem gerar custos adicionais. Consulte os preços dos recursos da Document AI.

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

  14. Clique em Criar.

    Você criou um conector de dados que sincroniza periodicamente os dados com o local do Cloud Storage. Você também criou um repositório de dados de entidade chamado gcs_store.

  15. Para verificar o status da ingestão, acesse a página Repositórios de dados e clique no nome do conector para conferir os detalhes na página Dados.

    Guia Atividade de ingestão de dados. Quando a coluna de status na guia Atividade de ingestão de dados mudar de Em andamento para Concluída, a primeira ingestão será concluída.

    Dependendo do tamanho dos dados, a ingestão pode levar de vários minutos a várias horas.

Depois de configurar a fonte de dados e importar os dados pela primeira vez, eles serão sincronizados dessa fonte com a frequência selecionada durante a configuração. Cerca de uma hora depois da criação do conector de dados, a primeira sincronização ocorre. A próxima sincronização ocorre cerca de 24, 72 ou 120 horas depois.

Próximas etapas

  • Para anexar seu repositório de dados a um app, crie um app e selecione o repositório seguindo as etapas em Criar um app de pesquisa.

  • Para ver como os resultados da pesquisa aparecem depois que o app e o repositório de dados são configurados, consulte Receber resultados da pesquisa.

Conectar ao Google Drive

Para pesquisar dados do Google Drive, use um dos seguintes métodos para criar um conector usando o console Google Cloud :

  • Usar federação de dados: recebe as informações necessárias diretamente da fonte de dados especificada. Os dados não são copiados para o índice da Vertex AI para Pesquisa.

Antes de começar

  • Faça login no console Google Cloud com a mesma conta usada na instância do Google Drive que você quer conectar. Os aplicativos de IA usam seu ID de cliente do Google Workspace para se conectar ao Google Drive.
  • Determine o provedor de identidade para que os usuários façam login no app. Se você usar um provedor de identidade de terceiros, um administrador precisará federar seu provedor de identidade com o Google Workspace. A federação exige planejamento e configuração. Para mais informações, consulte Usar o controle de acesso à fonte de dados.
  • A pesquisa avançada do Google Drive está em prévia particular. Esse recurso é um pré-requisito para usar o resumo e a pesquisa com acompanhamentos com um repositório de dados do Google Drive. Para usar esse recurso, siga as etapas em Usar a indexação avançada do Drive.
  • Se você usa controles de segurança, esteja ciente das limitações deles relacionadas aos dados no Google Drive, conforme discutido na tabela a seguir:

    Controle de segurança Observações:
    Residência de dados (DRZ) Os aplicativos de IA garantem a residência de dados apenas em Google Cloud. Para informações sobre residência de dados e o Google Drive, consulte as orientações e a documentação de conformidade do Google Workspace, por exemplo, Escolher a região onde os dados são armazenados e Soberania digital.
    Chaves de criptografia gerenciadas pelo cliente (CMEK) Suas chaves criptografam apenas dados no Google Cloud. Os controles do Cloud Key Management Service não se aplicam aos dados armazenados no Google Drive.
    Transparência no acesso Os registros de Transparência no acesso mostram as ações realizadas pela equipe do Google no projeto Google Cloud . Você também precisa analisar os registros da Transparência no acesso criados pelo Google Workspace. Para mais informações, consulte Eventos de registro da Transparência no acesso na documentação da Ajuda do administrador do Google Workspace.

Usar federação de dados

Se você criar um repositório de dados sem ativar a indexação avançada, o sistema vai acessar e mostrar o conteúdo da unidade especificada diretamente, sem criar uma cópia.

Console

Para usar o console e tornar os dados do Google Drive pesquisáveis, siga estas etapas:

  1. No console Google Cloud , acesse a página Aplicativos de IA.

    Aplicativos de IA

  2. No menu de navegação, clique em Repositórios de dados.

  3. Clique em Criar repositório de dados.

    Mostra o botão &quot;Criar repositório de dados&quot;.
    Crie um repositório de dados.
  4. Na página Selecionar uma fonte de dados, escolha Google Drive.

    Selecione uma fonte de dados.
    Selecione uma fonte de dados.
  5. Especifique a fonte do Drive do seu repositório de dados.

    • Tudo: para adicionar todo o seu drive ao repositório de dados.
    • Drives compartilhados específicos: para adicionar um ou mais drives compartilhados.
    • Adicione os IDs dos drives compartilhados. Para localizar o ID do drive compartilhado, acesse o drive e copie o ID do URL. O URL segue este formato: https://drive.google.com/corp/drive/DRIVE_ID.

    • Pastas compartilhadas específicas: para adicionar uma ou mais pastas compartilhadas.

      • Adicione os IDs das pastas compartilhadas. Para localizar o ID da pasta compartilhada, acesse a pasta e copie o ID do URL. O URL segue este formato: https://drive.google.com/corp/drive/folders/FOLDER_ID.
    Especifique a origem do drive.
    Especifique a origem do drive.
  6. Clique em Continuar.

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

  8. Insira um nome para o repositório de dados.

  9. Clique em Criar.

    Configure o conector de dados.
    Configure o conector de dados.

Mensagens de erro

A tabela a seguir descreve as mensagens de erro que podem aparecer ao trabalhar com essa fonte de dados do Google, incluindo códigos de erro HTTP e etapas de solução de problemas sugeridas.

Código do erro Mensagem de erro Descrição Solução de problemas
400 (Falha na pré-condição) A pesquisa usando credenciais de conta de serviço não é compatível com repositórios de dados do Google Workspace. O mecanismo pesquisado tem repositórios de dados do Google Workspace, e as credenciais transmitidas são de uma conta de serviço. Não é possível pesquisar usando credenciais de conta de serviço em repositórios de dados do Google Workspace. Chame a pesquisa usando as credenciais do usuário ou remova os repositórios de dados do Google Workspace do mecanismo.
400 (Falha na pré-condição) As contas pessoais não são compatíveis com os repositórios de dados do Google Workspace. A pesquisa é chamada usando uma credencial de conta pessoal (@gmail.com), que não é compatível com repositórios de dados do Google Workspace. Remova os repositórios de dados do Google Workspace do mecanismo ou use uma Conta do Google gerenciada.

Usar a indexação de dados (prévia particular)

Siga este procedimento se você planeja usar o Google Drive com resumo e pesquisa com acompanhamento.

Antes de começar

  • Você precisa ser um superadministrador do Google Workspace para ativar a indexação avançada do Drive. Isso ocorre porque, com a indexação avançada do Drive, os aplicativos de IA indexam os dados do Google Drive.

Console

Para usar o console e criar um repositório de dados do Google Drive com indexação avançada do Google Drive, siga estas etapas:

  1. No console Google Cloud , acesse a página Aplicativos de IA.

    Aplicativos de IA

  2. No menu de navegação, clique em Repositórios de dados.

  3. Clique em Criar repositório de dados.

  4. Na página Selecionar uma fonte de dados, escolha Google Drive.

  5. Selecione Indexação avançada do Drive.

  6. Digite seu endereço de e-mail de superadministrador do Google Workspace.

    • Anote o ID do cliente na seção Configurar a delegação em todo o domínio, terceira etapa, porque ele será usado mais tarde.
    Indexação avançada: especifique a origem do drive.
    Especifique a origem do Drive para a indexação avançada.
  7. Configure a delegação em todo o domínio:

    1. Acesse a página Delegação em todo o domínio do Admin Console do Google Workspace e faça login com sua conta de superadministrador.
    2. Clique em Adicionar novo.

      Indexação avançada: especifique a origem do drive.
      Adicione uma nova delegação em todo o domínio.
    3. Insira o ID do cliente que você anotou anteriormente.

    4. Insira os seguintes escopos do OAuth.

      https://www.googleapis.com/auth/drive.readonly,
      https://www.googleapis.com/auth/admin.directory.user.readonly,
      https://www.googleapis.com/auth/admin.directory.group.readonly,
      https://www.googleapis.com/auth/admin.directory.domain.readonly,
      https://www.googleapis.com/auth/admin.reports.audit.readonly
      
      Indexação avançada: insira os escopos do OAuth.
      Insira os escopos do OAuth.
    5. Clique em Autorizar.

  8. Volte para o console do Google Cloud . Na seção Escolher as unidades que você quer sincronizar, especifique a fonte do Drive para seu repositório de dados.

    • Tudo: para adicionar todo o seu drive ao repositório de dados.
    • Drives compartilhados específicos: para adicionar um ou mais drives compartilhados.

      • Adicione os IDs dos drives compartilhados. Para localizar o ID do drive compartilhado, acesse o drive e copie o ID do URL. O URL segue este formato: https://drive.google.com/corp/drive/DRIVE_ID.
      Escolha os drives para sincronizar.
      Escolha os drives que você quer sincronizar.
  9. Clique em Continuar.

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

  11. Insira um nome para o repositório de dados.

  12. Opcional: para modificar as configurações de análise ou divisão de documentos, na seção Opções de processamento de documentos, selecione Ativar configuração de processamento de documentos.

  13. Clique em Criar. Dependendo do tamanho dos dados, a ingestão pode levar de vários minutos a várias horas. Aguarde pelo menos uma hora antes de usar seu repositório de dados para pesquisar.

Próximas etapas

  • Para anexar seu repositório de dados a um app, crie um app e selecione o repositório seguindo as etapas em Criar um app de pesquisa.

  • Para receber os resultados da pesquisa depois que o app e o repositório de dados forem configurados, consulte Receber resultados da pesquisa.

Conectar ao Gmail

Para pesquisar dados do Gmail, siga estas etapas para criar um repositório de dados e ingerir dados usando o console do Google Cloud .

Antes de começar:

  • Faça login no console Google Cloud com a mesma conta usada na instância do Google Workspace que você planeja conectar. A Pesquisa da Vertex AI usa seu ID de cliente do Google Workspace para se conectar ao Gmail.

  • Configure o controle de acesso para o Gmail. Para informações sobre como configurar o controle de acesso, consulte Usar o controle de acesso à fonte de dados.

  • Se você usa controles de segurança, esteja ciente das limitações deles relacionadas aos dados no Gmail, conforme discutido na tabela a seguir:

    Controle de segurança Observações:
    Residência de dados (DRZ) Os aplicativos de IA garantem a residência de dados apenas em Google Cloud. Para informações sobre residência de dados e o Gmail, consulte as orientações e a documentação de conformidade do Google Workspace, por exemplo, Escolher a região onde os dados são armazenados e Soberania digital.
    Chaves de criptografia gerenciadas pelo cliente (CMEK) Suas chaves criptografam apenas dados no Google Cloud. Os controles do Cloud Key Management Service não se aplicam aos dados armazenados no Gmail.
    Transparência no acesso Os registros de Transparência no acesso mostram as ações realizadas pela equipe do Google no projeto Google Cloud . Você também precisa analisar os registros da Transparência no acesso criados pelo Google Workspace. Para mais informações, consulte Eventos de registro da Transparência no acesso na documentação da Ajuda do administrador do Google Workspace.

Console

Para usar o console e tornar os dados do Gmail pesquisáveis, siga estas etapas:

  1. No console Google Cloud , acesse a página Aplicativos de IA.

    Aplicativos de IA

  2. No menu de navegação, clique em Repositórios de dados.

  3. Clique em Criar repositório de dados.

    Criar um novo repositório de dados
    Crie um repositório de dados.
  4. Na página Selecionar uma fonte de dados, escolha Google Gmail.

    Selecione a origem do Google Gmail
    Selecione a origem do Google Gmail.
  5. Escolha uma região para o repositório de dados.

  6. Insira um nome para o repositório de dados.

  7. Clique em Criar.

    Configurar o novo conector
    Configure o novo conector.

Próximas etapas

  • Para anexar seu repositório de dados a um app, crie um app e selecione o repositório seguindo as etapas em Criar um app de pesquisa.

  • Para conferir como os resultados da pesquisa aparecem depois que o app e o repositório de dados são configurados, consulte Receber resultados da pesquisa.

Conectar-se ao Google Sites

Para pesquisar dados do Google Sites, siga estas etapas para criar um conector usando o console Google Cloud .

Antes de começar:

  • Faça login no console Google Cloud com a mesma conta usada na instância do Google Workspace que você planeja conectar. A Vertex AI para Pesquisa usa seu ID de cliente do Google Workspace para se conectar ao Google Sites.

  • Configure o controle de acesso para o Google Sites. Para informações sobre como configurar o controle de acesso, consulte Usar o controle de acesso à fonte de dados.

  • Se você usa controles de segurança, esteja ciente das limitações deles relacionadas aos dados no Google Sites, conforme discutido na tabela a seguir:

    Controle de segurança Observações:
    Residência de dados (DRZ) Os aplicativos de IA garantem a residência de dados apenas em Google Cloud. Para informações sobre residência de dados e o Google Sites, consulte as orientações e a documentação de conformidade do Google Workspace, por exemplo, Escolher a região onde os dados são armazenados e Soberania digital.
    Chaves de criptografia gerenciadas pelo cliente (CMEK) Suas chaves criptografam apenas dados no Google Cloud. Os controles do Cloud Key Management Service não se aplicam aos dados armazenados no Google Sites.
    Transparência no acesso Os registros de Transparência no acesso mostram as ações realizadas pela equipe do Google no projeto Google Cloud . Você também precisa analisar os registros da Transparência no acesso criados pelo Google Workspace. Para mais informações, consulte Eventos de registro da Transparência no acesso na documentação da Ajuda do administrador do Google Workspace.

Console

Para usar o console e tornar os dados do Google Sites pesquisáveis, siga estas etapas:

  1. No console Google Cloud , acesse a página Aplicativos de IA.

    Aplicativos de IA

  2. Acesse a página Repositórios de dados.

  3. Clique em Novo repositório de dados.

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

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

  6. Insira um nome para o repositório de dados.

  7. Clique em Criar.

Próximas etapas

  • Para anexar seu repositório de dados a um app, crie um app e selecione o repositório seguindo as etapas em Criar um app de pesquisa.

  • Para ver como os resultados da pesquisa aparecem depois que o app e o repositório de dados são configurados, consulte Receber resultados da pesquisa.

Conectar ao Google Agenda

Para pesquisar dados do Google Agenda, siga estas etapas para criar um conector usando o console Google Cloud .

Antes de começar

  • Faça login no console Google Cloud com a mesma conta usada na instância do Google Workspace que você planeja conectar. O Vertex AI para Pesquisa usa seu ID de cliente do Google Workspace para se conectar ao Google Agenda.

  • Configure o controle de acesso para o Google Agenda. Para mais informações, consulte Usar o controle de acesso à fonte de dados.

  • Se você usa controles de segurança, esteja ciente das limitações deles relacionadas aos dados no Google Agenda, conforme discutido na tabela a seguir:

    Controle de segurança Observações:
    Residência de dados (DRZ) Os aplicativos de IA garantem a residência de dados apenas em Google Cloud. Para informações sobre residência de dados e o Google Agenda, consulte as orientações e a documentação de conformidade do Google Workspace, por exemplo, Escolher a região onde os dados são armazenados e Soberania digital.
    Chaves de criptografia gerenciadas pelo cliente (CMEK) Suas chaves criptografam apenas dados no Google Cloud. Os controles do Cloud Key Management Service não se aplicam aos dados armazenados no Google Agenda.
    Transparência no acesso Os registros de Transparência no acesso mostram as ações realizadas pela equipe do Google no projeto Google Cloud . Você também precisa analisar os registros da Transparência no acesso criados pelo Google Workspace. Para mais informações, consulte Eventos de registro da Transparência no acesso na documentação da Ajuda do administrador do Google Workspace.

Console

Para usar o console e tornar os dados do Google Agenda pesquisáveis, siga estas etapas:

  1. No console Google Cloud , acesse a página Aplicativos de IA.

    Aplicativos de IA

  2. No menu de navegação, clique em Repositórios de dados.

  3. Clique em Criar repositório de dados.

    O botão &quot;Criar repositório de dados&quot;.
    Crie um repositório de dados.
  4. Na página Selecionar uma fonte de dados, escolha Google Agenda.

    Selecione a fonte de dados do Google Agenda.
    Selecione a fonte de dados do Google Agenda.
  5. Escolha uma região para o repositório de dados.

  6. Insira um nome para o repositório de dados.

  7. Clique em Criar.

    Configure o conector de dados.
    Configure o conector de dados.

Próximas etapas

  • Para conectar seu repositório de dados a um app, crie o app e selecione o repositório de dados seguindo as instruções em Criar um app de pesquisa.

  • Para receber os resultados da pesquisa depois que o app e o repositório de dados forem configurados, consulte Receber resultados da pesquisa.

Mensagens de erro

A tabela a seguir descreve as mensagens de erro que podem aparecer ao trabalhar com essa fonte de dados do Google, incluindo códigos de erro HTTP e etapas de solução de problemas sugeridas.

Código do erro Mensagem de erro Descrição Solução de problemas
400 (Falha na pré-condição) A pesquisa usando credenciais de conta de serviço não é compatível com repositórios de dados do Google Workspace. O mecanismo pesquisado tem repositórios de dados do Google Workspace, e as credenciais transmitidas são de uma conta de serviço. Não é possível pesquisar usando credenciais de conta de serviço em repositórios de dados do Google Workspace. Chame a pesquisa usando as credenciais do usuário ou remova os repositórios de dados do Google Workspace do mecanismo.
400 (Falha na pré-condição) As contas pessoais não são compatíveis com os repositórios de dados do Google Workspace. A pesquisa é chamada usando uma credencial de conta pessoal (@gmail.com), que não é compatível com repositórios de dados do Google Workspace. Remova os repositórios de dados do Google Workspace do mecanismo ou use uma Conta do Google gerenciada.

Conectar aos Grupos do Google

Para pesquisar dados dos Grupos do Google, siga estas etapas para criar um conector usando o console Google Cloud .

Antes de começar:

  • Faça login no console Google Cloud com a mesma conta usada na instância do Google Workspace que você planeja conectar. O Vertex AI para Pesquisa usa seu ID de cliente do Google Workspace para se conectar aos Grupos do Google.

  • Configure o controle de acesso para os Grupos do Google. Para informações sobre como configurar o controle de acesso, consulte Usar o controle de acesso à fonte de dados.

  • Se você usa controles de segurança, esteja ciente das limitações deles relacionadas aos dados nos Grupos do Google, conforme discutido na tabela a seguir:

    Controle de segurança Observações:
    Residência de dados (DRZ) Os aplicativos de IA garantem a residência de dados apenas em Google Cloud. Para informações sobre residência de dados e Grupos do Google, consulte as orientações e documentação de conformidade do Google Workspace, por exemplo, Escolher a região onde os dados são armazenados e Soberania digital.
    Chaves de criptografia gerenciadas pelo cliente (CMEK) Suas chaves criptografam apenas dados no Google Cloud. Os controles do Cloud Key Management Service não se aplicam aos dados armazenados no Google Grupos.
    Transparência no acesso Os registros de Transparência no acesso mostram as ações realizadas pela equipe do Google no projeto Google Cloud . Você também precisa analisar os registros da Transparência no acesso criados pelo Google Workspace. Para mais informações, consulte Eventos de registro da Transparência no acesso na documentação da Ajuda do administrador do Google Workspace.

Console

Para usar o console e tornar os dados do Google Grupos pesquisáveis, siga estas etapas:

  1. No console Google Cloud , acesse a página Aplicativos de IA.

    Aplicativos de IA

  2. Acesse a página Repositórios de dados.

  3. Clique em Novo repositório de dados.

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

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

  6. Insira um nome para o repositório de dados.

  7. Clique em Criar. Dependendo do tamanho dos dados, a ingestão pode levar de vários minutos a várias horas. Aguarde pelo menos uma hora antes de usar seu repositório de dados para pesquisar.

Próximas etapas

  • Para anexar seu repositório de dados a um app, crie um app e selecione o repositório seguindo as etapas em Criar um app de pesquisa.

  • Para ver como os resultados da pesquisa aparecem depois que o app e o repositório de dados são configurados, consulte Receber resultados da pesquisa.

Você pode configurar a pesquisa de pessoas para sua organização sincronizando dados de pessoas do Google Workspace. Depois que o repositório de dados de pesquisa de pessoas é configurado e os dados são ingeridos no índice da Vertex AI para Pesquisa, é possível encontrar pessoas no seu diretório.

Antes de começar

  • Determine o provedor de identidade para que os usuários façam login no app. Se você usar um provedor de identidade de terceiros, um administrador precisará federar seu provedor de identidade com o Google Workspace. A federação exige planejamento e configuração. Para mais informações, consulte Usar o controle de acesso à fonte de dados.
  • Um administrador do Google Workspace precisa ativar a pesquisa de pessoas nos dados do Google Workspace:

    1. Faça login no Google Admin Console com uma conta de administrador.
    2. Acesse Diretório > Configurações do diretório.
    3. Ative o Compartilhamento de contatos.
  • Faça login no console Google Cloud com a mesma conta que você planeja usar para conectar o Google Workspace.

  • Conecte-se ao seu provedor de identidade seguindo as etapas em Conectar ao seu provedor de identidade e especifique Google Identity como seu provedor. Para informações sobre o diretório do Google Workspace, consulte Visão geral: configurar e gerenciar o diretório na documentação do Google Workspace.

  • Se você usa controles de segurança, esteja ciente das limitações deles relacionadas aos dados no Google Workspace, conforme discutido na tabela a seguir:

    Controle de segurança Observações:
    Residência de dados (DRZ) Os aplicativos de IA garantem a residência de dados apenas em Google Cloud. Para informações sobre residência de dados e o Google Workspace, consulte as orientações e a documentação de conformidade do Google Workspace, por exemplo, Escolher a região onde os dados são armazenados e Soberania digital.
    Chaves de criptografia gerenciadas pelo cliente (CMEK) Suas chaves criptografam apenas dados no Google Cloud. Os controles do Cloud Key Management Service não se aplicam aos dados armazenados no Google Workspace.
    Transparência no acesso Os registros de Transparência no acesso mostram as ações realizadas pela equipe do Google no projeto Google Cloud . Você também precisa analisar os registros da Transparência no acesso criados pelo Google Workspace. Para mais informações, consulte Eventos de registro da Transparência no acesso na documentação da Ajuda do administrador do Google Workspace.

Antes de criar o repositório de dados de pessoas, configure uma conta de serviço e a delegação em todo o domínio.

Configurar a conta de serviço

  1. Crie uma conta de serviço em um projetoGoogle Cloud na organização.

  2. Opcional: ignore a etapa Conceda acesso ao projeto para essa conta de serviço (opcional).

    Mostra a seção &quot;Conceda acesso ao projeto para essa conta de serviço (opcional)&quot; que precisa ser ignorada.
    Pule a etapa "Conceda acesso ao projeto para essa conta de serviço (opcional)".
  3. Conceda à conta de serviço do Discovery Engine (service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com) acesso como um Criador de token da conta de serviço (roles/iam.serviceAccountTokenCreator) e clique em Salvar.

    Mostra como configurar a seção &quot;Conceder aos usuários acesso a essa conta de serviço&quot;.
    Conceda acesso à conta de serviço do Discovery Engine.
  4. Depois que a conta de serviço for criada, clique na guia Detalhes da conta e em Configurações avançadas.

  5. Copie o ID do cliente para a delegação em todo o domínio.

    Mostra o ID do cliente nas configurações avançadas, seção de delegação em todo o domínio.
    Copie o ID do cliente.

Configurar a delegação em todo o domínio

  1. Faça login no espaço de trabalho do administrador do Google.
  2. Acesse Segurança > Controle de acesso e dados > Controles de API.
  3. Clique em Gerenciar a delegação em todo o domínio.

    Mostra &quot;Gerenciar a delegação em todo o domínio&quot;.
    Clique em "Gerenciar a delegação em todo o domínio".
  4. Clique em Adicionar novo.

    Destaca a opção &quot;Adicionar novo link&quot;
    Clique em "Adicionar novo".
  5. Na caixa de diálogo Adicionar um novo ID do cliente, faça o seguinte:

    1. ID do cliente: insira o ID do cliente.
    2. Escopos do OAuth: insira https://www.googleapis.com/auth/directory.readonly.
    3. Clique em Autorizar.
    Configure as configurações de delegação em todo o domínio.
    Configure as configurações de delegação em todo o domínio.

Criar um repositório de dados de pesquisa de pessoas

Para usar o console e ingerir os dados de pessoas, siga estas etapas:

Console

  1. No console Google Cloud , acesse a página Aplicativos de IA.

    Aplicativos de IA

  2. Acesse a página Repositórios de dados.

  3. Clique em Criar repositório de dados.

  4. Na página Origem, clique em Pesquisa de pessoas.

    Selecione o repositório de dados da Pesquisa de pessoas.
    Selecione o repositório de dados da Pesquisa de pessoas.
  5. Configure os detalhes da autenticação:

    1. Insira o e-mail da conta que busca os dados de pessoas. Se preferir não usar uma conta de administrador, use uma conta alternativa com acesso aos dados do diretório da organização.
    2. Insira o e-mail da conta de serviço que você criou na seção Configurar a conta de serviço.
    3. Clique em Continuar.
    Configure os detalhes de autenticação.
    Configure os detalhes de autenticação.
  6. Escolha uma região para o repositório de dados.

  7. Selecione a frequência de sincronização completa e, opcionalmente, a incremental.

    Configurações de frequência de sincronização de dados.
    Configurações de frequência de sincronização para sincronização de dados completa e incremental.

    Se quiser programar sincronizações completas separadas de dados de entidade e identidade, expanda o menu em Sincronização completa e selecione Opções personalizadas.

    Opções personalizadas para sincronização completa de dados.
    Definir programações separadas para sincronização completa de entidades e de identidades.
  8. No campo Nome do repositório de dados, insira um nome para o repositório.

  9. Clique em Criar. A sincronização pode levar de alguns minutos a algumas horas, dependendo do tamanho dos dados.

Pausar ou retomar sincronizações de dados

É possível pausar e retomar as sincronizações completas e incrementais.

  • Para pausar uma sincronização, clique em Pausar/retomar sincronização.

    Pausar uma sincronização cancela todas as sincronizações programadas futuras. No entanto, se uma sincronização estiver em andamento quando você clicar em Pausar/retomar sincronização, ela não será pausada e vai continuar até a conclusão.

  • Para retomar uma sincronização, clique em Pausar/retomar sincronização.

    Quando você retoma um tipo de sincronização, o conector agenda a nova sincronização com base no último horário agendado.

Pausar ou retomar as sincronizações de dados.
Pause ou retome as sincronizações de dados.

Personalizar resultados da pesquisa

Para incluir ou excluir informações pessoais dos resultados da pesquisa, siga estas etapas:

  1. No repositório de dados, clique na guia Entidade e em Usuários.

    Clique na guia de entidades do repositório de dados.
    Clique na guia de entidade do repositório de dados.
  2. Na página Usuários, clique na guia Esquema.

  3. Clique em Editar.

    Edite o esquema do repositório de dados.
    Edite o esquema do repositório de dados.
  4. Marque ou desmarque os atributos, como país, para que eles possam ser recuperados, pesquisados e indexados.

  5. Clique em Salvar.

    Salve as mudanças feitas no esquema.
    Salve as mudanças feitas no esquema.

Mensagens de erro

A tabela a seguir descreve as mensagens de erro que podem aparecer ao sincronizar dados de pessoas usando a indexação de dados. Esta tabela inclui códigos de erro do gRPC e etapas de solução de problemas sugeridas.

Código do erro (gRPC) Mensagem de erro Descrição Solução de problemas
9 (Falha na condição prévia) Falha na autenticação. As permissões da conta de serviço não estão configuradas corretamente. A exclusão permanente foi acionada para este repositório de dados, e todos os documentos foram excluídos. Esse erro ocorre quando a conta de serviço do Discovery Engine não tem a função de criador de token da conta de serviço ou quando a conta de serviço de delegação em todo o domínio (DWD) não tem o escopo de autenticação correto. Verifique se a conta de serviço do Discovery Engine tem o papel de criador de token da conta de serviço e configure o escopo de autenticação da conta de serviço do DWD corretamente no Google Cloud Admin. Conceda novamente as permissões ausentes da conta de serviço.
9 (Falha na condição prévia) Nenhum resultado buscado após a sincronização completa. A exclusão permanente foi acionada para este repositório de dados, e todos os documentos foram excluídos. Esse erro ocorre quando o compartilhamento de contatos está desativado nas configurações de diretório do Admin Console. Verifique e ative o compartilhamento de contatos nas configurações do diretório do Admin Console.
3 (Argumento inválido) Falha ao trocar o JWT assinado por um token de acesso. A conta do Google Workspace foi excluída. A exclusão permanente foi acionada para este repositório de dados, e todos os documentos foram excluídos. Esse erro ocorre quando a conta do Google Workspace é excluída. Crie um conector com uma conta ativa do Google Workspace.
3 (Argumento inválido) O ID do GAIA não foi encontrado. Falha na autenticação. Esse erro ocorre quando a conta de usuário está incorreta. Verifique se a conta de usuário existe e insira as credenciais corretas.
8 (recurso esgotado) A cota do projeto foi excedida. Aumente a cota de documentos do projeto. Esse erro ocorre quando a cota do projeto é excedida. Aumente a cota de documentos do projeto. Para mais informações, consulte Cotas.
13 (erro interno) Erro interno encontrado. Esse erro ocorre quando há um erro interno. Entre em contato com a equipe de suporte.

Próximas etapas

  • Para anexar seu repositório de dados a um app, crie um app e selecione o repositório seguindo as etapas em Criar um app de pesquisa.

  • Para receber os resultados da pesquisa depois que o app e o repositório de dados forem configurados, consulte Receber resultados da pesquisa.

Importar do Cloud SQL

Para ingerir dados do Cloud SQL, siga estas etapas para configurar o acesso ao Cloud SQL, criar um repositório de dados e ingerir dados.

Configurar o acesso ao bucket de staging para instâncias do Cloud SQL

Ao ingerir dados do Cloud SQL, eles são primeiro armazenados em um bucket do Cloud Storage. Siga estas etapas para dar a uma instância do Cloud SQL acesso a buckets do Cloud Storage.

  1. No console Google Cloud , acesse a página SQL.

    SQL

  2. Clique na instância do Cloud SQL de onde você quer importar.

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

  4. Acessar a página AM e administrador

    IAM e administrador

  5. Clique em Conceder acesso.

  6. Em Novos principais, insira o identificador da conta de serviço da instância e selecione o papel Cloud Storage > Administrador de armazenamento.

  7. Clique em Salvar.

Próximo:

Configurar o acesso ao Cloud SQL de outro projeto

Para dar à Pesquisa da Vertex AI acesso aos dados do Cloud SQL que estão em um projeto diferente, siga estas etapas:

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

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com`
    
  2. Acessar a página AM e administrador

    IAM e administrador

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

  4. Em Novos principais, insira o identificador da conta de serviço e selecione o papel Cloud SQL > Leitor do Cloud SQL.

  5. Clique em Salvar.

Em seguida, acesse Importar dados do Cloud SQL.

Importar dados do Cloud SQL

Console

Para usar o console e ingerir dados do Cloud SQL, siga estas etapas:

  1. No console Google Cloud , acesse a página Aplicativos de IA.

    Aplicativos de IA

  2. Acesse a página Repositórios de dados.

  3. Clique em Novo repositório de dados.

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

  5. Especifique o ID do projeto, da instância, do banco de dados e da tabela dos dados que você planeja importar.

  6. Clique em Procurar e escolha um local intermediário do Cloud Storage para exportar os dados. Depois, clique em Selecionar. Ou insira o local diretamente no campo gs://.

  7. Selecione se quer ativar a exportação sem servidor. A exportação sem servidor gera custos adicionais. Para informações sobre a exportação sem servidor, consulte Minimizar o impacto das exportações no desempenho na documentação do Cloud SQL.

  8. Clique em Continuar.

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

  10. Insira um nome para o repositório de dados.

  11. Clique em Criar.

  12. Para verificar o status da ingestão, acesse a página Repositórios de dados e clique no nome do repositório de dados para conferir os detalhes na página Dados. Quando a coluna de status na guia Atividade mudar de Em andamento para Importação concluída, a ingestão será concluída.

    Dependendo do tamanho dos dados, a ingestão pode levar de vários minutos a várias horas.

REST

Para usar a linha de comando e criar um repositório de dados e ingerir dados do Cloud SQL, siga estas etapas:

  1. Crie um repositório 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:

    • PROJECT_ID: ID do projeto.
    • DATA_STORE_ID: o ID do repositório de dados. O ID só pode conter letras minúsculas, dígitos, sublinhados e hífens.
    • DISPLAY_NAME: o nome de exibição do repositório de dados. Isso pode ser exibido no console do Google Cloud .
  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:

    • PROJECT_ID: o ID do seu projeto da Vertex AI Search.
    • DATA_STORE_ID: o ID do repositório de dados. O ID só pode conter letras minúsculas, dígitos, sublinhados e hífens.
    • 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 do banco 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. O padrão é INCREMENTAL. Especificar INCREMENTAL causa uma atualização incremental de dados do Cloud SQL para seu repositório de dados. Isso faz uma operação de upsert, que adiciona novos documentos e substitui os documentos existentes por documentos atualizados com o mesmo ID. Especificar FULL causa uma rebase completa dos documentos no seu repositório de dados. Em outras palavras, documentos novos e atualizados são adicionados ao repositório de dados, e os documentos que não estão no Cloud SQL são removidos dele. O modo FULL é útil se você quiser excluir automaticamente documentos que não precisa mais.

Python

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

Para autenticar no AI Applications, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Criar um repositório 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

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

Próximas etapas

  • Para anexar seu repositório de dados a um app, crie um app e selecione o repositório seguindo as etapas em Criar um app de pesquisa.

  • Para ver como os resultados da pesquisa aparecem depois que o app e o repositório de dados são configurados, consulte Receber resultados da pesquisa.

Importar do Spanner

Para ingerir dados do Spanner, siga estas etapas para criar um repositório de dados e ingerir dados usando o console do Google Cloud ou a API.

Configurar o acesso ao Spanner de um projeto diferente

Se os dados do Spanner estiverem no mesmo projeto da Vertex AI para Pesquisa, pule para Importar dados do Spanner.

Para conceder à Vertex AI para Pesquisa acesso aos dados do Spanner que estão em um projeto diferente, siga estas etapas:

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

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
    
  2. Acessar a página AM e administrador

    IAM e administrador

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

  4. Em Novos principais, insira o identificador da conta de serviço e selecione uma das seguintes opções:

    • Se você não usar o Data Boost durante a importação, selecione a função Leitor do banco de dados do Cloud Spanner > Cloud Spanner.
    • Se você planeja usar o Data Boost durante a importação, selecione o papel Cloud Spanner > Administrador do banco de dados do Cloud Spanner ou um papel personalizado com as permissões de Leitor de banco de dados do Cloud Spanner e spanner.databases.useDataBoost. Para informações sobre o Data Boost, consulte Visão geral do Data Boost na documentação do Spanner.
  5. Clique em Salvar.

Em seguida, acesse Importar dados do Spanner.

Importar dados do Spanner

Console

Para usar o console e ingerir dados do Spanner, siga estas etapas:

  1. No console Google Cloud , acesse a página Aplicativos de IA.

    Aplicativos de IA

  2. Acesse a página Repositórios de dados.

  3. Clique em Novo repositório de dados.

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

  5. Especifique o ID do projeto, da instância, do banco de dados e da tabela dos dados que você planeja importar.

  6. Selecione se quer ativar o Data Boost. Para informações sobre o Data Boost, consulte Visão geral do Data Boost na documentação do Spanner.

  7. Clique em Continuar.

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

  9. Insira um nome para o repositório de dados.

  10. Clique em Criar.

  11. Para verificar o status da ingestão, acesse a página Repositórios de dados e clique no nome do repositório de dados para conferir os detalhes na página Dados. Quando a coluna de status na guia Atividade mudar de Em andamento para Importação concluída, a ingestão será concluída.

    Dependendo do tamanho dos dados, a ingestão pode levar de vários minutos a várias horas.

REST

Para usar a linha de comando e criar um repositório de dados e ingerir dados do Spanner, siga estas etapas:

  1. Crie um repositório 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:

    • PROJECT_ID: o ID do seu projeto da Vertex AI para Pesquisa.
    • DATA_STORE_ID: o ID do repositório de dados. O ID só pode conter letras minúsculas, dígitos, sublinhados e hífens.
    • DISPLAY_NAME: o nome de exibição do repositório de dados. Isso pode ser exibido no console do Google Cloud .
  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:

    • PROJECT_ID: o ID do seu projeto da Vertex AI para Pesquisa.
    • DATA_STORE_ID: o ID do repositório 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 do banco de dados do Spanner.
    • TABLE_ID: o ID da sua tabela do Spanner.
    • DATA_BOOST_BOOLEAN: opcional. Se quer ativar o Data Boost. Para mais informações sobre o Data Boost, consulte a visão geral do Data Boost na documentação do Spanner.
    • RECONCILIATION_MODE: opcional. Os valores são FULL e INCREMENTAL. O padrão é INCREMENTAL. Especificar INCREMENTAL causa uma atualização incremental de dados do Spanner para o repositório de dados. Isso faz uma operação de upsert, que adiciona novos documentos e substitui os existentes por documentos atualizados com o mesmo ID. Especificar FULL causa uma rebase completa dos documentos no repositório de dados. Em outras palavras, documentos novos e atualizados são adicionados ao repositório de dados, e os que não estão no Spanner são removidos. O modo FULL é útil se você quiser excluir automaticamente documentos que não precisa mais.
    • AUTO_GENERATE_IDS: opcional. Especifica se os IDs de documentos serão gerados automaticamente. Se definido como true, os IDs de documento serão gerados com base em um hash do payload. Os IDs de documentos gerados podem não permanecer consistentes em várias importações. Se você gerar IDs automaticamente em várias importações, o Google recomenda definir reconciliationMode como FULL para manter IDs de documento consistentes.

    • ID_FIELD: opcional. Especifica quais campos são os IDs de documento.

Python

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

Para autenticar no AI Applications, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Criar um repositório 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

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

Próximas etapas

  • Para anexar seu repositório de dados a um app, crie um app e selecione o repositório seguindo as etapas em Criar um app de pesquisa.

  • Para ver como os resultados da pesquisa aparecem depois que o app e o repositório de dados são configurados, consulte Receber resultados da pesquisa.

Importar do Firestore

Para ingerir dados do Firestore, siga estas etapas para criar um repositório de dados e ingerir dados usando o console do Google Cloud ou a API.

Se os dados do Firestore estiverem no mesmo projeto da Vertex AI para Pesquisa, acesse Importar dados do Firestore.

Se os dados do Firestore estiverem em um projeto diferente do projeto da Pesquisa da Vertex AI, acesse Configurar o acesso ao Firestore.

Configurar o acesso ao Firestore de um projeto diferente

Para conceder à Vertex AI Search acesso aos dados do Firestore que estão em um projeto diferente, siga estas etapas:

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

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
    
  2. Acessar a página AM e administrador

    IAM e administrador

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

  4. Em Novos principais, insira o identificador da conta de serviço da instância e selecione o papel Datastore > Administrador de importação e exportação do Cloud Datastore.

  5. Clique em Salvar.

  6. Volte para o projeto da Vertex AI para Pesquisa.

Em seguida, acesse Importar dados do Firestore.

Importar dados do Firestore

Console

Para usar o console e ingerir dados do Firestore, siga estas etapas:

  1. No console Google Cloud , acesse a página Aplicativos de IA.

    Aplicativos de IA

  2. Acesse a página Repositórios de dados.

  3. Clique em Novo repositório de dados.

  4. Na página Origem, selecione Firestore.

  5. Especifique o ID do projeto, do banco de dados e da coleção dos dados que você planeja importar.

  6. Clique em Continuar.

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

  8. Insira um nome para o repositório de dados.

  9. Clique em Criar.

  10. Para verificar o status da ingestão, acesse a página Repositórios de dados e clique no nome do repositório de dados para conferir os detalhes na página Dados. Quando a coluna de status na guia Atividade mudar de Em andamento para Importação concluída, a ingestão será concluída.

    Dependendo do tamanho dos dados, a ingestão pode levar de vários minutos a várias horas.

REST

Para usar a linha de comando e criar um repositório de dados e ingerir dados do Firestore, siga estas etapas:

  1. Crie um repositório 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:

    • PROJECT_ID: ID do projeto.
    • DATA_STORE_ID: o ID do repositório de dados. O ID só pode conter letras minúsculas, dígitos, sublinhados e hífens.
    • DISPLAY_NAME: o nome de exibição do repositório de dados. Isso pode ser exibido no console do Google Cloud .
  2. Importar 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:

    • PROJECT_ID: o ID do seu projeto da Vertex AI para Pesquisa.
    • DATA_STORE_ID: o ID do repositório de dados. O ID só pode conter letras minúsculas, dígitos, sublinhados e hífens.
    • FIRESTORE_PROJECT_ID: o ID do seu projeto do Firestore.
    • DATABASE_ID: o ID do banco de dados do Firestore.
    • COLLECTION_ID: o ID da sua coleção do Firestore.
    • RECONCILIATION_MODE: opcional. Os valores são FULL e INCREMENTAL. O padrão é INCREMENTAL. Especificar INCREMENTAL causa uma atualização incremental de dados do Firestore para seu repositório de dados. Isso faz uma operação de upsert, que adiciona novos documentos e substitui os documentos existentes por documentos atualizados com o mesmo ID. Especificar FULL causa uma rebase completa dos documentos no seu repositório de dados. Em outras palavras, documentos novos e atualizados são adicionados ao seu armazenamento de dados, e os documentos que não estão no Firestore são removidos dele. O modo FULL é útil se você quiser excluir automaticamente documentos que não precisa mais.
    • AUTO_GENERATE_IDS: opcional. Especifica se os IDs de documentos serão gerados automaticamente. Se definido como true, os IDs de documento serão gerados com base em um hash do payload. Os IDs de documentos gerados podem não permanecer consistentes em várias importações. Se você gerar IDs automaticamente em várias importações, o Google recomenda definir reconciliationMode como FULL para manter IDs de documento consistentes.
    • ID_FIELD: opcional. Especifica quais campos são os IDs de documento.

Python

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

Para autenticar no AI Applications, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Criar um repositório 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

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

Próximas etapas

  • Para anexar seu repositório de dados a um app, crie um app e selecione o repositório seguindo as etapas em Criar um app de pesquisa.

  • Para ver como os resultados da pesquisa aparecem depois que o app e o repositório de dados são configurados, consulte Receber resultados da pesquisa.

Importar do Bigtable

Para ingerir dados do Bigtable, siga estas etapas para criar um repositório de dados e ingerir dados usando a API.

Configurar o acesso ao Bigtable

Para conceder à Vertex AI Search acesso a dados do Bigtable que estão em um projeto diferente, siga estas etapas:

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

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com`
    
  2. Acessar a página AM e administrador

    IAM e administrador

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

  4. Em Novos principais, insira o identificador da conta de serviço da instância e selecione o papel Bigtable > Leitor do Bigtable.

  5. Clique em Salvar.

  6. Volte para o projeto da Vertex AI para Pesquisa.

Em seguida, acesse Importar dados do Bigtable.

Importar dados do Bigtable

REST

Para usar a linha de comando e criar um repositório de dados e ingerir dados do Bigtable, siga estas etapas:

  1. Crie um repositório 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:

    • PROJECT_ID: ID do projeto.
    • DATA_STORE_ID: o ID do repositório de dados. O ID só pode conter letras minúsculas, dígitos, sublinhados e hífens.
    • DISPLAY_NAME: o nome de exibição do repositório de dados. Isso pode ser exibido no console do Google Cloud .
  2. Importar 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:

    • PROJECT_ID: o ID do seu projeto da Vertex AI Search.
    • DATA_STORE_ID: o ID do repositório de dados. O ID só pode conter letras minúsculas, dígitos, sublinhados e hífens.
    • 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 ser usado para o valor da chave de linha após a ingestão na Vertex AI para Pesquisa.
    • KEY: obrigatório. Um valor de string para a chave do grupo de colunas.
    • ENCODING: opcional. O modo de codificação dos valores quando o tipo não é STRING.Isso pode ser substituído para uma coluna específica listando essa coluna em columns e especificando uma codificação para ela.
    • 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 ser usado para essa coluna depois da ingestão na Vertex AI para Pesquisa.
    • COLUMN_ENCODING: opcional. O modo de codificação dos valores de uma coluna específica quando o tipo não é STRING.
    • RECONCILIATION_MODE: opcional. Os valores são FULL e INCREMENTAL. O padrão é INCREMENTAL. Especificar INCREMENTAL causa uma atualização incremental de dados do Bigtable para seu repositório de dados. Isso faz uma operação de upsert, que adiciona novos documentos e substitui os existentes por documentos atualizados com o mesmo ID. Especificar FULL causa uma rebase completa dos documentos no repositório de dados. Em outras palavras, documentos novos e atualizados são adicionados ao repositório de dados, e os documentos que não estão no Bigtable são removidos. O modo FULL é útil se você quiser excluir automaticamente documentos que não precisa mais.
    • AUTO_GENERATE_IDS: opcional. Especifica se os IDs de documentos serão gerados automaticamente. Se definido como true, os IDs de documento serão gerados com base em um hash do payload. Os IDs de documentos gerados podem não permanecer consistentes em várias importações. Se você gerar IDs automaticamente em várias importações, o Google recomenda definir reconciliationMode como FULL para manter IDs de documento consistentes.

      Especifique autoGenerateIds apenas quando bigquerySource.dataSchema estiver definido como custom. Caso contrário, um erro INVALID_ARGUMENT será retornado. Se você não especificar autoGenerateIds ou definir como false, precisará especificar idField. Caso contrário, a importação dos documentos vai falhar.

    • ID_FIELD: opcional. Especifica quais campos são os IDs de documento.

Python

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

Para autenticar no AI Applications, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Criar um repositório 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

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

Próximas etapas

  • Para anexar seu repositório de dados a um app, crie um app e selecione o repositório seguindo as etapas em Criar um app de pesquisa.

  • Para ver como os resultados da pesquisa aparecem depois que o app e o repositório de dados são configurados, consulte Receber resultados da pesquisa.

Importar do AlloyDB para PostgreSQL

Para ingerir dados do AlloyDB para PostgreSQL, siga estas etapas para criar um repositório de dados e ingerir dados usando o console do Google Cloud ou a API.

Se os dados do AlloyDB para PostgreSQL estiverem no mesmo projeto da Vertex AI Search, acesse Importar dados do AlloyDB para PostgreSQL.

Se os dados do AlloyDB para PostgreSQL estiverem em um projeto diferente do projeto da Pesquisa da Vertex AI, acesse Configurar o acesso ao AlloyDB para PostgreSQL.

Configurar o acesso ao AlloyDB para PostgreSQL de outro projeto

Para dar à Pesquisa da Vertex AI acesso aos dados do AlloyDB para PostgreSQL que estão em um projeto diferente, siga estas etapas:

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

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com
    
  2. Mude para o projeto Google Cloud em que seus dados do AlloyDB para PostgreSQL estão localizados.

  3. Acessar a página IAM

    IAM

  4. Clique em Permitir acesso.

  5. Em Novos principais, insira o identificador da conta de serviço da Pesquisa da Vertex AI e selecione o papel Cloud AlloyDB > Administrador do Cloud AlloyDB.

  6. Clique em Salvar.

  7. Volte para o projeto da Vertex AI para Pesquisa.

Em seguida, acesse Importar dados do AlloyDB para PostgreSQL.

Importar dados do AlloyDB para PostgreSQL

Console

Para usar o console e ingerir dados do AlloyDB para PostgreSQL, siga estas etapas:

  1. No console Google Cloud , acesse a página Aplicativos de IA.

    Aplicativos de IA

  2. No menu de navegação, clique em Repositórios de dados.

  3. Clique em Criar repositório de dados.

  4. Na página Origem, selecione AlloyDB.

  5. Especifique o ID do projeto, o ID do local, o ID do cluster, o ID do banco de dados e o ID da tabela dos dados que você planeja importar.

  6. Clique em Continuar.

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

  8. Insira um nome para o repositório de dados.

  9. Clique em Criar.

  10. Para verificar o status da ingestão, acesse a página Repositórios de dados e clique no nome do repositório de dados para conferir os detalhes na página Dados. Quando a coluna de status na guia Atividade mudar de Em andamento para Importação concluída, a ingestão será concluída.

    Dependendo do tamanho dos dados, a ingestão pode levar de vários minutos a várias horas.

REST

Para usar a linha de comando e criar um repositório de dados e ingerir dados do AlloyDB para PostgreSQL, siga estas etapas:

  1. Crie um repositório 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:

    • PROJECT_ID: ID do projeto.
    • DATA_STORE_ID: o ID do repositório de dados. O ID só pode conter letras minúsculas, dígitos, sublinhados e hífens.
    • DISPLAY_NAME: o nome de exibição do repositório de dados. Isso pode ser exibido no console do Google Cloud .
  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:

    • PROJECT_ID: o ID do seu projeto da Vertex AI para Pesquisa.
    • DATA_STORE_ID: o ID do repositório de dados. O ID só pode conter letras minúsculas, dígitos, sublinhados e hífens.
    • ALLOYDB_PROJECT_ID: o ID do seu projeto do AlloyDB para PostgreSQL.
    • LOCATION_ID: o ID da sua região do AlloyDB para PostgreSQL.
    • CLUSTER_ID: o ID do cluster do AlloyDB para PostgreSQL.
    • DATABASE_ID: o ID do seu banco de dados do AlloyDB para PostgreSQL.
    • TABLE_ID: o ID da sua tabela do AlloyDB para PostgreSQL.
    • RECONCILIATION_MODE: opcional. Os valores são FULL e INCREMENTAL. O padrão é INCREMENTAL. Especificar INCREMENTAL causa uma atualização incremental de dados do AlloyDB para PostgreSQL no seu repositório de dados. Isso faz uma operação de upsert, que adiciona novos documentos e substitui os documentos existentes por documentos atualizados com o mesmo ID. Especificar FULL causa uma rebase completa dos documentos no seu repositório de dados. Em outras palavras, documentos novos e atualizados são adicionados ao seu repositório de dados, e os documentos que não estão no AlloyDB para PostgreSQL são removidos dele. O modo FULL é útil se você quiser excluir automaticamente documentos que não precisa mais.
    • AUTO_GENERATE_IDS: opcional. Especifica se os IDs de documentos serão gerados automaticamente. Se definido como true, os IDs de documento serão gerados com base em um hash do payload. Os IDs de documentos gerados podem não permanecer consistentes em várias importações. Se você gerar IDs automaticamente em várias importações, o Google recomenda definir reconciliationMode como FULL para manter IDs de documento consistentes.
    • ID_FIELD: opcional. Especifica quais campos são os IDs de documento.

Python

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

Para autenticar no AI Applications, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Criar um repositório 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

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

Próximas etapas

  • Para anexar seu repositório de dados a um app, crie um app e selecione o repositório seguindo as etapas em Criar um app de pesquisa.

  • Para ver como os resultados da pesquisa aparecem depois que o app e o repositório de dados são configurados, consulte Receber resultados da pesquisa.

Fazer upload de dados JSON estruturados com a API

Para fazer upload direto de um documento ou objeto JSON usando a API, siga estas etapas.

Antes de importar seus dados, prepare os dados para ingestão.

REST

Para usar a linha de comando e criar um repositório de dados e importar dados JSON estruturados, siga estas etapas.

  1. Crie um repositório 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:

    • PROJECT_ID: o ID do seu Google Cloud projeto.
    • DATA_STORE_ID: o ID do repositório de dados da Vertex AI para Pesquisa que você quer criar. Esse ID só pode conter letras minúsculas, dígitos, sublinhados e hífens.
    • DATA_STORE_DISPLAY_NAME: o nome de exibição do repositório de dados da Vertex AI para Pesquisa que você quer criar.
  2. Importar dados estruturados.

    Há algumas abordagens que você pode usar para fazer upload de dados, incluindo:

    • Faça upload de 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:

      • DOCUMENT_ID: um ID exclusivo para o documento. Ele pode ter até 63 caracteres e conter apenas letras minúsculas, dígitos, sublinhados e hífens.
      • JSON_DOCUMENT_STRING: o documento JSON como uma única string. Isso precisa estar de acordo com o esquema JSON que você forneceu na etapa anterior. Por exemplo:

        { \"title\": \"test title\", \"categories\": [\"cat_1\", \"cat_2\"], \"uri\": \"test uri\"}
        
    • Faça upload de 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. Isso precisa estar de acordo com o esquema JSON fornecido na etapa 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
      }'
      

Próximas etapas

  • Para anexar seu repositório de dados a um app, crie um app e selecione o repositório seguindo as etapas em Criar um app de pesquisa.

  • Para ver como os resultados da pesquisa aparecem depois que o app e o repositório de dados são configurados, consulte Receber resultados da pesquisa.

Resolver problemas de ingestão de dados

Se você tiver problemas com a ingestão de dados, consulte estas dicas:

  • Se você estiver usando chaves de criptografia gerenciadas pelo cliente e a importação de dados falhar (com a mensagem de erro The caller does not have permission), verifique se o papel do IAM de criptografador/descriptografador do CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) na chave foi concedido ao agente de serviço do Cloud Storage. Para mais informações, consulte Antes de começar em "Chaves de criptografia gerenciadas pelo cliente".

  • Se você estiver usando a indexação avançada de sites e o Uso de documentos do repositório de dados for muito menor do que o esperado, revise os padrões de URL especificados para indexação e verifique se eles abrangem as páginas que você quer indexar. Se necessário, expanda-os. Por exemplo, se você usou *.en.example.com/*, talvez seja necessário adicionar *.example.com/* aos sites que quer indexar.

Criar um repositório de dados usando o Terraform

É possível usar o Terraform para criar um repositório de dados vazio. Depois que o repositório de dados vazio for criado, você poderá ingerir dados nele usando o console Google Cloud ou comandos da API.

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

Para criar um repositório de dados vazio usando o Terraform, consulte google_discovery_engine_data_store.