MindsDB permite a las organizaciones aprovechar el poder de la IA al abstraer los modelos de IA como Tablas de IA Generativa. Estas tablas son capaces de aprender de los datos de entrada y generar predicciones a partir del modelo subyacente al ser consultadas. Esta abstracción hace que la IA sea altamente accesible, permitiendo a los equipos de desarrollo utilizar sus habilidades SQL existentes para construir aplicaciones impulsadas por IA.
¿Qué son las Tablas de IA Generativa?
La IA Generativa es un subcampo de la inteligencia artificial que entrena modelos de IA para crear nuevo contenido, como texto realista, pronósticos, imágenes y más, aprendiendo patrones de datos existentes.
MindsDB revoluciona el aprendizaje automático dentro de las bases de datos empresariales introduciendo el concepto de tablas de IA Generativa. Estas esencialmente representan modelos de IA como tablas de base de datos virtuales, capaces de producir salidas realistas dadas ciertas entradas.
-- Example of querying an AI table
-- This AI table is trained to generate customer support responses.
SELECT
response -- AI generated output
FROM
ai_response_model -- A generative AI model as a virtual table
WHERE
customer_message = "Dear Team, I spilled water on the computer I bought on June 1st 2024, order #3418276, and it is no longer working, what should I do?"
Las Tablas de IA Generativa simplifican el proceso de hacer predicciones basadas en tus datos, permitiendo así a los desarrolladores aprovechar el ecosistema integral de IA Generativa de última generación utilizando simples declaraciones SQL.
Para entender mejor este concepto, profundicemos en el caso de uso de generar respuestas automatizadas a correos electrónicos provenientes de clientes.
Primero, veamos los datos que tenemos. En este caso, imagina que tienes una tabla con correos electrónicos entrantes.
SELECT message_id, customer_message
FROM postgres_demo_db.customer_messages;
Al ejecutar, obtenemos:
+------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
| message_id | customer_message |
+------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
| 1 | "I've been having trouble with my product; it's not working as it should. I would like to request a return. My order number is 12345." |
| 2 | "My account settings won't update no matter what I try. Can you help?" |
| 3 | "My product stopped working after just a week of use. I didn't expect this from your brand. Can I get a refund?" |
| 4 | "I suspect my account has been hacked. I noticed some unusual activity. Please assist me in securing it." |
| 5 | "There seems to be an issue with the settings on my account, they're not saving correctly." |
| 6 | "I believe my account has been compromised. Please help me regain control and secure my account." |
| 7 | "I'm not satisfied with the product I received. It's not working as advertised. I'd like to return it, please. My order number is 56789." |
+------------+---------------------------------------------------------------------------------------------------------------------------------------------------+
Creando una Tabla de IA Generativa
Podemos, por ejemplo, crear un modelo de OpenAI que generará una respuesta dado algún prompt_template instrucciones escritas en inglés sencillo.
CREATE MODEL ai_response_model
PREDICT response
USING
engine = ‘openai’,
prompt_template = '
Generate a simple customer response depending on the following options:
- If it is a message about returns and there is an order number, the message should be as follows (populate order_id in the URL accordingly):
"We are sorry about the issues with your product. Please follow this link to process your return: http://website.com/returns?order_id=<order_id>."
- If the message is about returns but has no order number, respond by asking for the order number and provide a link to see the list of their orders: http://website.com/my_orders.
- If the message is about the account being compromised, send them a link to immediately change their password: http://website.com/change_password.
- Otherwise, simply respond with [NEEDS_ATTENTION].
The message is the following: {customer_message}
';
Ahora que hemos generado nuestra Tabla de IA, podemos consultar los mensajes y sus respuestas generadas usando JOINs.
SELECT i.message_id, m.response, i.customer_message
FROM postgres_demo_db.customer_messages AS i
JOIN ai_response_model AS m;
Resulta en:
+--------------+-------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
| i.message_id | m.response | i.customer_message |
+--------------+-------------------------------------------------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
| 1 | We are sorry about the issues with your product. Please follow this link to process your return http://website.com/returns?order_id=12345 | "I've been having trouble with my product; it's not working as it should. I would like to request a return. My order number is 12345." |
| 2 | [NEEDS_ATTENTION] | "My account settings won't update no matter what I try. Can you help?" |
| 3 | Please provide an order number, follow this link: http://website.com/my_orders | "My product stopped working after just a week of use. I didn't expect this from your brand. Can I get a refund?" |
| 4 | We understand your concern. Please change your password immediately using this link http://website.com/change_password | "I suspect my account has been hacked. I noticed some unusual activity. Please assist me in securing it." |
| 5 | [NEEDS_ATTENTION] | "There seems to be an issue with the settings on my account, they're not saving correctly." |
| 6 | We understand your concern. Please change your password immediately using this link http://website.com/change_password | "I believe my account has been compromised. Please help me regain control and secure my account." |
| 7 | We are sorry about the issues with your product. Please follow this link to process your return http://website.com/returns?order_id=56789 | "I'm not satisfied with the product I received. It's not working. I'd like to return it, please. My order number is 56789." |
+--------------+---------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------+
Diferencia entre Tablas de IA y Tablas Estándar
Para entender la diferencia, podemos revisar un ejemplo mucho más simple, aquí veremos cómo las tablas de base de datos tradicionales están diseñadas para darte una respuesta determinista dado algún input, y las Tablas Generativas de IA están diseñadas para generar una respuesta aproximada dado algún input.
Consideremos la siguiente income_table
tabla que almacena los income
y debt
valores.
SELECT income, debt
FROM income_table;
Al ejecutar, obtenemos:
+------+-----+
|income|debt |
+------+-----+
|60000 |20000|
|80000 |25100|
|100000|30040|
|120000|36010|
+------+-----+
Una visualización simple de los datos presentes en la income_table
tabla es como
sigue:
Consultando la tabla de ingresos para obtener el debt
valor para un income
valor particular resulta en lo siguiente:
SELECT income, debt
FROM income_table
WHERE income = 80000;
Al ejecutar, obtenemos:
+------+-----+
|income|debt |
+------+-----+
|80000 |25100|
+------+-----+
Y esto es lo que obtenemos:
Pero ¿qué sucede cuando consultamos la tabla para un income
valor que no está
presente allí?
SELECT income, debt
FROM income_table
WHERE income = 90000;
Al ejecutar, obtenemos:
Cuando la WHERE
cláusula de condición no se cumple para ninguna de las filas, no se
devuelve ningún valor.
Cuando una tabla no tiene una coincidencia exacta, la consulta devuelve un conjunto vacío o un
valor nulo. ¡Aquí es donde entran en juego las Tablas de IA!
Vamos a crear un debt_model
modelo que nos permita aproximar el debt
valor
para cualquier income
valor. Entrenamos el debt_model
modelo usando los datos de la
income_table
tabla.
CREATE MODEL mindsdb.debt_model
FROM income_table
PREDICT debt;
Al ejecutar, obtenemos:
Query OK, 0 rows affected (x.xxx sec)
MindsDB proporciona la CREATE MODEL
declaración. Al ejecutar esta declaración, el modelo predictivo trabaja en segundo plano, creando automáticamente una representación vectorial de los datos que puede visualizarse de la siguiente manera:
Ahora busquemos el debt
valor de algún income
valor aleatorio. Para obtener el debt
valor aproximado, consultamos el mindsdb.debt_model
modelo en lugar de la income_table
tabla.
SELECT income, debt
FROM mindsdb.debt_model
WHERE income = 90000;
Al ejecutar, obtenemos:
+------+-----+
|income|debt |
+------+-----+
|90000 |27820|
+------+-----+
Y así es como se ve: