¡Una técnica simple hace que RAG sea ~32 veces más eficiente en memoria! - Perplexity la utiliza en su índice de búsqueda - Azure la utiliza en su pipeline de búsqueda - HubSpot la utiliza en su asistente de IA Entendamos cómo usarla en sistemas RAG (con código):
Hoy, construyamos un sistema RAG que consulte más de 36 millones de vectores en menos de 30 ms utilizando Cuantización Binaria. Tecnología: - @llama_index para la orquestación - @milvusio como la base de datos de vectores - @beam_cloud para el despliegue sin servidor - @Kimi_Moonshot Kimi-K2 como el LLM alojado en Groq ¡Construyámoslo!
Aquí está el flujo de trabajo: - Ingestar documentos y generar embeddings binarios. - Crear un índice de vectores binarios y almacenar los embeddings en la base de datos de vectores. - Recuperar los documentos más similares al query del usuario. - LLM genera una respuesta basada en contexto adicional. ¡Implementemos esto!
0️⃣ Configura Groq Antes de comenzar, guarda tu clave API de Groq en un archivo .env y cárgala en tu entorno para aprovechar la inferencia de IA más rápida del mundo. Consulta esto 👇
1️⃣ Cargar datos Ingerimos nuestros documentos utilizando la herramienta de lector de directorios de LlamaIndex. Puede leer varios formatos de datos, incluidos Markdown, PDFs, documentos de Word, presentaciones de PowerPoint, imágenes, audio y video. Consulta esto 👇
2️⃣ Generar Embeddings Binarios A continuación, generamos embeddings de texto (en float32) y los convertimos en vectores binarios, lo que resulta en una reducción de 32x en memoria y almacenamiento. Esto se llama cuantización binaria. Revisa esta implementación 👇
3️⃣ Indexación de vectores Después de que nuestra cuantización binaria esté completa, almacenamos e indexamos los vectores en una base de datos de vectores Milvus para una recuperación eficiente. Los índices son estructuras de datos especializadas que ayudan a optimizar el rendimiento de las operaciones de recuperación de datos. Consulta esto 👇
4️⃣ Recuperación En la etapa de recuperación, nosotros: - Incorporamos la consulta del usuario y aplicamos cuantización binaria a ella. - Usamos la distancia de Hamming como la métrica de búsqueda para comparar vectores binarios. - Recuperamos los 5 fragmentos más similares. - Agregamos los fragmentos recuperados al contexto. Revisa esto👇
5️⃣ Generación Finalmente, construimos un pipeline de generación utilizando el modelo instruct Kimi-K2, servido en la inferencia de IA más rápida por Groq. Especificamos tanto la consulta como el contexto recuperado en una plantilla de aviso y lo pasamos al LLM. Mira esto 👇
6️⃣ Despliegue con Beam Beam permite un despliegue sin servidor ultra-rápido de cualquier flujo de trabajo de IA. Así, envolvemos nuestra aplicación en una interfaz de Streamlit, especificamos las bibliotecas de Python y las especificaciones de computación para el contenedor. Finalmente, desplegamos la aplicación en unas pocas líneas de código👇
7️⃣ Ejecuta la aplicación Beam lanza el contenedor y despliega nuestra aplicación streamlit como un servidor HTTPS que se puede acceder fácilmente desde un navegador web. Mira esta demostración 👇
Pasando a otro tema, para evaluar verdaderamente la escala y la velocidad de inferencia, probamos la configuración desplegada sobre el conjunto de datos de PubMed (más de 36M de vectores). Nuestra aplicación: - consultó más de 36M de vectores en <30ms. - generó una respuesta en <1s. Mira esta demostración👇
¡Hecho! Acabamos de construir la pila RAG más rápida aprovechando BQ para una recuperación eficiente y usando un despliegue sin servidor ultrarrápido de nuestro flujo de trabajo de IA. Aquí está el flujo de trabajo nuevamente para tu referencia 👇
¡Eso es todo! Si te pareció interesante, compártelo con tu red. Encuéntrame → @_avichawla Cada día, comparto tutoriales y conocimientos sobre DS, ML, LLMs y RAGs.
Avi Chawla
Avi Chawla4 ago, 14:33
¡Una técnica simple hace que RAG sea ~32 veces más eficiente en memoria! - Perplexity la utiliza en su índice de búsqueda - Azure la utiliza en su pipeline de búsqueda - HubSpot la utiliza en su asistente de IA Entendamos cómo usarla en sistemas RAG (con código):
695,78K