Cuộc tranh luận ngày càng sôi nổi về các framework triển khai Retrieval-Augmented Generation (RAG) đã làm dấy lên nhiều thảo luận trong cộng đồng lập trình viên, với nhiều chuyên gia có kinh nghiệm ủng hộ cách tiếp cận đơn giản hơn, không phụ thuộc framework thay vì sử dụng các giải pháp phổ biến như LangChain.
Lý do phản đối sự phụ thuộc vào Framework
Một quan điểm mạnh mẽ từ cộng đồng lập trình viên cho rằng mặc dù LangChain đã giúp việc triển khai RAG dễ tiếp cận hơn, nhưng nó có thể tạo ra sự phức tạp không cần thiết cho việc phát triển lâu dài. Các lập trình viên ngày càng ủng hộ những cách tiếp cận đơn giản và trực tiếp hơn bằng cách sử dụng các công cụ cơ bản như FastAPI, numpy và redis để triển khai RAG.
Tôi khuyên mọi người không nên học dựa trên LangChain. Đó là một mớ hỗn độn của các lớp trừu tượng và sẽ khiến bạn mất hàng nghìn giờ công của kỹ sư khi muốn làm điều gì đó khác biệt. RAG thực ra là một thứ rất đơn giản; chỉ là có quá nhiều tiền đầu tư mạo hiểm trong lĩnh vực này và những kẻ thương mại hóa sự phức tạp.
Ngăn xếp triển khai RAG thay thế phổ biến:
- FastAPI
- numpy
- redis / pgVector
- Postgres (để mở rộng quy mô)
Lo ngại về độ chín muồi và ổn định của Framework
Mặc dù một số lập trình viên ghi nhận sự cải thiện trong độ ổn định của LangChain trong những tháng gần đây, những lo ngại về quản lý phụ thuộc và độ phức tạp của trừu tượng vẫn còn tồn tại. Sự phát triển nhanh chóng của framework này dẫn đến tài liệu hiển thị nhiều phương pháp triển khai khác nhau, gây nhầm lẫn về các phương pháp thực hành tốt nhất. Tuy nhiên, đội ngũ LangChain đã tích cực giải quyết những vấn đề này, đặc biệt là về xung đột phiên bản gói.
Những thách thức chính khi triển khai RAG:
- Xử lý tài liệu PDF (mục lục, đầu trang, chân trang)
- Hiểu ngữ nghĩa đa ngôn ngữ
- Xử lý cấu trúc kho lưu trữ
- Quản lý tiến trình phiên bản
- Xung đột phụ thuộc
Các phương pháp thay thế đang được ưa chuộng
Các lập trình viên ngày càng khám phá nhiều cách triển khai thay thế, một số ủng hộ các mô hình mở cục bộ và framework nhẹ hơn. Các công cụ như txtai và các triển khai tùy chỉnh sử dụng các công nghệ cơ bản đang được chú ý nhờ tính đơn giản và linh hoạt. Sự thay đổi này phản ánh xu hướng rộng lớn hơn hướng tới các giải pháp RAG dễ kiểm soát và bảo trì hơn.
Những thách thức chuyên biệt trong triển khai RAG
Ngoài cuộc tranh luận về framework, các lập trình viên đang đối mặt với những thách thức kỹ thuật cụ thể trong việc triển khai RAG, đặc biệt là trong việc xử lý tài liệu PDF và kho lưu trữ mã nguồn. Các vấn đề như loại bỏ mục lục, quản lý đầu trang/chân trang và duy trì số trang để trích dẫn đã nổi lên như những điểm khó khăn phổ biến, dẫn đến nhiều giải pháp từ cộng đồng kết hợp OCR, mô hình thị giác và các phương pháp tự định nghĩa.
Cuộc thảo luận nhấn mạnh nhận thức ngày càng tăng rằng mặc dù các framework như LangChain có vị trí của chúng trong việc tạo mẫu nhanh và học tập, nhưng các triển khai RAG cấp sản xuất có thể hưởng lợi từ các phương pháp tiếp cận nhẹ hơn, tùy chỉnh hơn, ưu tiên tính đơn giản và khả năng bảo trì hơn là các lớp trừu tượng.
Tham khảo: Advanced RAG Cookbooks