Configuración de búsqueda del almacén de datos

Puedes influir en los resultados de búsqueda obtenidos de las herramientas de almacén de datos de Conversational Agents (Dialogflow CX) configurando especificaciones de refuerzo y filtro. De esta forma, las interacciones serán más personalizadas y contextuales cuando tu agente use un almacén de datos para buscar información.

También puedes incluir expresiones dinámicas para afinar los resultados en función del contexto de la conversación. Por ejemplo, tu agente ha recogido información que indica que el usuario final tiene un "teléfono móvil". Puedes configurar la herramienta de almacén de datos para que potencie los documentos relacionados con teléfonos móviles cuando responda a una consulta general más adelante en la conversación, como "¿Cómo puedo consultar mi buzón de voz?".

Puedes configurar los resultados de búsqueda del almacén de datos mediante la consola, la API o la integración de Dialogflow CX Messenger.

Entradas de condiciones de búsqueda

Los resultados de búsqueda se configuran mediante los campos especificación de impulso (BoostSpec) y especificación de filtro (FilterSpec) de un objeto SearchConfig. Estas configuraciones se aplican por cada almacén de datos de la herramienta, lo que te permite controlar con precisión el comportamiento de cada almacén de datos conectado.

Puedes configurar las condiciones de búsqueda de dos formas: mediante la consola o enviando una llamada directa a la API. Hay diferencias importantes entre ambos.

  • Llamada a la API: BoostSpec y FilterSpec se envían en un SearchConfig mediante una llamada a la API DetectIntent. En la solicitud se debe proporcionar un objeto SearchConfig completo. Una SearchConfig enviada mediante una llamada directa a la API siempre anula una SearchConfig enviada mediante la consola. No se admiten expresiones dinámicas ni referencias de parámetros.

  • Console: las configuraciones de BoostSpec y FilterSpec se usan para crear un objeto SearchConfig que se envía con la solicitud de búsqueda. También puedes incluir referencias de parámetros y expresiones dinámicas para adaptar los resultados a los datos de contexto registrados en la conversación. Solo tienes que proporcionar ConditionBoostSpec objetos y una lista de cadenas de filtro para crear FilterSpecs en lugar de un objeto SearchConfig completo.

La información del usuario final se proporciona en formato JSON. No hay ningún esquema esperado, por lo que puedes definir las propiedades del objeto como quieras.

Especificaciones de la mejora

Especificaciones de la mejora: te permiten cambiar la clasificación de los resultados de búsqueda aplicando un valor de mejora a documentos específicos. Puedes añadir varias especificaciones de impulso a un mismo almacén de datos.

Cada Boost Spec se introduce como una cadena JSON. Esta cadena JSON debe representar un solo objeto ConditionBoostSpec.

Campos clave:

  • condition: (String) Expresión que especifica cuándo se debe aplicar el aumento. Se usa la sintaxis de expresiones de filtro estándar. Puedes usar expresiones de Dialogflow para que los resultados sean dinámicos, como $session.params.YOUR_PARAM_NAME o $request.end-user-metadata.YOUR_KEY.
  • boost: (Número) Valor entre -1,0 y 1,0 que determina la intensidad del aumento.
    • Un valor positivo favorece la coincidencia de documentos. El valor 1.0 indica una promoción destacada.
    • Un valor negativo reduce la importancia de los documentos coincidentes. El valor -1.0 supone una degradación importante.
    • El valor 0.0 no aplica ningún aumento y no se permite.
  • boostControlSpec: proporciona más controles para una clasificación personalizada que la combinación básica de condición y refuerzo. Para obtener más información sobre cómo configurar este campo, consulta la documentación de referencia.

Ejemplo de entrada de consola:

Si vas a configurar tu agente en la consola, debes proporcionar una lista de ConditionBoostSpecs con el siguiente formato.

En este ejemplo, los documentos con un URI que coincida con el valor del parámetro de sesión $session.params.doc_id se potenciarán con una intensidad de 0,5. JSON con este formato

{
  "condition": "uri: ANY(\"http://www.example.com/docs/$session.params.doc_id\")",
  "boost": 0.5
}

Ejemplo de entrada de la API:

