En enkel teknikk gjør RAG ~32x minne effektivt! - Perplexity bruker det i søkeindeksen - Azure bruker det i søkesamlebåndet - HubSpot bruker den i sin AI-assistent La oss forstå hvordan du bruker det i RAG-systemer (med kode):
La oss i dag bygge et RAG-system som spør etter 36M+ vektorer i <30ms ved hjelp av binær kvantisering. Teknisk stabel: - @llama_index for orkestrering - @milvusio som vektoren DB - @beam_cloud for serverløs distribusjon - @Kimi_Moonshot Kimi-K2 som LLM arrangert på Groq La oss bygge det!
Her er arbeidsflyten: - Ta inn dokumenter og generer binære innebygginger. - Opprett en binær vektorindeks og lagre innebygginger i vektordatabasen. - Hent top-k lignende dokumenter som brukerens spørring. - LLM genererer et svar basert på ytterligere kontekst. La oss implementere dette!
0️⃣ Sett opp Groq Før vi begynner, lagre Groq API-nøkkelen din i en .env-fil og last den inn i miljøet ditt for å utnytte verdens raskeste AI-slutning. Sjekk dette 👇
1️⃣ Last inn data Vi inntar dokumentene våre ved hjelp av LlamaIndex sitt katalogleserverktøy. Den kan lese ulike dataformater, inkludert Markdown, PDF-er, Word-dokumenter, PowerPoint-kortstokker, bilder, lyd og video. Sjekk dette 👇
2️⃣ Generer binære innebygginger Deretter genererer vi tekstinnebygginger (i float32) og konverterer dem til binære vektorer, noe som resulterer i en 32x reduksjon i minne og lagring. Dette kalles binær kvantisering. Sjekk denne implementeringen 👇
3️⃣ Indeksering av vektorer Etter at vår binære kvantisering er ferdig, lagrer og indekserer vi vektorene i en Milvus-vektordatabase for effektiv gjenfinning. Indekser er spesialiserte datastrukturer som bidrar til å optimalisere ytelsen til datahentingsoperasjoner. Sjekk dette 👇
4️⃣ Henting I gjenfinningsfasen gjør vi: - Bygg inn brukerspørringen og bruk binær kvantisering på den. - Bruk Hamming-avstand som søkeberegning for å sammenligne binære vektorer. - Hent de 5 mest like bitene. - Legg til de hentede bitene i konteksten. Sjekk dette👇
5️⃣ Generasjon Til slutt bygger vi en generasjonspipeline ved hjelp av Kimi-K2-instruksjonsmodellen, servert på den raskeste AI-konklusjonen av Groq. Vi angir både spørringen og den hentede konteksten i en ledetekstmal og sender den til LLM. Sjekk dette 👇
6️⃣ Distribusjon med Beam Beam muliggjør ultrarask serverløs distribusjon av enhver AI-arbeidsflyt. Dermed pakker vi appen vår inn i et Streamlit-grensesnitt, spesifiserer Python-bibliotekene og dataspesifikasjonene for beholderen. Til slutt distribuerer vi appen i noen få linjer med kode👇
7️⃣ Kjør appen Beam lanserer beholderen og distribuerer vår strømlinjeformede app som en HTTPS-server som lett kan nås fra en nettleser. Sjekk denne demoen 👇
For å virkelig vurdere skalaen og slutningshastigheten, tester vi det distribuerte oppsettet over PubMed-datasettet (36M+ vektorer). Appen vår: - forespurte 36M+ vektorer i <30ms. - genererte et svar i <1-er. Sjekk denne demoen👇
Gjort! Vi har nettopp bygget den raskeste RAG-stabelen som utnytter BQ for effektiv gjenfinning og ved hjelp av ultrarask serverløs distribusjon av arbeidsflyten vår for kunstig intelligens. Her er arbeidsflyten igjen for referanse 👇
Det er en innpakning! Hvis du syntes det var innsiktsfullt, kan du dele det på nytt med nettverket ditt. Finn meg → @_avichawla Hver dag deler jeg opplæringsprogrammer og innsikt om DS, ML, LLM-er og RAG-er.
Avi Chawla
Avi Chawla4. aug., 14:33
En enkel teknikk gjør RAG ~32x minne effektivt! - Perplexity bruker det i søkeindeksen - Azure bruker det i søkesamlebåndet - HubSpot bruker den i sin AI-assistent La oss forstå hvordan du bruker det i RAG-systemer (med kode):
695,77K