Đơn vị 3 / 11

Chunking và chuẩn bị tài liệu

Lợi nhuận:

  • Đánh giá bằng số lượng kích thước khối, sự chồng chéo và sự cân bằng phân đoạn ngữ nghĩa
  • Chọn chiến lược phân đoạn thích hợp cho các loại tài liệu khác nhau (PDF, bảng, mã, nhật ký trò chuyện)
  • Tăng cường chất lượng truy xuất và lọc bằng cách thêm siêu dữ liệu vào từng đoạn

Đây là bước bị bỏ qua nhiều nhất nhưng lại mang tính quyết định nhất trong RAG: cách bạn chia nhỏ tài liệu. Điều này được gọi là chunking. Ngay cả khi bạn đưa cùng một tài liệu cho cùng một mô hình, do phân đoạn không tốt nên việc truy xuất sẽ trả về phần sai và mô hình sẽ không bao giờ tạo ra câu trả lời hay. Trong phần này, chúng tôi đề cập đến các chiến lược phân mảnh, cách điều chỉnh chúng theo loại tài liệu và cách thêm siêu dữ liệu có ý nghĩa vào từng phân đoạn.

Tại sao chúng ta cắt nhỏ?

Có ba lý do. Đầu tiên, các mô hình nhúng chuyển đổi văn bản có độ dài nhất định thành một vectơ có ý nghĩa; Nếu toàn bộ chương 40 trang được nhồi nhét vào một vectơ duy nhất, ý nghĩa sẽ trở nên "mờ". Thứ hai, chúng tôi muốn cung cấp cho mô hình chỉ phần cần thiết làm bối cảnh; việc bàn giao toàn bộ tài liệu là tốn kém và mất tập trung. Thứ ba, để việc truy xuất được chính xác, đơn vị tìm kiếm phải nhỏ và tập trung.

Vì vậy chunk là đơn vị truy xuất nhỏ nhất. Nó không nên quá lớn hoặc quá nhỏ – vừa phải.

Kích thước chunk và cân bằng chồng chéo

Có hai cài đặt chính: kích thước khối (có bao nhiêu mã thông báo/từ trong một khối) và chồng chéo (phần được chia sẻ bởi các khối lân cận).

Các phần rất nhỏ (ví dụ: 100 mã thông báo): tập trung nhưng bị ngắt kết nối khỏi ngữ cảnh. Anh ấy nói "trong 14 ngày", nhưng 14 ngày còn lại ở câu trước. Các khối rất lớn (ví dụ: 2000 mã thông báo): giữ nguyên bối cảnh nhưng có nhiều luồng được trộn lẫn vào; việc nhúng trở nên lộn xộn và các chủ đề không liên quan đến với nhau.

Sự chồng chéo giải quyết vấn đề ranh giới. Nếu một câu rơi chính xác vào ranh giới của hai phần, nó sẽ được chia thành hai phần mà không chồng chéo lên nhau và ý nghĩa của nó sẽ bị mất. Sự chồng chéo của 50-100 mã thông báo đảm bảo rằng thông tin nằm trong giới hạn vẫn còn nguyên vẹn ở ít nhất một phần.

Kích thước đoạn

Lợi thế

Nhược điểm

nội dung phù hợp

Nhỏ (100-250 token)

Độ nhạy cao, tập trung

Bối cảnh có thể bị phá vỡ

Câu hỏi thường gặp, bài viết ngắn, định nghĩa

Trung bình (300-600 token)

Cân bằng; hầu hết các kịch bản

Thủ tục, văn bản chính sách

Lớn (800-1500 token)

Tính toàn vẹn của bối cảnh

nhúng mờ

Kể chuyện, giải thích dài dòng

Mẹo: Nếu bạn không biết bắt đầu từ đâu, hãy bắt đầu với đoạn mã thông báo 400-500 và chồng chéo 50-80 mã thông báo; sau đó đo lường và điều chỉnh bằng dữ liệu của riêng bạn. Kích thước "đúng" không phải là phổ quát, nó phụ thuộc vào ngữ cảnh.

Chiến lược chia nhỏ

Kích thước cố định: Cắt bớt văn bản mỗi N mã thông báo. Nó đơn giản và nhanh chóng nhưng có thể làm gián đoạn giữa câu.

Dựa trên dấu phân cách (đệ quy/dấu phân cách): Phân chia theo ranh giới đoạn văn và sau đó là câu; Nó bảo tồn tốt hơn tính toàn vẹn của ý nghĩa. Hầu hết các hệ thống sản xuất đều bắt đầu với điều này.

