Criar um repositório de dados de pesquisa

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

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

Limitações

Se você tiver políticas da organização de CMEK, será necessário criar novos repositórios de dados usando a API, não o console do Google Cloud. A criação de novas armazenagens de dados usando o console do Google Cloud falha se você tiver políticas da organização CMEK ativadas. Para mais informações sobre o suporte a CMEK para a Pesquisa da Vertex AI, consulte Chaves de criptografia gerenciadas pelo cliente.

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 com os recursos empresariais ativados. Você pode ativar a edição Enterprise para um app quando ele é criado. 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 do Google Cloud, acesse a página Criador de agentes.

    Agent Builder.

  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 você quer ativar a Indexação avançada de sites para esse repositório de dados. Não é possível ativar ou desativar essa opção depois.

    A indexação avançada de sites fornece recursos adicionais, como pesquisa resumo, pesquisa com acompanhamento e respostas extrativas. Avançado a indexação de sites tem um custo adicional e exige a verificação do domínio a propriedade de qualquer site indexado. 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 correspondentes aos sites que você quer incluir no armazenamento de dados. Inclua um URL padrão por linha, sem vírgulas como separadores. Por exemplo, www.example.com/docs/*

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

    Para ver o número de padrões de URL que você pode incluir ou excluir, consulte Dados do site.

  8. Clique em Continuar.

  9. Selecione um local para seu repositório de dados. A indexação avançada de sites precisa estar ativada para selecionar um local.

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

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

  12. Para conferir informações sobre o 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 solicitando que você verifique os domínios no repositório de dados.
    • Se você tiver um déficit de cota (o número de páginas nos sites que especificado excede o "Número de documentos por projeto" cota para seu projeto), um aviso adicional 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 do site.

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

    1. Clique em Fazer upgrade da cota. A página IAM e administrador do console do Google Cloud aparece.
    2. Siga as instruções em Solicitar um limite de cota maior na documentação do Google Cloud. O a cota deve aumentar é o Número de documentos no Mecanismo de Descoberta API.
    3. Depois de enviar a solicitação para um limite de cota maior, volte à página Agent Builder e clique em Repositórios de dados no menu de navegação.
    4. Clique no nome do repositório de dados na coluna Nome. o status; indica que a indexação dos sites que ultrapassaram a cota está em andamento. Quando a coluna Status de um URL mostra Indexado, os recursos de indexação avançada de sites ficam disponíveis para esse URL ou padrão de URL.

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

Python

Para mais informações, consulte a documentação de referência da API Python do Vertex AI Agent Builder.

Para autenticar no Vertex AI Agent Builder, 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

  • Para anexar o repositório de dados do site a um app, crie um app com os recursos Enterprise ativados e selecione o repositório de dados seguindo as etapas em Criar um app de pesquisa.

  • Para conferir uma prévia de 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 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ê atualizar os dados.

  • 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 os repositórios de dados da Vertex AI para Pesquisa.

Ingestão única Ingestão periódica
Disponibilidade geral (GA). Acesso antecipado.
Os dados precisam ser atualizados manualmente. Os dados são atualizados automaticamente a cada 1, 3 ou 5 dias. Os dados não podem ser atualizados manualmente.
A Vertex AI Search cria um único repositório de dados com base em uma tabela no BigQuery. A Vertex AI para Pesquisa cria um conector de dados para um dataset do BigQuery e um repositório de dados (chamado de repositório de dados entity) para cada tabela especificada. Para cada dado conector, as tabelas precisam ter o mesmo tipo de dados (por exemplo, estruturada) e estar no mesmo conjunto de dados do BigQuery.
Dados de várias tabelas podem ser combinados em um repositório de dados pela primeira ingerir dados de uma tabela e depois mais dados de outra fonte ou Tabela do BigQuery. Como a importação manual de dados não está disponível, os dados em uma entidade o repositório de dados só pode ser originado de uma tabela do BigQuery.
O controle de acesso da fonte de dados é compatível. Não há suporte para o controle de acesso à fonte de dados. Os dados importados podem contêm controles de acesso, mas eles não são respeitados.
É possível criar um repositório de dados usando o o console do Google Cloud ou a API. Use o console para criar conectores de dados e os armazenamentos de dados de entidade.
em conformidade com CMEK. Não é compatível com CMEK.

Importe uma vez do BigQuery

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

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

Console

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

  1. No Console do Google Cloud, acesse a página Criador de agentes.

    Agent Builder.

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

  3. Clique em Novo repositório de dados.

  4. Na página Origem, selecione BigQuery.

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

  6. Clique em Uma vez.

  7. No campo Caminho do BigQuery, clique em Procurar e selecione uma tabela se preparou para a 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 ausentes no esquema, use Adicionar novo campo para adicioná-los.

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

    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 para conferir os detalhes na página Dados. Quando a coluna de status na guia Atividade muda de Em andamento para Importação concluída, a transferência é concluída.

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

REST

Usar a linha de comando para criar um repositório de dados e importar dados dele BigQuery, siga estas etapas.

  1. Criar 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 projeto do Google Cloud.
    • 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 hifens.
    • DATA_STORE_DISPLAY_NAME: o nome de exibição da Vertex AI. Pesquise o repositório de dados que você quer criar.

    Opcional: se você estiver fazendo upload de dados não estruturados e quiser configurar documentos ou para ativar a divisão de documentos para RAG, especifique o documentProcessingConfig e incluí-lo na solicitação de criação do repositório de dados. É recomendável configurar um analisador de OCR para PDFs se você estiver ingerindo PDFs digitalizados. Para saber como para configurar as opções de análise ou divisão, consulte Analisar e 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 projeto do Google Cloud.
    • 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 as 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. que você usa precisam estar em conformidade com as regras esquema fornecido em Preparar os dados para ingestão. Você pode definir o ID de cada documento, encerrando todos os dados na string jsonData.
      • custom: qualquer esquema de tabela do BigQuery é aceito, e a Pesquisa da Vertex AI 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. Recomendações do Google deixando este campo em branco para que a Vertex AI para Pesquisa criar 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 dos dados do BigQuery para o armazenamento de dados. Isso faz uma operação de inserção, que adiciona novos documentos e substitui os documentos existentes por documentos atualizados com o mesmo ID. Especificar FULL causa uma realocação total do documentos em seu repositório de dados. Em outras palavras, novos e atualizados documentos são adicionados ao seu repositório de dados, e os documentos que não são no BigQuery são removidos do seu repositório de dados. O O modo FULL é útil se você quer excluir documentos automaticamente de 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 documentos são gerados com base em um hash do payload. Os IDs de documento 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 os IDs de documentos consistentes.

      Especifique autoGenerateIds apenas quando bigquerySource.dataSchema for Defina como custom. Caso contrário, será exibido um erro INVALID_ARGUMENT. retornados. Se você não especificar autoGenerateIds ou defini-lo como false, é preciso especificar idField. Caso contrário, os documentos não conseguem importação.

    • ID_FIELD: opcional. Especifica quais campos são os IDs de documentos. 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 apenas quando: (1) bigquerySource.dataSchema estiver definido como custom e (2) auto_generate_ids está 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 em conformidade com o 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# do Vertex AI Agent Builder.

Para autenticar no Vertex AI Agent Builder, 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,
            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 = "",
        };
        // 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 API Vertex AI Agent Builder Go documentação de referência.

Para autenticar no Vertex AI Agent Builder, 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 do Vertex AI Agent Builder.

Para autenticar no Vertex AI Agent Builder, 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")
              .build();
      ImportDocumentsResponse response = documentServiceClient.importDocumentsAsync(request).get();
    }
  }
}

Node.js

Para mais informações, consulte a API Vertex AI Agent Builder Node.js documentação de referência.

Para autenticar no Vertex AI Agent Builder, 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.
 */
