Configura la función de autocompletar

En esta página, se describe la función básica de autocompletado de Gemini Enterprise. La función de autocompletar genera sugerencias de consultas según los primeros caracteres que se ingresan para la consulta.

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

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:

  • Documento. El modelo de documentos genera sugerencias a partir de los documentos importados por el usuario.

  • 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 la Búsqueda: El modelo de historial de la 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.

  • Evento de usuario. El modelo de eventos de usuario genera sugerencias a partir de los eventos de búsqueda importados por el usuario.

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

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 por el usuario ✔* (predeterminado) ✔ (predeterminado)
Campos completables Importado por el usuario ✔
Historial de búsqueda Recopilados automáticamente ✔ (predeterminado) ✔ ✔
Eventos del usuario Importado por el usuario o recopilado automáticamente por el widget ✔ ✔ ✔

* : 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 Actualiza un esquema para datos estructurados.

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

Funciones de Autocompletar

Gemini Enterprise admite las siguientes funciones de autocompletar para mostrar las predicciones más útiles durante la búsqueda:

Función Descripción Ejemplo o más información
Corrige errores tipográficos Corrige la ortografía de las palabras que tengan errores tipográficos. Milc → Milk.
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, vulgar o violento
Evita la visualización de información de identificación personal (PII) básica Con la tecnología de Sensitive Data Protection, Gemini Enterprise 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, Gemini Enterprise no la devolverá 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 Gemini Enterprise. Para obtener más información, consulta Protégete contra las filtraciones de PII.

Lista de bloqueo
  • Quita los términos que aparecen en la lista de bloqueo.
Para obtener más información, consulta Usa una lista de bloqueo para autocompletar.
Términos de anulación de duplicación
  • Con tecnología de comprensión semántica basada en IA.
  • En el caso de los términos casi idénticos, cualquiera de ellos coincide, pero solo se sugiere el más popular.
Se anula la duplicación de Shoes for Women, Womens Shoes y Womans Shoes, y solo se sugiere la más popular.
Sugerencias de concordancia de cola
  • No está disponible en las multirregiones de EE.UU. ni de 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 final se realizan con la concordancia exacta de prefijos en la última palabra de una cadena de consulta.

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 autocompletado determine que el prefijo completo "canciones con el" no tiene coincidencias. Sin embargo, la última palabra de la consulta, "he", tiene una coincidencia de prefijo exacta con "hello world" y "hello kitty". En ese caso, las sugerencias que se muestran son "canciones con hello world" y "canciones con hello kitty" porque no hay sugerencias de coincidencia completa.

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

Las sugerencias de coincidencias de cola solo se devuelven si se cumplen las siguientes condiciones:

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

  2. No hay sugerencias de coincidencia de prefijo completo para la consulta.

Protégete contra las filtraciones de PII

La definición de PII es amplia y puede ser difícil de detectar. Como resultado, Gemini Enterprise no puede garantizar que no se devuelva la PII en las sugerencias de autocompletar.

Gemini Enterprise aplica el servicio de inspección de Sensitive Data Protection para buscar y bloquear los tipos comunes de IIP para que no aparezcan como sugerencias. Sin embargo, si tus almacenes de datos contienen IIP o si usas los modelos de sugerencias de consultas del historial de la Búsqueda o de eventos de usuario, revisa lo siguiente y toma las medidas adecuadas:

  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. Gemini Enterprise no puede garantizar que no se devolverá PII en las sugerencias de autocompletar.

  2. Si se descubren filtraciones de IIP durante las pruebas de autocompletado o si ya sabes que tienes IIP no estándar que proteger (por ejemplo, IDs de usuario de propiedad exclusiva), intenta ajustar el umbral de autocompletado y los parámetros de entrega de contenido. Para obtener más información, consulta Cómo reducir el riesgo de devolver sugerencias que contienen 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 usuarios o búsquedas de los usuarios. Puedes usar Sensitive Data Protection o un servicio de DLP de terceros. Adopta uno de los siguientes enfoques:

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

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

  4. Si usas el modelo de historial de la Búsqueda o de eventos de usuario, agrega un texto informativo en la barra de búsqueda para indicarles a los usuarios que no incluyan información de identificación personal en sus consultas de búsqueda.

  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 para 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 Gemini Enterprise.

    Gemini Enterprise

  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 habilitar o inhabilitar las sugerencias de autocompletar en el widget. Cuando habilites la función para autocompletar, espera uno o dos días antes de que comiencen las sugerencias.

Actualiza la configuración de autocompletar

Para establecer la configuración de autocompletado en la IU, sigue estos pasos:

