Configura la función de autocompletar

En esta página, se describe la función básica de autocompletado de Vertex AI Search. La función de autocompletar genera sugerencias de búsqueda basadas en los primeros caracteres que se ingresan en la búsqueda.

Las sugerencias que genera la función de autocompletar varían según el tipo de datos que usa la app de búsqueda:

  • Datos estructurados y no estructurados: De forma predeterminada, el autocompletado genera sugerencias basadas en el contenido de los documentos del almacén de datos. Después de importar documentos, de forma predeterminada, la función de autocompletar no comienza a generar sugerencias hasta que haya suficientes datos de calidad, lo que suele tardar un par de días. Si realizas solicitudes de autocompletado a través de la API, el autocompletado puede generar sugerencias basadas en el historial de búsqueda o los eventos del usuario.

  • Datos del sitio web: De forma predeterminada, la función de autocompletar genera sugerencias a partir del historial de búsqueda. La función de autocompletar requiere tráfico de búsqueda real. Después de que comienza el tráfico de búsqueda, el autocompletar tarda uno o dos días en generar sugerencias. Las sugerencias se pueden generar a partir de datos rastreados en la Web de sitios públicos con el modelo de datos de documentos avanzado experimental.

  • Datos de atención médica: De forma predeterminada, se usa una fuente de datos médicos canónica para generar sugerencias de autocompletado para los almacenes de datos de atención médica.

El modelo de sugerencias de búsqueda determina qué tipo de datos usa la función de autocompletar para generar sugerencias. Existen cuatro modelos de sugerencias de búsqueda:

  • Document. El modelo de documentos genera sugerencias a partir de los documentos que importa el usuario. Este modelo no está disponible para los datos de sitios web ni los datos de atención médica.

  • Campos completables. El modelo de campos completables sugiere texto tomado directamente de los campos de datos estructurados. Solo los campos que se anotan con completable se usan para las sugerencias de autocompletar. Este modelo solo está disponible para datos estructurados.

  • Historial de búsqueda: El modelo de historial de búsqueda genera sugerencias a partir del historial de llamadas a la API de SearchService.search. No uses este modelo si no hay tráfico disponible para el método servingConfigs.search. Este modelo no está disponible para los datos de atención médica.

  • Es un evento del usuario. El modelo de eventos de usuario genera sugerencias a partir de los eventos importados por el usuario de tipo search. Este modelo no está disponible para los datos de atención médica.

Las solicitudes de Autocomplete se envían con el método dataStores.completeQuery.

Como alternativa, si no quieres usar un modelo de sugerencias de búsqueda, puedes usar las sugerencias importadas, que proporcionan sugerencias de autocompletado basadas en una lista de sugerencias importada. Para obtener más información, consulta Cómo usar una lista importada de sugerencias de autocompletado.

Tipos de modelos disponibles según el tipo de datos

En la siguiente tabla, se muestran los tipos de modelos de sugerencias de búsqueda disponibles para cada tipo de datos.


Modelo de sugerencias de búsqueda

Fuente de datos

Datos del sitio web

Datos estructurados

Datos no estructurados
Documento Importado ✔* (predeterminado) ✔ (predeterminado)
Campos completables Importado
Historial de búsqueda Recopilados automáticamente ✔ (predeterminado)
Eventos del usuario Importado o recopilado automáticamente por el widget
Contenido rastreado en la Web Se rastreó contenido de sitios web públicos que especificaste.

* : El esquema del documento debe contener campos title o description, o bien debe haber campos que se hayan especificado como propiedades de clave title o description. Consulta Cómo actualizar un esquema para datos estructurados.

: El contenido rastreado en la Web solo se puede usar como fuente de datos si está habilitado el modelo de datos de documentos avanzado experimental para el autocompletado. Consulta Modelo de datos de documentos avanzado.

Si no quieres usar el modelo predeterminado para tu tipo de datos, puedes especificar otro modelo cuando envíes tu solicitud de autocompletado. Las solicitudes de autocompletado se envían con el método dataStores.completeQuery. Para obtener más información, consulta Instrucciones de la API: Envía una solicitud de autocompletar para elegir un modelo diferente.

Funciones de autocompletar

