Kỹ thuật Chunking văn bản tiếng Việt cho hệ thống RAG: So sánh Recursive vs Semantic
Thách thức của việc phân đoạn văn bản tiếng Việt Trong các hệ thống RAG, Chunking chia nhỏ tài liệu là khâu quyết định trực tiếp đến 70% chất lượng câu trả lời của AI. Đối với tiếng Việt, cấu trúc câ…
☰ Mục lục bài viết (5 phần) Mở / Đóng mục lục
Thách thức của việc phân đoạn văn bản tiếng Việt#
Trong các hệ thống RAG, Chunking (chia nhỏ tài liệu) là khâu quyết định trực tiếp đến 70% chất lượng câu trả lời của AI. Đối với tiếng Việt, cấu trúc câu ghép dài, dấu chấm câu và các đại từ xưng hô nếu bị cắt đứt giữa chừng sẽ làm vector embedding bị méo mó ngữ nghĩa.
Bài viết này so sánh 2 phương pháp phân đoạn phổ biến: Recursive Character Splitting và Semantic Chunking.
1. Recursive Character Splitting (Phân tách đệ quy)#
Phương pháp này chia tài liệu theo danh sách ký tự ưu tiên giảm dần: đoạn văn (\n\n), dòng (\n), câu (. ), từ ( ).
from langchain_text_splitters import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(
chunk_size=500,
chunk_overlap=50,
separators=["\n\n", "\n", ". ", "; ", " ", ""]
)
- Ưu điểm: Cực nhanh, tốn ít tài nguyên CPU.
- Nhược điểm: Đôi khi vẫn cắt ngang một ý tưởng trọn vẹn nếu đoạn văn quá dài.
2. Semantic Chunking (Phân đoạn theo ngữ nghĩa)#
Phương pháp này tính khoảng cách vector embedding giữa các câu liên tiếp. Khi khoảng cách đột ngột vượt qua một ngưỡng (threshold) nhất định, chứng tỏ chủ đề đã thay đổi và hệ thống sẽ ngắt thành chunk mới.
from langchain_experimental.text_splitter import SemanticChunker
from langchain_openai import OpenAIEmbeddings
semantic_splitter = SemanticChunker(
OpenAIEmbeddings(model="text-embedding-3-small"),
breakpoint_threshold_type="percentile",
breakpoint_threshold_amount=90
)
chunks = semantic_splitter.split_text(vietnamese_article)
Bảng so sánh thực nghiệm trên 100 văn bản quy chế nội bộ#
| Chỉ số | Recursive Splitting | Semantic Chunking |
|---|---|---|
| Thời gian xử lý | 0.12s / 10 trang | 3.8s / 10 trang (Cần gọi model embedding) |
| Độ trọn vẹn ngữ nghĩa | 7.5/10 | 9.2/10 |
| Điểm Hit-rate của RAG | 81% | 89% |
Góc thảo luận#
Anh em đang áp dụng chiến lược chunking nào cho tài liệu tiếng Việt? Có anh em nào kết hợp Markdown header splitting trước khi chunking không?
Xem thêm nội dung liên quan:
Thảo luận
1 phản hồi
Tham gia thảo luận
Bài liên quan trong #AI & Trợ lý lập trình
-
Lập trình viên có bị thay thế bởi AI không? 5 kỹ năng bắt buộc phải nâng cấp trong 2 năm tới
Hoàng Nam (Tech Lead) · 💬 1 -
Áp dụng Model Context Protocol (MCP) của Anthropic để kết nối AI với Postgres và Docker
Hoàng Nam (Tech Lead) · 💬 1 -
So sánh mô hình Embedding đa ngữ: OpenAI text-embedding-3 vs BGE-M3 vs Cohere
Minh Trí (AI Engineer) · 💬 1 -
Xây dựng Voice AI Agent thời gian thực với WebRTC và Whisper Live: Độ trễ dưới 500ms
Lan Anh (Senior Frontend) · 💬 1 -
Cấu hình Rate Limiting ở tầng Nginx và API Gateway: Chống DDOS Layer 7 hiệu quả
Đức Huy (DevOps Specialist) · 💬 1