Text-Splitting, Embeddings und Vektorspeicher

Retrieval Augmented Generation (RAG) mit LangChain

Meri Nova

Machine Learning Engineer

Daten für Retrieval vorbereiten

Dokumente werden geladen.

Retrieval Augmented Generation (RAG) mit LangChain

Daten für Retrieval vorbereiten

Dokumente werden gesplittet.

Retrieval Augmented Generation (RAG) mit LangChain

Daten für Retrieval vorbereiten

Dokument-Chunks werden eingebettet.

Retrieval Augmented Generation (RAG) mit LangChain

Daten für Retrieval vorbereiten

Dokument-Chunks werden gespeichert.

Retrieval Augmented Generation (RAG) mit LangChain

Daten für Retrieval vorbereiten

Der Splitting-Schritt ist im RAG-Entwicklungsworkflow hervorgehoben.

Retrieval Augmented Generation (RAG) mit LangChain

chunk_size

Ein Pfeil zeigt: Ideale Chunk-Größe liegt in der Mitte; große Chunks sind langsam und schwer zu deuten, kleine bieten zu wenig Kontext.

chunk_overlap

  • Info über die Grenze hinaus einschließen

Zwei Chunks mit einem markierten, überlappenden Bereich.

Retrieval Augmented Generation (RAG) mit LangChain

CharacterTextSplitter

from langchain_text_splitters import CharacterTextSplitter

text = """Machine learning is a fascinating field.\n\nIt involves algorithms and models that can learn from data. These models can then make predictions or decisions without being explicitly programmed to perform the task.\nThis capability is increasingly valuable in various industries, from finance to healthcare.\n\nThere are many types of machine learning, including supervised, unsupervised, and reinforcement learning.\nEach type has its own strengths and applications."""
text_splitter = CharacterTextSplitter( separator="\n\n", chunk_size=100, chunk_overlap=10 )
Retrieval Augmented Generation (RAG) mit LangChain

CharacterTextSplitter

chunks = text_splitter.split_text(text)

print(chunks) print([len(chunk) for chunk in chunks])
['Machine learning is a fascinating field.',
 'It involves algorithms and models that can learn from data. These models can...',
 'There are many types of machine learning, including supervised, unsupervised...']

[40, 260, 155]
  • Chunks können Kontext fehlen
  • Chunks können größer als chunk_size sein
Retrieval Augmented Generation (RAG) mit LangChain

RecursiveCharacterTextSplitter

from langchain_text_splitters import RecursiveCharacterTextSplitter

splitter = RecursiveCharacterTextSplitter(

separators=["\n\n", "\n", " ", ""],
chunk_size=100, chunk_overlap=10
)
Retrieval Augmented Generation (RAG) mit LangChain

RecursiveCharacterTextSplitter

chunks = splitter.split_text(text)

print(chunks)
print([len(chunk) for chunk in chunks])
['Machine learning is a fascinating field.',
 'It involves algorithms and models that can learn from data. These models ...',
 'or decisions without being explicitly programmed to perform the task.',
 'This capability is increasingly valuable in various industries, from ...',
 'There are many types of machine learning, including supervised, ...',
 'learning.',
 'Each type has its own strengths and applications.']
[40, 98, 69, 91, 95, 9, 49]
Retrieval Augmented Generation (RAG) mit LangChain

Dokumente splitten

from langchain_community.document_loaders import PyPDFLoader

loader = PyPDFLoader("research_paper.pdf")
documents = loader.load()

splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)

chunks = splitter.split_documents(documents)
Retrieval Augmented Generation (RAG) mit LangChain

Dokumente splitten

print(chunks)

print([len(chunk.page_content) for chunk in chunks])
[Document(metadata={'source': 'Rag Paper.pdf', 'page': 0}, page_content='...'),
 Document(metadata={'source': 'Rag Paper.pdf', 'page': 0}, page_content='...'),
 Document(metadata={'source': 'Rag Paper.pdf', 'page': 0}, page_content='...')]

[928, 946, 921,...]
Retrieval Augmented Generation (RAG) mit LangChain

Embedding und Speicher

Die Schritte Einbetten und Speichern sind hervorgehoben.

Retrieval Augmented Generation (RAG) mit LangChain

Was sind Embeddings?

Ein Satz wird an ein Embedding-Modell übergeben.

Retrieval Augmented Generation (RAG) mit LangChain

Was sind Embeddings?

Das Embedding-Modell bettet den Text als Vektor mit Zahlenwerten ein.

Retrieval Augmented Generation (RAG) mit LangChain

Was sind Embeddings?

what_are_embeddings3.jpg

Retrieval Augmented Generation (RAG) mit LangChain

Was sind Embeddings?

what_are_embeddings4.jpg

Retrieval Augmented Generation (RAG) mit LangChain

Chunks einbetten und speichern

  • Einbetten und speichern mit: OpenAI und ChromaDB
from langchain_openai import OpenAIEmbeddings
from langchain_chroma import Chroma

embedding_model = OpenAIEmbeddings(
    api_key=openai_api_key,
    model="text-embedding-3-small"
)


vector_store = Chroma.from_documents( documents=chunks, embedding=embedding_model )
Retrieval Augmented Generation (RAG) mit LangChain

Lass uns üben!

Retrieval Augmented Generation (RAG) mit LangChain

Preparing Video For Download...