Configurar o preenchimento automático

Esta página descreve o recurso básico de preenchimento automático da Vertex AI Search. O preenchimento automático gera sugestões de consulta com base nos primeiros caracteres digitados.

As sugestões geradas pelo preenchimento automático variam de acordo com o tipo de dados usados pelo app de pesquisa:

  • Dados estruturados e não estruturados. Por padrão, o preenchimento automático gera sugestões com base no conteúdo dos documentos no repositório de dados. Após a importação de documentos, por padrão, o preenchimento automático não começa a gerar sugestões até que haja dados de qualidade suficientes, normalmente alguns dias. Se você fizer solicitações de preenchimento automático pela API, ele poderá gerar sugestões com base no histórico de pesquisa ou em eventos do usuário.

  • Dados do site. Por padrão, o preenchimento automático gera sugestões com base no histórico de pesquisa. O preenchimento automático exige tráfego de pesquisa real. Depois que o tráfego de pesquisa começa, o preenchimento automático leva um ou dois dias para gerar sugestões. As sugestões podem ser geradas com base em dados rastreados da Web de sites públicos com o modelo de dados de documentos avançado experimental.

  • Dados de saúde. Por padrão, uma fonte de dados médicos canônica é usada para gerar sugestões de preenchimento automático para repositórios de dados de saúde.

O modelo de sugestões de consulta determina qual tipo de dados o preenchimento automático usa para gerar sugestões. Há quatro modelos de sugestões de consultas:

  • Document. O modelo de documento gera sugestões com base em documentos importados pelo usuário. Esse modelo não está disponível para dados de sites ou de saúde.

  • Campos completáveis. O modelo de campos preenchíveis sugere texto extraído diretamente de campos de dados estruturados. Somente os campos anotados com completable são usados para sugestões de preenchimento automático. Esse modelo está disponível apenas para dados estruturados.

  • Histórico de pesquisa. O modelo de histórico de pesquisa gera sugestões com base no histórico de chamadas da API SearchService.search. Não use esse modelo se não houver tráfego disponível para o método servingConfigs.search. Esse modelo não está disponível para dados de saúde.

  • Evento do usuário. O modelo de eventos do usuário gera sugestões com base em eventos importados pelo usuário do tipo search. Esse modelo não está disponível para dados de saúde.

As solicitações de Autocomplete são enviadas usando o método dataStores.completeQuery.

Se não quiser usar um modelo de sugestões de consulta, use as sugestões importadas, que oferecem sugestões de preenchimento automático com base em uma lista importada. Para mais informações, consulte Usar uma lista importada de sugestões de preenchimento automático.

Tipos de modelos disponíveis de acordo com o tipo de dados

A tabela a seguir mostra os tipos de modelo de sugestões de consulta disponíveis para cada tipo de dados.


Modelo de sugestões de consulta

Fonte de dados

Dados do site

Dados estruturados

Dados não estruturados
Documento Importado ✔* (padrão) ✔ (padrão)
Campos completáveis Importado
Histórico de pesquisa Coletados automaticamente ✔ (padrão)
Eventos do usuário Importados ou coletados automaticamente pelo widget
Conteúdo rastreado pela Web Rastreamento de conteúdo de sites públicos especificados

* : O esquema de documento precisa conter campos title ou description, ou então é necessário que haja campos especificados como propriedades de chave title ou description. Consulte Atualizar um esquema para dados estruturados.

: o conteúdo rastreado na Web só pode ser usado como fonte de dados se o modelo de dados de documento avançado experimental para preenchimento automático estiver ativado. Consulte Modelo de dados de documentos avançado.

Se não quiser usar o modelo padrão para seu tipo de dados, especifique um modelo diferente ao enviar a solicitação de preenchimento automático. As solicitações de preenchimento automático são enviadas usando o método dataStores.completeQuery. Para mais informações, consulte Instruções da API: envie uma solicitação de preenchimento automático para escolher um modelo diferente.

Recursos de preenchimento automático

A Vertex AI para Pesquisa oferece suporte aos seguintes recursos de preenchimento automático para mostrar as previsões mais úteis ao pesquisar:

Recurso Descrição Exemplo ou mais informações
Corrigir erros de digitação Corrija erros de digitação. MilcMilk.
Remover termos não seguros
  • Com tecnologia do SafeSearch do Google.
  • Remova consultas inadequadas.
  • Disponível em inglês (en), francês (fr), alemão (de), italiano (it), polonês (pl), português (pt), russo (ru), espanhol (es) e ucraniano (uk).