Phân đoạn ngữ nghĩa: Nó xem xét phần nhúng của các câu và phân chia chúng ở nơi xảy ra sự thay đổi chủ đề. Đó là phương pháp có chất lượng cao nhất nhưng đắt tiền nhất; Với khối lượng lớn, chi phí giao dịch tăng lên.

Nhận biết cấu trúc: Sử dụng cấu trúc tài liệu như tiêu đề, phần, bảng. Ví dụ: chia tài liệu Markdown theo tiêu đề đảm bảo rằng mỗi phần đều mang tiêu đề riêng.

Điều chỉnh theo loại tài liệu

Không phải mọi tài liệu đều giống nhau. Chiến lược thay đổi theo loại:

  • PDF/văn bản chính sách: Dựa trên dấu trang, kích thước trung bình. Xóa phần lặp lại trên/dưới của trang (đầu trang/chân trang).
  • Bảng: Không đưa dòng này ra khỏi ngữ cảnh; giữ mỗi hàng với thông tin tiêu đề ("Mặt hàng: X, Giá: Y, Kho: Z"). Việc chuyển đổi bảng thô thành văn bản thuần thường là điều cần thiết.
  • Mã: Phân chia theo ranh giới chức năng/lớp; Đừng cắt bỏ một chức năng nào đó.
  • Ghi âm trò chuyện/vé: Chia theo tin nhắn hoặc vòng trò chuyện; Duy trì kiến ​​thức về ai đã nói gì.

# chunking dựa trên dấu ngoặc (khái niệm) = bol( văn bản, target_size=450, # token chồng chéo=70, # dấu ngoặc vuông=["\n\n", "\n", ". ", " "] # đoạn đầu tiên, từ cuối cùng)

Thêm siêu dữ liệu vào mỗi bản nhạc

Chunking không chỉ là "chia"; là làm phong phú thêm từng phần. Mỗi thẻ bạn đính kèm vào bản nhạc đều có giá trị bằng vàng để lọc và trích dẫn nguồn trong tương lai.

# Đoạn văn phong phú (khái niệm){ "text": "Nghỉ phép có lương hàng năm là 14 ngày với 1-5 năm làm việc...", "siêu dữ liệu": { "source": "ik_el_kitabi_v7.pdf", "section": "5.2 Nghỉ phép hàng năm", "trang": 23, "ngày": "2025-06", "bộ phận": "IK", "quyền riêng tư": "nội bộ" }}

Một kỹ thuật mạnh mẽ khác là thêm tiêu đề theo ngữ cảnh: viết tiêu đề của chương ở đầu mỗi phần. Vì vậy, ngay cả một đoạn rời rạc như “Trong 14 ngày” cũng được lồng ghép tốt hơn và ý nghĩa hơn là “Nghỉ phép hàng năm - 14 ngày”.

Phân đoạn yếu / Phân đoạn mạnh

Yếu (cắt cứng mù, không có siêu dữ liệu):

Cắt bớt văn bản sau mỗi 1000 ký tự. Chỉ giữ lại văn bản.# Kết quả: các bảng được chia ở giữa, "14 ngày" không có ngữ cảnh,# không biết nó đến từ tài liệu nào, không thể thực hiện bộ lọc.

Mạnh mẽ (nhận biết cấu trúc + tiêu đề + siêu dữ liệu):

Chia tài liệu theo tiêu đề; thêm tiêu đề phần cho mỗi phần;đính kèm siêu dữ liệu nguồn, trang, ngày tháng và quyền riêng tư; chuyển đổi các hàng bảng thành văn bản thuần túy với các tiêu đề của chúng.# Kết quả: tập trung, theo ngữ cảnh, có thể lọc, có thể tìm nguồn.

Ba hộp nhỏ

Trường hợp 1 - Thảm họa sơn. Một nhóm tài chính đã chia bảng giá 200 trang một cách mù quáng; các hàng trong bảng được chia ngẫu nhiên. "Giá của sản phẩm X là bao nhiêu?" Model đọc sai dòng và đưa ra giá sai (9 trên 12 trường hợp sai). Khi tôi chuyển đổi các hàng trong bảng thành văn bản thuần túy ở định dạng "Sản phẩm: … | Giá: … | Đơn vị: …” lỗi giảm xuống 0 trên 12.

