Thủ thuật
Xây dựng pipeline RAG đa phương thức với NVIDIA NeMo Retriever, LanceDB và NIM
(giờ Việt Nam)
Tóm tắt AI
Hướng dẫn chi tiết quy trình xây dựng RAG đa phương thức: từ trích xuất dữ liệu PDF, sử dụng NIM để xử lý hình ảnh/bảng biểu, đến lưu trữ vector tại LanceDB và tối ưu hóa bằng kỹ thuật reranking.
Bản dịch AI

Trong hướng dẫn này, chúng ta sẽ xây dựng một pipeline RAG (Retrieval-Augmented Generation) đa phương thức nâng cao với NVIDIA NeMo Retriever. Chúng ta bắt đầu bằng việc cấu hình môi trường Python 3.12, cài đặt các gói cần thiết và thực hiện trích xuất văn bản từ PDF ngoại tuyến mà không cần dựa vào GPU hay khóa API bên ngoài. Sau đó, chúng ta mở rộng quy trình làm việc với các endpoint NVIDIA NIM được lưu trữ để phát hiện các thành phần trên trang, trích xuất bảng biểu, biểu đồ và đồ họa thông tin, tạo các dense vector embedding và lưu trữ nội dung đã xử lý vào LanceDB. Cuối cùng, chúng ta triển khai truy xuất dày đặc (dense retrieval), xếp hạng lại bằng ngôn ngữ hình ảnh (vision-language reranking), tìm kiếm lọc theo metadata, tạo phản hồi có căn cứ với trích dẫn nội dòng và đánh giá recall-at-k nhẹ để xác thực chất lượng truy xuất trên nội dung tài liệu đa phương thức.
Chúng ta cấu hình môi trường Python 3.12, cài đặt NVIDIA NeMo Retriever và nhập các thành phần cần thiết cho việc nạp dữ liệu (ingestion) và truy xuất. Chúng ta tải xuống tệp PDF đa phương thức mẫu và xác định nó làm tài liệu đầu vào cho pipeline. Sau đó, chúng ta thực hiện trích xuất văn bản ngoại tuyến dựa trên CPU với PDFium và kiểm tra các hàng, cột và nội dung trang đã trích xuất.
Chúng ta tải khóa API của NVIDIA một cách an toàn và xác định các endpoint NIM được lưu trữ cho việc phát hiện bố cục, OCR, trích xuất bảng, phân tích đồ họa, tạo embedding, xếp hạng lại và tạo phản hồi. Chúng ta tạo một pipeline nạp dữ liệu đa phương thức giúp trích xuất văn bản, bảng biểu, biểu đồ và đồ họa thông tin, đồng thời áp dụng kỹ thuật chia nhỏ (chunking) nhận biết token và khử trùng lặp nội dung. Chúng ta tạo embedding cho nội dung đã trích xuất và tải các vector cùng metadata thu được lên bảng LanceDB.
Chúng ta kiểm tra các thành phần đa phương thức đã trích xuất và chuyển đổi tài liệu đã xử lý sang định dạng Markdown theo cấp độ trang và toàn bộ tài liệu. Chúng ta cấu hình một bộ truy xuất dày đặc (dense retriever) để nhúng các truy vấn của người dùng và tìm kiếm trong chỉ mục vector LanceDB các đoạn tài liệu phù hợp nhất. Chúng ta kiểm tra cả truy vấn đơn lẻ và truy vấn theo lô, đồng thời hiển thị số trang, điểm tương đồng và bản xem trước của văn bản được truy xuất.
Chúng ta tạo một pipeline xếp hạng lại bằng ngôn ngữ hình ảnh giúp truy xuất tập hợp ứng viên rộng hơn và sắp xếp lại kết quả dựa trên mức độ liên quan về ngữ nghĩa. Chúng ta cũng áp dụng bộ lọc dựa trên văn bản để thu hẹp kết quả truy xuất vào các đoạn chứa nội dung cụ thể từ tài liệu. Chúng ta kiểm tra trực tiếp bảng LanceDB để xác minh số lượng bản ghi được lưu trữ và kiểm tra văn bản đã được lập chỉ mục.
Chúng ta kết hợp các đoạn tài liệu đã truy xuất với mô hình ngôn ngữ Nemotron được lưu trữ để tạo câu trả lời chỉ dựa trên ngữ cảnh được cung cấp. Chúng ta bao gồm các tài liệu tham khảo được đánh số và metadata trang để các phản hồi được tạo ra có thể truy xuất nguồn gốc từ tài liệu gốc. Chúng ta kết thúc bằng việc tính toán recall-at-k cho một tập hợp nhỏ các câu trả lời dự kiến và báo cáo cơ sở dữ liệu vector cuối cùng cùng các tệp Markdown.
Tóm lại, chúng ta đã tạo ra một hệ thống RAG đa phương thức hoàn chỉnh giúp chuyển đổi nội dung PDF có cấu trúc và phi cấu trúc thành kiến thức có thể tìm kiếm và sẵn sàng trích dẫn. Chúng ta đã sử dụng NeMo Retriever để điều phối việc trích xuất, khử trùng lặp, chia nhỏ, nhúng, lập chỉ mục cơ sở dữ liệu vector, truy xuất và xếp hạng lại, đồng thời giữ cho môi trường Colab nhẹ nhàng bằng cách ủy quyền suy luận mô hình cho các dịch vụ NVIDIA NIM được lưu trữ. Chúng ta cũng đã tạo ra các câu trả lời có căn cứ với mô hình ngôn ngữ Nemotron và đo lường hiệu quả truy xuất bằng bài kiểm tra recall-at-k đơn giản. Bằng cách hoàn thành quy trình này, chúng ta đã thiết lập một nền tảng có thể tái sử dụng để xây dựng các ứng dụng trí tuệ tài liệu giúp xử lý văn bản, bảng biểu, biểu đồ và các yếu tố hình ảnh thông qua một pipeline truy xuất thống nhất.
Xem các MÃ NGUỒN ĐẦY ĐỦ tại đây. Ngoài ra, hãy thoải mái theo dõi chúng tôi trên Twitter và đừng quên tham gia cộng đồng 150k+ ML SubReddit của chúng tôi và Đăng ký nhận Bản tin. Khoan đã! Bạn có dùng Telegram không? Bây giờ bạn cũng có thể tham gia cùng chúng tôi trên Telegram.
Cần hợp tác với chúng tôi để quảng bá GitHub Repo, Trang Hugging Face, Phát hành sản phẩm hoặc Hội thảo trực tuyến, v.v. của bạn? Hãy kết nối với chúng tôi.
Sana Hassan, thực tập sinh tư vấn tại Marktechpost và là sinh viên bằng kép tại IIT Madras, rất tâm huyết với việc ứng dụng công nghệ và AI để giải quyết các thách thức trong thế giới thực. Với sự quan tâm sâu sắc đến việc giải quyết các vấn đề thực tiễn, anh mang đến một góc nhìn mới mẻ cho sự giao thoa giữa AI và các giải pháp trong đời sống.
Bài viết được AI dịch và tổng hợp tự động từ MarkTechPost. Liên kết bài gốc ở phía trên. Dữ liệu đồng bộ qua API công khai được ghi nguồn tại AI HOT (canonical) ↗. AIHOT.vn luôn dẫn nguồn đầy đủ — nếu bạn thấy điểm cần chỉnh sửa, hãy gửi ý kiến tại trang phản hồi.