Python, LangChain, Ollama, ChromaDB, Unstructured advanced coding|automation|research 100% Usefulness

RAG-System mit LangChain, Ollama und ChromaDB implementieren

Bauen Sie ein Retrieval-Augmented Generation (RAG)-System auf, um lokale LLMs mit Ihren eigenen privaten Daten zu erweitern. Dies reduziert Halluzinationen und ermöglicht es dem LLM, präzise Antworten basierend auf spezifischen Dokumenten zu generieren.

Originalvideo ansehen: OpenAIs Astra (GPT-6) Will Shock The World
5 Schritte
1

Python-Umgebung vorbereiten und Bibliotheken installieren

Erstellen Sie ein neues Python-Projekt oder eine virtuelle Umgebung und installieren Sie die erforderlichen LangChain-Komponenten, ChromaDB und Unstructured.

pip install langchain_community langchain_chroma unstructured
Tipp: Es wird empfohlen, eine virtuelle Umgebung zu verwenden, um Abhängigkeitskonflikte zu vermeiden.
Warnung: Stellen Sie sicher, dass Sie eine kompatible Python-Version (z.B. 3.9+) verwenden.
2

Dokumente laden und aufteilen

Verwenden Sie `UnstructuredFileLoader`, um Ihr Dokument (z.B. eine PDF-Datei) zu laden, und `RecursiveCharacterTextSplitter`, um den Text in kleinere, überlappende Chunks aufzuteilen. Legen Sie Ihre PDF-Datei im selben Verzeichnis wie Ihr Python-Skript ab.

from langchain_community.document_loaders import UnstructuredFileLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter

loader = UnstructuredFileLoader("your_document.pdf") # Ersetzen Sie 'your_document.pdf' durch Ihren Dateinamen
docs = loader.load()

text_splitter = RecursiveCharacterTextSplitter(chunk_size=750, chunk_overlap=50)
splits = text_splitter.split_documents(docs)
Tipp: Passen Sie `chunk_size` und `chunk_overlap` an die Art Ihrer Dokumente an. Kleinere Chunks sind oft besser für präzise Abrufe.
Warnung: Stellen Sie sicher, dass die Datei 'your_document.pdf' existiert und lesbar ist.
3

Embeddings erstellen und Vektordatenbank initialisieren

Initialisieren Sie `OllamaEmbeddings` und verwenden Sie diese, um die Text-Chunks in Vektoren umzuwandeln. Speichern Sie diese Vektoren dann in einer ChromaDB-Instanz.

from langchain_community.embeddings import OllamaEmbeddings
from langchain_chroma import Chroma

embeddings = OllamaEmbeddings(model="llama2") # Stellen Sie sicher, dass 'llama2' lokal in Ollama verfügbar ist
vectorstore = Chroma.from_documents(documents=splits, embedding=embeddings)
Tipp: Sie können auch andere Ollama-Modelle für Embeddings verwenden, wenn diese für Ihre Zwecke besser geeignet sind.
Warnung: Der Embedding-Prozess kann je nach Anzahl und Größe der Dokumente einige Zeit in Anspruch nehmen.
4

LLM definieren und Retrieval Chain erstellen

Initialisieren Sie Ihr lokales Ollama-LLM und erstellen Sie dann eine `RetrievalQA`-Kette mit LangChain, die den Vektor-Store als Retriever verwendet.

from langchain_community.llms import Ollama
from langchain.chains import RetrievalQA

llm = Ollama(model="llama2") # Stellen Sie sicher, dass 'llama2' lokal in Ollama verfügbar ist

qa_chain = RetrievalQA.from_chain_type(
    llm,
    retriever=vectorstore.as_retriever()
)
Tipp: Experimentieren Sie mit verschiedenen LLM-Modellen, um die beste Leistung für Ihre Anwendungsfälle zu finden.
Warnung: Stellen Sie sicher, dass das Ollama-Modell im Hintergrund läuft und über den Ollama-Server erreichbar ist.
5

Abfragen an das RAG-System senden

Stellen Sie Fragen an Ihre `qa_chain`. Das System wird relevante Informationen aus dem Vektor-Store abrufen und das LLM verwenden, um eine fundierte Antwort zu generieren.

question = "Was sind die Hauptpunkte dieses Dokuments?"
result = qa_chain.invoke({"query": question})
print(result["result"])
Tipp: Formulieren Sie Ihre Fragen klar und präzise, um die besten Ergebnisse zu erzielen.
Warnung: Die Qualität der Antworten hängt stark von der Qualität Ihrer Dokumente und der gewählten Chunking-Strategie ab.
← Alle Playbooks anzeigen