Ir al contenido

Vectores y Embeddings

Para construir un sistema RAG, necesitamos que la máquina “encuentre” los documentos relevantes para una pregunta. Pero las computadoras no saben leer español ni inglés; solo entienden números.

Aquí es donde entran los Embeddings.

Técnicamente, un Embedding es una lista de números flotantes (vector) que representa el significado semántico de un texto.

Imagina que podemos mapear cualquier concepto en un espacio gráfico:

  • Las palabras “Perro”, “Cachorro” y “Sabueso” tendrán números muy similares y estarán agrupadas en una esquina del gráfico.
  • La palabra “Microprocesador” tendrá números totalmente diferentes y estará en el extremo opuesto.

Al transformar texto a números (usando un modelo de Embeddings como gemini-embedding-001 de Google):

  • “Gato”[0.10, 0.55, ...]
  • “Felino”[0.12, 0.54, ...] (Matemáticamente casi idéntico)
  • “Avión”[0.90, -0.20, ...] (Matemáticamente distante)

La gran revolución de RAG es que no buscamos por coincidencia exacta (Keyword Search), sino por intención.

Búsqueda clásica (SQL LIKE / Regex)Búsqueda vectorial (Semántica)
Query: “Mi internet está lento”Query: “Mi internet está lento”
Doc: “Guía de solución de latencia de red”Doc: “Guía de solución de latencia de red”
Resultado: ❌ 0 coincidencias.
(No comparten ninguna palabra).
Resultado: ✅ Coincidencia Alta.
(Los vectores apuntan a la misma idea).

No necesitas ser matemático, solo entender la intuición geométrica:

  1. Convertimos la Pregunta del usuario en un vector.
  2. Tenemos todos nuestros Documentos convertidos en vectores previamente.
  3. Calculamos el ángulo (distancia) entre el vector de la pregunta y los vectores de los documentos.

Un detalle vital para los desarrolladores: No puedes vectorizar un libro entero en un solo vector. Perdería demasiado detalle.

La estrategia es dividir el documento en trozos pequeños o “Chunks” (ej. párrafos de 500 caracteres).

  • Correcto: Vectorizar cada párrafo individualmente. Si el usuario pregunta sobre “precios”, encontraremos exactamente el párrafo de precios.
  • Incorrecto: Vectorizar todo el PDF junto. El “promedio” del significado del libro diluirá la información específica.

Para hacer esto a gran escala, se usan bases de datos especializadas como Pinecone, ChromaDB o pgvector.

Sin embargo, para nuestro laboratorio (y para entender cómo funciona internamente), crearemos nuestra propia base de datos vectorial en memoria usando archivos JSON simples.