Incrustaciones
Definición rápida
Una incrustación es una lista de números (un vector) que representa el significado de un texto, imagen u otro elemento, de modo que elementos similares obtienen vectores cercanos. Las incrustaciones son lo que hace posible la búsqueda por significado.
En esta página
Cómo funcionan las incrustaciones
Un modelo de incrustación lee un texto y produce un vector de longitud fija, típicamente de varios cientos a unos pocos miles de números. El modelo está entrenado para que los textos con significados relacionados se ubiquen cerca unos de otros en ese espacio: “política de reembolso” y “¿cómo recupero mi dinero?” comparten casi ninguna palabra pero producen vectores cercanos.
La idea se remonta a vectores de palabras como word2vec (Mikolov y colegas, 2013), que aprendieron que las palabras que aparecen en contextos similares tienen significados similares. Modelos a nivel de oración como Sentence-BERT (2019) lo extendieron a oraciones y pasajes completos, que es lo que la búsqueda y la respuesta a preguntas necesitan.
Para qué se utilizan
Las incrustaciones potencian la búsqueda semántica: comparan el vector de una pregunta con los vectores de los pasajes almacenados y devuelven el más cercano. Son el paso de recuperación en la generación aumentada por recuperación (RAG). También sirven para agrupar conversaciones similares, detectar duplicados, recomendar productos similares y dirigir un mensaje al tema correcto.
Los modelos de incrustación multilingües colocan una pregunta en francés y un pasaje en inglés cerca uno del otro cuando significan lo mismo, lo que permite que una base de conocimientos sirva a clientes en muchos idiomas.
Puntos prácticos
Los vectores de diferentes modelos no son comparables: si cambias el modelo de incrustación, cada pasaje almacenado debe ser re-incrustado. Las incrustaciones capturan el significado, no valores exactos, por lo que son deficientes en filtros precisos como un rango de precios o una referencia de producto; esos necesitan campos estructurados o búsqueda por palabras clave junto a ello. Y los documentos largos deben dividirse en pasajes antes de incrustarse, porque un vector para todo un manual difumina su contenido.
Los modelos de incrustación también difieren en cobertura de idiomas, dimensión (y por lo tanto costo de almacenamiento) y dónde están alojados.
Incrustaciones en AI SmartTalk
Cada asistente de AI SmartTalk utiliza un modelo de incrustación para todo su conocimiento. Los nuevos asistentes utilizan por defecto un modelo multilingüe alojado en la UE, y también están disponibles los modelos de incrustación de OpenAI. Los vectores se almacenan en PostgreSQL con pgvector y se combinan con búsqueda por palabras clave y trigramas, para que las referencias de productos y términos exactos se encuentren tan confiablemente como preguntas parafraseadas.
Preguntas frecuentes
¿Cuál es la diferencia entre una incrustación y un token?
Un token es un fragmento de texto, aproximadamente un fragmento de palabra, que un modelo lee. Una incrustación es un vector de números que representa el significado — de un token, una oración o un pasaje completo.
¿Son las incrustaciones lo mismo que una base de datos de vectores?
No. Las incrustaciones son los vectores; una base de datos o índice de vectores los almacena y encuentra los más cercanos rápidamente.
¿Puedo cambiar los modelos de incrustación más tarde?
Sí, pero cada elemento almacenado debe ser re-incrustado con el nuevo modelo, porque los vectores de diferentes modelos viven en espacios diferentes y no se pueden comparar.