/**
 *  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'

// 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 do Vertex AI Agent Builder.

Para autenticar no Vertex AI Agent Builder, 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 do Vertex AI Agent Builder.

Para autenticar no Vertex AI Agent Builder, 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, revise Preparar os dados para ingestão.

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

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

Console

Usar o console do Google Cloud para criar um conector que sincronize dados periodicamente de um conjunto de dados do BigQuery para a Vertex AI para Pesquisa, siga estas etapas:

  1. No Console do Google Cloud, acesse a página Criador de agentes.

    Agent Builder.

  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ódico.

  7. Selecione a Frequência de sincronização, com que frequência você quer que a Conector da Vertex AI para Pesquisa para sincronizar com o BigQuery no conjunto de dados. Você pode mudar a frequência mais tarde.

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

  9. No campo Tabelas a sincronizar, clique em Procurar e selecione uma tabela que contenha os dados que você quer no repositório.

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

  11. Clique em Continuar.

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

    Você criou um conector de dados, que vai sincronizar dados periodicamente com o conjunto de dados do BigQuery. E você criou um ou mais repositórios de dados de entidade. Os repositórios de dados têm os mesmos nomes que as tabelas do BigQuery.

  13. Para verificar o status do seu processamento, acesse a página Repositórios de dados. e clique no nome do seu conector de dados para ver detalhes sobre ele na página Dados página > Guia Atividade de ingestão de dados. Quando a coluna de status na guia Atividade muda de Em andamento para Concluído, a primeira ingestão é 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 dados pela primeira vez, o repositório sincroniza os dados dessa fonte com a frequência selecionada durante a configuração. A primeira sincronização ocorre cerca de uma hora após a criação do conector de dados. A próxima sincronização ocorre cerca de 24, 72 ou 120 horas depois.

Próximas etapas

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

  • Para conferir uma prévia de 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

Você pode criar repositórios de dados a partir de 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ê atualizar os dados manualmente.

  • Ingestão periódica: você importa dados de uma pasta ou um arquivo do Cloud Storage e define uma frequência de sincronização que determina a frequência com que a loja de dados é atualizada 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 os repositórios de dados da Vertex AI para Pesquisa.

Ingestão única Ingestão periódica
Disponibilidade geral (GA). Acesso antecipado.
Os dados precisam ser atualizados manualmente. Os dados são atualizados automaticamente a cada um, três ou cinco dias. Os dados não podem ser atualizados manualmente.
A Vertex AI para Pesquisa cria um único repositório de dados pasta ou arquivo no Cloud Storage. A Vertex AI para Pesquisa cria um conector de dados e associa um repositório de dados (chamado de entidade) ao arquivo ou pasta especificado. Cada conector de dados do Cloud Storage pode ter um único repositório de dados de entidade.
Os dados de vários arquivos, pastas e buckets podem ser combinados em um repositório de dados ingerindo primeiro os dados de um local do Cloud Storage e depois os dados de outro local. Como a importação manual de dados não está disponível, os dados em uma entidade O repositório de dados só pode ser originado de um arquivo ou pasta do Cloud Storage.
O controle de acesso da fonte de dados é compatível. Para mais informações, consulte Controle de acesso à fonte de dados. O controle de acesso da 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 o console do Google Cloud ou a API. Use o console para criar conectores de dados e os armazenamentos de dados de entidade.
CMEK-compliant. Não é compatível com CMEK.

Importar uma vez do Cloud Storage

Para transferir dados do Cloud Storage, siga as etapas abaixo para criar um repositório de dados e fazer a transferência usando o console do Google Cloud ou a API.

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

Console

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

  1. No Console do Google Cloud, acesse a página Criador de agentes.

    Agent Builder.

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

  3. Clique em Novo repositório de dados.

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

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

  6. Clique em Procurar e escolha os dados que você preparou para ingestão. Em seguida, clique em Selecionar. Outra opção é digitar 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 para adicioná-las.

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

    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, pode selecionar análise e de agrupamento para seus documentos. Para comparar analisadores, consulte Analisar documentos. Para informações sobre a fragmentação, consulte Fragmentar documentos para RAG.

    Os analisadores de OCR e de layout podem gerar custos adicionais. Consulte Documento preços de atributos de IA.

    Para selecionar um analisador, abra Opções de processamento de documentos e especifique o 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 para conferir os detalhes na página Dados. Quando a coluna de status na guia Atividade muda de Em andamento para Importação concluída, a transferência é 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 transferir 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"],
      "contentConfig": "CONTENT_REQUIRED",
    }'
    

    Substitua:

    • PROJECT_ID: o ID do seu projeto do Google Cloud.
    • 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 hifens.
    • DATA_STORE_DISPLAY_NAME: o nome de exibição do repositório de dados da Vertex AI para Pesquisa que você quer criar.

    Opcional: para configurar a análise de documentos ou ativar o fragmento de documentos para RAG, especifique o objeto documentProcessingConfig e o inclua na solicitação de criação de repositório de dados. Configurar um O analisador de OCR para PDFs é recomendado se você estiver processando PDFs digitalizados. Para saber como configurar opções de análise ou fragmentação, consulte Analisar e fragmentar 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 projeto do Google Cloud.
    • 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 do padrão de arquivo de entrada é gs://<your-gcs-bucket>/directory/object.jsone um exemplo de que corresponde a 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 é correspondido pelo padrão se torna um documento.

      Se <your-gcs-bucket> não estiver em PROJECT_ID, será necessário conceder à conta de serviço service-<project number>@gcp-sa-discoveryengine.iam.gserviceaccount.com as permissões "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 as permissões 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: faz 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: faz upload do JSON para documentos estruturados. Os dados são e são organizados de acordo com um esquema. É possível especificar o esquema. caso contrário, ele é detectado automaticamente. Você pode colocar a string JSON do documento em um formato consistente diretamente em cada linha e A Vertex AI para Pesquisa gera os IDs automaticamente para cada documento importado.

      • content: faça upload de documentos não estruturados (PDF, HTML, DOC, TXT, PPTX. O ID de cada documento é gerado automaticamente primeiros 128 bits de SHA256(GCS_URI) codificados como uma string hexadecimal. Você pode especificar vários padrões de arquivo de entrada, desde que os arquivos correspondentes não exceda 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. Recomendações do Google deixando este campo em branco para que a Vertex AI para Pesquisa criar 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 dos dados do Cloud Storage para o repositório de dados. Isso faz uma operação de inserção, que adiciona novos documentos e substitui os documentos existentes por documentos atualizados com o mesmo ID. Especificar FULL causa uma realocação total dos documentos no seu repositório de dados. Em outras palavras, documentos novos e atualizados são adicionados à loja de dados, e aqueles que não estão no Cloud Storage são removidos dela. 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 dos documentos são gerados com base em um hash do payload. Observe que gerados IDs de documentos podem não permanecer consistentes em várias importações. Se você gera IDs automaticamente em várias importações, o Google altamente recomenda definir reconciliationMode como FULL para manter IDs de documento consistentes.

      Especifique autoGenerateIds somente 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 defini-lo como false, é preciso especificar idField. Caso contrário, os documentos não conseguem importação.

    • 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 documentos.

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

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

      O nome do campo JSON especificado por id_field precisa ser string, deve ter entre 1 e 63 caracteres e deve obedecer para RFC-1034. Caso contrário, o documentos não são importados.

C#

Para mais informações, consulte a API Vertex AI Agent Builder C# documentação de referência.

Para autenticar no Vertex AI Agent Builder, 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,
            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 = "",
        };
        // 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 do Vertex AI Agent Builder.

Para autenticar no Vertex AI Agent Builder, 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 API Vertex AI Agent Builder Java documentação de referência.

Para autenticar no Vertex AI Agent Builder, 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")
              .build();
      ImportDocumentsResponse response = documentServiceClient.importDocumentsAsync(request).get();
    }
  }
}

Node.js

Para mais informações, consulte a API Vertex AI Agent Builder Node.js documentação de referência.

Para autenticar no Vertex AI Agent Builder, 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.
 */