Trường hợp 2 - Đoạn cực lớn. Trong wiki, mỗi trang được tạo thành từ một đoạn duy nhất (một số người cho rằng 3.000 mã thông báo). Việc nhúng bị mờ vì có "nghỉ phép", "làm thêm giờ" và "bảng lương" trên một trang; Phần giờ làm việc cũng có tác dụng liên quan đến câu hỏi nghỉ phép. Khi các trang được chia thành kích thước trung bình theo tiêu đề, khả năng thu hồi@5 tăng từ 64% lên 91%.

Trường hợp 3 - Câu rút gọn không trùng lặp. Cắt cố định 250 mã thông báo cho nhóm pháp lý, không trùng lặp. Một định nghĩa quan trọng nằm ngay trên ranh giới của hai phần và bị chia làm hai; Cả cái này lẫn cái kia đều không có câu trả lời đầy đủ. Khi chồng chéo 60 mã thông báo được thêm vào, định nghĩa tương tự vẫn được giữ nguyên trong một phần và câu trả lời đúng sẽ được trả về.

Những lỗi thường gặp

  • Blind cố định cắt: Chia câu, bảng ở giữa; ý nghĩa bị mất.
  • Để phần chồng chéo ở mức 0: Thông tin rơi vào ranh giới sẽ bị chia cắt và mất đi.
  • Không thêm siêu dữ liệu: Việc lọc và hiển thị nguồn trở nên bất khả thi.
  • Để nguyên bảng: Mô hình không thể giải quyết cấu trúc bảng; Chuyển đổi dòng thành văn bản thuần túy.
  • Áp dụng một chiến lược: PDF, mã và bảng không được phân chia theo cùng một phương pháp; Thích ứng với thể loại.
Chú ý: Đừng đặt Chunking một lần rồi quên nó. Đo lường lại chất lượng truy xuất khi có loại tài liệu mới (vé từ hệ thống mới, tệp PDF được quét). Dữ liệu đầu vào không hợp lệ có nghĩa là phản hồi không tốt ("rác vào, rác ra").

Tóm lại

  • Chunk là đơn vị truy xuất nhỏ nhất; Không quá lớn cũng không quá nhỏ – cần cân đối theo nội dung.
  • Kích thước chunk biểu thị sự cân bằng giữa bối cảnh tập trung; Chồng chéo quản lý mất ranh giới.
  • Phân đoạn dựa trên khung và nhận biết cấu trúc là điểm khởi đầu của hầu hết các hệ thống thế hệ; phân đoạn ngữ nghĩa có chất lượng tốt nhưng đắt tiền.
  • Các loại như bảng, tập lệnh và trò chuyện yêu cầu chiến lược riêng; Chuyển đổi bảng thành văn bản thuần túy.
  • Thêm siêu dữ liệu nguồn/ngày/chương/quyền riêng tư và tiêu đề phần cho mỗi bản nhạc; Đây là cơ sở của việc lọc và trích dẫn.

Nhiệm vụ ứng dụng

Chia một phần tài liệu bạn chọn thành ba cách khác nhau: (1) các phần nhỏ gồm 200 mã thông báo, (2) các phần vừa gồm 500 mã thông báo (70 mã thông báo chồng lên nhau), (3) các phần lớn đơn lẻ. Đặt 3 câu hỏi giống nhau cho mỗi chiến lược, đánh dấu thủ công phần nào cần đưa vào và viết ra lý do cho chiến lược nào phù hợp nhất với tài liệu đó. Sau đó, thêm ít nhất bốn trường siêu dữ liệu và “tiêu đề chương” vào mỗi bản nhạc. Nếu tài liệu chứa một bảng, hãy chuyển đổi một hàng trong bảng thành văn bản thuần túy ở định dạng "field:value".

danh sách kiểm tra

  • [ ] Tôi có thể nói rằng chunk là đơn vị truy xuất nhỏ nhất và kích thước là sự cân bằng giữa bối cảnh tiêu điểm.
  • [ ] Tôi biết tại sao Chồng chéo ngăn ngừa mất ranh giới.
  • [ ] Tôi có thể phân biệt giữa phân đoạn dựa trên dấu ngoặc, phân đoạn ngữ nghĩa và nhận biết cấu trúc.
  • [ ] Tôi có thể điều chỉnh chiến lược cho bảng, mã và trò chuyện.
  • [ ] Tôi tăng cường khả năng truy xuất bằng cách thêm siêu dữ liệu và tiêu đề chương vào mỗi bản nhạc.