Late Chunking
Tìm hiểu cách phân khúc muộn (late chunking) tạo ra các embedding nhận biết ngữ cảnh, cải thiện độ chính xác của việc truy xuất và RAG, đồng thời bảo toàn ý nghĩa tài liệu trên các khối văn bản có liên quan.
Late chunking là một kỹ thuật embedding tài liệu nhằm bảo tồn ngữ cảnh xung quanh bằng cách mã hóa một tài liệu dài trước khi tạo ra các embedding cho các phần nhỏ hơn của nó. Thay vì chia nhỏ văn bản trước và thực hiện embedding cho từng chunk một cách độc lập, kỹ thuật này sử dụng một mô hình context-window lớn để tạo ra các biểu diễn token có nhận thức ngữ cảnh, sau đó gộp các token thuộc về mỗi chunk thành một vector riêng biệt. Các embeddings thu được vẫn phù hợp cho việc truy xuất đồng thời mang theo thông tin từ tài liệu rộng hơn.
Late Chunking Hoạt Động Như Thế Nào#
Một pipeline truy xuất thông thường thường tuân theo thứ tự sau: chia nhỏ, mã hóa, lưu trữ. Phương pháp này hiệu quả, nhưng một chunk đơn lẻ có thể chứa các cụm từ như “thành phần này”, “kết quả này”, hoặc “nó đã thất bại” mà không làm rõ chúng đang ám chỉ điều gì.
Late chunking thay đổi thứ tự này:
- Tài liệu được chia thành các tokens, trong khi các ranh giới chunk mong muốn được ghi lại.
- Chuỗi token hoàn chỉnh, hoặc phần lớn nhất phù hợp với context window của mô hình, đi qua một transformer ngữ cảnh dài.
- Thông qua attention mechanism của mô hình, biểu diễn của mỗi token kết hợp thông tin từ các token khác trong ngữ cảnh đó.
- Các vector token được nhóm lại theo các ranh giới đã ghi lại và kết hợp với nhau, thông thường thông qua mean pooling, để tạo ra một embedding cho mỗi chunk.
Điểm khác biệt chính nằm ở thời điểm: ranh giới vẫn tồn tại, nhưng chúng được áp dụng sau khi mã hóa ngữ cảnh thay vì trước đó. Jina AI explanation of late chunking cung cấp một sự so sánh trực quan về hai thứ tự xử lý này.
Tại Sao Việc Bảo Tôn Ngữ Cảnh Lại Quan Trọng#
Việc chia chunk giúp tài liệu phù hợp với giới hạn của mô hình và cho phép hệ thống tìm kiếm truy xuất các đoạn văn bản chính xác. Microsoft’s document chunking guidance lưu ý rằng việc biểu diễn toàn bộ một tài liệu lớn bằng một vector duy nhất cũng có thể nén quá nhiều ý tưởng vào một biểu diễn đơn lẻ.
Tuy nhiên, các chunk nhỏ hơn làm tăng nguy cơ mất ngữ cảnh. Hãy xem xét các đoạn văn liền kề sau đây:
- “Máy bơm XR-12 được lắp đặt bên cạnh cụm ống làm mát.”
- “Nó phải được thay thế sau 10.000 giờ hoạt động.”
Khi được embedding độc lập, đoạn văn thứ hai không xác định được “nó” có nghĩa là gì. Với late chunking, các biểu diễn token của đoạn văn này đã chú ý đến “máy bơm XR-12”, làm cho đoạn văn trở nên hữu ích hơn đối với một truy vấn như “Khi nào nên thay thế máy bơm XR-12?”
Late chunking đặc biệt có liên quan đến retrieval-augmented generation, nơi các đoạn văn được chọn cung cấp ngữ cảnh nền tảng cho một mô hình ngôn ngữ. Tổng quan rộng hơn từ Google Cloud RAG overview giải thích cách việc truy xuất kết nối các embedding, tìm kiếm vector và quá trình tạo có căn cứ.
Các Phương Pháp Chia Chunk và Truy Xuất Liên Quan#
Late chunking giải quyết một vấn đề khác biệt so với một số kỹ thuật có tên tương tự:
- Semantic chunking chọn các ranh giới dựa trên sự thay đổi về ý nghĩa. Late chunking xác định thời điểm mã hóa ngữ cảnh diễn ra, do đó hai kỹ thuật này có thể được kết hợp với nhau.
- Contextual retrieval làm phong phú các chunk bằng văn bản giải thích bổ sung hoặc siêu dữ liệu trước khi lập chỉ mục. Ngược lại, late chunking truyền tải ngữ cảnh một cách ngầm định thông qua các biểu diễn token.
- Chunk overlap lặp lại văn bản ở gần các ranh giới lân cận. Phương pháp này có thể bảo tôn các manh mối cục bộ nhưng làm tăng kích thước chỉ mục và có thể tạo ra các kết quả trùng lặp. Cohere’s chunking strategy guide thảo luận về cách kích thước chunk và độ trùng lặp ảnh hưởng đến việc truy xuất.
- Late interaction lưu trữ nhiều vector ở cấp độ token và so sánh chúng trong quá trình truy xuất. Late chunking thường lưu trữ một vector đã gộp cho mỗi chunk, giúp nó tương thích với một vector database thông thường.
Một reranker cũng mang tính chất bổ sung chứ không phải tương đương: nó sắp xếp lại các ứng cử viên được truy xuất sau tìm kiếm ban đầu, như được minh họa bởi Google Cloud ranking workflow.
Triển khai thực tế#
Một số embedding API hỗ trợ trực tiếp late chunking. Yêu cầu sau gửi các đoạn văn bản có thứ tự từ một tài liệu tới Jina Embedding API và trả về một embedding ngữ cảnh cho mỗi đoạn văn:
import os
import requests
chunks = [
"The XR-12 pump is installed beside the cooling manifold.",
"It must be replaced after 10,000 operating hours.",
]
payload = {
"model": "jina-embeddings-v3",
"task": "retrieval.passage",
"late_chunking": True,
"input": chunks,
}
headers = {"Authorization": f"Bearer {os.environ['JINA_API_KEY']}"}
response = requests.post(
"https://api.jina.ai/v1/embeddings",
headers=headers,
json=payload,
timeout=30,
)
response.raise_for_status()
print(len(response.json()["data"]))Số lượng đầu ra khớp với số lượng chunk đầu vào, nhưng mỗi vector phản ánh ngữ cảnh tài liệu được chia sẻ. Một quy trình tự quản lý thay thế sẽ mã hóa chuỗi token hoàn chỉnh và gộp các khoảng sau đó, như được minh họa trong late chunking implementation for vector search của Elastic.
Ứng Dụng Thực Tế và Hướng Dẫn#
Hai ứng dụng thực tế cho thấy nơi ngữ cảnh này quan trọng:
- Trợ lý kiến thức kỹ thuật: Sách hướng dẫn sản phẩm thường giới thiệu một bộ phận một lần và sau đó nhắc đến nó một cách gián tiếp. Late chunking giúp hệ thống hỗ trợ truy xuất đúng bước bảo trì thay vì một đoạn văn khác chứa ngôn ngữ chung chung tương tự.
- Tìm kiếm báo cáo computer vision: Một computer vision and RAG workflow có thể kết hợp các kết quả phát hiện, ghi chú kiểm tra, chú thích và bản ghi bảo trì. Sau khi Ultralytics YOLO26 phát hiện thiết bị hoặc lỗi, late chunking có thể cải thiện việc truy xuất trên báo cáo văn bản liên quan. Các bản ghi trực quan cũng có thể được khám phá bằng cách sử dụng một image similarity search workflow.
Sử dụng late chunking khi tài liệu chứa các tham chiếu chéo, đại từ, định nghĩa hoặc sự phụ thuộc tường thuật. Giữ các chunk liên quan theo thứ tự tài liệu, tôn trọng giới hạn ngữ cảnh của mô hình embedding, giữ lại các tiêu đề và siêu dữ liệu nguồn, đồng thời đánh giá việc truy xuất với các truy vấn thực tế. Phương pháp này làm tăng chi phí mã hóa vì nhiều token được xử lý cùng nhau, do đó các embedding chunk độc lập vẫn có thể được ưu tiên cho các bản ghi ngắn và tự chứa.