Vertex AI Search admite las siguientes funciones de autocompletado para mostrar las predicciones más útiles cuando se realiza una búsqueda:

Función Descripción Ejemplo o más información
Corregir errores tipográficos Corregir la ortografía de las palabras que tengan errores tipográficos MilcMilk.
Quita los términos no seguros
  • Con la tecnología de SafeSearch de Google.
  • Quita las búsquedas inapropiadas.
  • Se admite en alemán (de), español (es), francés (fr), inglés (en), italiano (it), (pl), portugués (pt), ruso (ru) y ucraniano (uk).
Texto ofensivo, como pornografía, contenido subido de tono, lenguaje vulgar o violencia
Evita que se muestre información de identificación personal (PII) básica Con la tecnología de la Protección de datos sensibles, Vertex AI Search hace un esfuerzo razonable para evitar la visualización de tipos básicos de PII, como números de teléfono y direcciones de correo electrónico.

Si hay una dirección de correo electrónico jeffersonloveshiking@gmail.com en el almacén de datos, Vertex AI Search no devolverá la dirección de correo electrónico como sugerencia de autocompletar si el usuario escribe jef en la barra de búsqueda.

Para protegerte de forma más exhaustiva contra las filtraciones de PII, Google recomienda que apliques tu propia solución de Prevención de pérdida de datos (DLP), además de los detectores que proporciona Vertex AI Search. Para obtener más información, consulta Cómo protegerse contra las filtraciones de PII.

Lista de bloqueo
  • Quita los términos que se encuentran en la lista de bloqueo.
Para obtener más información, consulta Usa una lista de bloqueo para autocompletar.
Anula la duplicación de términos
  • Con tecnología de comprensión semántica basada en IA.
  • En el caso de términos casi idénticos, se mostrará una coincidencia con cualquiera de los términos, pero solo se sugerirá el más popular.
Shoes for Women, Womens Shoes y Womans Shoes se eliminan como duplicados, y solo se sugiere el más popular.
Sugerencias de concordancia de cola
  • No está disponible en las multirregiones de EE.UU. y la UE.
  • Es un parámetro de configuración opcional.
  • Si no hay coincidencias de autocompletar para toda la búsqueda, sugiere coincidencias solo para la última palabra de la búsqueda.
  • No está disponible para la búsqueda de atención médica.
Para obtener más información, consulta Sugerencias de coincidencias de cola.

Sugerencias de concordancia de cola

Las sugerencias de concordancia de cola se generan a partir de la concordancia exacta del prefijo con la última palabra de una cadena de búsqueda.

Por ejemplo, supongamos que la búsqueda "canciones con él" se envía en una solicitud de autocompletar. Cuando la coincidencia de cola está habilitada, es posible que la función de autocompletar descubra que el prefijo completo "canciones con la palabra" no tiene coincidencias. Sin embargo, la última palabra de la búsqueda, "él", tiene una coincidencia de prefijo exacta con "hola mundo" y "hola gatito". En ese caso, las sugerencias que se muestran son "canciones con hello world" y "canciones con hello kitty" porque no hay sugerencias de coincidencia exacta.

Puedes usar esta función para reducir los resultados de sugerencias vacíos y aumentar la diversidad de las sugerencias, lo que resulta especialmente útil en los casos en que las fuentes de datos (recuento de eventos del usuario, historial de búsqueda y cobertura de temas de documentos) son limitadas. Sin embargo, habilitar las sugerencias de coincidencias finales puede reducir la calidad general de las sugerencias. Dado que la coincidencia final solo coincide con la última palabra del prefijo, es posible que algunas sugerencias devueltas no tengan sentido. Por ejemplo, una búsqueda como "canciones con él" podría obtener una sugerencia de coincidencia final como "canciones con guías de ayuda".

Las sugerencias de coincidencias finales solo se muestran en los siguientes casos:

  1. include_tail_suggestions se establece en true en la solicitud dataStores.completeQuery.

  2. No hay sugerencias de coincidencias de prefijo completo para la búsqueda.

Protección contra filtraciones de PII

La definición de PII es amplia y puede ser difícil de detectar. Por lo tanto, Vertex AI Search no puede garantizar que no se devolverá PII en las sugerencias de autocompletar.

