Metode pemisahan lanjutan

Retrieval Augmented Generation (RAG) dengan LangChain

Meri Nova

Machine Learning Engineer

Batasan strategi pemisahan kita saat ini

 

  1. 🤦 Pemisahan naif (tidak peka konteks)

    • Mengabaikan konteks teks sekitar
  2. 🖇 Pemisahan dengan karakter vs. token

    • Token diproses oleh model
    • Risiko melebihi context window

 

SemanticChunker

 

TokenTextSplitter

Retrieval Augmented Generation (RAG) dengan LangChain

Pemisahan berdasarkan token

Pemisah teks berbasis karakter yang membagi teks menjadi potongan berdasarkan jumlah karakter.

Retrieval Augmented Generation (RAG) dengan LangChain

Pemisahan berdasarkan token

Pemisah teks berbasis token yang membagi teks menjadi potongan berdasarkan jumlah token.

Retrieval Augmented Generation (RAG) dengan LangChain

Pemisahan berdasarkan token

Token disorot untuk menunjukkan kesesuaian dengan nilai chunk_size dan chunk_overlap.

Retrieval Augmented Generation (RAG) dengan LangChain

Pemisahan berdasarkan token

import tiktoken
from langchain_text_splitters import TokenTextSplitter
example_string = "Mary had a little lamb, it's fleece was white as snow."

encoding = tiktoken.encoding_for_model('gpt-4o-mini')
splitter = TokenTextSplitter(encoding_name=encoding.name,
                             chunk_size=10,
                             chunk_overlap=2)

chunks = splitter.split_text(example_string) for i, chunk in enumerate(chunks): print(f"Chunk {i+1}:\n{chunk}\n")
Retrieval Augmented Generation (RAG) dengan LangChain

Pemisahan berdasarkan token

Chunk 1:
Mary had a little lamb, it's fleece

Chunk 2:
 fleece was white as snow.
Retrieval Augmented Generation (RAG) dengan LangChain

Pemisahan berdasarkan token

for i, chunk in enumerate(chunks):
    print(f"Chunk {i+1}:\nNo. tokens: {len(encoding.encode(chunk))}\n{chunk}\n")
Chunk 1:
No. tokens: 10
Mary had a little lamb, it's fleece was

Chunk 2:
No. tokens: 6
 fleece was white as snow.
Retrieval Augmented Generation (RAG) dengan LangChain

Pemisahan semantik

Sebuah paragraf berisi satu kalimat tentang aplikasi RAG dan satu kalimat tentang anjing.

Retrieval Augmented Generation (RAG) dengan LangChain

Pemisahan semantik

Paragraf dipecah menggunakan karakter atau token sehingga konteks hilang.

Retrieval Augmented Generation (RAG) dengan LangChain

Pemisahan semantik

Pemisah semantik membelah paragraf saat topik berganti dari RAG ke anjing.

Retrieval Augmented Generation (RAG) dengan LangChain

Pemisahan semantik

from langchain_openai import OpenAIEmbeddings
from langchain_experimental.text_splitter import SemanticChunker

embeddings = OpenAIEmbeddings(api_key="...", model='text-embedding-3-small')
semantic_splitter = SemanticChunker( embeddings=embeddings,
breakpoint_threshold_type="gradient", breakpoint_threshold_amount=0.8
)
1 https://api.python.langchain.com/en/latest/text_splitter/langchain_experimental.text_splitter. SemanticChunker.html
Retrieval Augmented Generation (RAG) dengan LangChain

Pemisahan semantik

chunks = semantic_splitter.split_documents(data)
print(chunks[0])
page_content='Retrieval-Augmented Generation for\nKnowledge-Intensive NLP Tasks\ Patrick Lewis,
Ethan Perez,\nAleksandra Piktus, Fabio Petroni, Vladimir Karpukhin, Naman Goyal, Heinrich
Küttler,\nMike Lewis, Wen-tau Yih, Tim Rocktäschel, Sebastian Riedel, Douwe Kiela\nFacebook AI
Research; University College London;New York University;\[email protected]\nAbstract\nLarge
pre-trained language models have been shown to store factual knowledge\nin their parameters,
and achieve state-of-the-art results when fine-tuned on down-\nstream NLP tasks. However, their
ability to access and precisely manipulate knowl-\nedge is still limited, and hence on
knowledge-intensive tasks, their performance\nlags behind task-specific architectures.'
metadata={'source': 'rag_paper.pdf', 'page': 0}
Retrieval Augmented Generation (RAG) dengan LangChain

Ayo berlatih!

Retrieval Augmented Generation (RAG) dengan LangChain

Preparing Video For Download...