Proxy-Pointer RAG: Độ chính xác ngang bằng Vectorless với chi phí của Vector RAG
Bài viết giới thiệu Proxy-Pointer RAG, một phương pháp mới kết hợp khả năng hiểu cấu trúc tài liệu của Vectorless RAG với tốc độ và chi phí thấp của Vector RAG. Thông qua các kỹ thuật như 'skeleton tree' và 'breadcrumb injection', phương pháp này đạt hiệu suất cao mà không cần tốn kém cho các lời gọi LLM.

Trong bối cảnh phát triển nhanh chóng của AI và Trí tuệ nhân tạo tạo sinh (Generative AI), phương pháp RAG (Retrieval-Augmented Generation) đã trở thành tiêu chuẩn để giúp các mô hình ngôn ngữ lớn (LLM) truy xuất thông tin chính xác. Gần đây, sự dịch chuyển kiến trúc sang hướng "Vectorless RAG" hoặc "Retrieval dựa trên lý luận" (Reasoning-Based Retrieval) như PageIndex đã mang lại độ chính xác ấn tượng. Tuy nhiên, cái giá phải trả là chi phí và độ trễ cao. Vậy liệu có cách nào kết hợp độ chính xác đó với hiệu suất của Vector RAG truyền thống không? Câu trả lời nằm ở Proxy-Pointer RAG.
Vấn đề của Vector RAG và Vectorless RAG
Vector RAG truyền thống hoạt động bằng cách chia nhỏ tài liệu thành các đoạn (chunks) ngẫu nhiên, chuyển đổi chúng thành vectơ và tìm kiếm dựa trên sự tương đồng toán học. Phương pháp này nhanh và rẻ, nhưng thường gặp khó khăn trong việc duy trì ngữ cảnh cấu trúc của tài liệu, dẫn đến việc trả lời sai các câu hỏi phức tạp đòi hỏi hiểu biết về tổng thể.
Cơ chế nhúng thông tin cấu trúc vào vectơ
Ngược lại, PageIndex (một dạng Vectorless RAG) xây dựng một "cây chỉ mục thông minh" (Smart Table of Contents). Nó sử dụng LLM để điều hướng qua cây cấu trúc phân cấp của tài liệu, giúp tìm kiếm chính xác hơn nhiều. Trên các bài kiểm tra, PageIndex đạt độ chính xác lên tới 98,7%.
Tuy nhiên, điểm yếu chí mạng của PageIndex là khả năng mở rộng (scalability). Để xây dựng cây chỉ mục cho một tài liệu, hệ thống cần hàng trăm lời gọi LLM để tóm tắt từng nút. Với một kho tài liệu lớn hàng trăm tài liệu, chi phí và thời gian xử lý trở nên quá lớn, khiến phương pháp này không khả thi về mặt thực tế.
Giải pháp: Proxy-Pointer RAG
Proxy-Pointer RAG ra đời như một giải pháp cân bằng: mang lại khả năng nhận biết cấu trúc (structure-aware) của Vectorless RAG nhưng giữ chi phí và độ trễ thấp của Vector RAG.
Ý tưởng cốt lõi rất trực quan: Bạn không cần LLM để tóm tắt tài liệu nhằm mang lại nhận thức cấu trúc cho cơ sở dữ liệu vectơ. Thay vào đó, bạn chỉ cần mã hóa cấu trúc đó trực tiếp vào các embedding.
Để đạt được điều này, Proxy-Pointer RAG sử dụng 5 kỹ thuật kỹ thuật "zero-cost" (gần như không tốn chi phí):
1. Xây dựng Skeleton Tree (Cây khung xương)
Thay vì sử dụng LLM đắt tiền để xây dựng cây cấu trúc, Proxy-Pointer chỉ sử dụng các biểu thức chính quy (regex) để phát hiện tiêu đề (Markdown headers) và xây dựng cây phân cấp dựa trên mức thụt lề. Quá trình này diễn ra trong vài mili-giây và hoàn toàn miễn phí. Cây kết quả có cấu trúc giống hệt PageIndex nhưng không có trường tóm tắt (summary).
2. Metadata Pointers (Con trỏ siêu dữ liệu)
Thay vì lưu trữ nội dung văn bản thuần túy trong các đoạn dữ liệu, hệ thống lưu trữ các con trỏ: node_id, line_start và line_end. Khi cần thiết, hệ thống có thể trích xuất chính xác phần văn bản đầy đủ, liền mạch từ tài liệu gốc thay vì các đoạn rời rạc.
3. Breadcrumb Injection (Tiêm đường dẫn)
Đây là kỹ thuật quan trọng nhất. Trước khi nhúng (embed) một đoạn văn bản, hệ thống sẽ thêm vào "đường dẫn" của nó trong cấu trúc tài liệu. Ví dụ: Chapter 1 > Introduction > Economic Activity > BOX 1.1.
Khi đó, vectơ không chỉ chứa nội dung mà còn bao gồm vị trí của nó trong tài liệu. Nếu người dùng hỏi về "Chapter 1", cơ sở dữ liệu vectơ sẽ dễ dàng nhận diện các đoạn thuộc chương đó nhờ thông tin có sẵn trong embedding.
4. Structure-Guided Chunking (Chia nhỏ dựa trên cấu trúc)
Khác với Vector RAG sử dụng cửa sổ trượt (sliding window) mù quáng trên toàn bộ tài liệu, Proxy-Pointer đi dọc theo Skeleton Tree. Nó chỉ chia nhỏ văn bản trong phạm vi của một nút (section) cụ thể. Điều này đảm bảo không có đoạn văn nào bị cắt ngang giữa chừng và mọi đoạn dữ liệu đều có thể truy xuất nguồn gốc rõ ràng.
5. Noise Filtering (Lọc nhiễu)
Các phần như Mục lục (Table of Contents), Tóm tắt (Executive Summary), hoặc Từ viết tắt thường chứa nhiều từ khóa nhưng ít giá trị thông tin cụ thể, gây nhiễu cho quá trình tìm kiếm. Proxy-Pointer tự động loại bỏ các nút này khỏi chỉ mục để tăng độ chính xác.
So sánh hiệu suất truy xuất
Hiệu suất và Khả năng mở rộng
Khi thử nghiệm trên một báo cáo phức tạp của Ngân hàng Thế giới (World Bank) gồm 131 trang, Proxy-Pointer RAG đã mang lại kết quả đầy ấn tượng:
- Độ chính xác: Trên 10 câu hỏi truy vấn đa dạng, Proxy-Pointer ngang bằng hoặc vượt PageIndex trong 8 câu hỏi. Nó trả lời chính xác các câu hỏi về nội dung bảng biểu cụ thể cũng như các câu hỏi đòi hỏi kiến thức cấu trúc tài liệu.
- Chi phí: Không cần lời gọi LLM nào trong quá trình lập chỉ mục (indexing), chỉ sử dụng API embedding giá rẻ. Thời gian lập chỉ mục giảm từ 5-10 phút/tài liệu (PageIndex) xuống dưới 30 giây.
- Khả năng mở rộng: Vì sử dụng cơ sở dữ liệu vectơ chuẩn (như FAISS), hệ thống có thể dễ dàng mở rộng lên hàng nghìn tài liệu mà không gặp vấn đề về hiệu năng như PageIndex.
Kết luận
Proxy-Pointer RAG chứng minh một luận điểm đơn giản nhưng mạnh mẽ: Bạn không cần một mô hình LLM đắt đỏ để tạo ra một hệ thống truy xuất có nhận thức về cấu trúc. Bằng cách thông minh hơn trong việc xử lý dữ liệu đầu vào — thêm đường dẫn, chia nhỏ theo cấu trúc và lọc nhiễu — chúng ta có thể thu hẹp khoảng cách chất lượng với các hệ thống tiên tiến nhất mà vẫn giữ được tốc độ và hiệu quả kinh tế của Vector RAG truyền thống.
Đối với các kỹ sư và nhà phát triển đang xây dựng hệ thống RAG cho doanh nghiệp, đây là một phương pháp tiếp cận đáng cân nhắc để tối ưu hóa hiệu năng mà không cần hy sinh chất lượng câu trả lời.



