Metin bölme, gömmeler ve vektör depolama

LangChain ile Retrieval Augmented Generation (RAG)

Meri Nova

Machine Learning Engineer

Getirme için verileri hazırlama

Belgeler yükleniyor.

LangChain ile Retrieval Augmented Generation (RAG)

Getirme için verileri hazırlama

Belgeler bölünüyor.

LangChain ile Retrieval Augmented Generation (RAG)

Getirme için verileri hazırlama

Belge parçaları gömülür.

LangChain ile Retrieval Augmented Generation (RAG)

Getirme için verileri hazırlama

Belge parçaları depolanır.

LangChain ile Retrieval Augmented Generation (RAG)

Getirme için verileri hazırlama

RAG geliştirme iş akışında bölme adımı vurgulanmıştır.

LangChain ile Retrieval Augmented Generation (RAG)

chunk_size

İdeal parça boyutunun ortalarda olduğu; büyük parçalar yavaş getirime ve yorumlamada zorluklara, küçük parçalar ise yetersiz bağlama yol açabilir.

chunk_overlap

  • Bilgiyi sınırın ötesine dahil edin

İkisi arasında örtüşen alan vurgulanmış iki parça.

LangChain ile Retrieval Augmented Generation (RAG)

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 )
LangChain ile Retrieval Augmented Generation (RAG)

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]
  • Parçalar bağlamdan yoksun olabilir
  • Parçalar chunk_size değerinden büyük olabilir
LangChain ile Retrieval Augmented Generation (RAG)

RecursiveCharacterTextSplitter

from langchain_text_splitters import RecursiveCharacterTextSplitter

splitter = RecursiveCharacterTextSplitter(

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

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]
LangChain ile Retrieval Augmented Generation (RAG)

Belgeleri bölme

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)
LangChain ile Retrieval Augmented Generation (RAG)

Belgeleri bölme

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,...]
LangChain ile Retrieval Augmented Generation (RAG)

Gömme ve depolama

Gömme ve depolama adımları vurgulanmıştır.

LangChain ile Retrieval Augmented Generation (RAG)

Gömme (embedding) nedir?

Bir cümle bir gömme modeline verilir.

LangChain ile Retrieval Augmented Generation (RAG)

Gömme (embedding) nedir?

Gömme modeli metni sayısal bir vektör olarak gömer.

LangChain ile Retrieval Augmented Generation (RAG)

Gömme (embedding) nedir?

what_are_embeddings3.jpg

LangChain ile Retrieval Augmented Generation (RAG)

Gömme (embedding) nedir?

what_are_embeddings4.jpg

LangChain ile Retrieval Augmented Generation (RAG)

Parçaları gömme ve depolama

  • Şunlarla gömüp depolayın: OpenAI ve 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 )
LangChain ile Retrieval Augmented Generation (RAG)

Vamos praticar!

LangChain ile Retrieval Augmented Generation (RAG)

Preparing Video For Download...