Pinecone: Base de Datos vectorial

0 de 4 lecciones completas (0%)

4. Ejemplo Práctico en n8n – Dominando el Pipeline de Datos

No tienes acceso a esta lección

Por favor, inscríbete o accede para acceder al contenido del curso.

¡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:

  1. Una cuenta de Pinecone: Crea un índice serverless usando el modelo text-embedding-3-small (1536 dimensiones).
  2. Tus credenciales de Pinecone: Ten a mano tu API Key para conectarla en n8n.
  3. 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:
    1. Nodo Read PDF: Lee nuestro archivo de prueba.
    2. Nodo Extract Text from File: Extrae todo el contenido.
    3. Nodo Pinecone: En el modo «Load», seleccionamos JSON como fuente de datos.
  • 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:
    1. Nodo Read PDF: Lee nuestro archivo.
    2. Nodo Pinecone: Conectamos directamente el Read PDF. En el modo «Load», seleccionamos Binary como fuente.
  • 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:
    1. Read PDF -> Extract Text from File
    2. 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).
    3. Nodo Pinecone: En modo «Load», usamos JSON pero apuntamos al campo de texto limpio del nodo Set. Añadimos un campo de metadatos personalizado, como document_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 un Chunk 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.
  • Character Splitter con Separador:
    • Configuración: Character Text Splitter con un Chunk Size de 50 y un Separator 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.
  • Character Splitter con Solapamiento (Overlap):
    • Configuración: Character Text Splitter con Chunk Size de 60 y Chunk 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.

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 como document_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 un document_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:

  1. Evita el modo de carga JSON por defecto para no generar vectores basura.
  2. El modo Binario es rápido, pero te da menos control.
  3. La extracción de texto específica + metadatos personalizados es el método profesional.
  4. Elige tu divisor de texto sabiamente: Recursive es el más seguro, pero los otros ofrecen un control más específico.
  5. 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.

Resumen de privacidad
Logo JeroCuevas.com

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.

Cookies estrictamente necesarias

Las cookies estrictamente necesarias tiene que activarse siempre para que podamos guardar tus preferencias de ajustes de cookies.

Analítica

Esta web utiliza Google Analytics para recopilar información anónima tal como el número de visitantes del sitio, o las páginas más populares.

Dejar esta cookie activa nos permite mejorar nuestra web.