El Cerebro Lector. Cómo la IA entiende tus documentos (Embeddings, Vector DBs y Chunking)

Imagina que acabas de contratar a un genio erudito que ha leído toda la Wikipedia, habla 50 idiomas y redacta como un poeta. Ese es tu LLM (como Llama 3 o GPT-4). Sin embargo, este genio tiene un problema gravísimo: el primer día de trabajo, le preguntas por la nueva política de vacaciones de tu empresa y te mira con cara de circunstancias.

El genio sabe qué es una vacación, pero no tiene acceso a tus datos privados.

La solución novata es obvia: «¡Pues le copio y le pego el PDF de Recursos Humanos de 500 páginas en el chat!». El problema es que los modelos de lenguaje tienen una memoria a corto plazo muy limitada, conocida como Ventana de Contexto (Context Window). Si le pegas un libro entero, o bien el sistema colapsa, o la API te cobra una fortuna, o el modelo sufre de «amnesia intermedia» olvidando lo que leyó en el centro del documento.

Para resolver esto en producción, los Ingenieros de IA diseñaron la arquitectura RAG (Retrieval-Augmented Generation). La premisa es simple: no le des el libro entero a la IA. Crea un «Bibliotecario» que busque solo los 3 párrafos exactos que responden a la pregunta, y pásale solo esos 3 párrafos al «Escritor» (LLM) para que redacte la respuesta final.

Hoy vamos a construir a ese Bibliotecario.


1. El Arte de Trocear: El Chunking

Si queremos que nuestro Bibliotecario nos traiga el párrafo exacto, el primer paso lógico es coger nuestro documento gigante (PDF, Word, Confluence) y cortarlo en trocitos manejables. A este proceso se le llama Chunking.

Parece fácil, pero hacer un mal chunking destruirá tu aplicación de IA. Imagina que cortamos un texto cada 50 palabras estrictamente. Podríamos cortar una frase justo por la mitad:

  • Trozo 1: «…el atacante usó una inyección SQL para acceder a la base de…»

  • Trozo 2: «…datos de clientes, robando contraseñas cifradas.»

Si un usuario pregunta «¿Qué se robó?», la IA no encontrará la respuesta en el Trozo 1 (porque no dice «datos») ni entenderá el contexto del Trozo 2 (porque no sabe qué ataque fue).

La Solución: El Solapamiento (Overlap) En ingeniería, usamos librerías (como LangChain) que cortan el texto inteligentemente por párrafos o puntos, pero añadiendo un «Overlap». Si el Trozo 1 tiene 1000 caracteres, le decimos que comparta los últimos 200 caracteres con el principio del Trozo 2. De esta forma, el contexto semántico «sangra» entre fragmentos y nunca perdemos el hilo de la información.


2. Embeddings: El Traductor al «Matematiqués»

Aquí viene el concepto más importante que debes aprender este año: Los ordenadores no entienden palabras, solo entienden números.

Una vez que tenemos nuestros trozos de texto, no podemos guardarlos en una base de datos normal y buscar palabras clave (como hace Google clásicamente). ¿Qué pasa si el usuario pregunta por «dinero» pero el documento dice «capital financiero»? Una búsqueda de palabras clave fallará miserablemente.

Necesitamos traducir el significado del texto a matemáticas. Aquí entran los Modelos de Embeddings (como all-MiniLM-L6-v2 o text-embedding-3).

Estos pequeños pero potentes modelos leen un trozo de texto y lo comprimen en un Vector: una lista larguísima de números (coordenadas). Por ejemplo, un modelo de 384 dimensiones convertirá tu párrafo en un array de 384 números: [0.12, -0.45, 0.89, ...].

Estas coordenadas representan un punto en un Espacio Semántico. La magia absoluta de la IA es que conceptos similares acaban físicamente cerca en ese espacio matemático:

  • El vector de «Perro» estará muy cerca del vector de «Gato».

  • El vector de «Dinero» estará casi pegado al vector de «Capital financiero».

  • El vector de «Coche» estará en la otra punta del universo matemático.


3. Bases de Datos Vectoriales: El Hogar de los Embeddings

Ya tenemos miles de trozos de texto, cada uno con su gigantesco array de coordenadas. ¿Dónde guardamos esto?

Si intentas meter estos arrays en una base de datos relacional tradicional (SQL como MySQL o PostgreSQL) y hacer una consulta, la base de datos morirá de asfixia. SQL está hecho para buscar coincidencias exactas (WHERE edad = 30), no para calcular proximidad geométrica en hiper-espacios de miles de dimensiones.

Para esto nacieron las Bases de Datos Vectoriales (VDBs), como ChromaDB, Pinecone, Qdrant o Milvus.

¿Cómo funciona la búsqueda vectorial?

  1. La Pregunta: El usuario teclea: «¿Cuál es la política de vacaciones?».

  2. Traducción: Pasamos esa pregunta por el mismo modelo de Embeddings que usamos antes. La pregunta se convierte en unas coordenadas matemáticas.

  3. Magia Matemática (k-NN): La Base de Datos Vectorial toma la coordenada de la pregunta y lanza un algoritmo (como k-Nearest Neighbors o Similitud del Coseno) para buscar los fragmentos de texto cuyas coordenadas estén físicamente más cerca.

  4. El Resultado: La base de datos te devuelve instantáneamente los 3 trozos de texto de Recursos Humanos, incluso si el usuario usó sinónimos como «días libres» en lugar de «vacaciones».

Acabas de construir un buscador semántico que entiende el significado real de las palabras. En el próximo post, veremos cómo conectar esto a un LLM «Escritor» y las decisiones críticas de infraestructura: ¿Mandamos nuestros datos privados a la nube de OpenAI o montamos nuestro propio cerebro open-source en local?


🚧 Road to Senior: Tareas AI para profundizar

No te creas nada de lo que te cuento sin validarlo tú mismo. Abre tu IA de cabecera y usa estos prompts para bajar a las trincheras de la ingeniería:

TODO 1 (Profundización Matemática): «Actúa como un profesor de álgebra lineal para programadores. Explícame matemáticamente cómo funciona la ‘Similitud del Coseno’ (Cosine Similarity) que usan las bases de datos vectoriales para saber si dos textos se parecen. Dame un ejemplo numérico simplificado en 2 dimensiones para entenderlo.»

TODO 2 (Estrategias de Producción): «Soy un Ingeniero de Datos procesando un manual técnico muy complejo. El documento tiene párrafos de texto explicativo, pero también tablas de datos financieros y código fuente en bloques. Explícame las estrategias avanzadas de ‘Chunking’ (como Document-based chunking o Semantic chunking) para procesar esto sin destrozar la estructura de las tablas ni el código.»

Categorías