Vertex AI Search aplica el servicio de inspección de Sensitive Data Protection para buscar y bloquear tipos comunes de PII que puedan aparecer como sugerencias. Sin embargo, si tus almacenes de datos contienen PII o si utilizas los modelos de sugerencias de búsqueda del historial de búsqueda o de eventos del usuario, revisa lo siguiente y toma las medidas correspondientes:

  1. Si los tipos de PII que deseas proteger son bastante estándares, como números de teléfono y direcciones de correo electrónico, comienza por probar exhaustivamente las sugerencias de autocompletar para tu app. Vertex AI Search no puede garantizar que no se devolverá PII en las sugerencias de autocompletar.

  2. Si se detectan filtraciones de PII durante las pruebas de autocompletar o si ya sabes que tienes PII no estándar para proteger (por ejemplo, IDs de usuario propietarios), intenta ajustar el umbral de autocompletar y los parámetros de publicación de contenido. Para obtener más información, consulta Cómo reducir el riesgo de devolver sugerencias que contengan PII.

  3. Si ajustar los parámetros no es suficiente para evitar las filtraciones de PII, implementa tu propia solución de DLP. Personaliza la solución de DLP para los tipos de PII que es más probable que se encuentren en tus almacenes de datos, eventos de usuario o búsquedas de los usuarios. Puedes usar Sensitive Data Protection o un servicio de DLP de terceros. Usa uno de los siguientes enfoques:

    • Filtra la PII antes de importar los documentos y los eventos de usuario a tus almacenes de datos.

    • Revisa las sugerencias de autocompletar antes de mostrárselas al usuario en el momento de la publicación y bloquea las sugerencias que contengan información personal.

  4. Si usas el historial de búsqueda o el modelo de eventos del usuario, agrega texto informativo en la barra de búsqueda para indicarles a los usuarios que no incluyan PII en sus búsquedas.

  5. Si tienes preguntas o encuentras dificultades particulares para bloquear la PII, comunícate con tu ingeniero de atención al cliente (CE) o con el equipo de cuentas de Google.

Cómo activar o desactivar la función de autocompletar en un widget

Para activar o desactivar la función de autocompletar en un widget, sigue estos pasos:

Console

  1. En la consola de Google Cloud , ve a la página AI Applications.

    Aplicaciones basadas en IA

  2. Haz clic en el nombre de la app que deseas editar.

  3. Haz clic en Configuraciones.

  4. Haz clic en la pestaña IU.

  5. Activa o desactiva la opción Mostrar sugerencias de autocompletar para el widget. Cuando habilites el autocompletar, espera uno o dos días antes de que comiencen a aparecer las sugerencias.

Actualiza la configuración de autocompletar

Para configurar los parámetros de autocompletado en la IU, sigue estos pasos:

Console

  1. En la consola de Google Cloud , ve a la página AI Applications.

    Aplicaciones basadas en IA

  2. Haz clic en el nombre de la app que deseas editar.

  3. Haz clic en Configuraciones.

  4. Haz clic en la pestaña Autocompletar.

  5. Ingresa o selecciona valores nuevos para los parámetros de configuración de autocompletar que deseas actualizar:

    • Cantidad máxima de sugerencias: Es la cantidad máxima de sugerencias de autocompletar que se pueden ofrecer para una búsqueda.
    • Longitud mínima para activar la función: Es la cantidad mínima de caracteres que se pueden escribir antes de que se ofrezcan sugerencias de autocompletar.
    • Orden de coincidencia: Es la ubicación en una cadena de búsqueda desde la que Autocomplete puede comenzar a hacer coincidir sus sugerencias.
    • Modelo de sugerencias de búsqueda: Es el modelo de sugerencias de búsqueda que se usa para generar las sugerencias recuperadas. Esto se puede anular en dataStores.completeQuery con el parámetro queryModel.
    • Habilita la función de autocompletar: De forma predeterminada, la función de autocompletar no comienza a hacer sugerencias hasta que tiene suficientes datos de calidad, lo que suele tardar un par de días. Si quieres anular este valor predeterminado y comenzar a recibir sugerencias de autocompletar antes, selecciona Ahora.

      Incluso cuando seleccionas Ahora, las sugerencias pueden tardar un día en generarse, y algunas sugerencias de autocompletar seguirán faltando o serán de mala calidad hasta que haya suficientes datos buenos.

    • Lista de bloqueo: Importa una lista de bloqueo como un archivo JSON en un bucket de Cloud Storage. Para obtener más información sobre las restricciones y especificaciones de la lista de bloqueo, consulta Usa una lista de bloqueo para autocompletar.

  6. Haz clic en Guardar y publicar. Los cambios se aplican en unos minutos en los motores de búsqueda en los que ya se activó la función de autocompletar.