Texto ofensivo, como pornografia, conteúdo sexualmente sugestivo, vulgar ou violento.
Impedir a exibição de informações básicas de identificação pessoal (PII) Com tecnologia da Proteção de dados sensíveis, a pesquisa da Vertex AI faz um esforço razoável para evitar a exibição de tipos básicos de PII, como números de telefone e endereços de e-mail.

Se houver um endereço de e-mail jeffersonloveshiking@gmail.com no repositório de dados, a Vertex AI para Pesquisa não vai retornar o endereço de e-mail como uma sugestão de preenchimento automático se o usuário digitar jef na barra de pesquisa.

Para proteger ainda mais contra vazamentos de PII, o Google recomenda que você aplique sua própria solução de prevenção contra perda de dados (DLP) além dos detectores fornecidos pela Vertex AI para Pesquisa. Para mais informações, consulte Proteção contra vazamentos de PII.

Lista de bloqueio
  • Remova os termos listados na lista de bloqueio.
Para mais informações, consulte Usar uma lista de bloqueio de preenchimento automático.
Eliminar duplicação de termos
  • Com tecnologia de compreensão semântica baseada em IA.
  • Para termos quase idênticos, qualquer um deles vai corresponder, mas apenas o mais popular será sugerido.
Shoes for Women, Womens Shoes e Womans Shoes são duplicados, e apenas o mais popular é sugerido.
Sugestões de correspondência parcial
  • Não disponível em multirregiões dos EUA e da UE.
  • Configuração opcional.
  • Se não houver correspondências de preenchimento automático para toda a consulta, sugira correspondências apenas para a última palavra da consulta.
  • Não disponível para pesquisa de saúde.
Para mais informações, consulte Sugestões de correspondência de cauda longa.

Sugestões de correspondência parcial

As sugestões de correspondência de cauda são feitas usando a correspondência exata de prefixo com a última palavra em uma string de consulta.

Por exemplo, digamos que a consulta "músicas com ele" seja enviada em uma solicitação de preenchimento automático. Quando a correspondência de sufixo está ativada, o preenchimento automático pode descobrir que o prefixo completo "músicas com ele" não tem correspondências. No entanto, a última palavra na consulta, "he", tem uma correspondência exata de prefixo com "hello world" e "hello kitty". Nesse caso, as sugestões retornadas são "músicas com hello world" e "músicas com hello kitty" porque não há sugestões de correspondência exata.

Use esse recurso para reduzir os resultados de sugestões vazias e aumentar a diversidade de sugestões. Isso é especialmente útil em casos em que as fontes de dados (contagem de eventos do usuário, histórico de pesquisa e cobertura de tópicos de documentos) são limitadas. No entanto, ativar as sugestões de correspondência parcial pode reduzir a qualidade geral das sugestões. Como a correspondência de sufixo só corresponde à última palavra do prefixo, algumas sugestões retornadas podem não fazer sentido. Por exemplo, uma consulta como "músicas com ele" pode receber uma sugestão de correspondência de cauda como "músicas com ajudantes guias".

As sugestões de correspondência de cauda só serão retornadas se:

  1. include_tail_suggestions é definido como true na solicitação dataStores.completeQuery.

  2. Não há sugestões de correspondência de prefixo completo para a consulta.

Proteção contra vazamentos de PII

A definição de PII é ampla e pode ser difícil de detectar. Como resultado, a Pesquisa da Vertex AI não pode garantir que as informações de identificação pessoal não serão retornadas em sugestões de preenchimento automático.

