O tehnică simplă face ca memoria RAG ~32x să fie eficientă! - Perplexity îl folosește în indexul său de căutare - Azure îl folosește în canalul său de căutare - HubSpot îl folosește în asistentul său AI Să înțelegem cum să-l folosim în sistemele RAG (cu cod):
Astăzi, să construim un sistem RAG care interoghează vectori de 36M+ în <30ms folosind cuantificarea binară. Stiva tehnologică: - @llama_index pentru orchestrare - @milvusio ca DB vectorial - @beam_cloud pentru implementare fără server - @Kimi_Moonshot Kimi-K2 ca LLM găzduit pe Groq Hai să-l construim!
Iată fluxul de lucru: - Ingerați documente și generați încorporari binare. - Creați un index vectorial binar și stocați încorporarile în baza de date vectorială. - Recuperați documente similare cu interogarea utilizatorului. - LLM generează un răspuns bazat pe context suplimentar. Să implementăm asta!
0️⃣ Configurare Groq Înainte de a începe, stocați cheia API Groq într-un fișier .env și încărcați-o în mediul dvs. Verificați acest lucru 👇
1️⃣ Încărcați date Ingerăm documentele noastre folosind instrumentul de citire a directorului LlamaIndex. Poate citi diverse formate de date, inclusiv Markdown, PDF-uri, documente Word, pachete PowerPoint, imagini, audio și video. Verificați acest lucru 👇
2️⃣ Generați încorporari binare Apoi, generăm încorporari de text (în float32) și le convertim în vectori binari, rezultând o reducere de 32 de ori a memoriei și a stocării. Aceasta se numește cuantificare binară. Verificați această implementare 👇
3️⃣ Indexare vectorială După ce cuantificarea noastră binară este finalizată, stocăm și indexăm vectorii într-o bază de date vectorială Milvus pentru o recuperare eficientă. Indexurile sunt structuri de date specializate care ajută la optimizarea performanței operațiunilor de recuperare a datelor. Verificați acest lucru 👇
4️⃣ Recuperare În etapa de recuperare, noi: - Încorporați interogarea utilizatorului și aplicați-i cuantificarea binară. - Utilizați distanța Hamming ca măsură de căutare pentru a compara vectorii binari. - Recuperați primele 5 cele mai asemănătoare bucăți. - Adăugați bucățile recuperate în context. Verificați acest lucru👇
5️⃣ Generație În cele din urmă, construim o conductă de generare folosind modelul Kimi-K2 instruct, servit pe cea mai rapidă inferență AI de către Groq. Specificăm atât interogarea, cât și contextul preluat într-un șablon de prompt și îl transmitem către LLM. Verificați acest lucru 👇
6️⃣ Desfășurare cu Beam Beam permite implementarea ultra-rapidă fără server a oricărui flux de lucru AI. Astfel, ne împachetăm aplicația într-o interfață Streamlit, specificăm bibliotecile Python și specificațiile de calcul pentru container. În cele din urmă, implementăm aplicația în câteva linii de cod👇
7️⃣ Rulați aplicația Beam lansează containerul și implementează aplicația noastră streamlit ca un server HTTPS care poate fi accesat cu ușurință dintr-un browser web. Verificați această demonstrație 👇
Mergând mai departe, pentru a evalua cu adevărat scara și viteza de inferență, testăm configurația implementată pe setul de date PubMed (36M+ vectori). Aplicația noastră: - a interogat vectori 36M+ în <30ms. - a generat un răspuns în <1s. Verificați această demonstrație👇
Făcut! Tocmai am construit cea mai rapidă stivă RAG folosind BQ pentru o recuperare eficientă și folosind implementarea ultra-rapidă fără server a fluxului nostru de lucru AI. Iată din nou fluxul de lucru pentru referință 👇
Asta e o încheiere! Dacă ți s-a părut util, redistribui-l rețelei tale. Găsește-mă → @_avichawla În fiecare zi, împărtășesc tutoriale și informații despre DS, ML, LLM-uri și RAG.
Avi Chawla
Avi Chawla4 aug., 14:33
O tehnică simplă face ca memoria RAG ~32x să fie eficientă! - Perplexity îl folosește în indexul său de căutare - Azure îl folosește în canalul său de căutare - HubSpot îl folosește în asistentul său AI Să înțelegem cum să-l folosim în sistemele RAG (cu cod):
695,78K