Chains sind das Herzstück von LangChain. Sie verbinden mehrere Verarbeitungsschritte zu einer Pipeline — von der Eingabe über Retrieval und Prompt-Aufbereitung bis zur LLM-Antwort. In Kombination mit Retrieval entstehen leistungsstarke RAG-Systeme.
Eine Sequential Chain führt Schritte nacheinander aus. Der Output eines Schritts wird zum Input des nächsten:
from langchain_core.runnables import RunnablePassthrough
chain = (
{"context": retriever, "question": RunnablePassthrough()}
| prompt
| model
| parser
)
Mit LCEL können Sie Chains parallel ausführen und die Ergebnisse zusammenführen:
from langchain_core.runnables import RunnableParallel
parallel = RunnableParallel(
summary=summary_chain,
keywords=keyword_chain,
sentiment=sentiment_chain
)
result = parallel.invoke({"text": document})
LangChain bietet Loader für diverse Datenquellen:
| Loader | Datenquelle |
|---|---|
| PyPDFLoader | PDF-Dateien |
| CSVLoader | CSV-Dateien |
| WebBaseLoader | Webseiten |
| NotionDBLoader | Notion-Datenbanken |
| S3FileLoader | AWS S3 Buckets |
| GitLoader | Git-Repositories |
Dokumente müssen in Chunks aufgeteilt werden, bevor sie in eine Vektor-Datenbank geladen werden:
Der Standard-Splitter — versucht, an natürlichen Grenzen zu splitten (Absätze, Sätze, Wörter):
from langchain_text_splitters import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(
chunk_size=1000,
chunk_overlap=200,
separators=["\n\n", "\n", " ", ""]
)
chunks = splitter.split_documents(documents)
LangChain integriert mit allen gängigen Vektor-Datenbanken:
from langchain_community.vectorstores import Chroma
from langchain_openai import OpenAIEmbeddings
vectorstore = Chroma.from_documents(
documents=chunks,
embedding=OpenAIEmbeddings()
)
retriever = vectorstore.as_retriever(search_kwargs={"k": 5})
rag_chain = (
{"context": retriever | format_docs, "question": RunnablePassthrough()}
| rag_prompt
| model
| StrOutputParser()
)
Praxis-Tipp: Chunk-Size und Overlap sind die wichtigsten RAG-Parameter. Starten Sie mit chunk_size=1000 und overlap=200. Testen Sie systematisch — kleine Änderungen können die Retrieval-Qualität drastisch verbessern.