A Vertex AI para Pesquisa aplica o serviço de inspeção da Proteção de dados sensíveis para procurar e bloquear tipos comuns de PII que aparecem como sugestões. No entanto, se seus repositórios de dados contiverem informações de identificação pessoal ou se você usar os modelos de sugestões de consultas do histórico de pesquisa ou de eventos do usuário, revise o seguinte e tome as medidas adequadas:

  1. Se os tipos de PII que você quer proteger forem bastante padrão, como números de telefone e endereços de e-mail, comece testando extensivamente as sugestões de preenchimento automático do seu app. A Pesquisa da Vertex AI não pode garantir que as PII não serão retornadas nas sugestões de preenchimento automático.

  2. Se forem descobertos vazamentos de PII durante o teste de preenchimento automático ou se você já souber que tem PII não padrão para proteger (por exemplo, IDs de usuário proprietários), tente ajustar o limite de preenchimento automático e os parâmetros de veiculação de conteúdo. Para mais informações, consulte Reduzir o risco de retornar sugestões que contenham PII.

  3. Se o ajuste dos parâmetros não for suficiente para evitar vazamentos de PII, implemente sua própria solução de DLP. Personalize a solução de DLP para os tipos de PII mais propensos a serem encontrados nos seus repositórios de dados, eventos de usuário ou consultas de pesquisa dos usuários. É possível usar a Proteção de dados sensíveis ou um serviço de DLP de terceiros. Siga uma das seguintes abordagens:

    • Filtre as PII antes de importar os documentos e eventos do usuário nos seus repositórios de dados.

    • Analise as sugestões de preenchimento automático antes de apresentá-las ao usuário no momento da exibição e bloqueie as sugestões que contêm informações de identificação pessoal.

  4. Se você usa o histórico de pesquisa ou o modelo de eventos do usuário, adicione um texto informativo na barra de pesquisa, pedindo aos usuários para não inserir PII nas consultas de pesquisa.

  5. Se você tiver dúvidas ou enfrentar desafios específicos ao bloquear informações de identificação pessoal (PII), entre em contato com seu engenheiro de clientes (CE) ou com a equipe de conta do Google.

Ativar ou desativar o preenchimento automático para um widget

Para ativar ou desativar o preenchimento automático de um widget, siga estas etapas:

Console

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

    Aplicativos de IA

  2. Clique no nome do app que você quer editar.

  3. Clique em Configurations.

  4. Clique na guia Interface.

  5. Marque a opção Mostrar sugestões de preenchimento automático para ativar ou desativar as sugestões de preenchimento automático do widget. Quando você ativa o preenchimento automático, aguarde um ou dois dias para que as sugestões comecem a aparecer.

Atualizar as configurações de preenchimento automático

Para configurar as opções de preenchimento automático na UI, siga estas etapas:

Console

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

    Aplicativos de IA

  2. Clique no nome do app que você quer editar.

  3. Clique em Configurations.

  4. Clique na guia Preenchimento automático.

  5. Insira ou selecione novos valores para as configurações de preenchimento automático que você quer atualizar:

    • Número máximo de sugestões:o número máximo de sugestões de preenchimento automático que podem ser oferecidas para uma consulta.
    • Comprimento mínimo para acionar:o número mínimo de caracteres que podem ser digitados antes que as sugestões de preenchimento automático sejam oferecidas.
    • Ordem de correspondência: o local em uma string de consulta em que o preenchimento automático pode começar a corresponder às sugestões.
    • Modelo de sugestões de consulta: o modelo usado para gerar as sugestões recuperadas. Isso pode ser substituído no dataStores.completeQuery usando o parâmetro queryModel.
    • Ativar o preenchimento automático: por padrão, o preenchimento automático não começa a fazer sugestões até ter dados de qualidade suficientes, geralmente alguns dias. Se você quiser substituir esse padrão e começar a receber algumas sugestões de preenchimento automático antes, selecione Agora.

      Mesmo quando você seleciona Agora, pode levar um dia para que as sugestões sejam geradas. Além disso, algumas sugestões de preenchimento automático vão estar faltando ou serão de baixa qualidade até que haja dados bons suficientes.

    • Lista de bloqueio: importe uma lista de bloqueio como um arquivo JSON em um bucket do Cloud Storage. Para mais informações sobre as restrições e especificações da lista de bloqueio, consulte Usar uma lista de bloqueio de preenchimento automático.

  6. Clique em Salvar e publicar. As mudanças entram em vigor em alguns minutos para mecanismos em que o preenchimento automático já está ativado.

Reduzir o risco de retornar sugestões que contenham PII

Os usuários finais têm todos os tipos de informações de PII, como carteiras de habilitação e números de telefone, que devem ser mantidas em sigilo. No entanto, qualquer uma dessas informações pessoais pode ser digitada na barra de pesquisa por usuários que procuram resultados específicos para eles.

Se você usa o histórico de pesquisa ou o modelo de eventos do usuário e há uma probabilidade de seus usuários digitarem PII na barra de pesquisa, é possível reduzir os vazamentos de PII ajustando os seguintes parâmetros:

  • queryFrequencyThreshold: antes de uma consulta ser retornada como uma sugestão de preenchimento automático, ela precisa ter sido inserida esse número de vezes.

  • numUniqueUsersThreshold: antes de uma consulta ser retornada como uma sugestão de preenchimento automático, ela precisa ter sido inserida por esse número de usuários únicos. O valor do campo userPseudoId no evento de usuário de pesquisa determina se o usuário é único.

Exemplo de caso de uso

