Chunking là gì? Cách chia nhỏ dữ liệu để tối ưu RAG

Chunk

Chunking là gì? Cách chia nhỏ dữ liệu để tối ưu RAG

Trong một hệ thống AI có khả năng hỏi đáp dựa trên tài liệu, việc đưa toàn bộ nội dung của một cuốn sách, bộ tài liệu hoặc hàng nghìn trang PDF vào mô hình ngôn ngữ lớn không phải lúc nào cũng khả thi. Hệ thống cần một cách để tổ chức dữ liệu, tìm đúng phần thông tin liên quan và chỉ đưa những nội dung cần thiết vào câu trả lời.

Đó là lý do Chunking trở thành một bước quan trọng trong nhiều hệ thống Retrieval-Augmented Generation (RAG).

Chunking không đơn giản chỉ là cắt văn bản thành những đoạn có độ dài bằng nhau. Cách chia tài liệu có thể ảnh hưởng đến ý nghĩa của từng đoạn, chất lượng Embedding, kết quả tìm kiếm và lượng thông tin mà LLM nhận được.

1. Chunking là gì?

Chunking là quá trình chia một tài liệu lớn thành những đoạn nhỏ hơn, thường được gọi là chunks, để thuận tiện cho việc lưu trữ, xử lý, tìm kiếm và truy xuất thông tin.

Ví dụ, một tài liệu hướng dẫn dài 100 trang có thể được chia thành nhiều đoạn nhỏ. Mỗi đoạn chứa một phần nội dung của tài liệu gốc và có thể được chuyển thành Embedding để phục vụ Semantic Search.

Quy trình cơ bản có thể hình dung như sau:

Document
   |
   v
Document Processing
   |
   v
Chunking
   |
   +------ Chunk 1
   |
   +------ Chunk 2
   |
   +------ Chunk 3
   |
   v
Embedding
   |
   v
Vector Database

Mục tiêu của Chunking là tạo ra những đơn vị thông tin phù hợp với cách hệ thống tìm kiếm và sử dụng dữ liệu.

2. Vì sao Chunking quan trọng trong RAG?

2.1. Tìm kiếm chính xác hơn

Giả sử một tài liệu dài đề cập đến nhiều chủ đề: cài đặt phần mềm, xử lý lỗi, cấu hình hệ thống và bảo mật.

Nếu toàn bộ tài liệu được biểu diễn bằng một Embedding duy nhất, vector đó có thể không thể hiện rõ nội dung cụ thể mà người dùng đang cần tìm.

Ngược lại, nếu tài liệu được chia thành các đoạn hợp lý, hệ thống có thể tìm đúng phần giải thích vấn đề mà người dùng hỏi.

2.2. Giảm lượng context không cần thiết

Trong RAG, những đoạn tài liệu được truy xuất thường được đưa vào context của LLM.

Nếu mỗi đoạn quá dài, hệ thống có thể đưa nhiều thông tin không liên quan vào context. Nếu đoạn quá ngắn, thông tin cần thiết có thể bị tách rời khỏi phần giải thích hoặc điều kiện đi kèm.

Chunking hợp lý giúp cân bằng giữa việc giữ đủ ngữ cảnh và hạn chế thông tin dư thừa.

2.3. Hỗ trợ xử lý tài liệu lớn

Chunking giúp hệ thống tổ chức tài liệu thành những đơn vị nhỏ để xử lý độc lập. Các đoạn này có thể được lập chỉ mục, tạo Embedding và truy xuất theo nhu cầu.

Điều này đặc biệt hữu ích khi xây dựng hệ thống tìm kiếm trên kho tài liệu doanh nghiệp, tài liệu kỹ thuật hoặc cơ sở kiến thức nội bộ.

3. Chunk Size là gì?

Chunk Size là kích thước của một chunk. Tùy hệ thống, kích thước này có thể được đo bằng số ký tự, số từ hoặc số token.

Trong các ứng dụng LLM, token thường là đơn vị đáng quan tâm vì mô hình xử lý đầu vào và đầu ra theo token.

Ví dụ minh họa, một đoạn văn bản có thể được chia theo các cấu hình khác nhau:

