Criar um repositório de dados de pesquisa

Para criar um repositório de dados e processar dados para pesquisa, acesse a seção da 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 da CMEK, será necessário criar novos repositórios de dados usando a API, e 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 da 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. Ative 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 oferece recursos adicionais, como resumo de pesquisa, pesquisa com acompanhamento e respostas de extração. A indexação avançada de sites tem um custo extra e exige que você verifique a propriedade do domínio de qualquer site que você indexar. Para mais informações, consulte Indexação avançada de sites e Preços.

  6. No campo Sites a incluir, insira os padrões de URL correspondentes aos sites que você quer incluir no repositório de dados. Inclua um padrão de URL por linha, sem separadores de vírgula. 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 repositório de dados.

    Para saber 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 o 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 repositório de dados 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 você especificou excede a cota de "Número de documentos por projeto" do seu projeto), um aviso adicional vai aparecer solicitando que você atualize sua 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. A cota a ser aumentada é Número de documentos no serviço da API Discovery Engine.
    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. A coluna Status indica que a indexação está em andamento para os sites que ultrapassaram a cota. Quando a coluna Status de um URL mostra Indexado, os recursos de indexação avançada de sites estão disponíveis para esse URL ou padrão de URL.

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

Python

Para mais informações, consulte a documentação de referência da API Python 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 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ê atualize os dados manualmente.

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

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

Ingestão única Ingestão periódica
Disponibilidade geral (GA). Pré-lançamento público.
Os dados precisam ser atualizados manualmente. Os dados são atualizados automaticamente a cada 1, 3 ou 5 dias. Não é possível atualizar os dados manualmente.
A Vertex AI Search cria um único repositório de dados com base em uma tabela no BigQuery. A Vertex AI Search cria um conector de dados para um conjunto de dados do BigQuery e um repositório de dados (chamado de entidade) para cada tabela especificada. Para cada conector de dados, as tabelas precisam ter o mesmo tipo de dados (por exemplo, estruturado) e estar no mesmo conjunto de dados do BigQuery.
Os dados de várias tabelas podem ser combinados em um repositório de dados primeiro consumindo dados de uma tabela e depois mais dados de outra fonte ou tabela do BigQuery. Como a importação manual de dados não é compatível, os dados em um repositório de dados de entidade só podem ser provenientes de uma tabela do BigQuery.
O controle de acesso à fonte de dados é aceito. Não há suporte para o controle de acesso à fonte de dados. 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 console do Google Cloud ou a API. Use o console para criar conectores de dados e os armazenamentos de dados de entidade.
Compatível com CMEK. Não é compatível com CMEK.

Importar uma vez do BigQuery

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

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

Console

Para usar o console 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, selecione uma tabela que você preparou para ingestão e clique em Selecionar. Se preferir, insira o local da tabela diretamente no campo Caminho do BigQuery.

  8. Clique em Continuar.

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

    1. Mapeie campos para propriedades principais.

    2. Se houver campos importantes ausentes no esquema, use Adicionar novo campo para adicioná-los.

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

    3. Clique em Continuar.

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

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

  12. Clique em Criar.

  13. Para verificar o status da ingestão, acesse a página Repositórios de dados e clique no nome do repositório de dados para conferir os detalhes na página Dados. Quando a coluna de status na guia Atividade 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 importar dados do BigQuery, siga estas etapas.

  1. Crie um repositório de dados.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DATA_STORE_DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"]
    }'
    

    Substitua:

    • PROJECT_ID: o ID do seu 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: se você estiver fazendo upload de dados não estruturados e quiser configurar a análise de documentos ou ativar o agrupamento de documentos para RAG, especifique o objeto documentProcessingConfig e o inclua 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 configurar opções de análise ou fragmentação, consulte Analisar e fragmentar 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 precisa estar em conformidade com o esquema padrão do BigQuery fornecido em Preparar dados para transferência. Você pode definir o ID de cada documento, englobando 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. O Google recomenda deixar esse campo em branco para permitir que a Vertex AI para Pesquisa crie automaticamente um diretório temporário.
    • RECONCILIATION_MODE: opcional. Os valores são FULL e INCREMENTAL. O padrão é INCREMENTAL. Especificar INCREMENTAL causa uma atualização incremental dos dados do BigQuery 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. 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 ao repositório de dados, e os que não estão no BigQuery são removidos. O modo FULL é útil se você quiser excluir automaticamente documentos que não são mais necessários.
    • AUTO_GENERATE_IDS: opcional. Especifica se os IDs de documentos serão gerados automaticamente. Se definido como true, os IDs de 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 somente quando bigquerySource.dataSchema estiver definido como custom. Caso contrário, um erro INVALID_ARGUMENT é retornado. Se você não especificar autoGenerateIds ou definir como false, será necessário especificar idField. Caso contrário, a importação dos documentos vai falhar.

    • 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 somente quando: (1) bigquerySource.dataSchema estiver definido como custom e (2) auto_generate_ids estiver definido como false ou não for 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 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 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 documentação de referência da API Node.js 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