Por exemplo, considere um caso em que os usuários têm números de conta que precisam ser mantidos em sigilo.

Se o modelo de sugestão de histórico de pesquisa ou eventos do usuário estiver em uso, esses números de conta, junto com todos os outros termos pesquisados pelos usuários finais, serão usados para gerar sugestões. Assim, se o número da conta do usuário A (YZ-46789A) tiver sido inserido repetidamente na barra de pesquisa e o usuário B tiver o número YZ-42345B, quando o usuário B digitar YZ-4 na barra de pesquisa, a sugestão de preenchimento automático retornada poderá ser o número da conta do usuário A.

Para reduzir a probabilidade de esse tipo de vazamento acontecer, o administrador de aplicativos de IA decide:

  • Aumente o valor do parâmetro queryFrequencyThreshold para 30. Nesse caso, é muito improvável que um número de conta seja inserido com tanta frequência. No entanto, as consultas de pesquisa em alta serão inseridas pelo menos com essa frequência.

  • Aumente o valor do parâmetro numUniqueUsersThreshold para 6. O administrador acha improvável que o mesmo número de conta seja inserido na barra de pesquisa em seis eventos de pesquisa, cada um associado a um userPseudoId diferente.

Procedimento

Há dois parâmetros de limite para o preenchimento automático. Esses parâmetros não estão disponíveis no console Google Cloud , mas podem ser definidos com uma chamada de API REST para o método updateCompletionConfig.

Para configurar as configurações de limite do preenchimento automático, siga estas etapas. Cada etapa é opcional, dependendo do parâmetro que você quer mudar.

REST

  1. Atualize o campo CompletionConfig.queryFrequencyThreshold:

    curl -X PATCH \
      -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/DATA_STORE_ID/completionConfig?updateMask=queryFrequencyThreshold \
      -d '{
        "name": "projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/completionConfig",
        "queryFrequencyThreshold": QUERY_FREQUENCY_THRESHOLD
      }'
    

    Substitua:

    • PROJECT_ID: o número ou ID do seu projeto Google Cloud .

    • DATA_STORE_ID: o ID do repositório de dados associado ao seu app.

    • QUERY_FREQUENCY_THRESHOLD: um valor inteiro que indica o número mínimo de vezes que uma consulta de pesquisa precisa ser inserida antes de poder ser retornada como uma sugestão de preenchimento automático. A contagem é somada em uma janela de tempo contínua de vários meses. O padrão é 8.

  2. Atualize o campo CompletionConfig.numUniqueUsersThreshold:

    curl -X PATCH \
      -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/DATA_STORE_ID/completionConfig?updateMask=numUniqueUsersThreshold \
      -d '{
        "name": "projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/completionConfig",
        "numUniqueUsersThreshold": UNIQUE_USERS
      }'
    

    Substitua UNIQUE_USERS por um valor inteiro que represente o número mínimo de usuários únicos que precisam inserir uma determinada consulta de pesquisa antes que ela possa ser retornada como uma sugestão de preenchimento automático. A contagem é somada em uma janela de tempo contínua de vários meses. O padrão é 3.

Atualizar anotações de campo completáveis no esquema

Para ativar o preenchimento automático de campos no esquema de dados estruturados, siga estas etapas:

Console

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

    Aplicativos de IA

  2. Clique no nome do app que você quer editar. Ele precisa usar dados estruturados.

  3. Clique em Dados.

  4. Clique na guia Esquema.

  5. Clique em Editar para selecionar os campos do esquema que serão marcados como completable.

  6. Clique em Salvar para salvar as configurações de campo atualizadas. Essas sugestões levam cerca de um dia para serem geradas e retornadas.

Enviar solicitações de preenchimento automático

Os exemplos a seguir mostram como enviar solicitações de preenchimento automático.

REST

Para enviar uma solicitação de preenchimento automático usando a API, siga estas etapas:

  1. Encontre o ID do repositório de dados. Se você já tiver o ID do repositório de dados, pule para a próxima etapa.

    1. No console Google Cloud , acesse a página Aplicativos de IA e, no menu de navegação, clique em Repositórios de dados.

      Acesse a página "Repositórios de dados"

    2. Clique no nome do seu repositório de dados.

    3. Na página Dados do seu repositório de dados, encontre o ID do repositório.

  2. Chame o método dataStores.completeQuery.

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID:completeQuery?query=QUERY_STRING"
    

    Substitua:

    • PROJECT_ID: o número ou ID do seu projeto Google Cloud .

    • DATA_STORE_ID: o ID do repositório de dados associado ao seu app.

    • QUERY_STRING: a entrada de digitação antecipada usada para buscar sugestões.

