RAG mit TrueFoundry und MongoDB Atlas erstellen
.webp)
Auf Geschwindigkeit ausgelegt: ~ 10 ms Latenz, auch unter Last
Unglaublich schnelle Methode zum Erstellen, Verfolgen und Bereitstellen Ihrer Modelle!
- Verarbeitet mehr als 350 RPS auf nur 1 vCPU — kein Tuning erforderlich
- Produktionsbereit mit vollem Unternehmenssupport
Einführung
Retrieval-Augmented Generation (RAG) kombiniert die Stärken von Abrufsystemen und generativen Modellen, um hochrelevante, kontextsensitive Ergebnisse zu erzeugen. Es fragt externe Wissensquellen — wie Datenbanken oder Suchindexe — ab, um relevante Informationen abzurufen, die dann durch ein generatives Modell verfeinert werden.
Warum RAG?
- Hochgradig relevante und kontextsensitive Ergebnisse.
- Durch das Einbeziehen dynamisches und aktuelles Wissen, RAG-Systeme überwinden die Einschränkungen des statischen Vortrainings in generativen Modellen und sind daher äußerst effektiv für Anwendungen wie die Beantwortung von Fragen, wissensintensive Aufgaben und die Generierung personalisierter Inhalte.
- Das modulare Die Natur von RAG ermöglicht eine Optimierung sowohl in der Abruf- als auch in der Generierungsphase, was eine größere Flexibilität und Skalierbarkeit beim Systemdesign ermöglicht.
Cognita von TrueFoundry: Vereinfachung von RAG für skalierbare Anwendungen
Trotz ihres Potenzials kann die Implementierung von RAG komplex sein, da sie Modellauswahl, Datenorganisation und bewährte Verfahren erfordert. Bestehende Tools vereinfachen das Prototyping, es fehlt jedoch eine Open-Source-Vorlage für eine skalierbare Implementierung — geben Sie ein Cognita.
Cognita ist ein Open-Source-RAG-Framework, das die Erstellung und Bereitstellung skalierbarer Anwendungen vereinfacht. Durch die Aufteilung von RAG in modulare Schritte gewährleistet es eine einfache Wartung, Interoperabilität mit anderen KI-Tools, Anpassung und Konformität. Cognita balanciert Anpassungsfähigkeit und Benutzerfreundlichkeit und ist gleichzeitig skalierbar für zukünftige Weiterentwicklungen.
Vorteile von Cognita
- Ein zentrales wiederverwendbares Repository für Parser, Loader, Embedder und Retriever.
- Möglichkeit für Benutzer ohne technische Kenntnisse, mit der Benutzeroberfläche zu spielen — Laden Sie Dokumente hoch und führen Sie QnA mithilfe von Modulen durch, die vom Entwicklungsteam erstellt wurden.
- Vollständig API-gesteuert — was die Integration mit anderen Systemen ermöglicht.
- Large Language Models (LLMs) für die einfache Interaktion mit generativen Modellen wie den GPT-, Hugging Face-Modellen oder anderen LLM-APIs von OpenAI.
- Vorgefertigte Integrationen für die einfache Verbindung zu Pinecone, Weaviate, ChromaDB oder MongoDB Atlas Vector Search.
Warum MongoDB für RAG?
Verwenden MongoDB als Vektordatenbank für Ihre Retrieval-Augmented Generation (RAG) -Anwendung kann je nach Ihren Anforderungen von Vorteil sein. Hier ist der Grund, warum MongoDB eine gute Wahl sein könnte:
1. Unterstützung für die native Vektorsuche
MongoDB unterstützt Vektorindizierung durch seine Atlas-Vektorsuche. Dies ermöglicht eine effiziente Ähnlichkeitssuche in hochdimensionalen Daten, was für RAG-Workflows von zentraler Bedeutung ist. Die wichtigsten Vorteile:
- Integration mit der Abfragesprache von MongoDB: Kombiniert die Vektorsuche mit herkömmlichen Abfragen und ermöglicht so eine flexiblere und leistungsfähigere Zusammenstellung von Abfragen.
- Leistungsstarke Suche: Verwendet Algorithmen für den ungefähren nächsten Nachbarn (ANN) wie HNSW (Hierarchical Navigable Small World) für einen skalierbaren und schnellen Vektorabruf.
2. Einheitliches Datenmanagement
RAG-Anwendungen erfordern oft die Verwaltung von beidem, unstrukturierte Daten (z. B. Text und Einbettungen) und strukturierte Daten (z. B. Metadaten, Benutzereinstellungen).
MongoDB ist eine Dokumentdatenbank und ermöglicht es Ihnen, Einbettungen zusammen mit den zugehörigen Metadaten in einem einzigen Datensatz zu speichern. Zum Beispiel:
{
"embedding": [0.1, 0.2, 0.3, ...],
"text": "This is a sample document.",
"metadata": {
"source": "document_1",
"timestamp": "2024-12-06T10:00:00Z"
}
}
Dadurch wird die Komplexität der Verwaltung von Einbettungen in ein separates System vermieden.
3. Flexibilität und Skalierbarkeit
Schemaloses Design: Die Schemaflexibilität von MongoDB macht es einfach, an Ihrem Datenmodell zu iterieren, während sich Ihre RAG-Anwendung weiterentwickelt.
Horizontale Skalierung: Die Sharding-Funktion von MongoDB ermöglicht die Verarbeitung großer Datensätze und die Skalierung, wenn Ihre Anwendung wächst.
Cloud-native Funktionen: MongoDB Atlas bietet vollständig verwaltete Dienste, einschließlich Skalierung, Backups und Überwachung.
Implementierung von RAG mit Cognita+ MongoDB
Schritt 1: MongoDB einrichten
Für ein Video-Tutorial, in dem Sie sehen, wie Sie Ihren kostenlosen MongoDB Atlas-Cluster erhalten, klicken Sie auf hier.
- Richten Sie ein MongoDB Atlas-Konto ein, indem Sie die Registriere dich Seite, falls Sie noch kein Konto haben.

