Bases de datos vectoriales: la memoria de la IA
SQL utiliza una coincidencia exacta de palabras clave. Las bases de datos vectoriales utilizan la búsqueda semántica. Cómo crear motores de búsqueda que entiendan que "Escarlata" es similar a "Rojo".
La historia de la búsqueda: de SQL a vectores
Para comprender por qué son necesarias las bases de datos vectoriales, debemos mirar la historia de la recuperación de información.
Generación 1: Coincidencia exacta (década de 1970)
El operador SQL LIKE.
Consulta: SELECCIONAR * DE productos DONDE descripción COMO '%vestido%'.
Esto es binario. O contiene la cadena “vestido” o no.
Si el usuario escribe “atuendo”, no obtiene ningún resultado.
Esto obligó a los usuarios a aprender a “Buscar-Hablar” (escribir palabras clave específicas que sabían que funcionarían).
Generación 2: Índices invertidos (década de 1990)
Lucene, Elasticsearch, Algolia.
Estos dividen el texto en tokens (["blue", "dress"]), eliminan las palabras vacías ("the", "a") y realizan derivaciones ("running" -> "run").
Luego califican los documentos utilizando TF-IDF (Frecuencia de términos-Frecuencia de documentos inversa) o BM25.
Esto permitió coincidencias aproximadas y tolerancia a errores tipográficos.
Pero aún así falló en el significado.
“Abrigo cálido” no coincide con “Chaqueta de invierno” en un motor de palabras clave a menos que se sinonimice manualmente.
Generación 3: Búsqueda semántica (década de 2020) Vectores. Ya no miramos las palabras. Nos fijamos en Conceptos. La palabra “Rey” ya no es una cadena de 4 caracteres (“K-i-n-g”). Es un punto en un espacio de 1.536 dimensiones. ¿Y adivina qué? El punto de “Reina” está justo al lado. Usando la similitud del coseno, podemos encontrar documentos que sean conceptualmente similares, incluso si no comparten ninguna palabra clave.
Por qué Maison Code analiza esto
No creamos barras de búsqueda; construimos motores de descubrimiento. Para nuestros clientes con catálogos de más de 1000 SKU, la búsqueda estándar es un factor decisivo para la conversión. Recientemente implementamos una búsqueda vectorial híbrida para una marca de muebles de lujo:
- Desafío: los usuarios buscaron “Vibes” (“Estética acogedora para un rincón de lectura”), no palabras clave (“Sillón de terciopelo”).
- Acción: Vectorizamos todo su catálogo usando OpenAI Embeddings.
- Resultado: la tasa de rebote en las páginas de búsqueda se redujo en un 35%. Creemos que en 2026 la búsqueda debe ser semántica, no sintáctica.
Comprender las incrustaciones (las matemáticas)
¿Cómo entiende una computadora el “significado”? Convierte texto en números. Este proceso se llama Incrustación.
Imagine un gráfico 2D simple de todos los conceptos.
- Eje X: Realeza (¿Qué tan real es?)
- Eje Y: Género (masculino vs femenino)
Ahora mapeemos algunas palabras:
- “Rey”:
[0.9, 0.9](Muy Real, Masculino) - “Reina”:
[0.9, 0.1](Muy real, femenina) - “Hombre”:
[0.1, 0.9](No real, masculino) - “Mujer”:
[0.1, 0.1](No real, femenino)
Aquí está la magia. Puedes hacer matemáticas con estas palabras. Rey - Hombre + Mujer = ?
[0.9, 0.9] - [0.1, 0.9] + [0.1, 0.1]= [0.9, 0.1]= Reina.
Así es literalmente como “piensan” los LLM. Entienden las relaciones a través de la aritmética vectorial. Los modelos modernos como “text-embedding-3-small” de OpenAI utilizan 1.536 dimensiones (no solo 2) para capturar matices como sentimiento, color, urgencia, formalidad y cientos de otras características lingüísticas que ni siquiera podemos nombrar.
La pila de bases de datos vectoriales
No puede almacenar estos vectores en una base de datos MySQL normal de manera eficiente. Las bases de datos estándar están optimizadas para la indexación de árbol B (clasificación alfanumérica). Las bases de datos de Search Vector están optimizadas para la búsqueda de vecino más cercano aproximado (ANN). Escanear 1 millón de vectores para encontrar el más cercano llevaría segundos (escaneo lineal). Las bases de datos vectoriales utilizan gráficos HNSW (Hierarchical Navigable Small World) para hacerlo en milisegundos.
Mejores jugadores:
- Pinecone: Administrado, nativo de la nube. El estándar de la industria. Fácil de empezar.
- Weaviate: Código abierto, modular. Permite almacenar objetos junto a vectores. Bueno para autohospedaje.
- Milvus: Alta escala, Zilliz. Construido para miles de millones de vectores.
- pgvector: un complemento para PostgreSQL. Genial si quieres mantener todo en un solo lugar (Supabase lo admite).
Matriz de comparación
| Característica | Piña | pgvector | Weaviate |
|---|---|---|---|
| Tipo | SaaS administrado | Extensión de Postgres | OSS / Gestionado |
| Latencia | Ultrabajo | Medio | Bajo |
| Complejidad | Bajo | Bajo | Medio |
| Costo | €€€ | € (Gratis si es autohospedado) | €€ |
| Filtrado de metadatos | Excelente | Bueno (SQL) | Excelente |
Implementación: creación de un motor de búsqueda semántica
Así es como se construye “Búsqueda por significado” usando Node.js y Pinecone.
importar {Piña} desde '@pinecone-database/pinecone';
importar OpenAI desde 'openai';
// Inicializar clientes
const piña = nueva piña ({ apiKey: proceso.env.PINECONE_KEY });
const openai = new OpenAI({ apiKey: proceso.env.OPENAI_KEY });
índice const = piña.index('productos-maison');
función asíncrona searchProducts(userQuery: string) {
console.log(`Buscando: ${userQuery}`);
// 1. Convertir consulta de usuario a vector
const incrustación = espera openai.embeddings.create({
modelo: "incrustación de texto-3-pequeño",
entrada: consulta de usuario,
});
vector constante = embedding.data[0].embedding;
// 2. Consultar Vector DB para los vecinos más cercanos
resultados constantes = esperar index.query({
vector: vector,
topK: 5, // Obtén las 5 mejores coincidencias
incluir metadatos: verdadero,
// Opcional: Filtrar por categoría
filtro: {
precio: { $lt: 200 } // Solo artículos baratos
}
});
// 3. Mostrar resultados
resultados.matches.forEach(partido => {
console.log(`Encontrado: ${match.metadata.title} (Puntuación: ${match.score})`);
});
}
// uso
searchProducts("Algo elegante para una boda de verano por menos de $200");
Qué pasa:
- OpenAI convierte “Algo elegante…” en un vector.
- Pinecone calcula la distancia entre ese vector y cada producto de tu catálogo.
- Encuentra “Vestido floral de seda” y “Traje de lino”.
- ¡Aunque la palabra “Boda” nunca aparece en la descripción del producto! El modelo de incrustación sabe que “Seda” y “Lino” están asociados con las “Bodas de Verano”.
El desafío: búsqueda híbrida
La búsqueda de vectores es mágica, pero no perfecta. A veces alucina o pasa por alto coincidencias obvias de palabras clave.
- Consulta: “ID de producto 1234”.
- Búsqueda de vectores: podría devolver “ID de producto 1235” porque los números son matemáticamente cercanos en el espacio vectorial. Trata la identificación como características distintas.
- Usuario: “Escribí la identificación exacta, ¿por qué me diste la incorrecta?”
Solución: Búsqueda híbrida. Combina la búsqueda por palabras clave (BM25) con la búsqueda vectorial (densa).
- Puntuación de palabras clave: 1,0 (coincidencia exacta)
- Puntuación vectorial: 0,2 (coincidencia baja)
- Suma ponderada: la concordancia de palabras clave gana.
Pinecone y Weaviate ahora admiten la búsqueda híbrida lista para usar (vectores “dispersos-densos”). Se pasa tanto el vector denso (incrustación) como el vector disperso (palabras clave) a la consulta. Este es el estándar de oro para búsquedas de comercio electrónico.
RAG: Generación aumentada de recuperación
Las bases de datos vectoriales también son la columna vertebral de la IA empresarial (RAG). (Consulte LLM Fine-Tuning). Cuando le hace una pregunta a ChatGPT sobre sus documentos, utiliza estrictamente un paso de búsqueda vectorial detrás de escena para encontrar el “Número de página” antes de responder. Sin Vector DBs, la IA empresarial es imposible. No se pueden introducir 10.000 páginas en un mensaje. Alimentas las 3 páginas más relevantes. Vector Search encuentra esas 3 páginas.
La visión del escéptico: cuándo NO utilizar vectores
Los vectores están de moda en este momento, pero son caros y complejos. NO utilice la búsqueda vectorial si:
- Tienes <100 elementos: solo usa
Array.filter(). - Tus usuarios buscan por SKU exacto: la búsqueda vectorial es terrible con códigos exactos.
- Su presupuesto es €0: las incrustaciones cuestan dinero (OpenAI API). Las bases de datos vectoriales cuestan dinero. Algolia suele ser más barata y “suficientemente buena”.
Preguntas frecuentes
P: ¿Puedo utilizar Vectors para buscar imágenes? R: ¡Sí! Modelos como CLIP (Preentrenamiento de imágenes y lenguaje contrastivo) pueden incrustar imágenes en el mismo espacio vectorial que el texto. Puedes buscar “Perro” y encontrar una imagen de un perro.
P: ¿Con qué frecuencia debo actualizar el índice? R: En tiempo real. Si un producto se agota, debe actualizar los metadatos en Pinecone inmediatamente para que la búsqueda no arroje artículos OOS.
10. Cuantización: Reducción de Costos
Los vectores son pesados (Float32). 1 millón de vectores * 1536 atenuaciones * 4 bytes = 6 GB de RAM. Eso es caro. Cuantización comprime vectores a Int8 o Binario. Perdemos algo de precisión (la PRECISIÓN cae un 1%), pero el tamaño cae entre 4x y 32x. Para un catálogo de 100 millones de productos, la cuantificación es obligatoria. Pinecone maneja esto automáticamente.
11. Reclasificación: el segundo pase
La búsqueda vectorial encuentra elementos “conceptualmente similares”. Pero no conoce las “reglas comerciales”. Podría devolver un artículo agotado porque es una coincidencia semántica perfecta. Usamos un Re-ranker (modelo de codificador cruzado como Cohere).
- Recuperar: obtenga los 100 mejores candidatos de Vector DB (rápido).
- Reclasificar: páselos a través de un modelo pesado que verifica el estado del stock, el margen y la superposición exacta de las palabras clave.
- Devolver: Top 10 para el usuario. Esta “Recuperación en dos etapas” ofrece el mejor equilibrio entre velocidad y precisión.
13. Debajo del capó: el algoritmo HNSW
¿Cómo busca Pinecone mil millones de vectores en 10 ms? Utiliza gráficos de mundo pequeño navegable jerárquico. Imagine un mapa de varias capas.
- Capa superior: Autopistas de alta velocidad que conectan ciudades distantes.
- Capa inferior: Calles locales. La consulta comienza en la parte superior, se acerca a la vecindad general del vector y luego desciende a las calles para encontrar la casa exacta. Esta es la complejidad €O(log(N))€. Un escaneo lineal es €O(N)€. Este es el avance informático que hizo que Vector Search fuera viable en producción.
14. El costo de las incrustaciones
Los vectores no aparecen de la nada. Pagas a OpenAI para generarlos. El precio es barato: €0,00013 / 1k tokens. Incrustar toda la serie de Harry Potter (1 millón de tokens) cuesta 0,13 dólares. Sin embargo, para un sitio de contenido generado por el usuario (millones de comentarios por día), esto suma. Optimización: utilice modelos de código abierto (Hugging Face) que se ejecuten en su propia GPU/CPU (ONNX Runtime) para generar incrustaciones de forma gratuita. La calidad es el 95% de OpenAI, el costo es 0.
15. Conclusión
Si la búsqueda de su sitio arroja “No se encontraron resultados”, está dejando dinero sobre la mesa. Los usuarios no conocen su terminología exacta. Hablan con intención (“abrigo abrigado”, “regalo barato”, “algo para papá”). Vector Search cierra la brecha entre la Intención humana y el Inventario de base de datos. Es la actualización de “Recuperación de datos” a “Recuperación de conocimientos”.
¿No se encontraron resultados?
Implementamos ecosistemas de búsqueda de vectores híbridos para garantizar que sus clientes siempre encuentren lo que necesitan.