Console

  1. En la consola de Google Cloud , ve a la página Gemini Enterprise.

    Gemini Enterprise

  2. Haz clic en el nombre de la app que quieres 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 la función Autocompletar que quieras actualizar:

    • Cantidad máxima de sugerencias: Es la cantidad máxima de sugerencias de autocompletar que se pueden ofrecer para una consulta.
    • 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 coincidente: Es la ubicación en una cadena de consulta desde la que la función de autocompletar 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.
    • Habilitar el autocompletado: De forma predeterminada, el autocompletado no comienza a hacer sugerencias hasta que tiene datos de calidad suficientes, lo que suele tardar un par de días. Si quieres anular este valor predeterminado y comenzar a recibir algunas sugerencias de autocompletar antes, selecciona Ahora.

      Incluso cuando seleccionas Ahora, las sugerencias pueden tardar un día en generarse, y algunas sugerencias de autocompletado serán faltantes o 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 para los motores en los que ya se activó la función de autocompletar.

Reduce el riesgo de mostrar 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 se supone que deben mantener en privado. Sin embargo, los usuarios podrían escribir cualquiera de estos datos de PII en la barra de búsqueda para buscar resultados específicos para ellos.

Si usas el modelo de historial de la Búsqueda o de eventos de usuario, y existe la probabilidad de 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 consulta se pueda devolver como una sugerencia de autocompletar, se debe haber ingresado esta cantidad de veces.

  • numUniqueUsersThreshold: Antes de que una consulta se pueda mostrar como una sugerencia de autocompletar, debe haber sido ingresada por esta cantidad de usuarios únicos. El valor del campo userPseudoId en el evento de usuario de búsqueda 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 modelo de sugerencias del historial de la Búsqueda o de eventos del usuario, estos números de cuenta, junto con todos los demás términos que buscan los usuarios finales, se utilizan 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 Gemini Enterprise 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 configurar 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 quieras 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 de Google Cloud .

    • DATA_STORE_ID: Es el ID del almacén de datos que está asociado con 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 una sugerencia de autocompletar. El recuento se suma en un período continuo de 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 que se pueden completar 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 Gemini Enterprise.

    Gemini Enterprise

  2. Haz clic en el nombre de la app que quieres 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 los parámetros de configuración de los campos actualizados. Estas sugerencias tardan alrededor de un día en generarse y devolverse.

Envía solicitudes de Autocomplete

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, continúa con el siguiente paso.

    1. En la consola de Google Cloud , ve a la página Gemini Enterprise y, en el menú de navegación, haz clic en Almacenes de datos.

      Ir 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 de Google Cloud .

    • DATA_STORE_ID: Es el ID del almacén de datos que está asociado con tu app.

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

Envía una solicitud de autocompletado a un modelo diferente

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 de tu almacén de datos, continúa con el siguiente paso.

    1. En la consola de Google Cloud , ve a la página Gemini Enterprise y, en el menú de navegación, haz clic en Almacenes de datos.

      Ir 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 de Google Cloud .

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

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

    • QUERY_SUGGESTIONS_MODEL: Es el modelo de sugerencias de consulta 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#

Antes de probar este ejemplo, sigue las instrucciones de configuración de C# que se encuentran en la guía de inicio rápido de Gemini Enterprise sobre cómo usar las bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Gemini Enterprise C#.

Para autenticarte en Gemini Enterprise, configura las credenciales predeterminadas de la aplicación. Para 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

Antes de probar este ejemplo, sigue las instrucciones de configuración para Go que encontrarás en la guía de inicio rápido sobre las bibliotecas cliente de Gemini Enterprise. Para obtener más información, consulta la documentación de referencia de la API de Gemini Enterprise Go.

Para autenticarte en Gemini Enterprise, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.


//go:build examples

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

Antes de probar este ejemplo, sigue las instrucciones de configuración para Java que encontrarás en la guía de inicio rápido sobre las bibliotecas cliente de Gemini Enterprise. Para obtener más información, consulta la documentación de referencia de la API de Gemini Enterprise Java.

Para autenticarte en Gemini Enterprise, configura las credenciales predeterminadas de la aplicación. Para 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

Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js que encontrarás en la guía de inicio rápido sobre las bibliotecas cliente de Gemini Enterprise. Para obtener más información, consulta la documentación de referencia de la API de Gemini Enterprise para Node.js.

Para autenticarte en Gemini Enterprise, configura las credenciales predeterminadas de la aplicación. Para 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