Si llamas a la API directamente, debes proporcionar ConditionBoostSpecs en un objeto SearchConfig completo.La siguiente configuración de búsqueda describe una especificación de impulso:

"searchConfig": {
  "boostSpecs": [
    {
      "dataStores": [ "DATASTORE_ID" ],
      "spec": [
        {
          "conditionBoostSpecs": {
            "condition": "CONDITION",
            "boost": "1.0"
          }
        }
      ]
    }
  ]
}

Especificaciones de los filtros

Las especificaciones de filtro restringen los resultados de búsqueda para que solo se incluyan los documentos que coincidan con los criterios definidos. Puede añadir varias especificaciones de filtro a un solo almacén de datos.

Cada especificación de filtro debe introducirse como una expresión de cadena. La cadena debe cumplir la sintaxis de expresiones de filtro estándar. Puedes usar expresiones de Dialogflow en esta cadena para que los resultados sean dinámicos, como $session.params.YOUR_PARAM_NAME o $request.end-user-metadata.YOUR_KEY.

Cadena de especificación de filtro de consola de ejemplo:

Si configuras tu agente mediante la consola, debes proporcionar una lista de filter cadenas para formar un objeto FilterSpec.

En este ejemplo, el filtro solo devuelve documentos con numeric_field mayor o igual que el valor de $session.params.min_value Y donde stock_availability es "IN_STOCK".

"numeric_field >= $session.params.min_value AND stock_availability: ANY(\"IN_STOCK\")"

Ejemplo de configuración de filtro de API:

Si llamas a la API directamente, debes proporcionar cadenas filter en un objeto SearchConfig completo:

"searchConfig": {
  "filterSpecs": [
    {
      "dataStores": [ "DATASTORE_ID" ],
      "filter": "CONDITION"
    }
  ]
}

Expresiones dinámicas de Dialogflow

Tanto las condiciones BoostSpec como las cadenas FilterSpec pueden incorporar expresiones de Dialogflow para que sean dinámicas. De esta forma, puedes adaptar el comportamiento de búsqueda en función de los datos de contexto obtenidos de una conversación en curso. Las expresiones dinámicas no se admiten en las llamadas directas a la API y solo se pueden usar si se configura mediante la consola.

Puedes acceder a los datos de contexto de la conversación de dos formas:

  • Parámetros de sesión: valores recogidos durante la conversación mediante $session.params.YOUR_PARAMETER_ID.
  • Metadatos de usuario final: metadatos sobre el usuario final que se transfieren en el DetectIntentRequest mediante $request.end-user-metadata.YOUR_KEY. Para que esta opción esté disponible, comprueba que end_user_metadata se incluya en QueryParameters de tus llamadas a DetectIntent. Para obtener más información, consulta endUserMetadata.

Para obtener más información sobre las funciones del sistema y la sintaxis de las expresiones disponibles, consulta la referencia de condiciones y funciones del sistema.

Condiciones de búsqueda aplicadas en el tiempo de ejecución

Cuando tu herramienta de almacenamiento de datos ejecuta una búsqueda:

  1. Se evalúan las cadenas JSON que has proporcionado para las especificaciones de la mejora. Cada cadena JSON válida se convierte en un objeto ConditionBoostSpec. A continuación, se agrupan en un objeto BoostSpecs para la conexión de la tienda de datos específica, que se añade al SearchConfig general.
  2. Las cadenas que ha proporcionado para Filter Specs se evalúan como expresiones de Dialogflow. Cada cadena de filtro resultante se usa para crear un objeto FilterSpecs para el almacén de datos, que también se añade al SearchConfig.
  3. Este SearchConfig creado dinámicamente se incluye en el QueryParameters de la solicitud de búsqueda enviada al almacén de datos.

Configurar condiciones de búsqueda

Antes de configurar las condiciones de búsqueda, comprueba que tienes lo siguiente:

  • Un agente de Conversational Agents (Dialogflow CX).
  • Una herramienta de almacén de datos configurada para tu agente con uno o varios almacenes de datos habilitados.

