Un buen punto de partida con IA para desarrolladores de apps: Embeddings
(bawolf.substack.com)Guía de uso de embeddings para desarrolladores de apps
- Los embeddings vectoriales son eficaces para medir similitud entre distintos tipos de entrada, por lo que son adecuados para funciones de búsqueda y recomendación. También funcionan bien en otros idiomas, como francés o japonés.
- Pgvector es una extensión de Postgres que permite almacenar y consultar embeddings, y es potente porque permite combinar la lógica SQL con operaciones sobre embeddings sin agregar un nuevo servicio.
- A diferencia de los LLM, usar embeddings se siente más parecido a trabajar con código determinista convencional.
Desarrollo de un proyecto de búsqueda y recomendación de íconos
- Después de configurar Pgvector, se crea una estrategia para codificar los datos de íconos como vectores de embedding.
- Se usa el modelo
text-embedding-3-smallde OpenAI. - Se mide la similitud entre la consulta de búsqueda y el embedding de cada ícono con cosine similarity.
- Se combina la búsqueda por embeddings con lógica de negocio, como el filtrado por conjunto de íconos.
- Se presenta un ejemplo de algoritmo de ranking que aprovecha datos de clics en íconos para una consulta de búsqueda.
- Se usa la comparación de embeddings para recomendar íconos similares al ícono seleccionado.
Resumen del enfoque de implementación
- Se elige pgvector/Postgres como base de datos vectorial. También hay otras opciones, como MongoDB.
- Se desarrolla en Typescript usando drizzle-orm. También hay varias librerías para otros lenguajes y frameworks.
- La app está alojada en Neon. También se pueden usar servicios de hosting de bases de datos administradas como fly.io o Supabase.
- Se usa el modelo de embeddings
text-embedding-3-smallde OpenAI. También se pueden elegir otros modelos desde el leaderboard de Huggingface. - Se embeben como pares clave-valor los atributos del ícono más relevantes para la búsqueda.
- Se usa cosine similarity como función de distancia. Pgvector también soporta l2 distance e inner product.
- Los resultados de búsqueda se limitan a los 50 mejores. Si se usa un rango de distancia, se recomienda definirlo de forma amplia y combinarlo con
limit.
Opinión de GN⁺
- En la mayoría de los proyectos, probablemente bastará con agregar capacidades vectoriales a la base de datos existente, como con pgvector. Parece que adoptar una base de datos vectorial aparte solo sería necesario en servicios a gran escala.
- Una gran ventaja es que la lógica de negocio puede combinarse de forma natural con la búsqueda por embeddings. Se puede aprovechar toda la potencia de SQL.
- La idea de reflejar datos de feedback de usuarios en el algoritmo de ranking es muy buena. Parece que permitiría mejorar continuamente la precisión de la búsqueda.
- En comparación con los LLM, los servicios basados en embeddings tienen un comportamiento más claro y también son más fáciles de depurar, por lo que parecen mucho más sencillos de aplicar en servicios reales.
- Hay disponibles diversos modelos de embeddings de código abierto, así que incluso cuando es difícil desarrollar un modelo propio, es posible aprovechar embeddings de alta calidad con facilidad.
1 comentarios
Opiniones de Hacker News
Resumen de comentarios de Hacker News
Facilidad de las incrustaciones de documentos y la búsqueda por similitud usando modelos RAG
sentence-transformersyfaiss, se puede implementar fácilmente la incrustación de documentos y la búsqueda por similitudComprender los conceptos básicos de los embeddings
Falta una explicación detallada del proceso de generación de embeddings
They're a bit of a black boxsobre el proceso de generación de embeddings, sin explicarlo en detalleLa dificultad de manejar palabras homónimas o ambiguas
Se pueden usar embeddings sin un vector store
@de NumpyCómo ejecutar la lógica de embeddings en un entorno local
Posibilidades de usar embeddings al redactar documentación técnica
Cómo almacenar y usar embeddings
Falta de explicación de conocimientos previos para desarrolladores que empiezan en IA