Enviar uma solicitação de preenchimento automático para outro modelo

Para enviar uma solicitação de preenchimento automático com um modelo de sugestões de consulta diferente, siga estas etapas:

  1. Encontre o ID do repositório de dados. Se você já tiver o ID do repositório de dados, pule para a próxima etapa.

    1. No console Google Cloud , acesse a página Aplicativos de IA e, no menu de navegação, clique em Repositórios de dados.

      Acesse a página "Repositórios de dados"

    2. Clique no nome do seu repositório de dados.

    3. Na página Dados do seu repositório de dados, encontre o ID do repositório.

  2. Chame o método dataStores.completeQuery.

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID:completeQuery?query=QUERY_STRING&query_model=QUERY_SUGGESTIONS_MODEL"
    

    Substitua:

    • PROJECT_ID: o número ou ID do seu projeto Google Cloud .

    • DATA_STORE_ID: o ID exclusivo do repositório de dados associado ao seu app.

    • QUERY_STRING: a entrada de digitação antecipada usada para buscar sugestões.

    • AUTOCOMPLETE_MODEL: os dados de preenchimento automático

    • QUERY_SUGGESTIONS_MODEL: o modelo de sugestões de consulta a ser usado na solicitação: document, document-completable, search-history ou user-event. Para dados de saúde, use healthcare-default.

C#

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

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

using Google.Cloud.DiscoveryEngine.V1;

public sealed partial class GeneratedCompletionServiceClientSnippets
{
    /// <summary>Snippet for CompleteQuery</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 CompleteQueryRequestObject()
    {
        // Create client
        CompletionServiceClient completionServiceClient = CompletionServiceClient.Create();
        // Initialize request argument(s)
        CompleteQueryRequest request = new CompleteQueryRequest
        {
            DataStoreAsDataStoreName = DataStoreName.FromProjectLocationDataStore("[PROJECT]", "[LOCATION]", "[DATA_STORE]"),
            Query = "",
            QueryModel = "",
            UserPseudoId = "",
            IncludeTailSuggestions = false,
        };
        // Make the request
        CompleteQueryResponse response = completionServiceClient.CompleteQuery(request);
    }
}

Go

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

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


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.NewCompletionClient(ctx)
	if err != nil {
		// TODO: Handle error.
	}
	defer c.Close()

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

Java

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

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

import com.google.cloud.discoveryengine.v1.CompleteQueryRequest;
import com.google.cloud.discoveryengine.v1.CompleteQueryResponse;
import com.google.cloud.discoveryengine.v1.CompletionServiceClient;
import com.google.cloud.discoveryengine.v1.DataStoreName;

public class SyncCompleteQuery {

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

  public static void syncCompleteQuery() 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 (CompletionServiceClient completionServiceClient = CompletionServiceClient.create()) {
      CompleteQueryRequest request =
          CompleteQueryRequest.newBuilder()
              .setDataStore(
                  DataStoreName.ofProjectLocationDataStoreName(
                          "[PROJECT]", "[LOCATION]", "[DATA_STORE]")
                      .toString())
              .setQuery("query107944136")
              .setQueryModel("queryModel-184930495")
              .setUserPseudoId("userPseudoId-1155274652")
              .setIncludeTailSuggestions(true)
              .build();
      CompleteQueryResponse response = completionServiceClient.completeQuery(request);
    }
  }
}

Node.js

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

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

/**
 * 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 data store resource name for which the completion is
 *  performed, such as
 *  `projects/* /locations/global/collections/default_collection/dataStores/default_data_store`.
 */
// const dataStore = 'abc123'
/**
 *  Required. The typeahead input used to fetch suggestions. Maximum length is
 *  128 characters.
 */
// const query = 'abc123'
/**
 *  Specifies the autocomplete data model. This overrides any model specified
 *  in the Configuration > Autocomplete section of the Cloud console. Currently
 *  supported values:
 *  * `document` - Using suggestions generated from user-imported documents.
 *  * `search-history` - Using suggestions generated from the past history of
 *  SearchService.Search google.cloud.discoveryengine.v1.SearchService.Search 
 *  API calls. Do not use it when there is no traffic for Search API.
 *  * `user-event` - Using suggestions generated from user-imported search
 *  events.
 *  * `document-completable` - Using suggestions taken directly from
 *  user-imported document fields marked as completable.
 *  Default values:
 *  * `document` is the default model for regular dataStores.
 *  * `search-history` is the default model for site search dataStores.
 */