Reducir el riesgo de devolver sugerencias que contengan PII

Los usuarios finales tienen todo tipo de información de PII, como licencias de conducir y números de teléfono, que deben mantener privados. Sin embargo, los usuarios que buscan resultados específicos para ellos pueden escribir cualquiera de estos datos personales en la barra de búsqueda.

Si usas el historial de búsqueda o el modelo de eventos del usuario, y es probable que tus usuarios escriban PII en la barra de búsqueda, puedes reducir las filtraciones de PII ajustando los siguientes parámetros:

  • queryFrequencyThreshold: Antes de que una búsqueda se pueda devolver como sugerencia de autocompletado, se debe haber ingresado esta cantidad de veces.

  • numUniqueUsersThreshold: Antes de que una búsqueda se pueda devolver como sugerencia de autocompletar, debe haber sido ingresada por esta cantidad de usuarios únicos. El valor del campo userPseudoId en el evento de búsqueda del usuario determina si el usuario es único.

Ejemplo de caso de uso

Por ejemplo, considera un caso en el que los usuarios tienen números de cuenta que deben mantenerse privados.

Si se usa el historial de búsqueda o el modelo de sugerencias de eventos del usuario, estos números de cuenta, junto con todos los demás términos que buscan los usuarios finales, se usan para generar sugerencias. Por lo tanto, si el número de cuenta del usuario A YZ-46789A se ingresó repetidamente en la barra de búsqueda y el usuario B tiene el número de cuenta YZ-42345B, cuando el usuario B escriba YZ-4 en la barra de búsqueda, la sugerencia de autocompletar que se devuelva podría ser el número de cuenta del usuario A.

Para reducir la probabilidad de que se produzca este tipo de filtración, el administrador de Aplicaciones basadas en IA decide hacer lo siguiente:

  • Aumenta el valor del parámetro queryFrequencyThreshold a 30. En este caso, es muy poco probable que se ingrese un número de cuenta con tanta frecuencia. Sin embargo, las búsquedas populares se ingresarán al menos con esa frecuencia.

  • Aumenta el valor del parámetro numUniqueUsersThreshold a 6. El administrador cree que es poco probable que se ingrese el mismo número de cuenta en la barra de búsqueda en seis eventos de búsqueda asociados a un userPseudoId diferente.

Procedimiento

Hay dos parámetros de umbral para la función de autocompletar. Estos parámetros no están disponibles en la consola de Google Cloud , pero se pueden establecer con una llamada a la API de REST al método updateCompletionConfig.

Para configurar los parámetros de configuración del umbral de autocompletar, sigue estos pasos. Cada paso es opcional, según el parámetro que desees cambiar.

REST

  1. Actualiza el 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
      }'
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el número o ID de tu proyecto Google Cloud .

    • DATA_STORE_ID: Es el ID del almacén de datos asociado a tu app.

    • QUERY_FREQUENCY_THRESHOLD: Es un valor entero que indica la cantidad mínima de veces que se debe ingresar una búsqueda antes de que se pueda mostrar como sugerencia de autocompletar. El recuento se suma en un período móvil de varios meses. El valor predeterminado es 8.

  2. Actualiza el 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
      }'
    

    Reemplaza UNIQUE_USERS por un valor entero que represente la cantidad mínima de usuarios únicos que deben ingresar una búsqueda determinada antes de que se pueda mostrar como sugerencia de autocompletar. El recuento se suma en un período continuo de varios meses. El valor predeterminado es 3.

Actualiza las anotaciones de campos completables en el esquema

Para activar la función de autocompletar en los campos del esquema de datos estructurados, sigue estos pasos:

Console

  1. En la consola de Google Cloud , ve a la página AI Applications.

    Aplicaciones basadas en IA

  2. Haz clic en el nombre de la app que deseas editar. Debe usar datos estructurados.

  3. Haz clic en Datos (Data).

  4. Haz clic en la pestaña Esquema.

  5. Haz clic en Editar para seleccionar los campos del esquema que se marcarán como completable.

  6. Haz clic en Guardar para guardar la configuración de campos actualizada. Estas sugerencias tardan alrededor de un día en generarse y devolverse.

Envía solicitudes de autocompletar

En los siguientes ejemplos, se muestra cómo enviar solicitudes de autocompletado.

REST

Para enviar una solicitud de autocompletado con la API, sigue estos pasos:

  1. Busca el ID de tu almacén de datos. Si ya tienes el ID del almacén de datos, ve al siguiente paso.

    1. En la consola de Google Cloud , ve a la página AI Applications y, en el menú de navegación, haz clic en Data Stores.

      Ve a la página Almacenes de datos.

    2. Haz clic en el nombre de tu almacén de datos.

    3. En la página Datos de tu almacén de datos, obtén el ID del almacén de datos.

  2. Llama al 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"
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el número o ID de tu proyecto Google Cloud .

    • DATA_STORE_ID: Es el ID del almacén de datos asociado a tu app.

    • QUERY_STRING: Es la entrada de escritura anticipada que se usa para recuperar sugerencias.

Envía una solicitud de autocompletado a otro modelo

Para enviar una solicitud de autocompletar con un modelo de sugerencias de búsqueda diferente, sigue estos pasos:

  1. Busca el ID de tu almacén de datos. Si ya tienes el ID del almacén de datos, ve al siguiente paso.

    1. En la consola de Google Cloud , ve a la página AI Applications y, en el menú de navegación, haz clic en Data Stores.

      Ve a la página Almacenes de datos.

    2. Haz clic en el nombre de tu almacén de datos.

    3. En la página Datos de tu almacén de datos, obtén el ID del almacén de datos.

  2. Llama al 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"
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el número o ID de tu proyecto Google Cloud .

    • DATA_STORE_ID: Es el ID único del almacén de datos asociado a tu app.

    • QUERY_STRING: Es la entrada de escritura anticipada que se usa para recuperar sugerencias.

    • AUTOCOMPLETE_MODEL: Los datos de autocompletar

    • QUERY_SUGGESTIONS_MODEL: Es el modelo de sugerencias de búsqueda que se usará para la solicitud: document, document-completable, search-history o user-event. Para los datos de atención médica, usa healthcare-default.

C#

Para obtener más información, consulta la documentación de referencia de la API de AI Applications C#.

Para autenticarte en AI Applications, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo 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 obtener más información, consulta la documentación de referencia de la API de AI Applications Go.

Para autenticarte en AI Applications, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo 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 obtener más información, consulta la documentación de referencia de la API de AI Applications Java.

Para autenticarte en AI Applications, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo 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 obtener más información, consulta la documentación de referencia de la API de AI Applications Node.js.

Para autenticarte en AI Applications, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo 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 obtener más información, consulta la documentación de referencia de la API de AI Applications Python.

Para autenticarte en AI Applications, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo 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 obtener más información, consulta la documentación de referencia de la API de AI Applications Ruby.

Para autenticarte en AI Applications, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo 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

Usa una lista de bloqueo para autocompletar

Puedes usar una lista de bloqueo para evitar que términos específicos aparezcan como sugerencias de autocompletar.

Por ejemplo, tomemos el caso de una empresa farmacéutica. Si un medicamento ya no está aprobado por la FDA, pero se menciona en documentos de su almacén de datos, es posible que deseen evitar que aparezca como una búsqueda sugerida. La empresa podría agregar el nombre de ese medicamento a una lista de bloqueo para evitar que se sugiera.

Se aplican los siguientes límites:

  • Una lista de bloqueo por almacén de datos
  • Si subes una lista de bloqueo, se reemplazará cualquier lista de bloqueo existente para ese almacén de datos.
  • Hasta 1,000 términos por lista de bloqueo
  • Los términos no distinguen mayúsculas de minúsculas.
  • Después de importar una lista de bloqueo, esta tarda entre 1 y 2 días en aplicarse.