- Um einen Cluster auf der Registerkarte „Übersicht“ einzurichten, klicken Sie auf „Erstellen“, wählen Sie den Cluster gemäß Ihren Anforderungen aus und klicken Sie auf „Bereitstellung erstellen“.

- Um die erforderlichen Authentifizierungen hinzuzufügen, erstellen Sie im Fenster „Mit Cluster verbinden“ einen Datenbankbenutzer.
- Stellen Sie eine Verbindung zum MongoDB-Treiber her
- Wählen Sie die Python-Version
- Die Verbindungszeichenfolge enthält Ihren Benutzernamen und Ihr Passwort. Kopieren Sie die Verbindungszeichenfolge. Dies würde im nächsten Schritt verwendet werden.

Schritt 2: Cognita für die Verwendung von MongoDB einrichten
- Klonen Sie das Cognita-Github-Repository: https://github.com/truefoundry/cognita/tree/main
- Bevor wir die Dienste starten, müssen wir Modellanbieter konfigurieren, die wir zum Einbetten und Generieren von Antworten benötigen würden. Kopieren Sie zunächst models_config.sample.yaml nach models_config.yaml.
cp models_config.sample.yaml models_config.yaml
- Erstellen Sie eine Mongo-DB-Sammlung in der neu erstellten Datenbank, sagen Sie „Cognita“. Dies ist die Sammlung, in der alle Chunks gespeichert und beim Abrufvorgang verwendet werden.
- Die Compose-Datei verwendet die Datei compose.env für Umgebungsvariablen. Sie können es nach Ihren Bedürfnissen ändern.
- Bearbeiten Sie den Schlüssel „VECTOR_DB_CONFIG“ in der Umgebungsdatei. Diese Konfiguration wird im Bootstrap-Prozess verwendet, um sicherzustellen, dass MongoDB während der gesamten Laufzeit als Vektorspeicher verwendet wird. Die Verbindungszeichenfolge für die Mongo-DB wird hier verwendet. Es folgt ein Beispiel dafür, wie das aussehen würde:
VECTOR_DB_CONFIG=' {"provider“ :"mongo“, "url“ :"mongodb+srv: //username: password@clustername.mongodb.net/? retrywrites=true&w=majority&appname=cluster0", „config“: {"database_name“: „cognita"}} '
- Standardmäßig sind in der Konfiguration lokale Anbieter aktiviert, die Infinity und einen Ollama-Server benötigen, um Embedding und LLMs lokal auszuführen. Wenn Sie jedoch einen OpenAI-API-Schlüssel haben, können Sie den openai-Anbieter in models_config.yaml auskommentieren und OPENAI_API_KEY in compose.env aktualisieren. Jetzt können Sie den folgenden Befehl ausführen, um die Dienste zu starten:
docker-compose --env-file compose.env --profile ollama --profile unendlich hoch
- Die Compose-Datei startet die folgenden Dienste
- cognita-db — Postgres-Instanz, die zum Speichern von Metadaten für Sammlungen und Datenquellen verwendet wird.
- cognita-backend — Wird verwendet, um den FastAPI-Backend-Server für Cognita zu starten.
- cognita-frontend - Wird verwendet, um das Frontend für Cognita zu starten.
- Sobald die Dienste verfügbar sind, können Sie unter http://localhost:5001 auf das Frontend zugreifen.
Schritt 3: Richten Sie eine Datensammlung in Cognita ein
Sobald Sie Cognita eingerichtet haben, zeigen die folgenden Schritte, wie Sie die Benutzeroberfläche verwenden, um Dokumente abzufragen:

