Eine einfache Technik macht RAG ~32x speichereffizient! - Perplexity verwendet es in seinem Suchindex - Azure verwendet es in seiner Suchpipeline - HubSpot verwendet es in seinem KI-Assistenten Lass uns verstehen, wie man es in RAG-Systemen verwendet (mit Code):
Heute bauen wir ein RAG-System, das 36M+ Vektoren in <30ms abfragt, unter Verwendung von Binary Quantization. Technologiestack: - @llama_index für die Orchestrierung - @milvusio als die Vektor-DB - @beam_cloud für serverloses Deployment - @Kimi_Moonshot Kimi-K2 als das LLM, das auf Groq gehostet wird Lass uns anfangen!
Hier ist der Arbeitsablauf: - Dokumente einlesen und binäre Einbettungen generieren. - Einen binären Vektorindex erstellen und Einbettungen in der Vektor-DB speichern. - Die top-k ähnlichen Dokumente zur Benutzeranfrage abrufen. - LLM generiert eine Antwort basierend auf zusätzlichem Kontext. Lass uns das umsetzen!
0️⃣ Groq einrichten Bevor wir beginnen, speichern Sie Ihren Groq API-Schlüssel in einer .env-Datei und laden Sie ihn in Ihre Umgebung, um die schnellste KI-Inferenz der Welt zu nutzen. Überprüfen Sie dies 👇
1️⃣ Daten laden Wir importieren unsere Dokumente mit dem Verzeichnisleser-Tool von LlamaIndex. Es kann verschiedene Datenformate lesen, einschließlich Markdown, PDFs, Word-Dokumente, PowerPoint-Präsentationen, Bilder, Audio und Video. Überprüfen Sie dies 👇
2️⃣ Generiere binäre Einbettungen Als Nächstes generieren wir Texteingaben (in float32) und konvertieren sie in binäre Vektoren, was zu einer 32-fachen Reduzierung des Speicher- und Speicherbedarfs führt. Dies wird als binäre Quantisierung bezeichnet. Überprüfen Sie diese Implementierung 👇
3️⃣ Vektor-Indexierung Nachdem unsere binäre Quantisierung abgeschlossen ist, speichern und indizieren wir die Vektoren in einer Milvus-Vektordatenbank für eine effiziente Abfrage. Indizes sind spezialisierte Datenstrukturen, die helfen, die Leistung von Datenabfrageoperationen zu optimieren. Überprüfen Sie dies 👇
4️⃣ Abruf Im Abrufstadium: - Betten wir die Benutzeranfrage ein und wenden binäre Quantisierung darauf an. - Verwenden wir die Hamming-Distanz als Suchmetrik, um binäre Vektoren zu vergleichen. - Rufen wir die 5 ähnlichsten Chunks ab. - Fügen wir die abgerufenen Chunks zum Kontext hinzu. Überprüfen Sie dies👇
5️⃣ Generation Schließlich erstellen wir eine Generationspipeline mit dem Kimi-K2-Instruct-Modell, das auf der schnellsten KI-Inferenz von Groq bereitgestellt wird. Wir geben sowohl die Abfrage als auch den abgerufenen Kontext in einer Eingabeaufforderungsvorlage an und übergeben sie an das LLM. Überprüfen Sie dies 👇
6️⃣ Bereitstellung mit Beam Beam ermöglicht eine ultraschnelle serverlose Bereitstellung von jedem KI-Workflow. Daher wickeln wir unsere App in eine Streamlit-Oberfläche, geben die Python-Bibliotheken und die Rechenanforderungen für den Container an. Schließlich stellen wir die App in wenigen Codezeilen bereit👇
7️⃣ Führen Sie die App aus Beam startet den Container und stellt unsere Streamlit-App als HTTPS-Server bereit, der einfach über einen Webbrowser zugänglich ist. Überprüfen Sie diese Demo 👇
Um wirklich das Maß und die Inferenzgeschwindigkeit zu bewerten, testen wir das bereitgestellte Setup über den PubMed-Datensatz (36M+ Vektoren). Unsere App: - hat 36M+ Vektoren in <30ms abgefragt. - hat eine Antwort in <1s generiert. Überprüfen Sie diese Demo👇
Fertig! Wir haben gerade den schnellsten RAG-Stack entwickelt, der BQ für eine effiziente Abfrage nutzt und die ultraschnelle serverlose Bereitstellung unseres KI-Workflows verwendet. Hier ist der Workflow erneut zu Ihrer Referenz 👇
Das war's! Wenn du es aufschlussreich fandest, teile es mit deinem Netzwerk. Finde mich → @_avichawla Jeden Tag teile ich Tutorials und Einblicke zu DS, ML, LLMs und RAGs.
Avi Chawla
Avi Chawla4. Aug., 14:33
Eine einfache Technik macht RAG ~32x speichereffizient! - Perplexity verwendet es in seinem Suchindex - Azure verwendet es in seiner Suchpipeline - HubSpot verwendet es in seinem KI-Assistenten Lass uns verstehen, wie man es in RAG-Systemen verwendet (mit Code):
695,78K