Cấu hình Đặc điểm Rủi ro có thể gặp
Chunk nhỏ Nội dung tập trung, chi tiết Dễ mất ngữ cảnh khi chia tách
Chunk vừa Cân bằng giữa chi tiết và ngữ cảnh Cần thử nghiệm để tìm cấu hình phù hợp
Chunk lớn Giữ được nhiều nội dung liên quan Có thể chứa nhiều thông tin không cần thiết

Không tồn tại một Chunk Size tối ưu cho mọi bài toán. Kích thước phù hợp phụ thuộc vào cấu trúc tài liệu, loại câu hỏi, Embedding Model và giới hạn context của LLM.

4. Chunk Overlap là gì?

Chunk Overlap là phần nội dung được lặp lại giữa hai chunk liên tiếp.

Overlap giúp hạn chế việc thông tin quan trọng bị chia cắt ngay tại ranh giới giữa hai đoạn.

Ví dụ, một tài liệu được chia thành các đoạn có 100 token và hai đoạn liên tiếp có 20 token trùng nhau:

Chunk 1:
Token 1 ---------------- Token 100

Chunk 2:
                    Token 81 ---------------- Token 180

Phần overlap:
                    Token 81 ---- Token 100

Trong ví dụ này, 20 token cuối của Chunk 1 xuất hiện lại ở đầu Chunk 2.

Overlap có thể giúp duy trì tính liên tục của nội dung, nhưng không phải lúc nào cũng cần thiết ở mức lớn.

Nếu overlap quá cao, nhiều chunk sẽ chứa nội dung trùng lặp. Điều này có thể làm tăng chi phí embedding, dung lượng lưu trữ và số lượng kết quả gần giống nhau trong quá trình truy xuất.

5. Các phương pháp Chunking phổ biến

5.1. Fixed-Size Chunking

Fixed-Size Chunking chia văn bản thành các đoạn theo một kích thước cố định.

Ví dụ, hệ thống chia văn bản thành các đoạn khoảng 500 token, với một phần overlap giữa những đoạn liên tiếp.

Ưu điểm:

  • Dễ triển khai.
  • Cấu hình đơn giản.
  • Dễ kiểm soát kích thước dữ liệu.

Hạn chế:

  • Có thể cắt giữa câu hoặc giữa một ý đang được giải thích.
  • Không tận dụng đầy đủ cấu trúc tự nhiên của tài liệu.

Phương pháp này phù hợp để làm baseline ban đầu khi thử nghiệm một hệ thống RAG.

5.2. Recursive Chunking

Recursive Chunking chia văn bản theo nhiều cấp độ phân tách. Hệ thống có thể ưu tiên chia theo các ranh giới lớn như đoạn văn, sau đó tiếp tục chia nhỏ hơn nếu nội dung vẫn vượt quá kích thước mục tiêu.

Ví dụ:

Document
   |
   v
Split by Sections
   |
   v
Split by Paragraphs
   |
   v
Split by Sentences
   |
   v
Chunks

Thứ tự và quy tắc phân tách cụ thể phụ thuộc vào công cụ được sử dụng.

Ưu điểm: thường giữ được cấu trúc nội dung tốt hơn so với việc cắt hoàn toàn theo số ký tự cố định.

Hạn chế: cần thiết kế quy tắc phân tách phù hợp với từng loại dữ liệu.

5.3. Semantic Chunking

Semantic Chunking cố gắng chia văn bản dựa trên sự thay đổi về chủ đề hoặc ý nghĩa, thay vì chỉ dựa vào kích thước cố định.

Ví dụ, một đoạn giải thích về Embedding có thể được giữ cùng nhau, trong khi phần chuyển sang Vector Database có thể được xem là một đơn vị nội dung khác.

Ưu điểm: có thể tạo ra các đoạn giữ được tính thống nhất về chủ đề.

Hạn chế: cách triển khai thường phức tạp hơn và có thể cần thêm bước tính toán để xác định ranh giới.

Semantic Chunking không bảo đảm kết quả luôn tốt hơn. Hiệu quả cần được kiểm tra trên dữ liệu và truy vấn thực tế.

5.4. Structure-Based Chunking

