Textdelning, inbäddningar och vektorlagring

Retrieval Augmented Generation (RAG) med LangChain

Meri Nova

Machine Learning Engineer

Förbered data för hämtning

Dokument laddas in.

Retrieval Augmented Generation (RAG) med LangChain

Förbered data för hämtning

Dokument delas upp.

Retrieval Augmented Generation (RAG) med LangChain

Förbered data för hämtning

Dokumentbitar bäddas in.

Retrieval Augmented Generation (RAG) med LangChain

Förbered data för hämtning

Dokumentbitar lagras.

Retrieval Augmented Generation (RAG) med LangChain

Förbered data för hämtning

Delningssteget är markerat i RAG-utvecklingsflödet.

Retrieval Augmented Generation (RAG) med LangChain

chunk_size

En pil visar att den optimala bitstorleken ligger i mitten; stora bitar kan ge långsam hämtning och tolkningssvårigheter, medan små bitar kan sakna tillräckligt sammanhang.

chunk_overlap

  • Inkludera information bortom gränsen

Två bitar med ett markerat överlappande område.

Retrieval Augmented Generation (RAG) med 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) med 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]
  • Bitar kan sakna sammanhang
  • Bitar kan vara större än chunk_size
Retrieval Augmented Generation (RAG) med LangChain

RecursiveCharacterTextSplitter

from langchain_text_splitters import RecursiveCharacterTextSplitter

splitter = RecursiveCharacterTextSplitter(

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

Dela upp 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) med LangChain

Dela upp 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) med LangChain

Inbäddning och lagring

Inbäddnings- och lagringsstegen är markerade.

Retrieval Augmented Generation (RAG) med LangChain

Vad är inbäddningar?

En mening skickas in i en inbäddningsmodell.

Retrieval Augmented Generation (RAG) med LangChain

Vad är inbäddningar?

Inbäddningsmodellen representerar texten som en vektor med numeriska värden.

Retrieval Augmented Generation (RAG) med LangChain

Vad är inbäddningar?

what_are_embeddings3.jpg

Retrieval Augmented Generation (RAG) med LangChain

Vad är inbäddningar?

what_are_embeddings4.jpg

Retrieval Augmented Generation (RAG) med LangChain

Bädda in och lagra bitarna

  • Bädda in och lagra med: OpenAI och 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) med LangChain

Nu kör vi en övning!

Retrieval Augmented Generation (RAG) med LangChain

Preparing Video For Download...