// const queryModel = 'abc123'
/**
 *  A unique identifier for tracking visitors. For example, this could be
 *  implemented with an HTTP cookie, which should be able to uniquely identify
 *  a visitor on a single device. This unique identifier should not change if
 *  the visitor logs in or out of the website.
 *  This field should NOT have a fixed value such as `unknown_visitor`.
 *  This should be the same identifier as
 *  UserEvent.user_pseudo_id google.cloud.discoveryengine.v1.UserEvent.user_pseudo_id 
 *  and
 *  SearchRequest.user_pseudo_id google.cloud.discoveryengine.v1.SearchRequest.user_pseudo_id.
 *  The field must be a UTF-8 encoded string with a length limit of 128
 *  characters. Otherwise, an `INVALID_ARGUMENT` error is returned.
 */
// const userPseudoId = 'abc123'
/**
 *  Indicates if tail suggestions should be returned if there are no
 *  suggestions that match the full query. Even if set to true, if there are
 *  suggestions that match the full query, those are returned and no
 *  tail suggestions are returned.
 */
// const includeTailSuggestions = true

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

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

async function callCompleteQuery() {
  // Construct request
  const request = {
    dataStore,
    query,
  };

  // Run request
  const response = await discoveryengineClient.completeQuery(request);
  console.log(response);
}

callCompleteQuery();

Python

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

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

# 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://googleapis.dev/python/google-api-core/latest/client_options.html
from google.cloud import discoveryengine_v1


def sample_complete_query():
    # Create a client
    client = discoveryengine_v1.CompletionServiceClient()

    # Initialize request argument(s)
    request = discoveryengine_v1.CompleteQueryRequest(
        data_store="data_store_value",
        query="query_value",
    )

    # Make the request
    response = client.complete_query(request=request)

    # Handle the response
    print(response)

Ruby

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

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

require "google/cloud/discovery_engine/v1"

##
# Snippet for the complete_query call in the CompletionService 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::CompletionService::Client#complete_query.
#
def complete_query
  # Create a client object. The client can be reused for multiple calls.
  client = Google::Cloud::DiscoveryEngine::V1::CompletionService::Client.new

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

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

  # The returned object is of type Google::Cloud::DiscoveryEngine::V1::CompleteQueryResponse.
  p result
end

Usar uma lista de bloqueio de preenchimento automático

É possível usar uma lista de bloqueios para evitar que termos específicos apareçam como sugestões de preenchimento automático.

Por exemplo, uma empresa farmacêutica. Se um medicamento não for mais aprovado pelo FDA, mas for mencionado em documentos no repositório de dados, talvez o usuário queira impedir que ele apareça como uma consulta sugerida. A empresa pode adicionar o nome do medicamento a uma lista de bloqueio para evitar que ele seja sugerido.

Os seguintes limites são aplicáveis:

  • Uma lista de bloqueio por repositório de dados
  • O upload de uma lista de bloqueio substitui qualquer outra lista de bloqueio do repositório de dados.
  • Até 1.000 termos por lista de bloqueio
  • Os termos não diferenciam maiúsculas de minúsculas
  • Depois de importar uma lista de bloqueio, ela leva de um a dois dias para entrar em vigor.

Cada entrada da lista de bloqueio consiste em um blockPhrase e um matchOperator:

  • blockPhrase: insira uma string como termo da lista de bloqueio. Os termos não diferenciam maiúsculas de minúsculas.
  • matchOperator: aceita os seguintes valores:
    • EXACT_MATCH: impede que uma correspondência exata do termo da lista de bloqueios apareça como uma consulta sugerida.
    • CONTAINS: impede que apareça qualquer sugestão que contenha o termo da lista de bloqueio.

Confira a seguir um exemplo de lista de bloqueio com quatro entradas:

{
    "entries": [
        {"blockPhrase":"Oranges","matchOperator":"CONTAINS"},
        {"blockPhrase":"bAd apples","matchOperator":"EXACT_MATCH"},
        {"blockPhrase":"Cool as A Cucumber","matchOperator":"EXACT_MATCH"},
        {"blockPhrase":"cherry pick","matchOperator":"CONTAINS"}
    ]
}

Antes de importar uma lista de bloqueio, verifique se os controles de acesso necessários estão definidos para o acesso do editor do mecanismo de descoberta.

As listas de bloqueio podem ser importadas de dados JSON locais ou do Cloud Storage. Para remover uma lista de bloqueio de um repositório de dados, limpe a lista.

Importar uma lista de bloqueio de dados JSON locais

