¡Hola! En esta lección, vamos a aplicar toda la teoría que hemos aprendido. La base de cualquier agente de IA potente es una base de conocimiento bien construida. Si esa base es una base de datos vectorial como Pinecone, es absolutamente crucial que sepas cómo introducir, dividir y etiquetar tus datos de manera óptima.
En este laboratorio práctico, usaremos n8n y Pinecone para explorar conceptos esenciales como los metadatos, los embeddings y los diferentes métodos de división de texto. ¡Vamos a ensuciarnos las manos!
Preparación del Entorno
Antes de empezar, asegúrate de tener:
- Una cuenta de Pinecone: Crea un índice
serverless
usando el modelotext-embedding-3-small
(1536 dimensiones). - Tus credenciales de Pinecone: Ten a mano tu API Key para conectarla en n8n.
- Un documento de prueba: Usaremos un PDF simple para ver claramente los resultados de cada experimento.
El flujo de trabajo base en n8n siempre será similar: Descargar Archivo -> Procesar Texto -> Cargar en Pinecone.
Experimento 1: El Error Común – Cargar Todo el JSON
- Objetivo: Ver qué pasa si extraemos el texto de un PDF y lo cargamos directamente en Pinecone usando el modo JSON.
- Configuración:
- Nodo
Read PDF
: Lee nuestro archivo de prueba. - Nodo
Extract Text from File
: Extrae todo el contenido. - Nodo
Pinecone
: En el modo «Load», seleccionamosJSON
como fuente de datos.
- Nodo
- Resultado: El flujo crea 8 vectores en Pinecone.
- Análisis / Lección Aprendida: Al usar el modo JSON, n8n toma toda la información del nodo anterior (incluyendo metadatos del archivo como versión, autor, etc.) y crea un vector para cada pieza de información. Esto genera «vectores basura» que ensucian nuestra base de datos y ralentizan las búsquedas. Esta no es la forma correcta de hacerlo.
Limpiamos nuestro índice de Pinecone para el siguiente experimento.
Experimento 2: Una Mejor Alternativa – Cargar como Binario
- Objetivo: Probar el modo de carga «Binary» para ver si limpia el resultado.
- Configuración:
- Nodo
Read PDF
: Lee nuestro archivo. - Nodo
Pinecone
: Conectamos directamente elRead PDF
. En el modo «Load», seleccionamosBinary
como fuente.
- Nodo
- Resultado: El flujo crea 1 solo vector. El contenido del texto es correcto, aunque sin espacios. Los metadatos del PDF (título, autor) se añaden automáticamente.
- Análisis / Lección Aprendida: El modo binario es mucho más inteligente. Extrae solo el contenido principal del PDF, evitando los vectores basura. Es una forma rápida y eficaz de cargar documentos simples, aunque nos da menos control sobre los metadatos que se añaden.
Experimento 3: El Método Correcto – Extracción y Metadatos Personalizados
- Objetivo: Cargar solo el texto que nos interesa y añadir nuestros propios metadatos.
- Configuración:
Read PDF
->Extract Text from File
- Nodo
Set
: Creamos un nuevo campo JSON que contenga solo el texto que queremos del paso anterior (usando una expresión para apuntar al campo correcto). - Nodo
Pinecone
: En modo «Load», usamosJSON
pero apuntamos al campo de texto limpio del nodoSet
. Añadimos un campo de metadatos personalizado, comodocument_id
.
- Resultado: Se crea 1 solo vector en Pinecone. El vector contiene únicamente el texto que hemos seleccionado y nuestro metadato
document_id
personalizado. - Análisis / Lección Aprendida: Esta es la forma profesional de hacerlo. Tenemos control total sobre qué texto se vectoriza y qué metadatos se adjuntan. Es el método más limpio y robusto.
Experimento 4: Probando los Divisores de Texto (Splitters)
Ahora usaremos la configuración del Experimento 3, pero probaremos diferentes «Splitters» dentro del nodo de Pinecone.
- Token Splitter:
- Configuración:
Token Text Splitter
con unChunk Size
de 5. - Resultado: El texto se divide en 10 vectores, cada uno con un máximo de 5 tokens (palabras o signos).
- Lección: Útil si necesitas un control muy granular basado en el recuento de tokens, pero puede ser menos intuitivo.
- Configuración:
- Character Splitter con Separador:
- Configuración:
Character Text Splitter
con unChunk Size
de 50 y unSeparator
de.
(punto). - Resultado: El texto se divide en 3 vectores. El splitter respeta el tamaño del chunk, pero siempre intenta cortar en un punto final.
- Lección: Excelente para preservar la integridad de las frases. Si tus documentos tienen separadores lógicos (puntos, saltos de línea), este método es muy eficaz.
- Configuración:
- Character Splitter con Solapamiento (Overlap):
- Configuración:
Character Text Splitter
conChunk Size
de 60 yChunk Overlap
de 20. - Resultado: Se crean 6 vectores. El final de un vector se repite al principio del siguiente (ej: «…párrafo del documento. Habla sobre…» y el siguiente empieza con «Habla sobre…»).
- Lección: El solapamiento es una técnica poderosa para asegurar que no se pierde el contexto entre fragmentos, aunque crea más vectores y aumenta ligeramente el coste.
- Configuración:
El Desafío de la Actualización: Upsert
en Pinecone
En la demostración, viste que intentar «actualizar» un vector existente en Pinecone no es tan directo como en Supabase.
- La Razón: Pinecone funciona con una operación llamada
upsert
, que significa «actualizar si el ID del vector existe, o insertar si no existe». El problema es que se basa en el ID del vector, no en tus metadatos personalizados comodocument_id
. - El Reto Práctico: Si un solo documento crea 6 vectores, cada uno tendrá un ID único generado por Pinecone. Para actualizar ese documento, necesitarías obtener los 6 IDs y hacer un
upsert
para cada uno. Esto es complejo de orquestar en un flujo simple de n8n y es una de las principales diferencias con Supabase, donde un simple comando SQL puede actualizar o borrar todo basándose en undocument_id
.
Conclusión: Del Laboratorio a la Práctica
Este laboratorio práctico te ha mostrado los «cómo» y los «porqué» del pipeline de datos en Pinecone.
Lecciones Clave:
- Evita el modo de carga JSON por defecto para no generar vectores basura.
- El modo Binario es rápido, pero te da menos control.
- La extracción de texto específica + metadatos personalizados es el método profesional.
- Elige tu divisor de texto sabiamente:
Recursive
es el más seguro, pero los otros ofrecen un control más específico. - Entiende las limitaciones: Actualizar datos en Pinecone es más complejo y requiere una lógica más avanzada que la simple carga.
Ahora tienes las herramientas y el conocimiento para cargar datos en tu base de conocimiento de manera limpia, organizada y eficaz.