Cada entrada de tu lista de bloqueo consta de un blockPhrase y un matchOperator:

  • blockPhrase: Ingresa una cadena como término de la lista de bloqueo. Los términos no distinguen mayúsculas de minúsculas.
  • matchOperator: Acepta los siguientes valores:
    • EXACT_MATCH: Evita que aparezca una concordancia exacta del término de la lista de bloqueo como una búsqueda sugerida.
    • CONTAINS: Evita que aparezca cualquier sugerencia que contenga el término de la lista de bloqueo.

A continuación, se muestra un ejemplo de una lista de bloqueo con cuatro 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 una lista de bloqueo, verifica que se hayan establecido los controles de acceso necesarios para el acceso del editor de Discovery Engine.

Las listas de bloqueo se pueden importar desde datos JSON locales o desde Cloud Storage. Para quitar una lista de bloqueo de un almacén de datos, bórrala definitivamente.

Cómo importar una lista de bloqueo desde datos JSON locales

Para importar una lista de bloqueo desde un archivo JSON local que contenga tu lista de bloqueo, haz lo siguiente:

  1. Crea tu lista de bloqueo en un archivo JSON local con el siguiente formato. Asegúrate de que cada entrada de la lista de bloqueo esté en una línea nueva sin saltos de línea.

    {
        "inlineSource": {
            "entries": [
                { "blockPhrase":"TERM_1","matchOperator":"MATCH_OPERATOR_1" },
                { "blockPhrase":"TERM_2","matchOperator":"MATCH_OPERATOR_2" }
            ]
        }
    }
  2. Realiza una solicitud POST al método suggestionDenyListEntries:import y proporciona el nombre de tu archivo 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"
    

    Reemplaza lo siguiente:

    • DENYLIST_FILE: Es la ruta de acceso local del archivo JSON que contiene los términos de la lista de bloqueo.
    • PROJECT_ID: Es el número o ID de tu proyecto Google Cloud .

    • DATA_STORE_ID: Es el ID del almacén de datos asociado a tu app.

Después de importar tu lista de bloqueo, se necesitan entre 1 y 2 días para que comience a filtrar las sugerencias.

Importa una lista de bloqueo desde Cloud Storage

Para importar una lista de bloqueo desde un archivo JSON en Cloud Storage, haz lo siguiente:

  1. Crea tu lista de bloqueo en un archivo JSON con el siguiente formato y, luego, impórtala a un bucket de Cloud Storage. Asegúrate de que cada entrada de la lista de bloqueo esté en una línea nueva sin saltos de línea.

    { "blockPhrase":"TERM_1","matchOperator":"MATCH_OPERATOR_1" }
    { "blockPhrase":"TERM_2","matchOperator":"MATCH_OPERATOR_2" }
  2. Crea un archivo JSON local que contenga el objeto gcsSource. Úsalo para apuntar a la ubicación del archivo de la lista de bloqueo en un bucket de Cloud Storage.

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

    Reemplaza DENYLIST_STORAGE_LOCATION por la ubicación de tu lista de bloqueo en Cloud Storage. Solo puedes ingresar un URI. El URI debe ingresarse con este formato: gs://BUCKET/FILE_PATH.

  3. Realiza una solicitud POST al método suggestionDenyListEntries:import, incluido el 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"
    

    Reemplaza lo siguiente:

    • GCS_SOURCE_FILE: Es la ruta de acceso local del archivo que contiene el objeto gcsSource que apunta a tu lista de bloqueo.
    • PROJECT_ID: Es el número o ID de tu proyecto Google Cloud .

    • DATA_STORE_ID: Es el ID del almacén de datos asociado a tu app.

Después de importar tu lista de bloqueo, se necesitan entre 1 y 2 días para que comience a filtrar las sugerencias.

Cómo borrar definitivamente una lista de bloqueo

Para purgar una lista de bloqueo de tu almacén de datos, haz lo siguiente:

  1. Realiza una solicitud POST al 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"
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el número o ID de tu proyecto Google Cloud .

    • DATA_STORE_ID: Es el ID del almacén de datos asociado a tu app.

Cómo usar una lista importada de sugerencias de autocompletar

Puedes proporcionar tu propia lista de sugerencias de autocompletado en lugar de usar las sugerencias generadas a partir de un modelo de datos de autocompletado.

En la mayoría de las aplicaciones, usar las sugerencias generadas a partir de uno de los modelos de datos de autocompletar produce mejores resultados. Sin embargo, es posible que, en algunas situaciones poco frecuentes, las sugerencias del modelo no satisfagan tus necesidades y que proporcionar una lista discreta de sugerencias les brinde a los usuarios una mejor experiencia de autocompletado.

Por ejemplo, una pequeña librería en línea importa su lista de títulos de libros como sugerencias de autocompletar. Cuando un cliente comience a escribir en la barra de búsqueda, la sugerencia de autocompletar siempre será el título de un libro de la lista importada. Cuando cambia la lista de libros, la librería borra la lista actual y, luego, importa la nueva. Un fragmento de la lista podría verse de la siguiente manera:

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

El globalScore es un número de punto flotante en el rango [0, 1] que se usa para clasificar la sugerencia. Como alternativa, puedes usar una puntuación de frequency, que es un número entero mayor que uno. La puntuación de frequency se usa para clasificar las sugerencias cuando globalScore no está disponible (se establece como nulo).

Configura e importa sugerencias de autocompletar

Para configurar e importar una lista de sugerencias de autocompletado desde BigQuery, sigue estos pasos:

  1. Crea tu lista de sugerencias y cárgala en una tabla de BigQuery.

    Como mínimo, debes proporcionar cada sugerencia como una cadena y una puntuación global o una frecuencia.

    Usa el siguiente esquema de tabla para tu lista de sugerencias:

    [
      {
        "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"
      }
    ]
    

    Consulta la documentación de BigQuery para obtener instrucciones sobre cómo crear una tabla de BigQuery y cargar la tabla con tu lista de sugerencias de autocompletado.

  2. Importa la lista desde BigQuery.

    Realiza una solicitud POST al método completionSuggestions:import, incluido el 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"}
     }'
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el número o ID de tu proyecto Google Cloud .
    • DATA_STORE_ID: Es el ID del almacén de datos de Vertex AI Search.
    • PROJECT_ID_SOURCE: Es el proyecto que contiene el conjunto de datos que deseas importar.
    • DATASET_ID: Es el ID del conjunto de datos de la lista de sugerencias que deseas importar.
    • TABLE_ID: Es el ID de la tabla de la lista de sugerencias que deseas importar.
  3. Opcional: Toma nota del valor de name que se muestra y sigue las instrucciones en Cómo obtener detalles sobre una operación de larga duración para ver cuándo se completa la operación de importación.

  4. Si no habilitaste la función de autocompletar para la app, sigue el procedimiento para actualizar la configuración de autocompletar. Asegúrate de establecer Habilitar autocompletar en Ahora.

  5. Espera un par de días a que se complete la indexación y estén disponibles las sugerencias importadas.

Envía una solicitud de autocompletado

Para enviar una solicitud de autocompletar que devuelva una sugerencia importada en lugar de una sugerencia de un modelo de autocompletar, haz lo siguiente:

  1. Sigue el procedimiento para enviar una solicitud de autocompletar a un modelo diferente y establece AUTOCOMPLETE_MODEL en imported-suggestion.

Cómo borrar la lista de sugerencias de autocompletar importadas

Antes de importar una nueva lista de sugerencias de autocompletado, quita la existente.

Para borrar una lista existente de sugerencias de autocompletado, sigue este paso:

  1. Realiza una solicitud POST al 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"
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el número o ID de tu proyecto Google Cloud .

    • DATA_STORE_ID: Es el ID del almacén de datos asociado a tu app.

Modelo de datos de documentos avanzado

Las aplicaciones de IA proporcionan un modelo de datos avanzado para la función de autocompletar. Según los documentos que importes, este modelo de datos genera sugerencias de autocompletado de alta calidad aprovechando los modelos de lenguaje grandes (LLM) de Google.

Esta característica es experimental. Si te interesa usar esta función, comunícate con tu equipo de cuentas de Google Cloud y solicita que te agreguen a la lista de entidades permitidas.

El modelo de datos de documentos avanzado no está disponible para la búsqueda de Healthcare ni en las multirregiones de EE.UU. y la UE.