Para importar uma lista de bloqueio de um arquivo JSON local que a contenha, faça o seguinte:

  1. Crie sua lista de bloqueio em um arquivo JSON local com o seguinte formato. Verifique se cada entrada da lista de bloqueio está em uma nova linha, sem quebras de linha.

    {
        "inlineSource": {
            "entries": [
                { "blockPhrase":"TERM_1","matchOperator":"MATCH_OPERATOR_1" },
                { "blockPhrase":"TERM_2","matchOperator":"MATCH_OPERATOR_2" }
            ]
        }
    }
  2. Faça uma solicitação POST para o método suggestionDenyListEntries:import, fornecendo o nome do seu arquivo JSON.

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        --data @DENYLIST_FILE \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dataStores/DATA_STORE_ID/suggestionDenyListEntries:import"
    

    Substitua:

    • DENYLIST_FILE: o caminho local do arquivo JSON que contém os termos da lista de bloqueio.
    • PROJECT_ID: o número ou ID do seu projeto Google Cloud .

    • DATA_STORE_ID: o ID do repositório de dados associado ao seu app.

Depois de importar sua lista de bloqueio, leva de um a dois dias para começar a filtrar as sugestões.

Importar uma lista de bloqueio do Cloud Storage

Para importar uma lista de bloqueio de um arquivo JSON no Cloud Storage, faça o seguinte:

  1. Crie sua lista de bloqueio em um arquivo JSON com o seguinte formato e importe para um bucket do Cloud Storage. Verifique se cada entrada da lista de bloqueio está em uma nova linha sem quebras de linha.

    { "blockPhrase":"TERM_1","matchOperator":"MATCH_OPERATOR_1" }
    { "blockPhrase":"TERM_2","matchOperator":"MATCH_OPERATOR_2" }
  2. Crie um arquivo JSON local que contenha o objeto gcsSource. Use isso para apontar para o local do arquivo de lista de bloqueio em um bucket do Cloud Storage.

    {
        "gcsSource": {
            "inputUris": [ "DENYLIST_STORAGE_LOCATION" ]
        }
    }

    Substitua DENYLIST_STORAGE_LOCATION pelo local da sua lista de bloqueio no Cloud Storage. Só é possível inserir um URI. O URI precisa ser inserido neste formato: gs://BUCKET/FILE_PATH.

  3. Faça uma solicitação POST para o método suggestionDenyListEntries:import, incluindo o objeto gcsSource.

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        --data @GCS_SOURCE_FILE \
       "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dataStores/DATA_STORE_ID/suggestionDenyListEntries:import"
    

    Substitua:

    • GCS_SOURCE_FILE: o caminho local do arquivo que contém o objeto gcsSource que aponta para sua lista de bloqueio.
    • PROJECT_ID: o número ou ID do seu projeto Google Cloud .

    • DATA_STORE_ID: o ID do repositório de dados associado ao seu app.

Depois de importar sua lista de bloqueio, leva de um a dois dias para começar a filtrar as sugestões.

Limpar uma lista de bloqueio

Para limpar uma lista de bloqueio do seu repositório de dados, faça o seguinte:

  1. Faça uma solicitação POST para o método suggestionDenyListEntries:purge.

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
       "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dataStores/DATA_STORE_ID/suggestionDenyListEntries:purge"
    

    Substitua:

    • PROJECT_ID: o número ou ID do seu projeto Google Cloud .

    • DATA_STORE_ID: o ID do repositório de dados associado ao seu app.

Usar uma lista importada de sugestões de preenchimento automático

Você pode fornecer sua própria lista de sugestões de preenchimento automático em vez de usar as geradas por um modelo de dados de preenchimento automático.

Para a maioria dos aplicativos, usar sugestões geradas por um dos modelos de dados de preenchimento automático gera resultados melhores. No entanto, pode haver algumas situações raras em que as sugestões do modelo não atendem às suas necessidades, e fornecer uma lista discreta de sugestões oferece aos usuários uma experiência de preenchimento automático melhor.

Por exemplo, uma pequena livraria on-line importa a lista de títulos de livros como sugestões de preenchimento automático. Quando um cliente começa a digitar na barra de pesquisa, a sugestão de preenchimento automático sempre será um título de livro da lista importada. Quando a lista de livros muda, a livraria limpa a lista atual e importa a nova. Um trecho da lista pode ser assim:

{"suggestion": "Wuthering Heights", "globalScore": "0.52" },
{"suggestion": "The Time Machine", "globalScore": "0.26" },
{"suggestion": "Nicholas Nickleby", "globalScore": "0.38" },
{"suggestion": "A Little Princess", "globalScore": "0.71" },
{"suggestion": "The Scarlet Letter", "globalScore": "0.32" }

