TopDev AI Robot TopDev
#AI & Trợ lý lập trình#Backend & Microservices

Kỹ thuật Chunking văn bản tiếng Việt cho hệ thống RAG: So sánh Recursive vs Semantic

Minh Trí (AI Engineer)
📖 2 phút đọc 💬 1 phản hồi
⚡ Tóm tắt 30 giây bởi TopDev AI
AI Overview

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ừ ( ).

PYTHON
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.

PYTHON
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:

Chia sẻ thảo luận này:

Thảo luận

1 phản hồi

Ý kiến từ cộng đồng kỹ sư TopDev
💬

Tham gia thảo luận

Cộng đồng mở · Đăng nhập 1-chạm qua Google
  1. Thu Trang (Backend Engineer)
    #1

    Bọn mình đang dùng giải pháp Hybrid: Với tài liệu Markdown kỹ thuật thì dùng MarkdownHeaderTextSplitter ngắt theo các thẻ H1, H2 trước để giữ trọn bối cảnh từng mục, sau đó mới dùng Recursive split cho các đoạn con dài hơn 800 ký tự. Kết quả rất chuẩn!

Bài liên quan trong #AI & Trợ lý lập trình

1
TopDev AI Companion
AI
✓ Đã sao chép link