/**
 *  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'

// 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 do Vertex AI Agent Builder.

Para autenticar no Vertex AI Agent Builder, 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 do Vertex AI Agent Builder.

Para autenticar no Vertex AI Agent Builder, 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, revise Preparar os 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 Vertex AI para Pesquisa e como especificar uma pasta ou um arquivo nesse local para o repositório de dados que você quer criar. Repositórios de dados que são filhos dos 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 ou cinco dias.

Console

  1. No Console do Google Cloud, acesse a página Criador de agentes.

    Agent Builder.

  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ódico.

  7. Selecione a Frequência de sincronização, com que frequência você quer que a Conector da Vertex AI para Pesquisa para sincronizar com o Cloud Storage o local. Você pode mudar a frequência mais tarde.

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

  9. Clique em Procurar e escolha os dados que você preparados 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 seu conector de dados.

  12. Insira um nome para o conector de dados.

  13. Opcional: se você selecionou documentos não estruturados, pode escolher opções de análise e fragmentação para seus documentos. Para comparar analisadores, consulte Analisar documentos. Para obter informações sobre divisão, consulte Divulgar documentos para RAG.

    O analisador de OCR e o analisador de layout podem gerar custos adicionais. Consulte Documento preços de atributos de IA.

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

  14. Clique em Criar.

    Você acabou de criar um conector de dados, que sincronizará os dados periodicamente com o local do Cloud Storage. Você também criou uma entidade repositório de dados, denominado gcs_store.

  15. 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 de ingestão de dados muda de Em andamento para Concluído, a primeira ingestão é concluída.

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

Depois que você configura sua fonte de dados e importa dados pela primeira vez, os dados são sincronizados dessa origem na frequência selecionada durante a configuração. A primeira sincronização ocorre cerca de uma hora após a criação do conector de dados. A próxima sincronização vai ocorrer em cerca de 24 horas, 72 horas, ou 120 horas depois.

Próximas etapas

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

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

Sincronizar com o Google Drive

Para sincronizar dados do Google Drive, siga as etapas abaixo para criar um repositório de dados e ingerir dados usando o console do Google Cloud.

Os dados do Google Drive são sincronizados continuamente com a Vertex AI para Pesquisa depois que você cria o repositório de dados.

Antes de começar:

  • É necessário fazer login no console do Google Cloud com a mesma conta usada para a instância do Google Drive que você planeja conectar. A Vertex AI para Pesquisa usa seu ID de cliente do Google Workspace para se conectar ao Google Drive.

  • Configurar o controle de acesso para o Google Drive. Para informações sobre como configurar o controle de acesso, consulte Usar o controle de acesso da fonte de dados.

Console

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

  1. No Console do Google Cloud, acesse a página Criador de agentes.

    Agent Builder.

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

  3. Clique em Novo repositório de dados.

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

  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 pesquisa.

Próximas etapas

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

  • Para conferir como os resultados da pesquisa vão aparecer depois que o app e o repositório de dados forem configurar, consulte Veja os resultados da pesquisa.

Importar do Cloud SQL

Para ingerir dados do Cloud SQL, siga as etapas abaixo para configurar acesso ao Cloud SQL, criação de um repositório de dados e ingestão de dados.

Configurar o acesso ao bucket de preparação para instâncias do Cloud SQL

Na ingestão de dados do Cloud SQL, os dados são primeiro preparados do bucket do Cloud Storage. Siga estas etapas para conceder ao Cloud SQL o acesso à instância para buckets do Cloud Storage.

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

    SQL

  2. Clique na instância do Cloud SQL da qual você planeja importar.

  3. Copie o identificador da conta de serviço da instância, que se parece com uma 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 a pasta Cloud Storage > Administrador de armazenamento.

  7. Clique em Salvar.

Próximo:

Configurar o acesso ao Cloud SQL de um projeto diferente

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

  1. Substitua a variável PROJECT_NUMBER a seguir pelo número do seu 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. Alterne 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 a pasta 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 para ingerir dados do Cloud SQL, siga estas etapas:

  1. No Console do Google Cloud, acesse a página Criador de agentes.

    Agent Builder.

  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 os 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. Em seguida, clique em Selecionar. Como alternativa, insira o local diretamente no campo gs://.

  7. Selecione se você 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 Minimize o impacto no desempenho das exportações 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 para conferir os detalhes na página Dados. Quando a coluna de status na guia Atividade muda de Em andamento para Importação concluída, a transferência é 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 para criar um repositório de dados e transferir dados do Cloud SQL, siga estas etapas:

  1. Criar 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: o ID do seu projeto.
    • DATA_STORE_ID: o ID do repositório de dados. O ID só pode ter letras minúsculas, dígitos, sublinhados e hifens.
    • DISPLAY_NAME: o nome de exibição do repositório de dados. Isso pode 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 da Vertex AI para Pesquisa projeto.
    • DATA_STORE_ID: o ID do repositório de dados. O ID pode conter apenas letras minúsculas, dígitos, sublinhados e hifens.
    • SQL_PROJECT_ID: o ID do Cloud SQL projeto.
    • INSTANCE_ID: o ID da instância do Cloud SQL.
    • DATABASE_ID: o ID do seu banco de dados do Cloud SQL.
    • TABLE_ID: o ID da tabela do Cloud SQL.
    • STAGING_DIRECTORY: opcional. Uma instância do Cloud Storage do Cloud, por exemplo, gs://<your-gcs-bucket>/directory/import_errors:
    • RECONCILIATION_MODE: opcional. Os valores são FULL e INCREMENTAL. O padrão é INCREMENTAL. Como especificar INCREMENTAL causa uma atualização incremental dos dados do Cloud SQL para seu repositório de dados. Isso faz uma operação de inserção, que adiciona novos documentos e substitui os documentos existentes por documentos atualizados com o mesmo ID. A especificação de FULL causa uma rebase completa dos documentos no repositório de dados. Em outras palavras, documentos novos e atualizados são adicionados aos seus dados repositório de dados, e os documentos que não estão no Cloud SQL são removidos do seu repositório de dados. O modo FULL é útil se você quiser excluir automaticamente os documentos desnecessários.

Python

Para mais informações, consulte a API Vertex AI Agent Builder Python documentação de referência.

Para autenticar no Vertex AI Agent Builder, 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 Crie um app de pesquisa.

  • Para conferir uma prévia de 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 transferir dados do Spanner, siga estas etapas para criar um repositório de dados e transferir dados usando o console do Google Cloud ou a API.

Configurar o acesso ao Spanner em um projeto diferente

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

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

  1. Substitua a variável PROJECT_NUMBER a seguir pela sua na Vertex AI para Pesquisa. Depois, copie o conteúdo no bloco de código aberto. 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. Alterne 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 destas opções:

    • Se você não vai usar a otimização de dados durante a importação, selecione o botão Cloud Spanner > papel Leitor de banco de dados do Cloud Spanner.
    • Se você planeja usar a otimização de dados durante a importação, selecione o Cloud Spanner > Administrador de banco de dados do Cloud Spanner ou em um papel personalizado com as permissões 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.

Depois acesse Importar dados do Spanner.

Importar dados do Spanner

Console

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

  1. No Console do Google Cloud, acesse a página Criador de agentes.

    Agent Builder.

  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 para conferir os detalhes na página Dados. Quando a coluna de status na guia Atividade muda de Em andamento para Importação concluída, a transferência é 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 transferir dados do Spanner, siga estas etapas:

  1. Criar 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 ter letras minúsculas, dígitos, sublinhados e hifens.
    • 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 Spanner projeto.
    • INSTANCE_ID: o ID da sua instância do Spanner.
    • DATABASE_ID: o ID do seu banco de dados do Spanner.
    • TABLE_ID: o ID da tabela do Spanner.
    • DATA_BOOST_BOOLEAN: opcional. Se o Data Boost vai ser ativado. Consulte Data Boost sobre o Data Boost visão geral no Documentação do Spanner.
    • RECONCILIATION_MODE: opcional. Os valores são FULL e INCREMENTAL. O padrão é INCREMENTAL. Especificação INCREMENTAL causa uma atualização incremental dos dados de ao seu repositório de dados. Isso faz uma operação de inserção, que adiciona novos documentos e substitui os documentos existentes por documentos atualizados com o mesmo ID. A especificação de FULL causa uma rebase completa dos documentos no repositório de dados. Em outras palavras, as novas e documentos atualizados são adicionados ao seu repositório de dados, e documentos que que não estão no Spanner são removidos do seu repositório de dados. O modo FULL é útil se você quiser excluir automaticamente documentos que não são mais necessários.
    • AUTO_GENERATE_IDS: opcional. Especifica se deve automaticamente os IDs de documentos. Se definido como true, os IDs dos documentos sã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 os IDs de documentos consistentes.

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

Python

Para mais informações, consulte a API Vertex AI Agent Builder Python documentação de referência.

Para autenticar no Vertex AI Agent Builder, 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 Crie um app de pesquisa.

  • Para conferir como os resultados da pesquisa vão aparecer depois que o app e o repositório de dados forem configurar, consulte Veja os resultados da pesquisa.

Importar do Firestore

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

Se os dados do Firestore estiverem no mesmo projeto que Vertex AI para Pesquisa, acesse Importar dados de Firestore (em inglês).

Se os dados do Firestore estiverem em um projeto diferente do seu no projeto da Vertex AI para Pesquisa, acesse Configurar o Firestore .

Configurar o acesso ao Firestore de um projeto diferente

Para dar à Vertex AI para Pesquisa o acesso aos dados do Firestore em um projeto diferente, siga estas etapas:

  1. Substitua a variável PROJECT_NUMBER a seguir pelo número do seu 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. Alterne 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 conjunto de dados Datastore > papel 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 para ingerir dados do Firestore, siga estas etapas:

  1. No Console do Google Cloud, acesse a página Criador de agentes.

    Agent Builder.

  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 para conferir os detalhes na página Dados. Quando a coluna de status na guia Atividade muda de Em andamento para Importação concluída, a transferência é 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 para criar um repositório de dados e transferir 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: o ID do seu projeto.
    • DATA_STORE_ID: o ID do repositório de dados. O ID só pode ter letras minúsculas, dígitos, sublinhados e hifens.
    • DISPLAY_NAME: o nome de exibição do repositório de dados. Isso pode no console do Google Cloud.
  2. Importe dados do Firestore.

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

    Substitua:

    • 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 hifens.
    • FIRESTORE_PROJECT_ID: o ID do projeto do Firestore.
    • DATABASE_ID: o ID do Firestore no seu banco de dados.
    • COLLECTION_ID: o ID do Firestore coleção.
    • RECONCILIATION_MODE: opcional. Os valores são FULL e INCREMENTAL. O padrão é INCREMENTAL. Como especificar INCREMENTAL causa uma atualização incremental dos dados do Firestore para sua repositório de dados. Isso faz uma operação de inserção, que adiciona novos documentos e substitui os documentos existentes por documentos atualizados com o mesmo ID. Especificar FULL causa uma realocação total dos documentos nos seus dados. loja on-line. Em outras palavras, documentos novos e atualizados são adicionados à sua loja de dados, e aqueles que não estão no Firestore são removidos dela. O modo FULL é útil se você quiser excluir automaticamente os documentos desnecessários.
    • AUTO_GENERATE_IDS: opcional. Especifica se os IDs de documentos serão gerados automaticamente. Se definido como true, os IDs de documentos 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 os IDs de documentos consistentes.
    • ID_FIELD: opcional. Especifica quais campos são os IDs de documento.

Python

Para mais informações, consulte a API Vertex AI Agent Builder Python documentação de referência.

Para autenticar no Vertex AI Agent Builder, 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 o repositório de dados a um app, crie um app e selecione o repositório de dados seguindo as etapas em Criar um app de pesquisa.

  • Para conferir como os resultados da pesquisa vão aparecer depois que o app e o repositório de dados forem configurar, consulte Veja os resultados da pesquisa.

Importar do Bigtable

Para transferir dados do Bigtable, siga as etapas abaixo para criar um armazenamento de dados e transferir os dados usando a API.

Configurar o acesso ao Bigtable

Para conceder à Pesquisa da Vertex AI acesso aos dados do Bigtable em um projeto diferente, siga estas etapas:

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

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

    IAM e Administrador

  3. Alterne para o projeto do Bigtable na página IAM e Página "Administrador" e clique em Permitir 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 seu projeto da Vertex AI para Pesquisa.

Depois acesse Importar dados do Bigtable.

Importar dados do Bigtable

REST

Usar a linha de comando para criar um repositório de dados e ingerir dados de Bigtable, siga estas etapas:

  1. Criar 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: o ID do seu projeto.
    • DATA_STORE_ID: o ID do repositório de dados. O ID só pode ter letras minúsculas, dígitos, sublinhados e hifens.
    • 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 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 da Vertex AI para Pesquisa projeto.
    • DATA_STORE_ID: o ID do repositório de dados. O ID pode conter apenas letras minúsculas, dígitos, sublinhados e hifens.
    • BIGTABLE_PROJECT_ID: o ID do projeto 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 transferência para a Pesquisa da Vertex AI.
    • 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 o tipo não é STRING.Para substituir uma coluna específica, listando essa coluna em columns e especificando uma codificação para ela.
    • COLUMN_TYPE: opcional. O tipo de valores nesta coluna família.
    • QUALIFIER: obrigatório. Qualificador da coluna.
    • FIELD_NAME: opcional, mas recomendado. O nome do campo a ser usado para essa coluna após a ingestão na Pesquisa da Vertex AI.
    • COLUMN_ENCODING: opcional. O modo de codificação dos valores para uma coluna específica quando o tipo não é STRING.
    • RECONCILIATION_MODE: opcional. Os valores são FULL e INCREMENTAL. O padrão é INCREMENTAL. A especificação de INCREMENTAL causa uma atualização incremental dos dados do Bigtable para seu repositório de dados. Isso faz uma operação de inserção, que adiciona novos documentos e substitui os documentos existentes por documentos atualizados por o mesmo ID. A especificação de FULL causa uma rebase completa dos documentos no repositório de dados. Em outras palavras, documentos novos e atualizados são adicionados seu repositório de dados e documentos que não estão no Bigtable sejam removidos do seu repositório de dados. 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 dos documentos são gerados com base em um hash do payload. Observe que gerados IDs de documentos 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 os IDs de documentos consistentes.

      Especifique autoGenerateIds apenas quando bigquerySource.dataSchema for Defina como custom. Caso contrário, um erro INVALID_ARGUMENT será retornado. Se você não especificar autoGenerateIds ou definir como false, será necessário especificar idField. Caso contrário, os documentos não conseguem importação.

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

Python

Para mais informações, consulte a API Vertex AI Agent Builder Python documentação de referência.

Para autenticar no Vertex AI Agent Builder, 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 o repositório de dados a um app, crie um app e selecione o repositório de dados seguindo as etapas em Criar um app de pesquisa.

  • Para conferir uma prévia de 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 as etapas abaixo 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 do projeto de pesquisa da Vertex AI, acesse Importar dados do AlloyDB para PostgreSQL.

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

Configurar o acesso do AlloyDB para PostgreSQL de um projeto diferente

Para conceder à Pesquisa da Vertex AI acesso aos dados do AlloyDB para PostgreSQL em um projeto diferente, siga estas etapas:

  1. Substitua a variável PROJECT_NUMBER a seguir pela sua na Vertex AI para Pesquisa. Depois, copie o conteúdo no bloco de código aberto. 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 do Google Cloud em que os dados do AlloyDB para PostgreSQL estão armazenados.

  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 Vertex AI Search e selecione a função Cloud AlloyDB > Cloud AlloyDB Admin.

  6. Clique em Salvar.

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

Depois acesse Importar dados do AlloyDB para PostgreSQL.

Importar dados do AlloyDB para PostgreSQL

Console

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

  1. No Console do Google Cloud, acesse a página Criador de agentes.

    Agent Builder.

  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 os ID do projeto, do local, ID cluster, do banco de dados e 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 para conferir os detalhes na página Dados. Quando a coluna de status na guia Atividade muda de Em andamento para Importação concluída, a transferência é 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 para criar um repositório de dados e transferir 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: o ID do seu projeto.
    • DATA_STORE_ID: o ID do repositório de dados. O ID só pode ter letras minúsculas, dígitos, sublinhados e hifens.
    • 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 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 pode conter apenas letras minúsculas, dígitos, sublinhados e hifens.
    • ALLOYDB_PROJECT_ID: o ID do seu projeto do AlloyDB para PostgreSQL.
    • LOCATION_ID: o ID do local do AlloyDB para PostgreSQL.
    • CLUSTER_ID: o ID do cluster do AlloyDB para PostgreSQL.
    • DATABASE_ID: o ID do banco de dados do AlloyDB para PostgreSQL.
    • TABLE_ID: o ID do AlloyDB para PostgreSQL tabela.
    • RECONCILIATION_MODE: opcional. Os valores são FULL e INCREMENTAL. O padrão é INCREMENTAL. Como especificar INCREMENTAL causa uma atualização incremental de dados do AlloyDB para PostgreSQL para o repositório de dados. Isso faz uma operação de inserção, que adiciona novos documentos e substitui os documentos existentes por documentos atualizados com o mesmo ID. Especificar FULL causa uma realocação total dos documentos nos seus dados. loja on-line. Em outras palavras, documentos novos e atualizados são adicionados aos seus dados repositório de dados, e os documentos que não estão no AlloyDB para PostgreSQL são removidos do seu repositório de dados. 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 documentos 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 os IDs de documentos 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 do Vertex AI Agent Builder.

Para autenticar no Vertex AI Agent Builder, 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 o repositório de dados a um app, crie um app e selecione o repositório de dados seguindo as etapas em Criar um app de pesquisa.

  • Para conferir como os resultados da pesquisa vão aparecer depois que o app e o repositório de dados forem configurar, consulte Veja os 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, Preparar 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. Criar 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 projeto do Google Cloud.
    • 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 hifens.
    • DATA_STORE_DISPLAY_NAME: o nome de exibição da Vertex AI. Pesquise o repositório de dados que você quer criar.
  2. Importe dados estruturados.

    Existem algumas abordagens que podem ser usadas para fazer o 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. Esse ID pode ter até 63 caracteres e conter apenas letras minúsculas, dígitos, sublinhados e hifens.
      • JSON_DOCUMENT_STRING: o documento JSON como uma string única. Ele precisa estar em conformidade com o esquema JSON que você fornecidos 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 objeto JSON. Ele 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 Crie um app de pesquisa.

  • Para conferir como os resultados da pesquisa vão aparecer depois que o app e o repositório de dados forem configurar, consulte Veja os resultados da pesquisa.

Resolver problemas de ingestão de dados

Se você tiver problemas com a ingestão de dados, veja 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), depois verifique que o papel do IAM para criptografador/descriptografador da CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) na chave foi concedido a o 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 para o armazenamento de dados for muito menor do que o esperado, revise os padrões de URL que você especificou para a indexação e verifique se eles abrangem as páginas que você quer indexar e expanda-os, se necessário. Por exemplo, se você usou *.en.example.com/*, pode ser necessário adicionar *.example.com/* ao sites que deseja indexar.

Criar um repositório de dados usando o Terraform

É possível usar o Terraform para criar um repositório de dados vazio. Após o repositório de dados vazio é possível ingerir dados no repositório de dados usando o console do Google Cloud ou comandos de 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.