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 WorldPython-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 unstructuredDokumente 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)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)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()
)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"])