การแบ่งข้อความ การสร้าง Embedding และการจัดเก็บใน Vector Store

Retrieval Augmented Generation (RAG) ด้วย LangChain

Meri Nova

Machine Learning Engineer

การเตรียมข้อมูลสำหรับการดึงข้อมูล

กำลังโหลดเอกสาร

Retrieval Augmented Generation (RAG) ด้วย LangChain

การเตรียมข้อมูลสำหรับการดึงข้อมูล

กำลังแบ่งเอกสาร

Retrieval Augmented Generation (RAG) ด้วย LangChain

การเตรียมข้อมูลสำหรับการดึงข้อมูล

ชิ้นส่วนเอกสารถูกแปลงเป็น Embedding

Retrieval Augmented Generation (RAG) ด้วย LangChain

การเตรียมข้อมูลสำหรับการดึงข้อมูล

ชิ้นส่วนเอกสารถูกจัดเก็บ

Retrieval Augmented Generation (RAG) ด้วย LangChain

การเตรียมข้อมูลสำหรับการดึงข้อมูล

ขั้นตอนการแบ่งข้อความถูกเน้นในกระบวนการพัฒนา RAG

Retrieval Augmented Generation (RAG) ด้วย LangChain

chunk_size

ลูกศรแสดงว่าขนาด chunk ที่เหมาะสมอยู่ตรงกลาง ขนาดใหญ่เกินไปทำให้ดึงข้อมูลช้าและตีความยาก ขณะที่ขนาดเล็กเกินไปอาจมีบริบทไม่เพียงพอ

chunk_overlap

  • รวมข้อมูลที่อยู่ เกิน ขอบเขต

สอง chunk ที่มีส่วนทับซ้อนกันถูกเน้นไว้

Retrieval Augmented Generation (RAG) ด้วย 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) ด้วย 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]
  • chunk อาจขาดบริบท
  • chunk อาจมีขนาดใหญ่กว่า chunk_size
Retrieval Augmented Generation (RAG) ด้วย LangChain

RecursiveCharacterTextSplitter

from langchain_text_splitters import RecursiveCharacterTextSplitter

splitter = RecursiveCharacterTextSplitter(

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

การแบ่งเอกสาร

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) ด้วย LangChain

การแบ่งเอกสาร

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) ด้วย LangChain

การสร้าง Embedding และการจัดเก็บ

ขั้นตอนการสร้าง Embedding และการจัดเก็บถูกเน้นไว้

Retrieval Augmented Generation (RAG) ด้วย LangChain

Embedding คืออะไร?

ประโยคถูกส่งเข้าโมเดล Embedding

Retrieval Augmented Generation (RAG) ด้วย LangChain

Embedding คืออะไร?

โมเดล Embedding แปลงข้อความให้เป็นเวกเตอร์ของค่าตัวเลข

Retrieval Augmented Generation (RAG) ด้วย LangChain

Embedding คืออะไร?

what_are_embeddings3.jpg

Retrieval Augmented Generation (RAG) ด้วย LangChain

Embedding คืออะไร?

what_are_embeddings4.jpg

Retrieval Augmented Generation (RAG) ด้วย LangChain

การสร้าง Embedding และจัดเก็บ chunk

  • สร้าง Embedding และจัดเก็บด้วย: OpenAI และ 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) ด้วย LangChain

มาฝึกกันเถอะ!

Retrieval Augmented Generation (RAG) ด้วย LangChain

Preparing Video For Download...