Structure-Based Chunking tận dụng cấu trúc sẵn có của tài liệu.

Ví dụ:

  • Tài liệu Markdown: chia theo Heading và Section.
  • Tài liệu HTML: chia theo các phần tử nội dung phù hợp.
  • Tài liệu pháp lý: chia theo điều, khoản và mục.
  • Tài liệu kỹ thuật: chia theo chương, mục và hướng dẫn.

Phương pháp này hữu ích khi cấu trúc tài liệu mang ý nghĩa quan trọng và có thể được trích xuất một cách đáng tin cậy.

6. So sánh các phương pháp Chunking

Phương pháp Cơ sở chia Ưu điểm chính Lưu ý
Fixed-Size Kích thước cố định Đơn giản, dễ kiểm soát Có thể cắt ngang ý nghĩa
Recursive Nhiều cấp độ phân tách Tận dụng ranh giới văn bản Cần chọn quy tắc phù hợp
Semantic Độ liên quan về ngữ nghĩa Có thể giữ nội dung cùng chủ đề Phức tạp và tốn thêm tính toán
Structure-Based Cấu trúc tài liệu Giữ được cấu trúc tự nhiên Phụ thuộc chất lượng dữ liệu đầu vào

Trong thực tế, các phương pháp này có thể được kết hợp. Chẳng hạn, hệ thống chia tài liệu theo Heading trước, sau đó tiếp tục dùng Recursive Chunking để kiểm soát kích thước từng đoạn.

7. Chunking ảnh hưởng đến Embedding như thế nào?

Embedding Model chuyển văn bản thành vector để hệ thống có thể thực hiện tìm kiếm ngữ nghĩa.

Chất lượng biểu diễn phụ thuộc một phần vào nội dung được đưa vào mô hình. Vì vậy, cách chia chunk có thể ảnh hưởng đến kết quả Embedding.

Hãy xem xét hai trường hợp:

Trường hợp A: Chunk quá rộng

Một chunk chứa nhiều chủ đề khác nhau, chẳng hạn định nghĩa, hướng dẫn cài đặt, lỗi thường gặp và ví dụ lập trình.

Vector được tạo từ đoạn này có thể không phản ánh rõ một ý cụ thể mà người dùng đang tìm kiếm.

Trường hợp B: Chunk quá hẹp

Một chunk chỉ chứa một câu như “Điều này giúp cải thiện hiệu quả.” Nếu không có câu trước đó, người đọc có thể không biết “điều này” đang nói đến phương pháp nào.

Chunk nhỏ không tự động tạo ra Embedding tốt hơn, bởi ngữ cảnh có thể bị mất khi chia văn bản quá chi tiết.

Do đó, mục tiêu là tạo ra những đoạn đủ tập trung nhưng vẫn giữ được thông tin cần thiết để hiểu nội dung.

8. Chunking trong pipeline RAG

Chunking thường diễn ra trong giai đoạn chuẩn bị dữ liệu, trước khi người dùng gửi câu hỏi.

                Documents
                    |
                    v
             Text Extraction
                    |
                    v
                Chunking
                    |
                    v
                Embedding
                    |
                    v
              Vector Database
                    |
              User Question
                    |
                    v
                Retrieval
                    |
                    v
             Relevant Chunks
                    |
                    v
                   LLM
                    |
                    v
                  Answer

Trong một hệ thống thực tế, Retrieval có thể sử dụng Vector Search, Keyword Search hoặc Hybrid Search. Reranking cũng có thể được bổ sung để sắp xếp lại những chunk được truy xuất trước khi đưa vào context.

Điều quan trọng là Chunking không hoạt động độc lập. Chất lượng của nó cần được đánh giá cùng với cách tạo Embedding, phương pháp Retrieval và chiến lược xây dựng context.

9. Những lỗi thường gặp khi thiết kế Chunking

9.1. Chọn kích thước chunk theo cảm tính

Một cấu hình được sử dụng thành công trong dự án này chưa chắc phù hợp với một dự án khác. Cần thử nghiệm nhiều kích thước trên tập truy vấn đại diện.

9.2. Chia tách các phần phụ thuộc vào nhau

