← Volver a FAQ IA

¿Qué es un embedding en IA y para qué sirve?

Daniel García·

Hace unos meses monté el buscador interno para una tienda online de material de pesca, un cliente que ya llevábamos con el resto de la web. Probó a buscar “caña spinning” y no salía nada, aunque el producto se llamaba “caña de pescar para spinning” y estaba en stock, con fotos y todo. El buscador de toda la vida compara palabras: si la consulta no coincide más o menos letra a letra con el título o la descripción, no hay resultado. Cambié el motor a uno basado en embeddings y el problema se fue en una tarde, no en una semana de ir metiendo sinónimos a mano uno por uno.

Un embedding es una lista de números (un vector, normalmente de varios cientos o miles de posiciones) que representa el significado de un texto, no sus letras. “Caña spinning” y “caña de pescar para spinning” generan vectores muy cercanos entre sí aunque compartan pocas palabras exactas, y esa cercanía numérica es lo que permite buscar por significado en vez de por coincidencia literal.

Para generarlos usé el modelo text-embedding-3-small de OpenAI: le mandas un texto y te devuelve un vector de 1536 números, por unos 0,02 dólares por millón de tokens, así que procesar el catálogo entero (unos 4.000 productos) costó céntimos. Guardé esos vectores en Postgres con la extensión pgvector, cinco líneas de SQL para el índice, y ya podía comparar el vector de cada búsqueda contra los de los productos y quedarme con los más cercanos. Nada de infraestructura nueva ni de meter un servicio externo solo para esto.

Lo que no me esperaba es lo mal que se explica esto a un cliente. Le dije “el sistema busca por significado” y me miró como si le estuviera vendiendo humo. Lo que funcionó fue enseñarle capturas de antes y después: mismo término, cero resultados con el buscador viejo, tres productos relevantes con el nuevo. Eso lo entendió en diez segundos; la explicación teórica no la habría entendido en diez minutos.

Los embeddings son también la pieza que permite que un chatbot conteste con los documentos de una empresa sin que el modelo se haya entrenado con ellos: conviertes cada fragmento de un manual o un PDF en su vector, y cuando alguien pregunta algo, buscas los fragmentos con el vector más parecido a la pregunta y se los pasas al modelo como contexto, dentro de lo que le cabe en la ventana de contexto. Es la base técnica de lo que mucha gente llama RAG, aunque el nombre técnico casi nunca sale en la conversación con un cliente.

Lo que sí discuto con calma es qué modelo de embeddings usar, porque no da igual: hay modelos más baratos y rápidos, y otros más caros que capturan matices más finos, como sinónimos raros o jerga de un sector muy concreto. Para el catálogo de pesca sobraba con el modelo pequeño; para un buscador legal con terminología muy específica probablemente no. Todavía no tengo una regla fija para decidir esto de antemano. De momento pruebo los dos con una muestra real de búsquedas del cliente antes de comprometerme con uno.

iaembeddingsbusqueda-semanticarag