การแบ่งข้อความตาม Token
การแบ่งเอกสารด้วย RecursiveCharacterTextSplitter หรือ CharacterTextSplitter นั้นสะดวกและให้ผลลัพธ์ที่ดีในหลายกรณี แต่ก็มีข้อจำกัดอยู่ประการหนึ่ง คือการแบ่งจะอิงตามจำนวนอักขระ ไม่ใช่ token ซึ่งเป็นหน่วยที่โมเดลใช้ประมวลผลจริง
ในแบบฝึกหัดนี้ จะได้แบ่งเอกสารโดยใช้ token text splitter เพื่อตรวจสอบจำนวน token ในแต่ละ chunk และมั่นใจว่าไม่เกิน context window ของโมเดล โดยได้โหลดเอกสาร PDF ไว้ในตัวแปร document แล้ว
ได้ import tiktoken และคลาสที่จำเป็นทั้งหมดไว้ให้แล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Retrieval Augmented Generation (RAG) ด้วย LangChain
คำแนะนำการฝึกหัด
- ดึงค่า encoding สำหรับ
gpt-4o-miniจากtiktokenเพื่อใช้ตรวจสอบจำนวน token ในแต่ละ chunk - สร้าง text splitter สำหรับแบ่งข้อความตามจำนวน token โดยใช้
encodingของ GPT-4o-Mini - แบ่งเอกสาร PDF ที่เก็บอยู่ในตัวแปร
documentออกเป็น chunk โดยใช้token_splitter
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Get the encoding for gpt-4o-mini
encoding = ____
# Create a token text splitter
token_splitter = ____(encoding_name=____, chunk_size=100, chunk_overlap=10)
# Split the PDF into chunks
chunks = ____
for i, chunk in enumerate(chunks[:3]):
print(f"Chunk {i+1}:\nNo. tokens: {len(encoding.encode(chunk.page_content))}\n{chunk}\n")