Antes de probar este ejemplo, sigue las instrucciones de configuración para Python que encontrarás en la guía de inicio rápido sobre las bibliotecas cliente de Gemini Enterprise. Para obtener más información, consulta la documentación de referencia de la API de Gemini Enterprise para Python.

Para autenticarte en Gemini Enterprise, configura las credenciales predeterminadas de la aplicación. Para 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

Antes de probar este ejemplo, sigue las instrucciones de configuración para Ruby que encontrarás en la guía de inicio rápido sobre las bibliotecas cliente de Gemini Enterprise. Para obtener más información, consulta la documentación de referencia de la API de Gemini Enterprise para Ruby.

Para autenticarte en Gemini Enterprise, configura las credenciales predeterminadas de la aplicación. Para 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 prevenir que términos específicos aparezcan como sugerencias de autocompletar.

Por ejemplo, tomemos una empresa farmacéutica. Si un medicamento ya no está aprobado por la FDA, pero se menciona en los documentos de su almacén de datos, es posible que quieran evitar que ese medicamento 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
  • Subir una lista de bloqueo reemplaza 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: Impide que aparezca una coincidencia 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 configurado los controles de acceso necesarios para el acceso de editor de Discovery Engine.

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

Importa 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 de Google Cloud .

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

Después de importar tu lista de bloqueo, las sugerencias tardarán entre 1 y 2 días en comenzar a filtrarse.

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. Úsala para apuntar a la ubicación del archivo de 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 se debe ingresar 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 de Google Cloud .

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

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

Borra definitivamente una lista de bloqueo

Para borrar 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 de Google Cloud .

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

Usa una lista importada de sugerencias de autocompletar

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

  • Normalización de texto. El texto de la sugerencia se escribe en minúsculas, se normaliza con Unicode, se contraen los espacios en blanco internos, se convierten los apóstrofos curvos (U+2018, U+2019) en apóstrofos ASCII (U+0027) y se quitan los caracteres de comillas dobles incorporados y los puntos finales.
  • Filtrado por duración: Se descartan las sugerencias que tienen menos de tres caracteres o más de 125.
  • Anulación de duplicación por agregación de puntuaciones. Si dos o más sugerencias importadas se normalizan en el mismo texto (por ejemplo, "Pixel 10 Pro Moonstone" y "Pixel 10 Pro moonstone", o "jobseeker’s allowance" con un apóstrofo curvo y "jobseeker's allowance" con un apóstrofo ASCII), se combinan en una sola sugerencia cuya puntuación es la suma de las puntuaciones de entrada. Envía cada sugerencia distinta solo una vez si quieres que su puntuación se conserve tal como está.
  • Filtrado de PII: Se filtran las sugerencias que se identifican como que contienen información de identificación personal.
  • Filtrado de listas de bloqueo. Se filtran las sugerencias que coinciden con las frases de la lista de sugerencias rechazadas del almacén de datos.

SafeSearch no se aplica a las sugerencias importadas. Es tu responsabilidad asegurarte de que las sugerencias importadas sean adecuadas para tus usuarios.

En la mayoría de las aplicaciones, usar sugerencias generadas a partir de uno de los modelos de datos de autocompletado produce mejores resultados. Sin embargo, puede haber algunas situaciones excepcionales en las que las sugerencias del modelo no coincidan con tus necesidades y proporcionar una lista discreta de sugerencias les brinde a tus 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 extracto 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 frequency, que es un número entero mayor que uno. La puntuación frequency se usa para clasificar las sugerencias cuando globalScore no está disponible (se establece como nula).

Antes de comenzar

Para importar sugerencias de autocompletar, necesitas el rol de IAM de administrador de Discovery Engine, que incluye el permiso discoveryengine.completionSuggestions.import.

Para obtener más información, consulta Roles y permisos de IAM.

Cómo configurar e importar 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 autocompletar.

  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 de Google Cloud .
    • DATA_STORE_ID: Es el ID del almacén de datos.
    • PROJECT_ID_SOURCE: Es el proyecto que contiene el conjunto de datos que quieres 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 name que se devolvió 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 Actualiza 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 a que estén disponibles las sugerencias importadas.

Envía una solicitud de autocompletado

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

  1. Sigue el procedimiento para enviar una solicitud de autocompletado a un modelo diferente y establece QUERY_SUGGESTIONS_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 de Google Cloud .

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

  2. Opcional: Toma nota del valor name que se devolvió 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 eliminación.

Modelo de datos de documentos avanzado

Gemini Enterprise proporciona un modelo de datos avanzado para la función de autocompletar. Según los documentos que importes, este modelo de datos genera sugerencias de autocompletar 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 atención médica ni en las multirregiones de EE.UU. y la UE.