/**
 * 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 ao BigQuery com sincronização periódica

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

O procedimento a seguir descreve como criar um conector de dados que associa um conjunto de dados do BigQuery a um conector de dados da Vertex AI para Pesquisa e como especificar uma tabela no conjunto de dados para cada repositório de dados que você quer 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 repositórios de dados da entidade. É possível especificar a sincronização diária, a cada três dias ou a cada cinco dias.

Console

Para usar o console do Google Cloud e criar um conector que sincronize periodicamente os dados de um conjunto de dados do BigQuery com 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, ou seja, a frequência com que você quer que o conector da Vertex AI para Pesquisa seja sincronizado com o conjunto de dados do BigQuery. Você pode mudar a frequência mais tarde.

  8. No campo Caminho do conjunto de dados do BigQuery, clique em Procurar, selecione o conjunto de dados que contém as tabelas que você preparou para ingestão. 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 de dados.

  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 o 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 da ingestão, acesse a página Repositórios de dados e clique no nome do conector de dados para conferir detalhes na página Dados > 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 de dados 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 como os resultados da pesquisa aparecem depois que o app e o repositório de dados são configurados, consulte Receber resultados da pesquisa.

Importar do Cloud Storage

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

  • Ingestão única: você importa dados de uma pasta ou um arquivo do Cloud Storage para um repositório de dados. Os dados no repositório de dados não mudam, a menos que você atualize 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 repositórios de dados da Vertex AI para Pesquisa.

Ingestão única Ingestão periódica
Disponibilidade geral (GA). Pré-lançamento público.
Os dados precisam ser atualizados manualmente. Os dados são atualizados automaticamente a cada um, três ou cinco dias. Não é possível atualizar os dados manualmente.
A Vertex AI Search cria um único repositório de dados com base em uma 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 é aceita, os dados em um repositório de dados de entidade só podem ser provenientes de um arquivo ou pasta do Cloud Storage.
O controle de acesso à fonte de dados é aceito. Para mais informações, consulte Controle de acesso à fonte de dados. Não há suporte para o controle de acesso à fonte de dados. 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 console do Google Cloud ou a API. Use o console para criar conectores de dados e os armazenamentos de dados de entidade.
Compatível com CMEK. 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, consulte Preparar 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. Como alternativa, insira o local diretamente no campo gs://.

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

  8. Clique em Continuar.

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

    1. Mapeie campos para propriedades principais.

    2. Se houver campos importantes ausentes no esquema, use Adicionar novo campo para adicioná-los.

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

    3. Clique em Continuar.

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

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

  12. Insira um nome para o repositório 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 informações sobre a fragmentação, consulte Fragmentar documentos para RAG.

    O analisador de OCR e o analisador de layout podem gerar custos adicionais. Consulte Preços do recurso de IA de documentos.

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

  14. Clique em Criar.

  15. Para verificar o status da ingestão, acesse a página Repositórios de dados e clique no nome do repositório de dados para conferir os detalhes na página Dados. Quando a coluna de status na guia Atividade 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 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. É recomendável configurar um analisador de OCR para PDFs se você estiver ingerindo 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 de padrão de arquivo de entrada é gs://<your-gcs-bucket>/directory/object.json, e um exemplo de padrão 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: faça upload de dados não estruturados com metadados para documentos não estruturados. Cada linha do arquivo precisa seguir um dos seguintes formatos. É possível definir o ID de cada documento:

        • { "id": "<your-id>", "jsonData": "<JSON string>", "content": { "mimeType": "<application/pdf or text/html>", "uri": "gs://<your-gcs-bucket>/directory/filename.pdf" } }
        • { "id": "<your-id>", "structData": <JSON object>, "content": { "mimeType": "<application/pdf or text/html>", "uri": "gs://<your-gcs-bucket>/directory/filename.pdf" } }
      • custom: faça upload de JSON para documentos estruturados. Os dados são organizados de acordo com um esquema. É possível especificar o esquema. Caso contrário, ele será detectado automaticamente. Você pode colocar a string JSON do documento em um formato consistente diretamente em cada linha, e a Pesquisa da Vertex AI gera automaticamente os IDs 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 como os primeiros 128 bits de SHA256(GCS_URI) codificados como uma string hexadecimal. É possível especificar vários padrões de arquivo de entrada, desde que os arquivos correspondentes não excedam o limite de 100 mil arquivos.

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

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

    • RECONCILIATION_MODE: opcional. Os valores são FULL e INCREMENTAL. O padrão é INCREMENTAL. Especificar INCREMENTAL causa uma atualização incremental 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. A especificação de FULL causa uma rebase completa dos documentos no seu repositório de dados. Em outras palavras, documentos novos e atualizados são adicionados à repositório 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 de 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.

      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 definir como false, será necessário especificar idField. Caso contrário, a importação de documentos vai falhar.

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

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

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

      O nome do campo JSON especificado por id_field 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 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 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 documentação de referência da API Node.js 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

/**
 * 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, consulte Preparar dados para ingestão.

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

Os dados são sincronizados periodicamente com o repositório de dados da entidade. É possível especificar a sincronização diária, a cada três 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, ou seja, a frequência com que você quer que o conector de pesquisa da Vertex AI seja sincronizado com o local do Cloud Storage. 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ê preparou para ingestão. Em seguida, clique em Selecionar. Como alternativa, insira o local diretamente no campo gs://.

  10. Clique em Continuar.

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

  12. Insira um nome para o conector de dados.

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

    O analisador de OCR e o analisador de layout podem gerar custos adicionais. Consulte Preços do recurso de IA de documentos.

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

  14. Clique em Criar.

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

  15. Para verificar o status da ingestão, acesse a página Repositórios de dados e clique no nome do conector 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 de configurar a fonte de dados e importar os dados pela primeira vez, eles serão sincronizados 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.

Conectar ao Google Drive

Para pesquisar dados do Google Drive, siga as etapas abaixo para criar um conector usando o console do Google Cloud.

Antes de começar:

  • Você precisa 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 à fonte de dados.

  • A pesquisa avançada do Google Drive está em pré-lançamento particular. Esse recurso é um pré-requisito para usar a resumo de pesquisa e a pesquisa com acompanhamentos com um repositório de dados do Google Drive. Para usar esse recurso, siga as etapas em Usar a indexação avançada do Drive.

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. . Clique em Criar.

Usar a indexação avançada do Drive (pré-lançamento privado)

A indexação avançada do Drive está em visualização particular.

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

Antes de começar:

  • Você precisa ser um superadministrador do Google Workspace para ativar a indexação avançada do Drive. Isso acontece porque, com a indexação avançada do Drive, a Vertex AI para Pesquisa indexa os dados do Google Drive.
  • Você precisa ser adicionado à lista de permissões para usar esse recurso.

Console

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

  1. No Console 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. Selecione Indexação avançada do Drive.

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

  7. Na seção Configurar a delegação em todo o domínio, revise as instruções e anote o ID do cliente da conta de serviço fornecido na etapa 4 dessa seção.

  8. Configurar a delegação em todo o domínio:

    1. Acesse a página Delegação em todo o domínio do Admin Console do Google Workspace e faça login com sua conta de superadministrador.
    2. Clique em Adicionar novo.
    3. Insira o ID do cliente da conta de serviço que você anotou. Esse ID é fornecido nas instruções no console do Agent Builder na seção Configurar delegação em todo o domínio.
    4. Insira os seguintes escopos do OAuth.

      https://www.googleapis.com/auth/drive.readonly,
      https://www.googleapis.com/auth/admin.directory.user.readonly,
      https://www.googleapis.com/auth/admin.directory.group.readonly,
      https://www.googleapis.com/auth/admin.directory.domain.readonly,
      https://www.googleapis.com/auth/admin.reports.audit.readonly
      
    5. Clique em Autorizar.

  9. No console do Agente Builder, 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. 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 o repositório de dados para pesquisar.

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 aparecem depois que o app e o repositório de dados são configurados, consulte Receber resultados da pesquisa.

Conectar ao Gmail

Para pesquisar dados do Gmail, siga as etapas abaixo para criar um repositório de dados e fazer a transferência deles usando o console do Google Cloud.

Antes de começar:

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

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

Console

Para usar o console e tornar os dados do Gmail 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 Gmail.

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

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

  7. Clique em Criar.

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 aparecem depois que o app e o repositório de dados são configurados, consulte Receber resultados da pesquisa.

Conectar-se ao Google Sites

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

Antes de começar:

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

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

Console

Para usar o console e tornar os dados do Google Sites 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 Sites.

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

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

  7. Clique em Criar.

Próximas etapas

  • Para anexar 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.

Conectar ao Google Agenda

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

Antes de começar:

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

  • Configurar o controle de acesso do Google Agenda. Para informações sobre como configurar o controle de acesso, consulte Usar o controle de acesso à fonte de dados.

Console

Para usar o console e tornar os dados do Google Agenda 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 Agenda.

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

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

  7. Clique em Criar.

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 aparecem depois que o app e o repositório de dados são configurados, consulte Receber resultados da pesquisa.

Conectar ao Grupos do Google

Para pesquisar dados do Google Groups, siga as etapas abaixo para criar um conector usando o console do Google Cloud.

Antes de começar:

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

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

Console

Para usar o console e tornar os dados do Google Groups 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 Grupos do Google.

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

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

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

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 aparecem depois que o app e o repositório de dados são configurados, consulte Receber resultados da pesquisa.

Você pode configurar a pesquisa de pessoas para suas equipes de trabalho sincronizando dados de pessoas do Google Workspace. Esses dados são sincronizados continuamente com a Vertex AI para Pesquisa depois que você cria o repositório de dados.

As pessoas do seu diretório aparecem nos resultados da pesquisa como cards que mostram as informações de perfil disponíveis, como nome, endereço de e-mail, organização e foto do perfil. Clique em um card para acessar a página de detalhes da pessoa.

Pré-requisitos

  1. Determine com qual provedor de identidade os usuários vão fazer login no app. Se você estiver usando um provedor de identidade de terceiros, um administrador precisará federar o provedor com o Google Workspace. A federação pode levar um tempo considerável para ser planejada e configurada. Para mais informações, consulte Usar o controle de acesso à fonte de dados.

  2. Um administrador do Google Workspace precisa ativar a pesquisa de pessoas nos dados do Google Workspace. Para fazer isso, siga estas etapas:

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

  4. Conecte-se ao provedor de identidade usando as etapas em Conectar seu provedor de identidade e especifique o Google Identity como seu provedor.

Para informações sobre o diretório do Google Workspace, consulte Visão geral: configurar e gerenciar o diretório na documentação do Google Workspace.

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 aparecem depois que o app e o repositório de dados são configurados, consulte Receber resultados da pesquisa.

Importar do Cloud SQL

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

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

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

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

    SQL

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

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

  4. Acessar a página AM e administrador

    IAM e administrador

  5. Clique em Conceder acesso.

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

  7. Clique em Salvar.

Próximo:

Configurar o acesso ao Cloud SQL em um projeto diferente

Para conceder à Pesquisa da Vertex AI acesso a dados do Cloud SQL 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 o papel Cloud SQL > Leitor do Cloud SQL.

  5. Clique em Salvar.

Em seguida, acesse Importar dados do Cloud SQL.

Importar dados do Cloud SQL

Console

Para usar o console 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 o ID do projeto, da instância, do banco de dados e da tabela dos dados que você planeja importar.

  6. Clique em Procurar e escolha um local intermediário do Cloud Storage para exportar os dados. 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 de dados 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. 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 ser exibido no console do Google Cloud.
  2. Importe dados do Cloud SQL.

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

    Substitua:

    • PROJECT_ID: o ID do seu projeto da Vertex AI 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.
    • SQL_PROJECT_ID: o ID do seu projeto do Cloud SQL.
    • INSTANCE_ID: o ID da sua instância do Cloud SQL.
    • DATABASE_ID: o ID do seu banco de dados do Cloud SQL.
    • TABLE_ID: o ID da tabela do Cloud SQL.
    • STAGING_DIRECTORY: opcional. Um diretório do Cloud Storage, por exemplo, gs://<your-gcs-bucket>/directory/import_errors.
    • RECONCILIATION_MODE: opcional. Os valores são FULL e INCREMENTAL. O padrão é INCREMENTAL. A especificação de INCREMENTAL causa uma atualização incremental de dados do Cloud SQL 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. 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 à sua loja de dados, e aqueles que não estão no Cloud SQL são removidos da repositório de dados. O modo FULL é útil se você quiser excluir automaticamente documentos que não são mais necessários.

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"
# 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 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 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 conceder à Pesquisa da Vertex AI acesso aos dados do Spanner 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 Spanner na página IAM e administrador e clique em Conceder acesso.

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

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

Em seguida, acesse Importar dados do Spanner.

Importar dados do Spanner

Console

Para usar o console e 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 de dados 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. Crie um repositório de dados.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"],
      "contentConfig": "CONTENT_REQUIRED",
    }'
    

    Substitua:

    • PROJECT_ID: o ID do seu projeto da Vertex AI para Pesquisa.
    • DATA_STORE_ID: o ID do repositório de dados. O ID só pode 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 seu projeto do Spanner.
    • 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. Para mais informações sobre o Data Boost, consulte a Visão geral do Data Boost na documentação do Spanner.
    • RECONCILIATION_MODE: opcional. Os valores são FULL e INCREMENTAL. O padrão é INCREMENTAL. A especificação de INCREMENTAL causa uma atualização incremental dos dados do Spanner 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. A especificação de FULL causa uma rebase completa dos documentos no repositório de dados. Em outras palavras, novos e atualizados são adicionados ao repositório de dados, e os que não estão no Spanner são removidos. O modo FULL é útil se você quiser excluir automaticamente documentos que não 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

# 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 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 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 da Vertex AI para Pesquisa, acesse Importar dados do Firestore.

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

Configurar o acesso ao Firestore em um projeto diferente

Para conceder à Pesquisa da Vertex AI 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 papel Datastore > Administrador de importação/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 de dados 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 ser exibido 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 seu projeto do Firestore.
    • DATABASE_ID: o ID do seu banco de dados do Firestore.
    • COLLECTION_ID: o ID da sua coleção do Firestore.
    • RECONCILIATION_MODE: opcional. Os valores são FULL e INCREMENTAL. O padrão é INCREMENTAL. Especificar INCREMENTAL causa uma atualização incremental de dados do Firestore para 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. 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 à 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 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

# 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 aparecem depois que o app e o repositório de dados são configurados, consulte Receber resultados da pesquisa.

Importar do Bigtable

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

Configurar o acesso ao Bigtable

Para conceder à Pesquisa da Vertex AI acesso a dados do Bigtable que estão 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 Bigtable na página IAM e administrador e clique em Conceder acesso.

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

  5. Clique em Salvar.

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

Em seguida, acesse Importar dados do Bigtable.

Importar dados do Bigtable

REST

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

  1. Crie um repositório de dados.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"],
    }'
    

    Substitua:

    • PROJECT_ID: 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 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.
    • BIGTABLE_PROJECT_ID: o ID do seu projeto do Bigtable.
    • INSTANCE_ID: o ID da 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 tipo não é STRING.Isso pode ser substituído para uma coluna específica ao listar essa coluna em columns e especificar uma codificação para ela.
    • COLUMN_TYPE: opcional. O tipo de valores nesta família de colunas.
    • QUALIFIER: obrigatório. Qualificador da coluna.
    • FIELD_NAME: opcional, mas recomendado. O nome do campo a ser usado para essa coluna 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 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 ao repositório de dados, e os que não estão no Bigtable são removidos. O modo FULL é útil se você quiser excluir automaticamente documentos que não são mais necessários.
    • AUTO_GENERATE_IDS: opcional. Especifica se os IDs de documentos serão gerados automaticamente. Se definido como true, os IDs de 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.

      Especifique autoGenerateIds somente quando bigquerySource.dataSchema estiver definido como custom. Caso contrário, um erro INVALID_ARGUMENT será retornado. Se você não especificar autoGenerateIds ou definir como false, será necessário especificar idField. Caso contrário, os documentos não serão importados.

    • 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

# 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 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 transferir dados do AlloyDB para PostgreSQL, siga as etapas abaixo para criar um repositório de dados e transferir os 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 do seu projeto de pesquisa da Vertex AI, acesse Configurar o acesso do AlloyDB para PostgreSQL.

Configurar o acesso ao AlloyDB para PostgreSQL em 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 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. 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.

Em seguida, 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 o ID do projeto, do local, do 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 de dados 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. Importe dados do AlloyDB para PostgreSQL.

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

    Substitua:

    • PROJECT_ID: o ID do seu projeto da Vertex AI para Pesquisa.
    • DATA_STORE_ID: o ID do repositório de dados. O ID só pode conter letras minúsculas, dígitos, sublinhados e 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 da tabela do AlloyDB para PostgreSQL.
    • 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 AlloyDB para PostgreSQL no 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 à sua loja de dados, e aqueles que não estão no AlloyDB para PostgreSQL são removidos da 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 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.

Fazer upload de dados JSON estruturados com a API

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

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

REST

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

  1. Crie um repositório de dados.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DATA_STORE_DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"]
    }'
    

    Substitua:

    • PROJECT_ID: o ID do seu 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.
  2. Importe dados estruturados.

    Há 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ê forneceu na etapa anterior. Por exemplo:

        { \"title\": \"test title\", \"categories\": [\"cat_1\", \"cat_2\"], \"uri\": \"test uri\"}
        
    • Faça upload de um objeto JSON.

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents?documentId=DOCUMENT_ID" \
      -d '{
        "structData": JSON_DOCUMENT_OBJECT
      }'
      

      Substitua JSON_DOCUMENT_OBJECT pelo documento JSON como um objeto JSON. 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 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.

Resolver problemas de ingestão de dados

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

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

  • Se você estiver usando a indexação avançada de sites e o Uso de documentos para o repositório 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/*, talvez seja necessário adicionar *.example.com/* aos sites que você quer indexar.

Criar um repositório de dados usando o Terraform

É possível usar o Terraform para criar um repositório de dados vazio. Depois que o repositório de dados vazio é criado, é possível transferir dados para ele 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.