Nếu tiêu đề, điều kiện hoặc phần giải thích bị tách khỏi nội dung chính, chunk có thể trở nên khó hiểu khi được truy xuất độc lập.

9.3. Sử dụng overlap quá lớn

Overlap quá lớn có thể tạo nhiều chunk gần như giống nhau, làm tăng chi phí xử lý và khiến kết quả truy xuất chứa thông tin trùng lặp.

9.4. Bỏ qua metadata

Ngoài nội dung văn bản, hệ thống nên cân nhắc lưu những metadata hữu ích như tên tài liệu, tiêu đề mục, trang hoặc loại tài liệu.

Metadata giúp hệ thống truy xuất và xác định nguồn thông tin thuận tiện hơn.

9.5. Chỉ đánh giá chunk riêng lẻ

Một chunk có vẻ hợp lý khi đọc riêng chưa chắc là lựa chọn tốt nhất cho mọi truy vấn. Cần kiểm tra xem hệ thống có tìm đúng đoạn tài liệu và cung cấp đủ context để trả lời câu hỏi hay không.

10. Cách đánh giá chiến lược Chunking

Để lựa chọn chiến lược phù hợp, có thể xây dựng một quy trình thử nghiệm có kiểm soát.

  1. Chuẩn bị một tập câu hỏi đại diện cho người dùng.
  2. Xác định những đoạn tài liệu được xem là phù hợp với từng câu hỏi.
  3. Thử nghiệm các phương pháp Chunking và kích thước khác nhau.
  4. Giữ nhất quán các thành phần khác khi so sánh.
  5. Đánh giá chất lượng Retrieval bằng Precision@K, Recall@K hoặc nDCG@K.
  6. Đánh giá thêm chất lượng câu trả lời, độ trễ và chi phí của hệ thống RAG.

Không nên chỉ dựa vào một chỉ số duy nhất. Ví dụ, tăng Recall@K có thể giúp hệ thống tìm được nhiều tài liệu liên quan hơn, nhưng cũng có thể làm tăng số lượng đoạn cần xử lý.

Chiến lược phù hợp là chiến lược đáp ứng tốt yêu cầu thực tế của hệ thống, không nhất thiết là chiến lược phức tạp nhất.

11. Tổng kết

Chunking là bước chia tài liệu thành những đoạn nhỏ để phục vụ xử lý, tạo Embedding và truy xuất thông tin trong nhiều hệ thống AI.

Các khái niệm quan trọng cần ghi nhớ:

  • Chunk Size: kích thước của mỗi đoạn.
  • Chunk Overlap: phần nội dung lặp lại giữa các đoạn liền kề.
  • Fixed-Size Chunking: chia theo kích thước cố định.
  • Recursive Chunking: chia theo nhiều cấp độ phân tách.
  • Semantic Chunking: chia dựa trên sự thay đổi về ngữ nghĩa.
  • Structure-Based Chunking: tận dụng cấu trúc tự nhiên của tài liệu.

Không có một chiến lược Chunking tối ưu cho mọi hệ thống. Cách lựa chọn cần dựa trên đặc điểm dữ liệu, câu hỏi của người dùng và kết quả đánh giá thực tế.

Khi được thiết kế hợp lý, Chunking tạo nền tảng tốt hơn cho Embedding, Semantic Search, Hybrid Search, Reranking và toàn bộ pipeline RAG.

Tài liệu tham khảo

Khám phá thêm tại MCNA Technology School

Nếu bạn muốn tìm hiểu thêm về Data, AI và các ứng dụng trí tuệ nhân tạo, hãy tham khảo các chương trình học tại MCNA Technology School:

Combo 5 khóa AI và Power BI

Combo Python


Tác giả: Bùi Đình Tuyển – Data Analyst tại MCNA Technology School

 

MCNA Technology School là đơn vị tiên phong đào tạo AI, Big Data, Business Intelligence tại Việt Nam. Chuyên sâu về Power BI, Python, SQL và Data Analytics — đối tác đào tạo của 300+ doanh nghiệp.

Đối tác đào tạo: Viettel Global, Masan Group, Techcombank, VPBank, Daikin.

→ Chỉ mục