
7. Embeddings, búsqueda semántica y vector databases
1 · QUÉ ES — PARA PROFANOS
Un embedding es texto convertido en números que guardan el significado. Un programa lee "el
paciente refiere dolor torácico" y devuelve una lista de, digamos, 384 números. La gracia: textos
con significado parecido dan números parecidos. "El enfermo sufre molestia en el pecho" queda
cerca del primero, aunque no compartan ni una palabra.
La metáfora del mapa: cada texto es un punto en un mapa gigante. Los que hablan de lo mismo
viven en el mismo barrio. "Buscar por significado" es preguntar "¿qué guardado está cerca de este
punto?" — sin que importe cómo esté escrito.
El ejemplo clásico: rey − hombre + mujer = reina. Los vectores hacen aritmética de
significado.
Dos piezas más, y listo:
- Vector database: un almacén especializado en responder "¿qué hay cerca?" en milisegundos
entre millones de vectores. Por dentro usa un índice con atajos (el sector lo llama HNSW, pero es
un plano de calles con accesos rápidos).
- Búsqueda híbrida: vector y palabra exacta juntos. El vector entiende "¿qué hago si me
duele?"; la palabra exacta encuentra "T-17". Cada uno falla donde el otro acierta — por eso
el sector dejó de usar solo vectores.
Modelos de embedding del mercado:, Modelo, Dims, De quién, Uso típico,, text-embedding-3-small / large, 1.536 / 3.072, OpenAI, estándar en Azure,, bge-m3, 1.024, BAAI (abierto), referencia abierta multilingüe,, MiniLM, 384, Microsoft (abierto), local, sin GPU,, Cohere Embed v4, 1.024, Cohere, alternativa comercial, Motores vectoriales: Pinecone (SaaS), Weaviate/Qdrant/Milvus (open source), pgvector (dentro de
Postgres), FAISS (librería local), Chroma (embebida), Azure AI Search (servicio gestionado),
Elastic/OpenSearch (buscadores que aprendieron vectores).
El pipeline estándar de búsqueda semántica en 2026: consulta → embedding → búsqueda vectorial +
BM25 en paralelo → fusión (RRF) → reranker → resultados. El filtrado por metadatos es parte de la
consulta ("busca cerca, pero solo entre los documentos del departamento X") — sin eso, un
buscador corporativo es una fuga de información.
- Embeddings Matryoshka: un solo vector que sirve para varias dimensiones — recortas el final y
sigues teniendo un vector válido, peor pero útil. Abarata almacenamiento sin reindexar.
- Vectores binarios y cuantización: cada dimensión en un bit o pocos bits. Diez veces menos
memoria, algo menos de precisión. La dirección del borde y los dispositivos pequeños.
- Contextual retrieval: antes de indexar, se añade a cada trozo un resumen del contexto del que
salió. Mejora la recuperación sin tocar el modelo. (Anthropic lo popularizó.)
- Recuperación tardía (ColBERT-style): en vez de un solo vector por documento, uno por token y
comparación fina al final. Más preciso, más caro — reservado para casos donde el fallo cuesta.
- El debate de fondo: con contextos de 1M+ tokens, ¿sigue haciendo falta indexar? La respuesta
del sector en 2026: sí — recuperar poco y bueno es más barato y más fiable que meterlo todo,
y las citas son imposibles de fingir si el fragmento está delante.
Dos modelos de embedding según el caso, y dos almacenes según la nube:
- MiniLM (384 dims) — en ebvecload.m: embeddings para el corpus local. El índice es la
propia jerarquía de rutas: cuando la estructura ya existe, no hace falta motor vectorial
aparte. Es lo que la industria compra como "FAISS local con metadatos".
- bge-m3 (1.024 dims, multilingüe) — en la búsqueda de Zalo: el modelo abierto de referencia
para español, servido desde el edge.
- Almacenes: Cloudflare Vectorize (vectores al lado del Worker que los consulta) y la
propia PDB, que guarda globals (clave-valor), fts (texto completo) y vecembeddings
(vectores) en un mismo archivo.
> La analogía que resume todo: en el mercado, "Redis Stack" o "Postgres + pgvector" es el
> producto que combina almacén clave-valor + búsqueda + vectores. Nosotros tenemos esas tres
> cosas en la PDB. Y cuando Zalo busca, hace exactamente el patrón de la industria — vectorial,
> luego texto completo, luego literal — con la cascada haciendo de reranker.
Y el filtrado por metadatos, que es la parte que casi nadie implementa bien: nuestro filtro
alcance aplica el permiso en la consulta, antes de recuperar. En el sector es el filter={}
de Pinecone; en casa es un campo por documento que decide qué se puede ver.
> "Trabajar con embeddings, búsqueda semántica y vector databases." · "Vector databases y
> motores de búsqueda vectorial" (plataformas valorables).
"¿Qué vector database usas?"
> "Dos, según la nube: Cloudflare Vectorize en el edge y mi propia base — que guarda clave-valor,
> texto completo y vectores en un mismo archivo, con el índice apoyado en la jerarquía de datos.
> La pregunta que me importa no es el motor, es el patrón: búsqueda híbrida con filtrado por
> metadatos. Eso es lo que de verdad se paga a un motor vectorial, y eso lo tengo implementado en
> los dos sitios."
"¿Vectorial o keyword?"
> "Las dos, siempre. El vector entiende la reformulación; la palabra exacta encuentra códigos y
> siglas. Un sistema solo vectorial falla en nombres propios; uno solo keyword falla en sinónimos.
> Mi producción busca con los dos y los fusiona en cascada — y si el vectorial no encuentra nada,
> el textual responde. Un solo índice es un sistema que devuelve 'no encontrado' cuando el dato
> existe."
"¿Cómo eliges el modelo de embeddings?"
> "Por el sitio donde corre y el idioma. MiniLM para corpus local sin GPU — 384 dimensiones y
> suficiente. bge-m3 para producción multilingüe — es la referencia abierta en español. La regla:
> el modelo de embeddings se elige por el corpus y el hardware, no por moda. Y se cambia
> reindexando, no tocando la lógica de búsqueda."
"¿Qué es un embedding, para que me quede claro?" (si lo preguntan de verdad)
> "Texto convertido en coordenadas que guardan el significado: dos frases que quieren decir lo
> mismo acaban en puntos cercanos del mapa aunque no compartan palabras. Buscar por significado es
> buscar el vecino más cercano. Y los índices vectoriales existen para responder esa pregunta en
> milisegundos entre millones de puntos."