Módulo 1: Introducción a Vectores

4. Vectores en Alta Dimensión: De 3D a 1536D

Descripción de la cápsula

En esta cápsula vas a hacer el salto conceptual más importante del módulo: entender que vectores de alta dimensión (100D, 1536D, 3072D) funcionan exactamente igual que vectores 2D y 3D, solo que con más ejes. No podrás dibujarlos, pero toda la intuición geométrica (dirección, magnitud, cercanía) se mantiene.

Esta cápsula es crucial porque en AI, los embeddings reales son vectores de alta dimensión: OpenAI text-embedding-3-small tiene 1536 dimensiones, GPT-4 trabaja con espacios de miles de dimensiones. Si no entiendes que un vector 1536D es conceptualmente igual a un vector 2D (solo con 1536 ejes en lugar de 2), los embeddings te parecerán magia.

Cuando termines, entenderás por qué se necesita alta dimensión en AI (más capacidad para capturar matices), cómo visualizar mentalmente alta dimensión (analogías, proyecciones), y por qué "la maldición de la dimensionalidad" es un reto. Esta intuición es la base de todo lo que viene: espacios vectoriales (Módulo 2), similaridad (Módulo 3), búsqueda semántica (Módulo 4), y RAG (Módulo 7).


De 3D a ND: La extensión natural

Ya viste que:

  • 1D: [x] — Una línea (1 eje)
  • 2D: [x, y] — Un plano (2 ejes)
  • 3D: [x, y, z] — Un espacio (3 ejes)

La extensión es obvia:

  • 4D: [x, y, z, w] — 4 ejes
  • 5D: [x, y, z, w, t] — 5 ejes
  • ND: [x₁, x₂, x₃, ..., xₙ] — N ejes

Ejemplo concreto:

Vector 100D:
[2.3, -1.5, 0.8, 0.2, ..., -0.4]  (100 números)

Vector 1536D (embedding típico de OpenAI):
[0.234, -0.456, 0.123, 0.789, ..., -0.342]  (1536 números)

Interpretación:

  • Cada número es la coordenada en un eje
  • 1536 números = 1536 ejes = espacio de 1536 dimensiones
  • Es un punto en ese espacio (o una flecha desde el origen si prefieres)

No hay magia: Es exactamente lo mismo que [3, 2] en 2D. Solo que con muchos más números.


¿Qué significa "dimensión"?

Dimensión = cantidad de ejes (o coordenadas) necesarios para ubicar un punto en el espacio.

Ejemplos intuitivos:

EspacioDimensionesQué representaEjemplo
Línea1DPosición en una recta (ej: km en carretera)[5] = km 5
Plano2DPosición en mapa (latitud, longitud)[19.4, -99.1]
Espacio físico3DPosición en habitación (x, y, z)[2, 3, 1]
Espacio-tiempo4DPosición + tiempo (x, y, z, t)[2, 3, 1, 10:30]
Embedding1536DSignificado de texto[0.23, -0.45, ..., -0.34]

En AI: Un embedding de 1536D significa que cada palabra/documento se ubica en un espacio de 1536 ejes. Cada eje captura un "aspecto" del significado (aunque no sabemos qué aspecto específico; los modelos aprenden representaciones abstractas).


¿Por qué alta dimensión en AI?

Motivo 1: Más capacidad para capturar matices

En 2D: Solo puedes capturar 2 aspectos.

Ejemplo simplificado:

  • Eje 1: "Animalidad" (qué tan animal es la palabra)
  • Eje 2: "Domesticidad" (qué tan doméstico)

Palabras:

      Domesticidad ↑
                   |
      "gato"  •   |   • "perro"
                   |
      "león"  •   |
                   |───────────→ Animalidad

Problema: Con solo 2 ejes, no puedes distinguir "león" de "gato" adecuadamente (ambos son animales poco domésticos). Tampoco puedes capturar "tamaño", "velocidad", "hábitat", etc.


En 1536D: Puedes capturar 1536 aspectos diferentes:

  • Eje 1: Animalidad
  • Eje 2: Domesticidad
  • Eje 3: Tamaño
  • Eje 4: Velocidad
  • Eje 5: Hábitat
  • ...
  • Eje 1536: ??? (algún aspecto abstracto que el modelo aprendió)

Resultado: "león", "gato", "perro", "tigre", "hamster" están separados en el espacio de 1536D porque cada uno tiene valores diferentes en muchos ejes.

Analogía: Si describes una persona con 2 características (altura, peso), muchas personas se "solapan". Si usas 100 características (altura, peso, edad, color de pelo, idiomas, profesión, etc.), cada persona es única. Más dimensiones = más capacidad para distinguir.


Motivo 2: Relaciones complejas

En alta dimensión, puedes capturar relaciones como:

Vector("rey") - Vector("hombre") + Vector("mujer") ≈ Vector("reina")

Eso funciona porque en alta dimensión hay "direcciones" que capturan conceptos como "realeza" o "género". En 2D/3D sería muy difícil capturar todas esas relaciones simultáneamente.

Ejemplo: Si "rey - hombre + mujer = reina" funciona en 1536D, es porque hay ejes que capturan:

  • "Género" (masculino vs femenino)
  • "Realeza" (rey/reina vs persona común)
  • "Rol" (monarca vs otro)

Con solo 2-3 ejes, no puedes representar todas esas relaciones a la vez. Con 1536 ejes, sí.


Motivo 3: Más "espacio" para datos

En 2D, si tienes 10,000 palabras y las mapeas a vectores, habrá mucho "solapamiento" (muchas palabras muy cercanas aunque no sean similares). En 1536D, hay mucho más "espacio" para distribuir los puntos, así que palabras similares quedan cerca y palabras diferentes quedan lejos.

Analogía: Si tienes 100 personas y solo puedes usar 2 características (altura, peso), muchas coincidirán. Si usas 1536 características, casi todos tendrán una posición única en el espacio → más fácil distinguir.


Cómo visualizar mentalmente alta dimensión

Verdad dura: No puedes visualizar 1536 ejes en tu mente. Tu cerebro está limitado a 3D (y aun así, 3D en papel es difícil).

Pero puedes usar analogías y abstracciones:


Analogía 1: Tabla con 1536 columnas

Imagina una tabla de Excel con 1536 columnas:

| Palabra | Eje1  | Eje2   | Eje3  | ... | Eje1536 |
|---------|-------|--------|-------|-----|---------|
| perro   | 0.23  | -0.45  | 0.12  | ... | -0.34   |
| gato    | 0.25  | -0.43  | 0.10  | ... | -0.32   |
| auto    | 9.34  | 5.21   | -8.12 | ... | 7.56    |

Cada fila es un vector (un punto en el espacio de 1536D). Cada columna es un eje.

Similaridad: "perro" y "gato" tienen valores parecidos en muchas columnas → vectores cercanos. "auto" tiene valores muy diferentes → vector lejano.


Analogía 2: Código genético

El ADN tiene ~3 mil millones de pares de bases. No puedes visualizarlo, pero sabes que:

  • Dos personas con ADN similar = parecidas
  • Dos personas con ADN muy diferente = diferentes

Embeddings son lo mismo: Un embedding de 1536D es como "el ADN de una palabra". Dos palabras con "ADN similar" (embeddings cercanos) son similares en significado.


Analogía 3: Test de personalidad con 1536 preguntas

Imagina un test con 1536 preguntas. Tu resultado es un vector 1536D (una respuesta por pregunta). Dos personas con respuestas similares en la mayoría de preguntas → vectores cercanos → personalidades parecidas.

Embeddings: Cada "pregunta" es un eje. El modelo aprendió qué "preguntas" son útiles para capturar significado. No sabemos qué pregunta corresponde a cada eje (el modelo aprendió implícitamente), pero el resultado es que palabras similares dan respuestas similares → vectores cercanos.


Proyecciones: Cómo ver alta dimensión en 2D/3D

No puedes dibujar 1536D, pero puedes proyectarlo a 2D/3D (reducción dimensional).

Técnicas comunes:

  • PCA (Principal Component Analysis): Encuentra los 2-3 ejes más importantes y proyecta
  • t-SNE: Proyección que preserva cercanías (puntos cercanos en alta dimensión quedan cerca en 2D)
  • UMAP: Similar a t-SNE pero más rápido y escalable

Ejemplo conceptual:

Vectores originales (1536D):
"perro": [0.23, -0.45, ..., -0.34]  (1536 números)
"gato":  [0.25, -0.43, ..., -0.32]  (1536 números)
"auto":  [9.34, 5.21, ..., 7.56]   (1536 números)

↓ Proyección t-SNE a 2D

Vectores reducidos (2D):
"perro": [2.3, 1.8]
"gato":  [2.5, 1.7]
"auto":  [-5.2, 8.1]

Visualización:

      ↑ Y
      |
    2 | •perro •gato
      |
    0 |─────────────→ X
      |        •auto
   -8 |
     -6  0  2  4  6

Interpretación:

  • "perro" y "gato" siguen cercanos en 2D (como estaban en 1536D)
  • "auto" está lejos en 2D (como estaba en 1536D)

Importante: La proyección pierde información (1536D → 2D comprime mucho), pero preserva la intuición de "cercanía = similaridad". Por eso las visualizaciones de embeddings en blogs/papers son útiles aunque sean solo 2D.


Ejemplos de dimensionalidad en AI

Modelo/ServicioDimensionalidadUso típico
Word2Vec (Google)300DEmbeddings de palabras (clásico)
GloVe300DEmbeddings de palabras (clásico)
BERT (base)768DEmbeddings contextuales
OpenAI text-embedding-3-small1536DEmbeddings para semantic search
OpenAI text-embedding-3-large3072DEmbeddings de alta calidad
GPT-3/GPT-4 (interno)12,288DRepresentación interna (no el embedding de salida)
Sentence-BERT768DEmbeddings de frases

Observación: Los modelos modernos usan entre 768D y 3072D para embeddings de texto. Más dimensiones = más capacidad, pero también más cómputo y más datos necesarios para entrenar.


La maldición de la dimensionalidad

Fenómeno: En espacios de alta dimensión, pasan cosas contraintuitivas que no pasan en 2D/3D.

Problema 1: Todo está lejos

En 2D: Si tomas 1000 puntos aleatorios en un cuadrado, muchos estarán cerca.

En 1000D: Si tomas 1000 puntos aleatorios en un hipercubo 1000D, casi todos están lejos unos de otros.

Por qué: El "volumen" crece exponencialmente con dimensiones. En alta dimensión, hay "mucho espacio" y los puntos aleatorios se dispersan.

Consecuencia para AI: Si generas embeddings aleatorios, todos estarán lejos. Por eso es crucial entrenar los embeddings: el modelo aprende a colocar palabras similares cerca y palabras diferentes lejos (no aleatorio).


Problema 2: La noción de "vecino cercano" pierde sentido

En 2D: Si buscas los 5 vecinos más cercanos a un punto, claramente están "cerca" (distancia pequeña).

En 1000D: Los vecinos "cercanos" pueden estar muy lejos en términos absolutos. La distancia promedio entre cualquier par de puntos es alta.

Solución: En AI, usamos similaridad coseno (ángulo entre vectores) en lugar de distancia euclidiana, porque en alta dimensión el ángulo es más robusto que la distancia. Verás esto en Módulo 3 (Similaridad).


Problema 3: Más datos necesarios

En 2D: Con 100 puntos puedes cubrir bien un plano.

En 1000D: Necesitas exponencialmente más puntos (millones) para "cubrir" el espacio de forma densa.

Consecuencia para AI: Los modelos de embeddings necesitan entrenar con cientos de millones de ejemplos para aprender representaciones útiles en espacios de 768D-1536D.


Nota importante: La maldición de la dimensionalidad es un reto teórico, pero en la práctica los embeddings funcionan bien porque:

  1. Los datos reales tienen estructura (no son puntos aleatorios)
  2. Los modelos aprenden a usar las dimensiones de forma eficiente
  3. Usamos métricas adecuadas (coseno, no euclidiana pura)

No te preocupes demasiado por la maldición; solo entiende que alta dimensión tiene peculiaridades y que los investigadores han encontrado formas de trabajar con ellas.


Vectores 1536D: Ejemplo concreto

Cuando usas OpenAI text-embedding-3-small para "The dog is a domestic animal", recibes un vector como este (simplificado):

{
  "embedding": [
    0.234, -0.456, 0.123, 0.789, -0.234, 0.567, -0.890, 0.345,
    ... (1528 más números) ...,
    -0.342
  ]
}

¿Qué es esto?

  • Un array de 1536 números
  • Cada número es una coordenada en un eje
  • Es un punto en el espacio de 1536D
  • Representa el "significado" de la frase

¿Qué hacemos con esto?

  1. Lo guardamos en una base de datos vectorial (Pinecone, Weaviate, etc.)
  2. Cuando llega una query ("What animals are pets?"), la convertimos a vector (1536D)
  3. Comparamos el vector de la query con los vectores de documentos (similaridad coseno)
  4. Retornamos los documentos con vectores más cercanos (semantic search)

Clave: Todo lo que viste en 2D/3D (dirección, magnitud, cercanía) aplica igual en 1536D. Solo que no lo puedes dibujar.


Comparación visual: 2D vs 100D

En 2D (dibujable):

      ↑ Y
      |
    2 | •perro •gato
      |
    1 |
      |        •tigre
    0 |─────────────────→ X
      |                •auto
   -2 |
      0  1  2  3  4  5  6  7

Interpretación directa: Ves claramente que "perro" y "gato" están cerca, "auto" está lejos.


En 100D (no dibujable):

Vector "perro":  [0.23, -0.45, 0.12, ..., -0.34]  (100 números)
Vector "gato":   [0.25, -0.43, 0.10, ..., -0.32]  (100 números)
Vector "auto":   [9.34, 5.21, -8.12, ..., 7.56]  (100 números)

Interpretación: No puedes dibujar, pero puedes calcular distancia:

  • distancia("perro", "gato") = pequeña → cercanos → similares
  • distancia("perro", "auto") = grande → lejanos → diferentes

Misma intuición, diferentes herramientas. En 2D usas tus ojos; en 100D usas matemáticas (distancia euclidiana, coseno, etc.).


Operaciones en alta dimensión

Todo lo que funciona en 2D/3D funciona en alta dimensión:

Magnitud (largo del vector):

2D: [3, 2] → Magnitud = √(3² + 2²) = √13 ≈ 3.6

1536D: [x₁, x₂, ..., x₁₅₃₆]
→ Magnitud = √(x₁² + x₂² + ... + x₁₅₃₆²)

Interpretación: Qué tan "lejos del origen" está el punto (aunque en 1536D no puedas visualizar).


Suma de vectores:

2D: [3, 2] + [1, 1] = [4, 3]

1536D: [x₁, x₂, ..., x₁₅₃₆] + [y₁, y₂, ..., y₁₅₃₆]
     = [x₁+y₁, x₂+y₂, ..., x₁₅₃₆+y₁₅₃₆]

Interpretación: Combinar significados. Ejemplo: Vector("rey") - Vector("hombre") + Vector("mujer") ≈ Vector("reina").


Distancia entre dos vectores:

2D: distancia([3, 2], [1, 1]) = √((3-1)² + (2-1)²) = √5 ≈ 2.24

1536D: distancia(A, B) = √((a₁-b₁)² + (a₂-b₂)² + ... + (a₁₅₃₆-b₁₅₃₆)²)

Interpretación: Qué tan diferentes son dos palabras/documentos.


Punto clave: Las fórmulas tienen más términos en alta dimensión, pero el concepto es idéntico. No hace falta que calcules a mano; los sistemas de vectores lo hacen por ti. Solo entiende que funciona igual.


¿Qué significa cada dimensión?

Pregunta frecuente: "Si un embedding tiene 1536 dimensiones, ¿qué significa cada una?"

Respuesta: No lo sabemos exactamente. Los modelos aprenden representaciones de forma implícita durante el entrenamiento. Cada eje captura algún "aspecto" del significado, pero no hay una etiqueta como "Eje 1 = Animalidad".

Analogía: Es como las neuronas en tu cerebro. Cada neurona contribuye a tu pensamiento, pero no puedes decir "la neurona 17 es la de matemáticas". Las representaciones son distribuidas (muchos ejes contribuyen a cada concepto).

Casos donde SÍ sabemos:

  • En algunos modelos interpretables (ej: Sparse Autoencoders), los investigadores han encontrado que ciertos ejes capturan conceptos específicos (ej: "eje 42 = género", "eje 103 = científico"). Pero en modelos como OpenAI embeddings, no tenemos esa interpretación.

Conclusión: Usa los embeddings como "cajas negras": dame texto, obtengo vector, comparo vectores. No hace falta saber qué significa cada eje; solo que vectores cercanos = significados similares.


Ejercicios

Ejercicio 1: Contar dimensiones

¿Cuántas dimensiones tienen estos vectores?

a) [3, 2]
b) [3, 2, -1, 0]
c) [0.23, -0.45, 0.12, ..., -0.34] (con 1536 números en total)
d) [5]

Ver solución

a) [3, 2]: 2 dimensiones (2D)

b) [3, 2, -1, 0]: 4 dimensiones (4D)

c) [0.23, -0.45, ..., -0.34] (1536 números): 1536 dimensiones (1536D)

d) [5]: 1 dimensión (1D)

Regla: Número de dimensiones = cantidad de coordenadas (números en el vector).


Ejercicio 2: ¿Por qué alta dimensión?

Explica en 1-2 frases por qué un embedding de 1536D es mejor que uno de 2D para representar significado de texto.

Ver guía de respuesta

Guía posible: "Un embedding de 1536D puede capturar 1536 aspectos diferentes del significado (animalidad, tamaño, emoción, contexto, etc.), mientras que 2D solo puede capturar 2 aspectos. Más dimensiones permiten distinguir mejor entre conceptos similares y capturar relaciones complejas."

Analogía: "Es como describir una persona con 2 características (altura, peso) vs 1536 características (altura, peso, edad, idiomas, profesión, hobbies, etc.). Con más características, la descripción es mucho más rica y única."


Ejercicio 3: Proyección conceptual

Tienes 3 vectores 1536D:

  • "perro": [0.23, -0.45, ..., -0.34]
  • "gato": [0.25, -0.43, ..., -0.32]
  • "auto": [9.34, 5.21, ..., 7.56]

Después de proyectarlos a 2D con t-SNE, obtienes:

  • "perro": [2.3, 1.8]
  • "gato": [2.5, 1.7]
  • "auto": [-5.2, 8.1]

¿Qué puedes concluir sobre la relación entre estas palabras?

Ver solución

Conclusión: "perro" y "gato" son similares (vectores cercanos tanto en 1536D como en 2D proyectado). "auto" es diferente (vector lejano).

Interpretación: La proyección 2D preservó la estructura de cercanía del espacio 1536D original. Aunque perdimos información (1536D → 2D), la intuición de "cercanía = similaridad" se mantuvo.

Uso práctico: Cuando veas visualizaciones 2D de embeddings en blogs o papers, puedes confiar en que puntos cercanos → conceptos similares, aunque la visualización sea una proyección comprimida.


Ejercicio 4: Distancia conceptual

Sin calcular, ¿qué par de vectores crees que tiene menor distancia?

Par A: [2, 3] y [2.1, 3.1]
Par B: [2, 3] y [5, 8]

Ver solución

Par A tiene menor distancia (vectores más cercanos).

Justificación: Los vectores del Par A difieren solo en 0.1 en cada coordenada (muy cercanos). Los del Par B difieren en 3 y 5 (mucho más lejanos).

Analogía en AI: Si dos palabras tienen embeddings que difieren muy poco en cada dimensión (como Par A), son muy similares. Si difieren mucho (como Par B), son diferentes.


Ejercicio 5: Maldición de la dimensionalidad

¿Por qué en alta dimensión los puntos aleatorios tienden a estar todos lejos unos de otros?

Ver guía de respuesta

Respuesta simplificada: En alta dimensión, hay muchísimo espacio. En 2D tienes un plano; en 1000D tienes un "hiper-espacio" con volumen exponencialmente mayor. Si generas puntos aleatorios, se dispersan por todo ese espacio gigante y la probabilidad de que dos queden cerca es muy baja.

Analogía: Si pones 10 personas en una habitación (espacio pequeño, 3D), se encontrarán. Si pones las mismas 10 personas en un planeta entero (espacio enorme, 3D pero muy grande), es poco probable que dos se encuentren. Alta dimensión es como tener un "planeta enorme" de muchas dimensiones: hay tanto espacio que los puntos se pierden unos de otros.

Por qué los embeddings funcionan: Los embeddings NO son aleatorios; están entrenados para colocar palabras similares cerca. Por eso a pesar de la maldición de la dimensionalidad, los embeddings son útiles: tienen estructura, no son ruido.


Ejercicio 6: Interpretación de dimensiones

Si tuvieras un embedding 5D de animales:

Eje 1: Tamaño (pequeño → grande)
Eje 2: Velocidad (lento → rápido)
Eje 3: Domesticidad (salvaje → doméstico)
Eje 4: Hábitat acuático (terrestre → acuático)
Eje 5: Nocturnidad (diurno → nocturno)

¿Cómo crees que se vería el vector de "perro"? (Usa escala -5 a +5)

Ver guía de respuesta

Posible vector "perro": [2, 3, 5, -5, -3]

Justificación:

  • Eje 1 (Tamaño): +2 (mediano, no muy grande ni muy pequeño)
  • Eje 2 (Velocidad): +3 (relativamente rápido)
  • Eje 3 (Domesticidad): +5 (muy doméstico)
  • Eje 4 (Hábitat acuático): -5 (completamente terrestre)
  • Eje 5 (Nocturnidad): -3 (principalmente diurno)

Comparación con "gato": [1, 4, 4, -5, 2]

  • Más pequeño (1 vs 2)
  • Más rápido (4 vs 3)
  • Menos doméstico (4 vs 5) — debatible, pero algunos gatos son semi-salvajes
  • Terrestre igual (-5)
  • Más nocturno (2 vs -3)

Observación: "perro" y "gato" tienen valores parecidos en Tamaño, Velocidad, Domesticidad, Hábitat → vectores cercanos → similares. Si calculamos "auto" sería algo como [4, 5, -5, -5, 0] (grande, muy rápido, nada doméstico, terrestre, ni diurno ni nocturno) → lejano de "perro" y "gato".

Nota: En embeddings reales NO sabemos qué significa cada eje, pero esta intuición (coordenadas capturan aspectos, valores parecidos = conceptos similares) es correcta.


Troubleshooting

Problema 1: "No puedo visualizar 1536D"

Síntoma: Te frustra no poder "ver" alta dimensión.

Solución: Nadie puede. Tu cerebro solo entiende 2D-3D. Acepta eso y usa abstracciones:

  • Piensa en vectores como "tablas de características" (1536 columnas)
  • Usa proyecciones 2D (t-SNE, UMAP) para visualizar
  • Confía en las matemáticas: distancia/similaridad funcionan aunque no veas

Analogía: No puedes "ver" el ADN (3 mil millones de pares de bases), pero entiendes que ADN similar = personas similares. Embeddings son lo mismo: no los ves, pero los usas.


Problema 2: "¿Cómo sé si dos vectores 1536D son cercanos?"

Síntoma: No sabes cómo comparar vectores de alta dimensión.

Solución: Usa métricas de similaridad (distancia euclidiana, coseno). Herramientas como Pinecone, Weaviate, o librerías como NumPy/SciPy calculan por ti. No hace falta que calcules a mano.

Ejemplo conceptual:

# Ilustrativo (NO código que implementarás aquí)
from numpy import dot
from numpy.linalg import norm

vec_dog = [0.23, -0.45, ..., -0.34]  # 1536D
vec_cat = [0.25, -0.43, ..., -0.32]  # 1536D

similarity = dot(vec_dog, vec_cat) / (norm(vec_dog) * norm(vec_cat))
# Resultado: 0.95 (muy alto → similares)

No te preocupes si no entiendes el código; veremos similaridad en Módulo 3. Solo entiende que hay funciones que comparan vectores automáticamente.


Problema 3: "¿Por qué los embeddings tienen exactamente 768D o 1536D?"

Síntoma: No entiendes por qué esos números específicos.

Solución: Es una decisión de arquitectura del modelo durante el entrenamiento. Los investigadores eligieron 768D para BERT, 1536D para OpenAI text-embedding-3-small, etc., basándose en:

  • Balance entre capacidad y cómputo (más dimensiones = mejor, pero más costoso)
  • Benchmarks de calidad (probar qué dimensionalidad da mejores resultados)

No hay un "número mágico". Los modelos varían: algunos usan 300D, otros 768D, otros 3072D. Más dimensiones suelen dar mejor calidad, pero con costo computacional más alto.

Analogía: Es como elegir cuántos megapixeles para una cámara: 12MP es suficiente para muchos usos, 48MP es mejor pero más pesado. Los investigadores eligen según el balance calidad-costo.


Problema 4: "¿Alta dimensión es siempre mejor?"

Síntoma: Crees que más dimensiones = siempre mejor.

Solución: No siempre. Ventajas de más dimensiones:

  • Más capacidad para capturar matices
  • Mejor separación de conceptos

Desventajas:

  • Más cómputo (calcular distancias en 3072D es más lento que en 768D)
  • Más datos necesarios para entrenar
  • "Maldición de la dimensionalidad" (aunque mitigable con técnicas adecuadas)

En la práctica: Los modelos de 1536D o 3072D son suficientes para la mayoría de tareas de semantic search. No hace falta ir a 10,000D; hay rendimientos decrecientes.

Regla general: Usa embeddings pre-entrenados (OpenAI, Cohere, etc.) que ya están optimizados. Ellos eligieron la dimensionalidad óptima. No intentes "aumentar dimensiones" manualmente; no funciona así.


Conexión con semantic search

Ahora que entiendes alta dimensión, puedes ver el flujo completo de semantic search:

1. Documento → Embedding (1536D)

Documento: "El perro es un animal doméstico"
↓ Modelo de embedding
Vector: [0.23, -0.45, 0.12, ..., -0.34]  (1536D)

2. Query → Embedding (1536D)

Query: "¿Qué animales son mascotas?"
↓ Modelo de embedding
Vector: [0.25, -0.43, 0.10, ..., -0.32]  (1536D)

3. Comparar vectores (1536D)

Similaridad(doc_vector, query_vector) = 0.92  (muy alto → similar)

Se calcula en 1536D (todas las dimensiones), no solo 2-3.


4. Resultado

El documento con mayor similaridad es retornado.

Por qué funciona: En 1536D, el espacio tiene suficiente "resolución" para distinguir matices. Dos textos sobre "mascotas" tienen vectores cercanos; un texto sobre "autos" tiene vector lejano. La alta dimensión permite esa distinción fina.


Resumen

En una frase: Vectores de alta dimensión (100D, 1536D, 3072D) funcionan exactamente igual que vectores 2D/3D (dirección, magnitud, cercanía), solo que con muchos más ejes; no son dibujables pero se pueden usar con las mismas operaciones y tienen mayor capacidad para capturar matices de significado.

Puntos clave:

  • Dimensión = cantidad de ejes (1536D = 1536 ejes)
  • Alta dimensión en AI: Más capacidad para capturar matices de significado
  • Visualización: No puedes dibujar 1536D; usa proyecciones 2D (t-SNE, UMAP) o abstracciones (tablas, ADN)
  • Operaciones: Suma, resta, magnitud, distancia funcionan igual que en 2D/3D, solo con más términos
  • Significado de ejes: No sabemos qué significa cada eje; son representaciones aprendidas (implícitas)
  • Maldición de la dimensionalidad: En alta dimensión, puntos aleatorios están todos lejos; pero embeddings entrenados tienen estructura y funcionan bien
  • Ejemplos reales: OpenAI text-embedding-3-small (1536D), BERT (768D), GPT-4 interno (12,288D)
  • Proyecciones: t-SNE y UMAP reducen alta dimensión a 2D/3D para visualización
  • Semantic search: Usa vectores 1536D para comparar documentos; alta dimensión permite distinguir matices

Conexión con la siguiente cápsula

En la Cápsula 05 (Operaciones básicas con vectores), verás cómo sumar, restar, escalar vectores. Aunque los ejemplos serán en 2D/3D (para poder visualizar), las operaciones aplican exactamente igual en 1536D. Todo lo que viste aquí (alta dimensión funciona igual que baja dimensión) es la base para entender que Vector("rey") - Vector("hombre") + Vector("mujer") ≈ Vector("reina") funciona en 1536D usando las mismas operaciones que [3, 2] + [1, 1] = [4, 3] en 2D.


Recursos adicionales

  1. StatQuest: Principal Component Analysis (PCA), Step-by-Step — Video de 21 min que explica PCA (una técnica de reducción dimensional). Útil para entender cómo proyectar alta dimensión a 2D/3D. En inglés.

  2. Distill.pub: "Visualizing High-Dimensional Space" — Artículo interactivo sobre cómo entender t-SNE y reducción dimensional. Con visualizaciones 3D manipulables. En inglés.

  3. Jay Alammar: "The Illustrated Word2vec" — Blog con diagramas sobre embeddings 300D: cómo se entrenan, cómo se usan, cómo visualizar. Excelente para ver alta dimensión en contexto. En inglés.

  4. Wikipedia: "Curse of Dimensionality" — Explicación formal de la maldición de la dimensionalidad con ejemplos matemáticos. Útil para profundizar. En inglés.

  5. Pinecone: "The Curse of Dimensionality" — Blog orientado a vector databases que explica el problema y cómo mitigarlo. En inglés.

  6. OpenAI Embeddings Guide — Documentación oficial sobre embeddings de OpenAI (1536D y 3072D). Para ver ejemplos reales de uso. En inglés.


Próxima cápsula: 05-basic-operations.md — Suma, resta, escalado de vectores: las operaciones que permiten manipular significado.