Una tecnica semplice rende RAG ~32 volte più efficiente in termini di memoria! - Perplexity la utilizza nel suo indice di ricerca - Azure la utilizza nel suo pipeline di ricerca - HubSpot la utilizza nel suo assistente AI Comprendiamo come utilizzarla nei sistemi RAG (con codice):
Oggi, costruiamo un sistema RAG che interroga oltre 36 milioni di vettori in <30ms utilizzando la Quantizzazione Binaria. Stack tecnologico: - @llama_index per l'orchestrazione - @milvusio come DB vettoriale - @beam_cloud per il deployment serverless - @Kimi_Moonshot Kimi-K2 come LLM ospitato su Groq Costruiamolo!
Ecco il flusso di lavoro: - Acquisire documenti e generare embedding binari. - Creare un indice vettoriale binario e memorizzare gli embedding nel DB vettoriale. - Recuperare i documenti simili top-k alla query dell'utente. - LLM genera una risposta basata su un contesto aggiuntivo. Implementiamo questo!
0️⃣ Configura Groq Prima di iniziare, memorizza la tua chiave API Groq in un file .env e caricala nel tuo ambiente per sfruttare l'inferenza AI più veloce al mondo. Controlla questo 👇
1️⃣ Carica i dati Ingestiamo i nostri documenti utilizzando lo strumento di lettura delle directory di LlamaIndex. Può leggere vari formati di dati tra cui Markdown, PDF, documenti Word, presentazioni PowerPoint, immagini, audio e video. Controlla questo 👇
2️⃣ Genera Embeddings Binari Successivamente, generiamo embeddings testuali (in float32) e li convertiamo in vettori binari, ottenendo una riduzione della memoria e dello spazio di archiviazione di 32 volte. Questo è chiamato quantizzazione binaria. Controlla questa implementazione 👇
3️⃣ Indicizzazione vettoriale Dopo che la nostra quantizzazione binaria è completata, memorizziamo e indicizziamo i vettori in un database vettoriale Milvus per un recupero efficiente. Gli indici sono strutture dati specializzate che aiutano a ottimizzare le prestazioni delle operazioni di recupero dei dati. Controlla questo 👇
4️⃣ Recupero Nella fase di recupero, noi: - Incorporiamo la query dell'utente e applichiamo la quantizzazione binaria ad essa. - Utilizziamo la distanza di Hamming come metrica di ricerca per confrontare i vettori binari. - Recuperiamo i 5 chunk più simili. - Aggiungiamo i chunk recuperati al contesto. Controlla questo👇
5️⃣ Generazione Infine, costruiamo una pipeline di generazione utilizzando il modello Kimi-K2 instruct, servito sulla più veloce inferenza AI di Groq. Specifichiamo sia la query che il contesto recuperato in un modello di prompt e lo passiamo al LLM. Controlla questo 👇
6️⃣ Distribuzione con Beam Beam consente una distribuzione serverless ultra-rapida di qualsiasi flusso di lavoro AI. Pertanto, avvolgiamo la nostra app in un'interfaccia Streamlit, specifichiamo le librerie Python e le specifiche di calcolo per il contenitore. Infine, distribuiamo l'app in poche righe di codice👇
7️⃣ Esegui l'app Beam avvia il contenitore e distribuisce la nostra app streamlit come server HTTPS che può essere facilmente accessibile da un browser web. Controlla questa demo 👇
Passando oltre, per valutare veramente la scala e la velocità di inferenza, testiamo la configurazione implementata sul dataset PubMed (36M+ vettori). La nostra app: - ha interrogato 36M+ vettori in <30ms. - ha generato una risposta in <1s. Controlla questa demo👇
Fatto! Abbiamo appena costruito il RAG stack più veloce sfruttando BQ per un recupero efficiente e utilizzando il deployment serverless ultra-veloce del nostro flusso di lavoro AI. Ecco di nuovo il flusso di lavoro per tua referenza 👇
È tutto! Se lo hai trovato interessante, condividilo con la tua rete. Trova me → @_avichawla Ogni giorno, condivido tutorial e approfondimenti su DS, ML, LLM e RAG.
Avi Chawla
Avi Chawla4 ago, 14:33
Una tecnica semplice rende RAG ~32 volte più efficiente in termini di memoria! - Perplexity la utilizza nel suo indice di ricerca - Azure la utilizza nel suo pipeline di ricerca - HubSpot la utilizza nel suo assistente AI Comprendiamo come utilizzarla nei sistemi RAG (con codice):
695,77K