Servidor Couchbase

Hable con sus datos: una función definida por el usuario (UDF) que habla su idioma

La consulta anterior proporciona información valiosa a partir de los datos almacenados en Couchbase sobre los cinco usuarios que han generado más pedidos completados en los últimos 30 días. Pero, ¿qué pasa si no eres un desarrollador avanzado de SQL++ y necesitas las respuestas antes de las 11 de la noche para un informe? Entonces tendrás que esperar a que un desarrollador escriba una consulta SQL++ y te dé las respuestas.

Como alternativa, considere un caso en el que necesite realizar una depuración ad hoc para abordar cuestiones como:

  • ¿Hay algún documento en el que falte la fecha de entrega del pedido?
  • ¿Significa eso que el pedido se canceló? ¿O es que extraviamos el pedido y nunca se entregó? ¿O todo estaba bien, pero simplemente se nos olvidó añadir el valor order_delivered en el campo?

En este caso, no solo hay que buscar en el campo order_delivered, sino también en order_cancelled o investigar los comentarios para averiguar si se extravió, etc. Por lo tanto, la consulta que hay que escribir no es sencilla ni directa. 

En tales casos, sería útil contar con un asistente confiable disponible las 24 horas del día, los 7 días de la semana, para obtener todas estas respuestas. La UDF descrita en este blog es ese asistente. Acepta sus preguntas de la forma más natural y devuelve los resultados en JSON. Entre bastidores, se conecta al modelo que usted elija, junto con su clave API, para convertir sus pensamientos en SQL++ y luego ejecutarlos. Y todo lo que necesita para invocar a este asistente es utilizar la UDF.

Cómo funciona

1. Configure la biblioteca.
Primero, cree una biblioteca JavaScript utilizada por la UDF.

Biblioteca:

2. Sube la biblioteca.
Ejecute el comando curl después de copiar el código de la biblioteca proporcionado en un archivo, es decir, utilizando ailib.js.

3. Cree la función definida por el usuario (UDF).
Una vez creada la biblioteca, utilice la instrucción de función create que se muestra a continuación para crear la UDF:

NL2SQL() ahora actúa como su traductor multilingüe entre el lenguaje humano y el motor de consultas de Couchbase. Solo tiene que proporcionarle un contexto y una solicitud en lenguaje natural, y él le devolverá una respuesta.

Cómo piensa la UDF

En segundo plano, utiliza su modelo preferido al invocar la UDF para comprender su intención y generar una consulta que Couchbase pueda ejecutar.

La ventaja de utilizar la API de finalización de chat es que puedes conectar fácilmente un modelo de otros proveedores que cumplan con las mismas especificaciones de la API. Puedes utilizar tu propio LLM privado o los conocidos de Open AI, Gemini, Claude, etc.

La función definida por el usuario invocada requiere la siguiente información por su parte:

  1. espacios clave – Una matriz de cadenas, cada una de las cuales representa un espacio de claves de Couchbase (bucket.scope.collection). Utilice comillas graves cuando sea necesario para escapar nombres especiales (como viaje-muestra.inventario.ruta). Esto le indica a la UDF dónde buscar sus datos.
  2. consulte – Su solicitud en español sencillo (o cualquier otro idioma).
    Ejemplo: “Muéstrame todos los usuarios que han realizado una compra en las últimas 24 horas”.”
  3. clave API – Su clave API utilizada para autenticarse con el punto final del modelo.
  4. punto final del modelo – Por ejemplo, URL de completados de chat compatibles con Open AI.
  5. modelo – El nombre del modelo que desea utilizar del proveedor.
    Por ejemplo, “gpt-4o-2024-05-13”.”

También hay varias funciones disponibles en la biblioteca:

inferencer()

Antes de generar una consulta, la UDF primero intenta comprender sus datos. La función auxiliar inferencer() llama a la instrucción INFER de Couchbase para recuperar el esquema de una colección:

Este esquema se utiliza para ayudar a la IA a comprender qué tipo de datos hay dentro de cada colección.

La función principal: nl2sql()

  • Recopila todos los esquemas para los espacios de claves dados utilizando el inferencer(). Construye un mensaje que incluye: el esquema inferido, su consulta en lenguaje natural y un mensaje de Couchbase para activar el LLM.
  • Lo envía al LLM.
  • Extrae el SQL++ generado de la respuesta del modelo.
  • Lo ejecuta directamente si se trata de una instrucción SELECT y devuelve tanto la instrucción SQL++ generada como los resultados de la consulta.

La razón para no ejecutar sentencias no select es que no desea que esta UDF inserte, actualice o elimine documentos en una colección sin que usted lo verifique. Por lo tanto, la sentencia SQL++ le permite ejecutarla después de que haya sido verificada.

Ejemplo de caso de uso:

Experimentar con modelos de otros proveedores

El siguiente ejemplo utiliza la API compatible con Open AI de Gemini. Solo tienes que cambiar la URL del proveedor del modelo de la API Open AI anterior a la API de Gemini. Además, asegúrate de cambiar el parámetro del modelo a uno que reconozca. Por supuesto, también debes actualizar la clave API de Open AI a la clave de Gemini.

A continuación se muestra el resultado:

Conclusión

Este blog ofrece una visión general de cómo se puede aprovechar la IA para interactuar con los datos en Couchbase. Con esta UDF, las consultas en lenguaje natural se convierten en una realidad, sin necesidad de tener conocimientos de SQL++. Es independiente del modelo y segura para consultas de producción.

Y esto es solo el principio. En el futuro, esperamos ampliarlo a:

  • Imagen → SQL++
  • Voz → SQL++
  • Tuberías similares a las de los agentes

... todo ello ejecutándose dentro de los flujos de trabajo de Couchbase.

Referencias
Capella IQ: https://docs.couchbase.com/cloud/get-started/capella-iq/get-started-with-iq.html
API de finalización de chats:
https://platform.openai.com/docs/api-reference/chat
https://ai.google.dev/gemini-api/docs/openai#rest

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Gaurav Jayaraj - Ingeniero de software

Gaurav Jayaraj es becario en el equipo de consultas de Couchbase R&D. Gaurav es licenciado en Informática por la Universidad PES de Bangalore.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.