Configuración desde la consola

  1. Abre la consola de agentes conversacionales y elige un proyecto. Google Cloud
  2. Selecciona un agente en el menú desplegable.
  3. Ve al menú de la izquierda y haz clic en Herramientas. Selecciona la herramienta de almacenamiento de datos que quieras configurar.
  4. En la página de edición de la herramienta, ve a la sección Almacenes de datos. Haga clic en el icono Configuración (⚙️) situado junto al almacén de datos que quiera modificar.
  5. Aparecerá el menú Configurar almacén de datos. Aquí puedes añadir especificaciones de aumento y de filtro para modificar los resultados de búsqueda.
    • En el caso de una especificación de impulso, proporciona un objeto JSON que defina un ConditionBoostSpec. Consulta las especificaciones de Boost para obtener más información.
    • En Filter Spec, proporcione una cadena que defina los criterios del filtro. Consulta Especificaciones de los filtros para obtener más información.
  6. Después de añadir y configurar las especificaciones, haz clic en Confirmar en la parte inferior del panel lateral.
  7. En la página de edición de la herramienta de almacenamiento de datos, haz clic en Guardar para guardar los cambios.

Configuración de API

Puede proporcionar datos de configuración de búsqueda a los agentes conversacionales (Dialogflow CX) al enviar solicitudes de detección de intenciones. Esta información debe proporcionarse en cada solicitud detectIntent, ya que no se conserva en la sesión.

Proporciona esta información en el campo queryParams.searchConfig del método Sessions.detectIntent.

Seleccione un protocolo y una versión para la referencia de la sesión:

Protocolo V3 V3beta1
REST Recurso de sesión Recurso de sesión
RPC Interfaz de sesión Interfaz de sesión
C++ SessionsClient No disponible
C# SessionsClient No disponible
Go SessionsClient No disponible
Java SessionsClient SessionsClient
Node.js SessionsClient SessionsClient
PHP No disponible No disponible
Python SessionsClient SessionsClient
Ruby No disponible No disponible

Configuración de Dialogflow CX Messenger

Puede proporcionar datos de configuración de búsqueda a la integración de Dialogflow CX Messenger. Consulta más información sobre el método setContext.

Para aplicar una especificación de búsqueda o una configuración de búsqueda, debe añadir el siguiente fragmento al código de Dialogflow CX Messenger al insertarlo en un sitio web:

<script>
  document.addEventListener('df-messenger-loaded', () => {
    const dfMessenger = document.querySelector('df-messenger');
    const searchConfig = { ... }
    dfMessenger.setQueryParameters(searchConfig);
  });
</script>

Consulta el método setQueryParameters.

Solución de problemas

En esta sección se describen las soluciones a algunos problemas habituales que se producen durante la configuración. Prueba siempre tus configuraciones a fondo simulando conversaciones que activen diferentes parámetros de sesión y valores de metadatos de usuario final.

Expresiones no válidas

Si una condición de Boost Spec o una cadena de Filter Spec contiene una expresión no válida de agentes conversacionales (Dialogflow CX), por ejemplo, una sintaxis incorrecta o una referencia a un parámetro que no existe, la compilación de la expresión fallará. Los errores relacionados con la compilación de expresiones suelen devolverse en el campo DetectIntentResponse del campo diagnostic_info como SystemFunctionResults.

JSON de ConditionBoostSpec no válido

La consola Agentes Conversacionales realiza algunas validaciones en la cadena JSON ConditionBoostSpec al guardarla. De esta forma, se comprueba que es un archivo JSON válido y que su estructura se puede asignar a un objeto ConditionBoostSpec. Si el formato JSON es válido, pero da como resultado un SearchConfig no válido según el servicio de búsqueda subyacente (por ejemplo, una cadena de condición no válida después de la sustitución de parámetros), el servicio de búsqueda devolverá un error.

Errores de sustitución en tiempo de ejecución

Si una cadena JSON de ConditionBoostSpec es válida y se puede analizar, pero se produce un error durante la sustitución en tiempo de ejecución de las expresiones de Dialogflow en sus campos (como la cadena de condición), estos errores se registrarán en diagnostic_info como SystemFunctionResults.

Consulta el SearchConfig compilado

El SearchConfig que se aplica cuando se ejecuta la consulta está disponible en search_signals en la respuesta. Si revisas el SearchConfig, puede que descubras otros problemas que no se mencionan aquí.

Siguientes pasos