Gewährleistung der Datenintegrität: On-Prem-RAG-Bereitstellung mit LLMware und Milvus
Während unserer letzten Sitzung des Unstructured Data Meetup hatten wir das Privileg, Darren Oberst, CEO von AI Blocks, zu begrüßen. Er schloss sein Studium an der UC Berkeley mit Abschlüssen in Physik und Philosophie ab und konzentriert sich derzeit darauf, die Entwicklung von großen Sprachmodell-Anwendungen (LLM) für Finanz- und Rechtsdienstleistungen zu transformieren. Bei diesem Meetup erläuterte Darren, warum Retrieval Augmented Generation (RAG) für große Finanz- und Rechtsdienstleistungsunternehmen on-premises bereitgestellt werden sollte.
In diesem Blog fassen wir nicht nur Darrens wichtigste Punkte zusammen, sondern geben auch ein praktisches Beispiel für den Aufbau von RAG in einer privaten Cloud mit LLMware und der Milvus-Vektordatenbank. Dieses Beispiel soll Sie inspirieren und motivieren, dieses Wissen in Ihren Projekten anzuwenden. Wir empfehlen außerdem, sich die vollständige Sitzung auf YouTube anzusehen.
Zentrale Herausforderungen bei der RAG-Bereitstellung
Große Sprachmodelle können inkonsistent sein. Manchmal liefern sie präzise Antworten, können aber auch irrelevante Informationen erzeugen. Diese Inkonsistenz entsteht, weil LLMs statistische Beziehungen zwischen Wörtern verstehen, ohne deren Bedeutungen wirklich zu erfassen. Darüber hinaus werden LLMs auf veralteten und öffentlich verfügbaren Daten vortrainiert, was ihre Fähigkeit einschränkt, genaue Antworten speziell zu Ihren privaten Daten oder den neuesten Informationen zu liefern.
Retrieval Augmented Generation (RAG) ist eine beliebte Technik, um diese Einschränkung zu beheben, indem die Antworten des LLM mit externen Wissensquellen angereichert werden, die in einer Vektordatenbank wie Milvus gespeichert sind, wodurch die Inhaltsqualität verbessert wird. Obwohl RAG eine außergewöhnliche Technik ist, bringt ihre Bereitstellung Herausforderungen mit sich.
In dem Vortrag ****teilte Darren die häufigen Herausforderungen, mit denen viele Unternehmen konfrontiert sind.
Bedenken hinsichtlich Datenschutz und Sicherheit: Viele Unternehmen, insbesondere aus dem Finanz- und Rechtssektor, zögern aufgrund von Datenschutz- und Sicherheitsbedenken, öffentliche Cloud-Dienste zu nutzen. Viele bestehende Lösungen konzentrieren sich außerdem eher auf öffentliche Clouds als auf On-Premise-Umgebungen, was Unternehmen vor Herausforderungen stellt, die Datensicherheit und Compliance gewährleisten müssen.
Erhöhte Kosten: Öffentliche Cloud-Infrastruktur, die häufig großskalige Modelle verwendet, kann hohe Rechnungen verursachen. Eine solch hohe Rechnung zu bezahlen, ohne vollständige Kontrolle und Eigentümerschaft über Infrastruktur, Daten und Anwendungen zu haben, führt zu einer Lose-Lose-Situation.
Vernachlässigung von Retrieval-Strategien: Ein entscheidender Aspekt, der oft übersehen wird, ist die Bedeutung von Retrieval-Strategien bei der RAG-Bereitstellung. Während KI-Teams dazu neigen, sich auf generative KI-Fähigkeiten zu konzentrieren, ist die Qualität der abgerufenen Dokumente ebenso wichtig.
On-Prem-RAG-Bereitstellung
Die oben genannten Herausforderungen lassen sich mit einer gemeinsamen Lösung effektiv angehen: der Bereitstellung von RAG in einer privaten Cloud. Dieser Ansatz löst die Probleme auf folgende Weise:
- Bessere Datensicherheit: Sensible Geschäftsdokumente, regulatorische Informationen und andere proprietäre Daten müssen innerhalb der sicheren Grenzen einer privaten Cloud verbleiben, um Compliance- und Sicherheitsstandards zu erfüllen. Wenn alles privat abläuft, wird es keine Sicherheitsverletzungen geben.
- Geringere Kosten: Die Bereitstellung von KI-Modellen auf privater Cloud-Infrastruktur kann eine kosteneffizientere Lösung bieten als öffentliche Cloud-Dienste, insbesondere wenn eine häufige Nutzung erforderlich ist. Die Kosten sinken noch weiter, wenn wir kleinere Modelle verwenden, da sie praktische Ergebnisse effizienter erzielen als größere und ressourcenintensivere Modelle. Aufgrund ihrer schnellen Innovation und Anpassungsmöglichkeiten sind Open-Source-LLMs und -Technologien eine großartige Option für Ihr RAG.
- Verbesserung der Generierung durch Retrieval in einer Private Cloud: Eine bessere Retrieval-Engine kann ein kleineres Modell mit begrenzten generativen Fähigkeiten ergänzen. Nur durch die Entwicklung eines besseren Retrieval-Systems können die Genauigkeit und Effizienz von KI-Anwendungen, wie Dokumentenparsing, Text-Chunking und semantische Abfragen, erheblich verbessert werden.
Zusammenfassend plädiert Darren für die Einführung von Private-Cloud-Lösungen für KI, insbesondere LLMs, um Bedenken in Bezug auf Datenschutz, Kosten und Ergebnisse auszuräumen. Als Nächstes werden wir Dragon-Modelle besprechen, die für RAG in der Huggingface Transformers-Bibliothek entwickelt und optimiert wurden.
dRAGon (Delivering RAG On) Modelle🐉
Dragon ist eine von AI Blocks eingeführte Modellreihe, die speziell für Retrieval Augmented Generation (RAG) entwickelt wurde. Es handelt sich um eine Reihe von sieben Open-Source-Modellen, die auf proprietären Datensätzen wie Verträgen, regulatorischen Dokumenten und komplexen Finanzinformationen feinabgestimmt wurden. Es gibt drei Kategorien von Modellen:
Klassen von Modellen und ihre Beschreibung
Klassen von Modellen und ihre Beschreibung
- Bling-Modelle: Kompakte, instruct-tuned Modelle, die für Rapid Prototyping optimiert sind und auf CPUs laufen können, wodurch sie ideal für erste Test- und Entwicklungsphasen sind. Sie belasten den Arbeitsspeicher weniger, da sie nur 1 bis 3 Milliarden Parameter enthalten.
- Dragon RAG-Modelle: Feinabgestimmte Versionen führender Foundation Models mit 6 und 7 Milliarden Parametern wie Llama, Mistral, Red-pajama, Falcon und Deci. Zugeschnitten auf Aufgaben wie faktenbasierte Fragebeantwortung und Analyse regulatorischer Dokumente.
- Industry ****BERT**** Modelle: Industry BERT-Modelle sind auf branchenspezifische Anwendungen spezialisiert und feinabgestimmte sentence transformers, die auf Aufgaben wie Vertragsanalyse zugeschnitten sind.
Darüber hinaus wurden diese Modelle anhand gängiger Common-Sense-RAG-Struktur-Benchmarks rigoros bewertet. Im Gegensatz zu Open-Source-Modellen, die sich auf wissenschaftliche Metriken wie MMLU und ARC stützen, werden Dragon-Modelle auf reale Genauigkeit und praktische Anwendungsfälle getestet. Diese Sammlung von Modellen ist auf HuggingFace verfügbar, wie unten gezeigt:
LLMware-Modelle, gehostet auf HuggingFace
LLMware-Modelle, gehostet auf HuggingFace
Die wichtigsten Vorteile der Verwendung dieser Modelle sind wie folgt:
Erhöhte Genauigkeit: Diese Modelle wurden auf umfangreichen Datensätzen feinabgestimmt und liefern hohe Präzision beim Dokumentenparsing, Text-Chunking und bei semantischen Abfragen.
Kosteneffektiv: Diese Modelle sind für den Einsatz auf Private-Cloud-Infrastruktur optimiert und bieten im Vergleich zu größeren, ressourcenintensiven Modellen in Public Clouds eine kosteneffiziente Lösung.
Open Source und anpassbar: Diese auf Hugging Face verfügbaren Open-Source-Modelle ermöglichen schnelle Innovation und Anpassung, um spezifische Unternehmensanforderungen zu erfüllen.
Produktionsreife Leistung: Diese Modelle wurden auf Zuverlässigkeit gebenchmarkt und bieten konsistente und verlässliche Leistung über verschiedene Workflows hinweg.
Nahtlose Integration: Mit umfassender Unterstützung und einfach zu verwendenden Generierungsskripten ist die Integration dieser Modelle in bestehende Workflows unkompliziert.
Solche Modelle machen keine Abstriche bei Kosten, Genauigkeit oder Anpassbarkeit; ihre Integration in LLMware macht sie leicht zugänglich.
Ein Einblick in LLMware
LLMware ist eine Bibliothek, die für LLM-basierte Anwendungen auf Unternehmensebene entwickelt wurde. Sie nutzt kleine, spezialisierte Modelle, die privat bereitgestellt, sicher in unternehmensinterne Wissensquellen integriert und kosteneffizient an jeden Geschäftsprozess angepasst werden können. Dieses Toolkit ist vergleichbar mit LangChain ****oder LlamaIndex, ist jedoch auf hohe Skalierbarkeit und robustes Dokumentenmanagement in Unternehmensumgebungen zugeschnitten.
Komponenten von LLMware:
RAG-Pipeline: Stellt integrierte Komponenten für den gesamten Lebenszyklus der Verbindung von Wissensquellen mit generativen KI-Modellen bereit.
Spezialisierte Modelle: Umfasst über 50 kleine, feinabgestimmte Modelle für Unternehmensaufgaben wie faktenbasierte Fragebeantwortung, Klassifizierung, Zusammenfassung und Extraktion. Diese Modelle umfassen auch die oben besprochenen; wir werden im folgenden Abschnitt eines davon in unserer Implementierung verwenden.
Funktionen von LLMware:
Massive Dokumentenaufnahme:
Skalierbarkeit: LLMware ist darauf ausgelegt, die Aufnahme von Hunderttausenden von Dokumenten zu bewältigen, und unterstützt parallele Verarbeitung sowie Verteilung über mehrere Worker.
Dokumenten-Parsing: Implementiert vollständige Spezifikationen für das Parsen von PDFs, Word-Dokumenten, PowerPoints und Excel-Dateien mithilfe benutzerdefinierter C-basierter Parser.
End-to-End-Datenmodell:
Persistente Datenspeicher: Integriert sich mit MongoDB für persistente Datenspeicherung und ermöglicht effizientes Chunking und Indexieren von Textsammlungen.
Unternehmensintegration: Entwickelt, um sich nahtlos in Unternehmensdaten-Workflows zu integrieren und ein sicheres sowie skalierbares Datenmanagement zu gewährleisten.
Framework für LLM-basierte Anwendungen:
Open-Source-Kompatibilität: Diese Funktion priorisiert die Unterstützung einer breiten Palette von Open-Source- und Hugging Face-Modellen, wodurch LLM-Anwendungen einfach erstellt und bereitgestellt werden können.
Funktionsreiche Umgebung: Wird kontinuierlich weiterentwickelt, um neue Funktionen und Fähigkeiten einzubeziehen, die vielfältige Anwendungsfälle in Unternehmensumgebungen unterstützen.
Benutzerfreundlichkeit:
Beispiele und Dokumentation: Bietet umfassende Beispiele und Dokumentation, um Benutzern zu helfen, schnell und effizient loszulegen.
Unternehmensfokus: Speziell entwickelt, um die besonderen Anforderungen von LLM-Bereitstellungen auf Unternehmensebene zu erfüllen, vom Dokumentenmanagement bis zur skalierbaren Verarbeitung.
Retrieval Augmented Generation in einer Private Cloud mit Milvus und LLMware
Dieser Abschnitt erklärt und implementiert eine RAG-Lösung On-Premise. Werfen wir einen Blick auf die Architektur für RAG mit LLMware und der Milvus Vektordatenbank.
Die Architektur
Dieses Architekturdiagramm veranschaulicht den Workflow von RAG On-Premises mit LLMware und Milvus.
Architekturdiagramm für RAG On-Premises mit LLMware und Milvus
Architekturdiagramm für RAG On-Premises mit LLMware und Milvus
Hier ist eine Erklärung der einzelnen Komponenten:
Dokumente: Die Eingabedaten bestehen aus verschiedenen zu verarbeitenden Dokumenten. In diesem Beispiel werden die ~80 Beispieldokumente aus dem S3-Bucket abgerufen.
Ingestion-Pipeline: Dies ist der erste Schritt, bei dem Dokumente in das System aufgenommen werden. Diese Pipeline bereitet die Dokumente für die weitere Verarbeitung vor, indem sie relevante Informationen extrahiert und möglicherweise Vorverarbeitungsaufgaben wie das Bereinigen oder Formatieren der Daten durchführt.
Embeddings generieren: Nach der Aufnahme werden die Dokumente an ein Embedding-Modell übergeben. In diesem Fall wandelt ein Industry BERT-Modell die Dokumente in numerische Repräsentationen (Vektor-Embeddings) um, die die semantische Bedeutung des Textes erfassen.
Vektordatenbank: Die vom Industry BERT-Modell generierten Embeddings werden zusammen mit den Dokumenten in einer Vektordatenbank, Milvus, gespeichert. Diese spezialisierte Vektordatenbank ist darauf ausgelegt, groß angelegte Vektordaten zu verarbeiten und effizient zu durchsuchen.
Abfrage: Ein Benutzer sendet eine Abfrage an das System.
Abfrage-Embeddings: Diese Abfrage wird ebenfalls in ein Embedding umgewandelt, um sie mit den in Milvus gespeicherten Dokument-Embeddings zu vergleichen.
Dokumente suchen: Die Ähnlichkeit zwischen Abfrage- und Dokument-Embeddings wird berechnet, wobei Dokumente basierend auf größerer Ähnlichkeit höher eingestuft werden.
Abgerufene Dokumente: Relevante Dokumente mit hoher Ähnlichkeit werden abgerufen. Die Anzahl der abgerufenen Dokumente und der Ähnlichkeitsschwellenwert können angepasst werden.
LLM: Die abgerufenen Dokumente und die Abfrage werden an das LLM gesendet; in unserem Fall ist das LLM Bling 7B.
Ergebnis: Die Antwort des LLM wird dem Benutzer bereitgestellt.
Der nächste Abschnitt zeigt die Implementierung der RAG-Anwendung in der privaten Cloud.
Implementierung
In dieser Implementierung werden wir die RAG-Anwendung erstellen, indem wir ~80 juristische Dokumente in die Milvus-Vektordatenbank einlesen und mithilfe eines LLM Fragen stellen. Wir gehen davon aus, dass der Benutzer für diesen Blog bereits Milvus installiert hat und den Dienst starten kann.
Importe
Wir werden zunächst die erforderlichen Bibliotheken installieren und sie in unsere Umgebung importieren. Wir benötigen llmware und PyMilvus. So installieren Sie es:
pip install llmware
Pip install pymilvus>=2.4.2
Nach diesem Schritt importieren wir die erforderlichen Module aus llmware.
import os
from llmware.library import Library
from llmware.retrieval import Query
from llmware.setup import Setup
from llmware.status import Status
from llmware.prompts import Prompt
from llmware.configs import LLMWareConfig, MilvusConfig
Nach dem Importieren der Daten richten wir die Konfiguration ein.
Konfiguration
Der Konfigurationsschritt ist ziemlich einfach. In diesem Schritt speichern wir die Namen des Embedding-Modells, der Vektordatenbank und des LLM.
embedding_model = "industry-bert-contracts"
vector_db = "milvus"
llm = "llmware/bling-1b-0.1"
Das Setup umfasst das Embedding-Modell industry-bert-contracts, Milvus für die Vektordatenbank und das Sprachmodell llmware/bling-1b-0.1 für eine optimierte KI-gestützte Dokumentenverarbeitung und -analyse.
Milvus einrichten
Aufgrund seiner Integration ist es sehr einfach, Milvus mit llmware einzurichten. Nach der Installation von PyMilvus müssen wir vector_db auf Milvus setzen, während active_db auf sqlite gesetzt wird, wie unten gezeigt:
LLMWareConfig().set_active_db("sqlite")
MilvusConfig().set_config("lite", True) # No dependency
LLMWareConfig().set_vector_db("milvus")
llmware unterstützt Milvus-lite, das eigenständig ist und keine weiteren Abhängigkeiten erfordert.
Eine Bibliothek erstellen
In llmware ist eine Bibliothek das zentrale Organisationskonstrukt für unstrukturierte Informationen. Benutzer können eine große Bibliothek mit vielfältigen Inhalten erstellen oder mehrere Bibliotheken, die jeweils einem bestimmten Thema, Projekt, Fall, Geschäft, Konto, Benutzer oder einer Abteilung gewidmet sind.
Um eine Bibliothek zu erstellen, können wir einfach die Funktion create_new_library aus der Library-Klasse aufrufen, die einen beliebigen Namen als Argument benötigt. Schauen wir uns das an.
Library_name = "contracts-Rag"
library = Library().create_new_library(library_name)
Dokumente einlesen
Die Klasse Setup in LLMware lädt Beispieldateien aus einem AWS S3-Bucket herunter, darunter verschiedene Beispieldokumente wie Verträge, Rechnungen, Finanzberichte usw. Sie können immer die neueste Version dieser Beispiele erhalten, indem Sie load_sample_files verwenden. In diesem Beispiel laden wir die „Agreements“ hoch.
sample_files_path = Setup().load_sample_files(over_write=False)
contracts_path = os.path.join(sample_files_path, "Agreements")
Llmware verfügt über eine nützliche Funktion namens add_files, ein universelles Ingestion-Tool. Verweisen Sie damit auf einen lokalen Ordner mit gemischten Dateitypen, und es leitet Dateien automatisch anhand ihrer Erweiterung an den passenden Parser weiter. Die Dateien werden anschließend geparst, der Text wird in Chunks aufgeteilt und in der Textsammlungsdatenbank indexiert.
library.add_files(input_folder_path=contracts_path)
Die Dokumente sind geladen. Erstellen wir nun ihre Embeddings.
Embeddings erstellen
Alles in dieser Implementierung läuft privat. Daher wird das Embedding-Modell on-prem heruntergeladen. Wie erwähnt, ist das Embedding-Modell industry-bert-contracts, während Milvus die Vektordatenbank ist.
library.install_new_embedding(embedding_model_name=embedding_model, vector_db=vector_db)
Nach der Installation der Embeddings in der Library können Sie den Embedding-Status prüfen, um die aktualisierten Embeddings zu verifizieren und zu bestätigen, dass das Modell korrekt erfasst wurde.
Status().get_embedding_status(library_name, embedding_model)
Sehen wir uns in den nächsten Abschnitten an, wie ein LLM-Aufruf ausgeführt wird.
Das Large Language Model laden
Wir verwenden die Funktion load_model, um das Bling-Modell zu laden. Diese sind klein und eignen sich gut für schnelle Tests.
prompter = Prompt().load_model(llm)
Dokumente durchsuchen
In Llmware wird die Klasse Query für Suche und Retrieval verwendet, wobei eine Library als obligatorischer Parameter erforderlich ist. Dieser Ansatz ermöglicht es Retrievals, die Library-Abstraktion zu nutzen, und unterstützt mehrere unterschiedliche Wissensdatenbanken, die auf verschiedene Anwendungsfälle, Benutzer, Konten und Berechtigungen ausgerichtet sind.
Diese Klasse ermöglicht viele Suchfunktionen, wie Textsuche und semantische Suche. Für unser Beispiel verwenden wir die semantische Suche.
query = "what is the executive's base annual salary"
results = Query(library).semantic_query(query, result_count=50, embedding_distance_threshold=1.0)
Alle Teile zusammenführen
Dieser Abschnitt durchläuft alle Verträge, filtert die relevanten Ergebnisse und generiert die Antworten mithilfe des LLM. Hier ist der Codeausschnitt:
for i, contract in enumerate(os.listdir(contracts_path)):
qr = []
for j, entries in enumerate(results):
if entries["file_source"] == contract:
print("Top Retrieval: ", j, entries["distance"], entries["text"])
qr.append(entries)
source = prompter.add_source_query_results(query_results=qr)
response = prompter.prompt_with_source(query, prompt_name="default_with_context", temperature=0.3)
for resp in response:
if "llm_response" in resp:
print("\nupdate: llm answer - ", resp["llm_response"])
# start fresh for next document
prompter.clear_source_materials()
Hier ist die Anleitung dazu.
Über Verträge iterieren: Für jede Vertragsdatei im Verzeichnis wird eine Liste initialisiert, um relevante Abfrageergebnisse zu speichern.
Relevante Ergebnisse filtern: Es filtert die Ergebnisse, die dem aktuellen Vertrag entsprechen, und gibt die Top-Retrievals aus.
Antworten generieren: Die gefilterten Ergebnisse generieren eine Antwort mit einem Sprachmodell und geben die generierten Antworten aus.
Für den nächsten Vertrag zurücksetzen: Es löscht die Quellmaterialien, um den nächsten Vertrag vorzubereiten.
Das Ergebnis für die Abfrage wird wie folgt bereitgestellt:
>>> Contract Name: Rhea EXECUTIVE EMPLOYMENT AGREEMENT.pdf
Top Retrieval: 1 0.6237360223214722
The Board (or its compensation committee) will annually review the Executive's base salary following the Employer's standard compensation and performance review policies for senior executives. While the salary may be increased, it cannot be decreased. The specific amount of any yearly increase will be determined based on these policies. For the purposes of this Agreement, "Base Salary" refers to the Executive's base salary as periodically established in accordance with Section 2.2.
Beachten Sie, dass hier nur das erste Retrieval angezeigt wird.
Oben haben wir erfolgreich eine RAG-Anwendung für Rechtsdokumente mit Milvus und LLMware erstellt. Das Beste daran ist, dass keine Daten an externe Anbieter gesendet werden; alles, einschließlich der Vektordatenbank, des Embedding-Modells und des LLM, befindet sich lokal
Fazit
Mit der zunehmenden Verbreitung von KI ist die Interaktion mit Daten einfacher denn je geworden. Viele Unternehmen zögern jedoch nach wie vor, ihre Daten in die Cloud zu senden, und das zu Recht. LLMware bietet eine Lösung für den Aufbau von KI-Systemen lokal statt in der öffentlichen Cloud. Diese Lösung gewährleistet Datenschutz, senkt Kosten und bietet mehr Kontrolle.
Mit LLMware und der Milvus-Vektordatenbank können wir die Leistungsfähigkeit der Vektorähnlichkeitssuche und von LLMs kombinieren, um Fragen zu unseren privaten Dokumenten zu stellen. Milvus ist eine robuste Open-Source-Vektordatenbank, die Vektordaten im Milliardenmaßstab speichert, verarbeitet und durchsucht. Sobald Milvus die Top-K der relevantesten Ergebnisse für das LLM abruft, haben LLMs den Kontext, um Ihre Anfragen zu beantworten.
Weiterlesen

Optimizing Embedding Model Selection with TDA Clustering: A Strategic Guide for Vector Databases
Discover how Topological Data Analysis (TDA) reveals hidden embedding model weaknesses and helps optimize vector database performance.

Vector Databases vs. Time Series Databases
Use a vector database for similarity search and semantic relationships; use a time series database for tracking value changes over time.

Milvus WebUI: A Visual Management Tool for Your Vector Database
Explore Milvus WebUI to monitor, manage, and optimize your vector database with real-time insights, performance tracking, and system health monitoring.