1. Datenquelle erstellen
- Klicken Sie auf die Registerkarte Datenquellen
- Klicken Sie auf + Neue Datenquelle
- Der Datenquellentyp kann entweder Dateien aus dem lokalen Verzeichnis, Web-URL, Github-URL oder der Bereitstellung des Truefoundry-Artefakts FQN sein. Beispiel: Wenn Localdir ausgewählt ist, lade Dateien von deinem Computer hoch und klicke auf Senden.
- Die Liste der erstellten Datenquellen wird auf der Registerkarte Datenquellen verfügbar sein.
2. Sammlung erstellen
- Klicken Sie auf den Tab Sammlungen

- Klicken Sie auf + Neue Kollektion

- Namen der Sammlung eingeben
- Wählen Sie das Einbettungsmodell
- Fügen Sie eine zuvor erstellte Datenquelle und die erforderliche Konfiguration hinzu
- Klicken Sie auf Verarbeiten, um die Sammlung zu erstellen und die Daten zu indizieren

3. Bei der Erstellung einer neuen Kollektion passiert Folgendes hinter den Kulissen
- Erstellen Sie eine neue Sammlung in der konfigurierten MongoDB-Datenbank. Wenn der Name der Datenbank beispielsweise `cognita` ist, erstellt dieser Schritt eine Sammlung mit dem angegebenen Eingabenamen in der Cognita-Datenbank in Mondo DB.
- Beim Erstellen einer Sammlung wird ein Vektorsuchindex mit dem folgenden Codeausschnitt erstellt:
from pymongo.operations import SearchIndexModel
search_index_model = SearchIndexModel(
definition={
"fields": [
{
"type": "vector",
"path": "embedding",
"numDimensions": self.get_embedding_dimensions(embeddings),
"similarity": "cosine",
}
]
},
name="vector_search_index",
type="vectorSearch",
)
# Create the search index
result = self.db[collection_name].create_search_index(model=search_index_model)Dadurch wird sichergestellt, dass die neu erstellte Sammlung für Vektor-Suchanfragen bereit ist. Beachten Sie, dass das Erstellen eines Indexes auf MongoDB bis zu einer Minute dauern kann.
4. Sobald Sie die Sammlung erstellt haben, beginnt die Datenaufnahme. Sie können ihren Status einsehen, indem Sie Ihre Sammlung im Tab Sammlungen auswählen. In diesem Schritt werden Ihre Dateien analysiert, aufgeteilt und zu Ihrer MongoDB hinzugefügt. Sie können später auch zusätzliche Datenquellen hinzufügen und sie in der Sammlung indizieren. Fahren Sie mit dem nächsten Schritt fort, sobald der Status „Abgeschlossen“ lautet.

Schritt 4: Finden Sie die richtige Konfiguration für Ihre Anwendung

- Verwenden Sie auf der Registerkarte DocsQA den Spielplatz von Cognita, um mit den verschiedenen Einstellungen zu spielen und herauszufinden, was für Ihre Anwendung am besten funktioniert. Sie können verschiedene Dinge ausprobieren:
- Techniken zum Abrufen
- LLM-Modelle, Temperaturen usw.
- LLM-Eingabeaufforderungen
- Modelle einbetten
- Welche Einstellung für Ihre Anwendung am besten geeignet ist, klicken Sie dafür auf „Anwendung erstellen“ und ein API-Endpunkt wird für Ihre Anwendung bereitgestellt. Sie können zum Tab „Anwendungen“ gehen, um alle Ihre bereitgestellten Anwendungen zu sehen.
Fazit
In diesem Tutorial wurde gezeigt, wie Sie mit Cognita und MongoDB in nur 10 Minuten eine produktionsbereite RAG-Anwendung erstellen. Die Synergie zwischen der Anpassungsfähigkeit und Benutzerfreundlichkeit von Cognita und dem flexiblen Dokumentenmodell von MongoDB mit Vektorsuche bietet eine solide Grundlage für die Erstellung fortschrittlicher KI-Anwendungen.
TrueFoundry AI Gateway bietet eine Latenz von ~3—4 ms, verarbeitet mehr als 350 RPS auf einer vCPU, skaliert problemlos horizontal und ist produktionsbereit, während LiteLM unter einer hohen Latenz leidet, mit moderaten RPS zu kämpfen hat, keine integrierte Skalierung hat und sich am besten für leichte Workloads oder Prototyp-Workloads eignet.
Der schnellste Weg, deine KI zu entwickeln, zu steuern und zu skalieren















.png)




.png)






.webp)

.webp)



