Rozdělování textu, embeddingové modely a vektorové úložiště

Retrieval Augmented Generation (RAG) with LangChain

Meri Nova

Machine Learning Engineer

Příprava dat pro načítání

Načítání dokumentů.

Retrieval Augmented Generation (RAG) with LangChain

Příprava dat pro načítání

Rozdělování dokumentů.

Retrieval Augmented Generation (RAG) with LangChain

Příprava dat pro načítání

Bloky dokumentů jsou převedeny na embeddingy.

Retrieval Augmented Generation (RAG) with LangChain

Příprava dat pro načítání

Bloky dokumentů jsou uloženy.

Retrieval Augmented Generation (RAG) with LangChain

Příprava dat pro načítání

Krok rozdělování je zvýrazněn v pracovním postupu vývoje RAG.

Retrieval Augmented Generation (RAG) with LangChain

chunk_size

Šipka ukazující, že ideální velikost bloku je někde uprostřed; velké bloky mohou být pomalé pro načítání a obtížné na interpretaci, malé bloky mohou obsahovat nedostatečný kontext.

chunk_overlap

  • Zahrnuje informace _za_ hranicí

Dva bloky s vyznačenou oblastí překryvu.

Retrieval Augmented Generation (RAG) with 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) with 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]
  • Bloky mohou postrádat kontext
  • Bloky mohou být větší než chunk_size
Retrieval Augmented Generation (RAG) with LangChain

RecursiveCharacterTextSplitter

from langchain_text_splitters import RecursiveCharacterTextSplitter

splitter = RecursiveCharacterTextSplitter(

separators=["\n\n", "\n", " ", ""],
chunk_size=100, chunk_overlap=10
)
Retrieval Augmented Generation (RAG) with 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) with LangChain

Rozdělování dokumentů

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) with LangChain

Rozdělování dokumentů

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) with LangChain

Embedding a uložení

Kroky embeddingu a uložení jsou zvýrazněny.

Retrieval Augmented Generation (RAG) with LangChain

Co jsou embeddingy?

Věta je předána do embeddingového modelu.

Retrieval Augmented Generation (RAG) with LangChain

Co jsou embeddingy?

Embeddingový model převede text na vektor číselných hodnot.

Retrieval Augmented Generation (RAG) with LangChain

Co jsou embeddingy?

what_are_embeddings3.jpg

Retrieval Augmented Generation (RAG) with LangChain

Co jsou embeddingy?

what_are_embeddings4.jpg

Retrieval Augmented Generation (RAG) with LangChain

Embedding a uložení bloků

  • Embedding a uložení pomocí: OpenAI a 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) with LangChain

Pojďme cvičit!

Retrieval Augmented Generation (RAG) with LangChain

Preparing Video For Download...