Cómo se crea un embedding
- Un modelo. Un modelo de texto convierte palabras en vectores, un modelo de imagen convierte píxeles en vectores, y un modelo conjunto de texto e imagen se entrena para que una foto y un pie de foto que la describe queden cerca.
- Un número fijo de dimensiones. Cada modelo produce siempre la misma longitud, normalmente 384, 512, 768 o 1024 números. Ningún número aislado tiene un significado legible; la información está en la lista completa.
- Normalización. Los vectores suelen escalarse a una longitud de 1, de modo que compararlos es una simple multiplicación.
- Un modelo por comparación. Una consulta y los elementos con los que se compara deben convertirse en embeddings con el mismo modelo. Los vectores de dos modelos no se pueden comparar, así que cambiar de modelo implica volver a generar los embeddings de toda la biblioteca.
Medir la similitud
| Medida | Qué compara | Uso típico |
|---|---|---|
| Similitud del coseno | El ángulo entre dos vectores, sin tener en cuenta su longitud | Embeddings de texto y de imagen |
| Distancia euclídea (L2) | La distancia en línea recta entre dos puntos | Huellas pequeñas, algunos modelos de imagen |
| Producto escalar | Ángulo y longitud a la vez; equivale al coseno en vectores normalizados | Ordenación rápida de vectores normalizados |
Bases de datos vectoriales e índices
Una base de datos vectorial almacena embeddings y responde rápido a una pregunta: ¿qué vectores almacenados están más cerca de este? Comparar una consulta con todos los vectores es exacto, pero lento cuando una biblioteca tiene millones de elementos. Los índices de vecino más cercano aproximado (ANN) renuncian a un poco de exhaustividad (recall) a cambio de una gran ganancia de velocidad. El más usado es HNSW (Hierarchical Navigable Small World), un índice de grafo descrito por Malkov y Yashunin en 2016.
Hay dos formas de ponerlo en marcha:
- una base de datos vectorial específica, mantenida sincronizada con la base de datos principal;
- una extensión vectorial dentro de una base de datos general, como la extensión de código abierto pgvector para PostgreSQL. Los filtros, los permisos y los joins se ejecutan entonces en la misma consulta que la búsqueda por similitud, y no hay un segundo sistema que sincronizar.
Para qué se usan los embeddings en un DAM
| Contenido convertido en embedding | Se usa para |
|---|---|
| El texto del recurso: título, descripción, etiquetas, pies de foto, texto de OCR | Encontrar recursos por el significado de una consulta |
| La consulta de búsqueda | Compararla con los embeddings de texto almacenados |
| La propia imagen | Encontrar imágenes parecidas, recortes y duplicados |
| Cada rostro detectado | Reconocer a la misma persona en distintas fotos |
Límites y errores habituales:
- Los embeddings no conocen los identificadores. Un SKU, un código de campaña o un nombre de archivo no tienen significado para un modelo de lenguaje. La búsqueda por palabras clave sigue ocupándose de ellos, y por eso la mayoría de los sistemas combinan ambas en una búsqueda híbrida.
- Un índice siempre devuelve vecinos, aunque ninguno sea relevante. Un umbral de similitud decide qué cuenta como coincidencia.
- Vectores obsoletos. Si la descripción de un recurso cambia y su embedding no se recalcula, la búsqueda sigue coincidiendo con la descripción antigua.
- Los embeddings de rostros son datos personales. Según el RGPD, los datos biométricos tratados para identificar a una persona son una categoría especial (artículo 9), que necesita una base jurídica y una política de conservación clara.
Embeddings vectoriales en Freedam
- Los embeddings se almacenan en PostgreSQL con la extensión pgvector y se buscan mediante índices HNSW, en la misma base de datos que los recursos. No hay un servicio de búsqueda aparte.
- Cada recurso recibe un embedding de texto multilingüe de 768 dimensiones construido a partir de su texto descriptivo (los campos se enumeran en la entrada de búsqueda semántica). Se vuelve a calcular cuando ese texto cambia y se omite cuando el texto es el mismo que la vez anterior.
- Las imágenes también reciben un embedding de visión a partir de su vista previa, que usan la búsqueda visual y la detección de casi duplicados. Los rostros detectados reciben sus propios embeddings, y un umbral de reconocimiento (0,6 de forma predeterminada) decide cuándo dos rostros cuentan como la misma persona.
- Cada búsqueda ejecuta a la vez la ordenación por palabras clave (BM25) y la similitud vectorial y fusiona los resultados. En la página Configuración de búsqueda, los administradores fijan el peso de cada una, el número de candidatos vectoriales por búsqueda (200 de forma predeterminada) y los umbrales de similitud, que dependen de la longitud de la consulta.
- En la página IA, los administradores eligen qué modelo produce los embeddings de los recursos y los embeddings de las frases de búsqueda.
Detalles: Buscar por significado y Configuración de búsqueda en la documentación de Freedam, y el artículo de ingeniería Lo que cuesta realmente construir una buena búsqueda de imágenes.
Preguntas frecuentes
¿Cuál es la diferencia entre un embedding vectorial y una base de datos vectorial?
Un embedding es la lista de números que representa un elemento. Una base de datos vectorial almacena muchos embeddings y encuentra los más cercanos a una consulta. La base de datos puede ser un producto específico o una extensión de una base de datos existente.
¿Cuántas dimensiones debe tener un embedding?
Lo decide el modelo, no el usuario. Más dimensiones pueden contener distinciones más finas, pero ocupan más almacenamiento y hacen las comparaciones más lentas. Para buscar en una biblioteca multimedia son habituales los modelos de 512 a 1024 dimensiones, y la calidad del modelo importa más que su tamaño.
¿Se pueden buscar imágenes con palabras usando embeddings?
Sí, de dos maneras. Un modelo conjunto de texto e imagen coloca una consulta y una imagen en el mismo espacio, de modo que la consulta se puede comparar directamente con la imagen. O bien el sistema describe primero cada imagen con palabras (etiquetas, pies de foto, texto de OCR) y compara la consulta con ese texto.
Términos relacionados
Busca en la biblioteca de Nordi por significado y por imagen
Escribe una descripción en la biblioteca de Nordi y encuentra fotos etiquetadas con otras palabras, y después suelta una foto en la búsqueda visual para encontrar imágenes que se le parecen.
Entras en el espacio de trabajo de Nordi como administrador.