O globalScore é um número de ponto flutuante no intervalo [0, 1] usado para classificar a sugestão. Como alternativa, use uma pontuação frequency, que é um número inteiro maior que um. A pontuação frequency é usada para classificar sugestões quando o globalScore não está disponível (definido como nulo).

Configurar e importar sugestões de preenchimento automático

Para configurar e importar uma lista de sugestões de preenchimento automático do BigQuery, siga estas etapas:

  1. Crie sua lista de sugestões e carregue-a em uma tabela do BigQuery.

    No mínimo, você precisa fornecer cada sugestão como uma string e uma pontuação global ou uma frequência.

    Use o seguinte esquema de tabela para sua lista de sugestões:

    [
      {
        "description": "The suggestion text",
        "mode": "REQUIRED",
        "name": "suggestion",
        "type": "STRING"
      },
      {
        "description": "Global score of this suggestion. Control how this suggestion would be scored and ranked. Set global score or frequency; not both.",
        "mode": "NULLABLE",
        "name": "globalScore",
        "type": "FLOAT"
      },
      {
        "description": "Frequency of this suggestion. Used to rank suggestions when the global score is not available.",
        "mode": "NULLABLE",
        "name": "frequency",
        "type": "INTEGER"
      }
    ]
    

    Consulte a documentação do BigQuery para instruções sobre como criar uma tabela do BigQuery e carregar a tabela com sua lista de sugestões de preenchimento automático.

  2. Importe a lista do BigQuery.

    Faça uma solicitação POST ao método completionSuggestions:import, incluindo o objeto bigquerySource.

    curl -X POST \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json; charset=utf-8" \
     -H "X-Goog-User-Project: PROJECT_ID" \
     "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dataStores/DATA_STORE_ID/completionSuggestions:import" \
     -d '{
          "bigquery_source": {"project_id": "PROJECT_ID_SOURCE", "dataset_id": "DATASET_ID", "table_id": "TABLE_ID"}
     }'
    

    Substitua:

    • PROJECT_ID: o número ou ID do seu projeto Google Cloud .
    • DATA_STORE_ID: o ID do repositório de dados da Vertex AI para Pesquisa.
    • PROJECT_ID_SOURCE: o projeto que contém o conjunto de dados que você quer importar.
    • DATASET_ID: o ID do conjunto de dados da lista de sugestões que você quer importar.
    • TABLE_ID: o ID da tabela da lista de sugestões que você quer importar.
  3. Opcional: anote o valor name retornado e siga as instruções em Receber detalhes sobre uma operação de longa duração para saber quando a operação de importação será concluída.

  4. Se você não tiver ativado o preenchimento automático para o app, siga o procedimento Atualizar as configurações de preenchimento automático. Defina Ativar preenchimento automático como Agora.

  5. Aguarde alguns dias para que a indexação seja concluída e as sugestões importadas fiquem disponíveis.

Enviar uma solicitação de preenchimento automático

Para enviar uma solicitação de preenchimento automático que retorne uma sugestão importada em vez de uma sugestão de um modelo de preenchimento automático:

  1. Siga o procedimento para enviar uma solicitação de preenchimento automático a um modelo diferente e defina AUTOCOMPLETE_MODEL como imported-suggestion.

Remover a lista de sugestões de preenchimento automático importadas

Antes de importar uma nova lista de sugestões de preenchimento automático, remova a atual.

Para limpar uma lista de sugestões de preenchimento automático, siga esta etapa:

  1. Faça uma solicitação POST para o método completionSuggestions:purge.

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
       "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/dataStores/DATA_STORE_ID/completionSuggestions:purge"
    

    Substitua:

    • PROJECT_ID: o número ou ID do seu projeto Google Cloud .

    • DATA_STORE_ID: o ID do repositório de dados associado ao seu app.

Modelo de dados de documento avançado

Os aplicativos de IA oferecem um modelo de dados avançado para o preenchimento automático. Com base nos documentos importados, esse modelo de dados gera sugestões de preenchimento automático de alta qualidade usando modelos de linguagem grandes (LLMs) do Google.

Esse recurso é experimental. Se você tiver interesse em usar esse recurso, entre em contato com sua equipe de conta do Google Cloud e peça para ser adicionado à lista de permissões.

O modelo de dados de documentos avançado não está disponível para a pesquisa na área da saúde nem nas multirregiões dos EUA e da UE.