Programa
La IA Cortex de Snowflake incorpora potentes capacidades de IA directamente en tu entorno Snowflake. Por ejemplo, al utilizar el acceso de Cortex a los modelos de lenguaje grandes (LLM) líderes en el sector, podemos crear herramientas como chatbots con IA que utilizan datos internos de la empresa sin comprometer la seguridad de los datos confidenciales.
Estas integraciones han provocado un cambio de los chats y automatizaciones tradicionales basados en reglas a chats más flexibles impulsados por IA, capaces de comprender mejor las entradas de los usuarios para proporcionar respuestas más completas y exhaustivas.
En este tutorial, te guiaré a través de los pasos generales para crear un chatbot utilizando Snowflake Cortex. Aprenderás a preparar datos, configurar Cortex Search, utilizar Document AI para datos no estructurados, crear una interfaz de chatbot en Streamlit y te daré ideas sobre cómo integrarla con aplicaciones externas. Al finalizar, tendrás tanto las habilidades prácticas como los conocimientos conceptuales necesarios para diseñar IA conversacional en Snowflake.
Si eres nuevo en Snowflake, te recomiendo que sigas la programa de habilidades Snowflake Foundations para ponerte al día.
¿Qué es Snowflake Cortex?
En esencia, Snowflake Cortex incorpora servicios basados en IA y LLM al ecosistema de Snowflake. Este tutorial tratará sobre la integración de Cortex con tus datos de Snowflake para crear una sencilla aplicación de chatbot Streamlit utilizando el servicio de búsqueda y la IA documental de Cortex para analizar archivos documentales con el fin de proporcionar contexto adicional a los modelos LLM existentes a través del modelo de generación aumentada de recuperación de Cortex.
Este tutorial tratará los siguientes temas:
- Configuración del entorno general de Snowflake para preparar la creación de un chatbot de Cortex Search
- Aprovechamiento de las funciones de Cortex LLM y Document AI para extraer información útil de los documentos.
- Creación de un chatbot y una aplicación de análisis en Streamlit en Snowflake
- Estructura de costes y consideraciones al utilizar Cortex
La ventaja de utilizar Cortex es su enfoque híbrido nativo para el reordenamiento vectorial, por palabras clave y semántico, así como su generación de respuestas basada en RAG, lo que mejora su precisión y especificidad.
La creación de chatbots y aplicaciones de análisis con Streamlit en Snowflake aprovecha la flexibilidad del desarrollo de Python, al tiempo que hace hincapié en la seguridad de los datos y las normativas de gobernanza, ya que mantiene los datos confidenciales dentro de tu entorno seguro de Snowflake.
Si deseas hacerte una idea de las capacidades de Snowflake Cortex AI, echa un vistazo a este tutorial sobre el uso de Cortex AI para tareas básicas de PLN , como el resumen y el análisis de opiniones.
Requisitos previos
Antes de empezar a crear, preparemos tu cuenta de Snowflake. En esta cuenta, necesitarás los siguientes permisos:
- Permisos para crear almacenes y el permiso «
USAGE» (Crear almacenes). - Permisos de la base de datos:
USAGE - Permisos de esquema:
USAGE,CREATE STREAMLIT,CREATE STAGE,CREATE CORTEX SEARCH SERVICEoOWNERSHIP - La capacidad de utilizar Document AI con los permisos adecuados a nivel de cuenta. En la mayoría de los casos, utilizarás las funciones integradas de Snowflake (por ejemplo,
ACCOUNTADMIN,SYSADMIN) o una función personalizada con: USAGEen la base de datos y el esquemaCREATE CORTEX SEARCH SERVICE- OPERAR sobre el objeto del servicio de búsqueda una vez creado.
- Para Cortex, normalmente necesitarás la función «
CORTEX_USER» (Administrador de servicios de datos) combinada con permisos a nivel de objeto (USAGE,OPERATE) para interactuar con los servicios.
Lo ideal es que estés familiarizado con SQL, Python y conceptos básicos de IA. Necesitarás comprender SQL para poder navegar por el entorno Snowflake y los datos. Necesitarás estar familiarizado con Python para crear la aplicación Streamlit. Tener un conocimiento básico de los conceptos de IA nos ayudará a comprender los componentes que forman parte de nuestro servicio de búsqueda Cortex.
En cuanto a herramientas, nos centraremos en Snowsight de Snowflake, que es su navegador web. Si deseas compilarlo localmente, necesitarás tu propio IDE/editor de texto.
Aunque intentaremos proporcionar algunas muestras de datos, lo ideal es que dispongas de un corpus de prueba y un conjunto de datos con los que quieras trabajar. Si no tienes ninguno, te recomiendo las actas de la reunión del Comité Federal de Mercado Abierto para el tutorial (fuente: Snowflake): Muestra de las actas del FOMC.
Cómo crear un chatbot en Snowflake Cortex
¡Muy bien, pongámonos manos a la obra! Algunas de estas instrucciones pueden ser un poco más genéricas para que podamos adaptarnos a una amplia variedad de opciones.
Paso 1: Configura la base de datos, el esquema y el almacén de Snowflake.
En primer lugar, crearemos el entorno necesario para nuestro proyecto de chatbot.
-- Create a dedicated warehouse
CREATE OR REPLACE WAREHOUSE cortex_wh
WITH WAREHOUSE_SIZE = 'XSMALL'
AUTO_SUSPEND = 60
AUTO_RESUME = TRUE;
-- Create a database and stage
CREATE OR REPLACE DATABASE cortex_chatbot_db;
CREATE OR REPLACE STAGE cortex_chatbot_db.public.chatbot_stage;
-- Switch context
USE DATABASE cortex_chatbot_db;
USE WAREHOUSE cortex_wh;
Esto garantiza que todos los recursos estén aislados y se gestione su coste.
Paso 2: Cargar y preparar datos
Tu chatbot necesita datos para responder a las consultas. Esto puede ser:
- Datos estructurados: información de clientes, registros de transacciones, catálogos de productos.
- Datos no estructurados: PDF, preguntas frecuentes, políticas, bases de conocimientos.
Si necesitas más información sobre la ingesta de datos y cómo introducimos los datos en Snowflake, consulta esta guía sobre la ingesta de datos.
Ejemplo: preparación y carga de un archivo CSV.
-- Upload data (done via Snowsight UI or SnowSQL)
-- Example: product_faq.csv
-- Load into a table
CREATE OR REPLACE TABLE cortex_chatbot_db.public.chatbot_stage.product_faq (
question STRING,
answer STRING
);
COPY INTO product_faq
FROM @chatbot_stage/product_faq.csv
FILE_FORMAT = (TYPE = CSV FIELD_OPTIONALLY_ENCLOSED_BY='"');
En el caso de los datos no estructurados (por ejemplo, archivos PDF), puedes procesarlos con Cortex Document AI. En el siguiente paso, hablaremos sobre cómo extraer datos de fuentes de datos no estructuradas utilizando Cortex Document AI.
Queremos tomar nuestros datos estructurados y no estructurados, convertirlos en fragmentos y asegurarnos de adjuntar los metadatos necesarios para que sean más eficientes para el RAG.
Paso 3: Entrenamiento de IA para documentos y análisis sintáctico de documentos
Repasemos la creación de un modelo utilizando Document AI para construir un modelo ajustado para analizar documentos. Ten en cuenta que esto es opcional y te recomiendo que pruebes los modelos predeterminados de Snowflake para el análisis sintáctico, ya que están listos para su uso en producción y gestionan el OCR, la extracción de diseños y la detección de tablas. Actualmente, no es posible «entrenar» modelos personalizados directamente en Cortex Document AI, pero puedes configurar modos de extracción (por ejemplo, extracción de entidades, extracción de tablas) que se adapten a tus datos.
Empieza por lo más sencillo con el analizador predeterminado y solo añade configuraciones más avanzadas si tus documentos tienen un formato complejo o irregular.
En Snowsight, abre el menú de navegación y ve a IA y ML. Selecciona nuestro « cortex_wh » y, a continuación, haz clic en «Build». A partir de ahí, seleccionamos «Crear».
Una vez que hayas creado la compilación, subimos nuestros documentos a la compilación. Una vez finalizado el procesamiento, podemos trabajar en la extracción de datos utilizando la extracción de entidades o la extracción de tablas. La extracción de entidades te permite hacer preguntas sobre tu documento para obtener datos, mientras que la extracción de tablas analiza los datos basándose en los campos definidos en tu documento.
Una vez creado el modelo, queremos evaluar su precisión y, a continuación, entrenarlo según sea necesario. El entrenamiento del modelo lo ajusta a la estructura particular de tu documento. Ahora podemos utilizar este modelo o nuestro modelo predeterminado para analizar documentos. Por ahora, nos quedaremos con el analizador sintáctico de IA predeterminado de Snowflake.
CREATE OR REPLACE TABLE cortex_chatbot_db.public.chatbot_stage.doc_data AS --create the table
SELECT
RELATIVE_PATH,
TO_VARCHAR (
SNOWFLAKE.CORTEX.PARSE_DOCUMENT ( --using default cortex parser
'@cortex_chatbot.public.chatbot_stage',
RELATIVE_PATH,
{'mode': 'LAYOUT'} ):content
) AS EXTRACTED_LAYOUT
FROM
DIRECTORY('@cortex_chatbot.public.chatbot_stage') --pull the files from the stage
WHERE
RELATIVE_PATH LIKE '%.pdf'; --specifically just PDFs
Ahora nuestros datos estarán en una tabla y listos para ser transformados.
Paso 4: Transformación de datos y extracción de características
Para preparar los datos para las interacciones con el chatbot, los documentos deben dividirse en fragmentos y enriquecerse con metadatos. El chunking hace que Cortex Search sea más preciso.
CREATE OR REPLACE TABLE cortex_chatbot_db.public.chatbot_stage.doc_chunks AS
SELECT
relative_path,
BUILD_SCOPED_FILE_URL(@cortex_chatbot.public.chatbot_stage, relative_path) AS file_url,
(
relative_path || ':\n'
|| coalesce('Header 1: ' || c.value['headers']['header_1'] || '\n', '')
|| coalesce('Header 2: ' || c.value['headers']['header_2'] || '\n', '')
|| c.value['chunk']
) AS chunk,
'English' AS language
FROM
cortex_chatbot_db.public.chatbot_stage.doc_data
LATERAL FLATTEN(SNOWFLAKE.CORTEX.SPLIT_TEXT_MARKDOWN_HEADER(
EXTRACTED_LAYOUT,
OBJECT_CONSTRUCT('#', 'header_1', '##', 'header_2'),
2000, -- chunks of 2000 characters
300 -- 300 character overlap
)) c;
Ahora bien, este SQL hace muchas cosas, así que voy a resumirlas. Toma cada archivo y divide el texto en fragmentos de 2000 caracteres.
Dividir en porciones más pequeñas ayuda a mejorar la eficiencia de la búsqueda. A continuación, añade información de encabezado (como títulos) a los datos dentro del fragmento para que el modelo tenga contexto sobre el origen de estos datos.
Esto hace que tus datos sean buscables y estén listos para la generación aumentada por recuperación (RAG).
Paso 5: Crear y configurar Cortex Search o Agent
Creemos nuestro agente de búsqueda Cortex, que es el servicio principal que buscará en los fragmentos y extraerá el contexto para una respuesta.
CREATE OR REPLACE CORTEX SEARCH SERVICE cortex_chatbot_db.public.chatbot_stage.cortex_serv
ON chunk
ATTRIBUTES category
WAREHOUSE = cortex_wh
TARGET_LAG = '1 hour'
AS (
SELECT
chunk,
relative_path,
file_url,
category
FROM cortex_chatbot_db.public.chatbot_stage.doc_chunks
);
Esto creará un servicio inicial que también define el campo attributes, que selecciona las columnas que deseas utilizar para filtrar los resultados de la búsqueda. Aquí, he seleccionado «categoría» para que, en teoría, podamos filtrar por diferentes categorías de productos. Para ello, he elegido las columnas « chunk », que deberían contener tu texto fragmentado.
Cortex Search utiliza por defecto una búsqueda híbrida de vectores + palabras clave, lo que mejora la precisión del chatbot. Con esto, podemos añadir más contexto utilizando un modelo semántico. Si esperas expresiones únicas o abreviaturas técnicas, puedes configurar un archivo YAML de modelo semántico utilizando el generador de modelos semánticos Cortex Analyst. Esto te permitirá proporcionar contexto y sinónimos al modelo para que pueda reconocer que algo como «CUST» también puede significar «cliente».
Esto permite los flujos de trabajo RAG, en los que el chatbot recupera el contexto relevante antes de generar respuestas.
Paso 6: Crea la aplicación Chatbot con Streamlit
Ahora vamos a crear una interfaz de chatbot muy sencilla dentro de Snowflake utilizando Streamlit. Te recomendamos utilizar Snowsight para buscar la aplicación «Streamlit in Snowflake» y crear tu aplicación de chatbot. Esto utiliza Snowpark para conectarse a tu Snowflake.
Si deseas obtener información sobre la creación de chatbots en general, te recomiendo que primero realices este curso sobre creación de chatbots en Python.
En primer lugar, permitimos que el usuario se conecte a Snowflake mediante Session.builder. A continuación, dada una entrada concreta, la proporcionamos como consulta a SNOWFLAKE.CORTEX.SEARCH
import streamlit as st
import snowflake.connector
from snowflake.snowpark import Session
# Connect to Snowflake
session = Session.builder.configs({
"account": "<account_id>",
"user": "<username>",
"password": "<password>",
"role": "SYSADMIN",
"warehouse": "CORTEX_WH",
"database": "CORTEX_CHATBOT",
"schema": "PUBLIC"
}).create()
st.title("Snowflake Cortex Chatbot")
user_input = st.text_input("Ask me a question:")
if user_input:
# Query Cortex Search
result = session.sql(f"""
SELECT PARSE_JSON(
SNOWFLAKE.CORTEX.SEARCH(
chatbot_serv',
'{
"query": "{user_input}",
"columns":[
"col1",
"col2"
],
"filter": {"@eq": {"col1": "filter value"} }
}'
)
)[‘results’] AS results
""").collect()
st.write("**Chatbot:**", result[0]['RESPONSE'])
Este chatbot básico recupera información relevante del índice de Cortex Search y devuelve respuestas en tiempo real. También existe la posibilidad de crear un chatbot multiturno (conversacional) añadiendo la capacidad de almacenar el historial de la sesión de chat en la memoria. Esto se puede hacer de forma nativa en Streamlit utilizando el servicio de búsqueda existente.
Paso 7: Implementación a través de puntos finales de la API REST
Para integrar el chatbot en aplicaciones externas (por ejemplo, sitios web, bots de Slack), utiliza la API REST de Snowflake. Por lo general, la URL tendrá un aspecto similar al siguiente: https:///api/v2/databases//schemas//cortex-search-services/:query.
Estas API requieren autenticación por motivos de seguridad, lo que significa que están limitadas a los usuarios que tienen acceso a tu entorno Snowflake. Adoptar este enfoque centrado en las API permite integrar las funciones de chatbot de forma más flexible y llegar a un público más amplio.
Un caso de uso para esto sería crear una herramienta interna que se pueda alojar en un servidor web y que permita a los usuarios hacer preguntas sobre documentos como informes financieros trimestrales o notas de reuniones. Estas integraciones requerirían el desarrollo de herramientas capaces de realizar solicitudes API.
Paso 8: Pruebas y validación
Antes de implementarlo ampliamente, prueba el chatbot para:
- Precisión : ¿obtienes respuestas correctas?
- Velocidad : ¿es aceptable la latencia?
- Usabilidad : ¿la interfaz es intuitiva?
Puedes registrar consultas y comparar los resultados con datos reales conocidos para realizar evaluaciones comparativas. Es habitual disponer de un conjunto de preguntas con una respuesta predeterminada y utilizar otros modelos para realizar comparaciones y comprobar la precisión.
Paso 9: Limpieza (opcional)
Para gestionar los costes y mantener la gobernanza, elimina los recursos que no se utilicen.
DROP WAREHOUSE IF EXISTS cortex_wh;
DROP DATABASE IF EXISTS cortex_chatbot;
DROP STAGE IF EXISTS chatbot_stage;
Conceptos adicionales y mejores prácticas
Añadamos un poco de contexto a la función de nuestro chatbot y algunas prácticas recomendadas.
Generación aumentada por recuperación (RAG) en Snowflake Cortex
RAG es una técnica utilizada por muchos modelos lingüísticos de gran tamaño para mejorar sus datos originales con conocimientos externos.
Snowflake Cortex añade los datos de tu empresa al contexto de tu chatbot, lo que le permite proporcionar respuestas utilizando el contexto adicional. Mediante el uso de una combinación de búsqueda vectorial y por palabras clave, es capaz de analizar una consulta con datos contextuales y utiliza la reclasificación semántica para seleccionar los documentos más relevantes y proporcionar una respuesta contextualizada.
Esto también significa que simplifica la implementación de RAG a través de un único motor de búsqueda Cortex, en lugar de que el usuario tenga que crear manualmente vectores, funciones de similitud e incrustaciones. El poder de RAG nos permite crear cosas como chatbots orientados a la documentación técnica.
Ingeniería rápida para chatbots de Snowflake
La ingeniería de respuestas rápidas es importante para garantizar que cualquier chatbot proporcione respuestas adecuadas a las preguntas de los usuarios. Tener un buen comprensión de la ingeniería de respuestas rápidas es fundamental para garantizar que tu servicio de chat ofrezca buenas respuestas.
Algo que ayuda a proporcionar mejores respuestas es ofrecer a los usuarios una guía de uso que les ayude a formular mejores preguntas.
También puedes añadir plantillas de mensajes a las consultas de los usuarios antes de enviarlas al servicio Cortex. Las plantillas de indicaciones ayudan a proporcionar un contexto coherente al modelo para que utilice la información adecuada para dar una respuesta.
Una plantilla de ejemplo que podría resultar útil para los datos empresariales podría ser: Eres un asistente muy útil para los datos históricos de la empresa. Respuesta basada únicamente en la base de conocimientos de la empresa. Esto permitirá que el modelo se centre en utilizar los datos de la empresa para obtener respuestas.
En ocasiones, también recibirás preguntas ambiguas o comentarios de los usuarios. En lugar de obligar al modelo a responder, puedes añadir a tu plantilla algo como: Si el usuario hace una pregunta imprecisa, responde lo siguiente: No sé la respuesta a eso. Esto puede llevarles a hacer una pregunta más específica.
Flexibilidad y opciones en la implementación
Snowflake Cortex admite modelos LLM preconstruidos (rápidos y listos para su uso en producción) y modelos personalizados (optimizados para dominios). Estos se pueden definir al crear el servicio. Además, añadir tus propios modelos semánticos personalizados añade un contexto específico del sector o la empresa al lenguaje que, de otro modo, podría resultar oscuro para el modelo, sin tener que introducir un gran corpus de texto. Esta flexibilidad permite la integración de modelos futuros.
Seguridad, gobernanza y cumplimiento normativo
Cortex sigue el mismo control de acceso basado en roles, registro de auditoría y cifrado que ofrece Snowflake. Esto garantiza el cumplimiento de la HIPAA, el RGPD y otras normativas. Tu principal responsabilidad sería garantizar que las personas adecuadas ocupen los puestos adecuados.
Estructura de costos
Snowflake Cortex utiliza un modelo de precios basado en el consumo. Al igual que con otros productos de Snowflake, se te cobra por la computación y el almacenamiento, pero hay algunas capas adicionales específicas de Cortex Search. Tú pagas por:
- Computación de almacén virtual: Este es el uso principal de la computación, que procesa las consultas de los datos de Snowflake y consume créditos.
EMBED_TEXTUso de tokens: Durante el procesamiento de datos para documentos, Snowflake Cortex se encarga de la incrustación de tokens, y se te cobra cuando se añaden o modifican documentos.- Servicio informático: El servicio Cortex Search utiliza un ordenador de servicio para establecer un servicio de baja latencia y alto rendimiento para el usuario. Esto es independiente del ordenador del almacén virtual y se cobra cada vez que el servicio estádisponible , no solo cuando se utiliza.
- Almacenamiento para índices semánticos y datos por etapas.
- Servicio en la nube Compute: Se trata de un coste a nivel de Snowflake que permite a Snowflake identificar cambios en los objetos base. Esto solo se factura si el costo es superior al 10 % del costo diario del almacén.
Prueba las siguientes técnicas para gestionar los costes:
- Snowflake recomienda utilizar almacenes MEDIUM o más pequeños.
- Supervisa el uso de tokens y establece cuotas de uso.
- Archivar los índices que no se usan o permitir un mayor retraso en la actualización de los datos si los documentos más recientes no son necesarios.
- Suspende tu servicio cuando no lo necesites. Puede ser útil configurar el servicio con un temporizador que permita encenderlo y apagarlo cuando no se esté utilizando.
Conclusión
Crear un chatbot con Snowflake Cortex permite acceder a una IA conversacional específica para empresas directamente en Data Cloud. Desde la ingestión hasta la recuperación y la implementación, puedes trabajar íntegramente dentro del entorno regulado de Snowflake. Estos chatbots pueden ayudar a agilizar procesos como la incorporación de nuevos empleados, responder a preguntas analíticas detalladas y crear documentación técnica.
Cortex permite crear chatbots basados en RAG que combinan modelos de lenguaje grande (LLM) con tus propios datos. Crear un chatbot en Streamlit en Snowflake facilita la implementación de interfaces fáciles de usar dentro de Snowflake. La seguridad, la gobernanza y la gestión de costes están integradas en el flujo de trabajo. Con Cortex, las organizaciones pueden pasar de los paneles de BI tradicionales a asistentes inteligentes que interactúan con los datos de forma conversacional.
Para obtener más información sobre Snowflake y sus capacidades de IA, consulta los siguientes recursos:
Preguntas frecuentes sobre el chatbot Snowflake Cortex
¿Cuáles son las principales ventajas de utilizar Snowflake Cortex para la inteligencia empresarial?
Cortex simplifica el análisis al permitir que usuarios sin conocimientos técnicos formulen preguntas en lenguaje natural y obtengan respuestas basadas en SQL. Elimina la necesidad de escribir consultas manualmente, reduce los cuellos de botella de BI y permite obtener información más rápidamente. Además, todos los resultados heredan los controles de seguridad, linaje y acceso de Snowflake.
¿Puede Snowflake Cortex Analyst gestionar consultas complejas con varias tablas?
Sí. Cortex Analyst admite uniones de varias tablas y puede razonar entre esquemas, siempre que las relaciones sean claras y los metadatos estén bien definidos. La documentación adecuada, los modelos semánticos y las prácticas de gobernanza de datos mejoran la precisión de las consultas complejas.
¿Cómo garantiza Snowflake la seguridad y la gobernanza de los datos utilizados por Cortex Analyst?
Cortex Analyst se ejecuta dentro del entorno Snowflake, lo que garantiza que los datos confidenciales nunca salgan de la plataforma. Respeta el control de acceso basado en roles (RBAC), el etiquetado de objetos, las políticas de enmascaramiento y el registro de auditoría, por lo que la información basada en IA sigue las mismas reglas de cumplimiento que las consultas tradicionales.
¿Cuáles son las limitaciones de Snowflake Cortex Analyst a la hora de gestionar preguntas de seguimiento?
Cortex Analyst es eficaz para consultas de un solo turno, pero tiene una memoria limitada para conversaciones de varios turnos en comparación con los marcos completos de chatbot. Para diálogos avanzados o seguimientos contextuales, combinar Cortex Analyst con Cortex Search o un chatbot personalizado creado en Streamlit ofrece mejores resultados.
¿Pueden las empresas personalizar o ajustar los modelos en los que se basa Snowflake Cortex?
Aunque Cortex utiliza principalmente LLM gestionados por Snowflake, permite la configuración a través de modelos semánticos, plantillas de comandos y canalizaciones de recuperación. Para una personalización más profunda, Cortex puede integrarse con modelos externos utilizando Snowpark Python o API, dependiendo de las necesidades de la empresa.
Soy un científico de datos con experiencia en análisis espacial, aprendizaje automático y canalización de datos. He trabajado con GCP, Hadoop, Hive, Snowflake, Airflow y otros procesos de ciencia/ingeniería de datos.


