Ir al contenido

Capítulo 11 — Embeddings & Búsqueda Semántica

Un embedding es la traducción de un texto en un punto en el espacio. Textos con significados cercanos se convierten en puntos cercanos — y “cercano” pasa a ser un cálculo de geometría, no una búsqueda por palabra exacta.

TL;DR: Los embeddings convierten texto en vectores; buscar por similitud entre estos vectores es buscar por significado. Es la base técnica de RAG, memoria y casi toda recuperación que alimenta un agente.

Un embedding es un vector de números (típicamente 256 a 3072 dimensiones) que representa el significado de un texto.

async function semanticSearch(tenantId: string, query: string, k = 5) {
const [vector] = await embed([query]);
return sql`
SELECT source, content, 1 - (embedding <=> ${vector}::vector) AS score
FROM doc_chunks
WHERE tenant_id = ${tenantId}
ORDER BY embedding <=> ${vector}::vector
LIMIT ${k}
`;
}

Los embeddings brillan en significado difuso:

Funciona bienFalla
Sinónimos y paráfrasisIdentificadores exactos
Preguntas en lenguaje naturalNegación
Conceptos relacionadosNúmeros y fechas precisas

La lección: búsqueda semántica y búsqueda por palabra clave son complementarias.