Tối ưu hóa Retrieval-Augmented Generation: Chiến lược Chuyển đổi và Phân rã Truy vấn

Trong quy trình cơ bản của Retrieval-Augmented Generation (RAG), truy vấn của người dùng được chuyển đổi thành vector nhúng để truy xuất các tài liệu tương đồng từ cơ sở dữ liệu vector, sau đó làm ngữ cảnh cho Mô hình Ngôn ngữ Lớn (LLM) tạo câu trả lời. Tuy nhiên, chất lượng câu trả lời phụ thuộc rất lớn vào độ chính xác của truy vấn ban đầu. Nếu câu hỏi mơ hồ hoặc trừu tượng hóa kém, hệ thống sẽ truy xuất sai ngữ cảnh, dẫn đến kết quả không mong muốn. Để giải quyết vấn đề này, hai kỹ thuật nâng cao được áp dụng: Chuyển đổi truy vấn (Query Transformation) và Phân rã truy vấn (Query Decomposition).

Chuyển đổi truy vấn (Query Transformation)

Kỹ thuật này không phụ thuộc vào một cách diễn đạt duy nhất của người dùng. Thay vào đó, hệ thống tạo ra nhiều biến thể ngữ nghĩa của câu hỏi gốc để mở rộng khả năng khớp với các tài liệu trong kho dữ liệu.

Ví dụ, với câu hỏi "Làm thế nào RAG cải thiện phản hồi của LLM?", hệ thống có thể tạo ra các biến thể:

RAG hoạt động theo cơ chế nào?
Ưu điểm của RAG so với mô hình ngôn ngữ thuần túy là gì?
Việc truy xuất thông tin ảnh hưởng thế nào đến độ chính xác của LLM?

1. Truy xuất song song (Fan-Out Retrieval)

Đây là kiến trúc cụ thể hóa ý tưởng trên. LLM sẽ tạo ra nhiều truy vấn thay thế từ đầu vào gốc. Các truy vấn này được thực thi đồng thời trên cơ sở dữ liệu vector. Kết quả trả về từ tất cả các nhánh được tổng hợp, loại bỏ trùng lặp trước khi đưa vào ngữ cảnh cho LLM. Cách này tận dụng việc các câu diễn đạt khác nhau sẽ chiếu vào các vùng khác nhau trong không gian vector, giúp tăng tỷ lệ thu hồi (recall) tài liệu.

2. Hòa hợp xếp hạng倒数 (Reciprocal Rank Fusion - RRF)

Khi tổng hợp kết quả từ nhiều truy vấn song song, việc chỉ nối simple các danh sách tài liệu là chưa đủ vì có thể xảy ra trùng lặp và sai lệch thứ hạng. RRF giải quyết vấn đề này bằng cách tính điểm lại cho từng tài liệu dựa trên vị trí xếp hạng của nó trong từng danh sách kết quả.

Công thức tính điểm RRF cho một tài liệu d thường được định nghĩa là tổng nghịch đảo của thứ hạng (k là hằng số làm mịn). Tài liệu nào xuất hiện ở vị trí cao trong nhiều danh sách sẽ có tổng điểm cao hơn, đảm bảo thứ tự ưu tiên chính xác hơn so với cách sắp xếp đơn thuần dựa trên điểm tương đồng thô.

3. Nhúng tài liệu giả định (HyDE - Hypothetical Document Embeddings)

HyDE tiếp cận vấn đề từ một góc độ khác: khoảng cách ngữ nghĩa giữa câu hỏi và câu trả lời trong không gian vector. Vector của câu hỏi thường khác biệt so với vector của tài liệu chứa câu trả lời.

Quy trình HyDE như sau: Đầu tiên, LLM tạo ra một "tài liệu giả định" (hypothetical answer) cho truy vấn của người dùng. Sau đó, văn bản giả định này được nhúng thành vector dùng để tìm kiếm. Vì văn bản giả định mang phong cách và nội dung gần với tài liệu thực tế hơn câu hỏi gốc, khả năng truy xuất chính xác sẽ cao hơn. Tuy nhiên, phương pháp này phụ thuộc vào chất lượng sinh văn bản của LLM; các mô hình nhỏ có thể tạo ra văn bản giả định sai lệch, gây nhiễu cho quá trình truy xuất.

Phân rã truy vấn (Query Decomposition)

Đối với các câu hỏi phức tạp bao hàm nhiều khía cạnh, việc truy vấn đơn lẻ thường không thu thập đủ thông tin. Phân rã truy vấn chia nhỏ bài toán lớn thành các câu hỏi con, thực hiện truy xuất độc lập hoặc tuần tự.

1. Phân rã ở mức trừu tượng cao (Step-Back Prompting)

Kỹ thuật này hướng dẫn LLM lùi lại một bước để xem xét vấn đề ở tầm rộng hơn, tạo ra một câu hỏi mang tính khái niệm hoặc nguyên lý tổng quát trước.

Ví dụ, từ câu hỏi cụ thể "RAG cải thiện hiệu năng LLM như thế nào?", LLM có thể tạo ra câu hỏi trừu tượng hơn:

Những giới hạn nào của LLM khi không có kiến thức bên ngoài?

Việc truy xuất ngữ cảnh cho câu hỏi trừu tượng này giúp LLM có được nền tảng lý thuyết vững chắc trước khi trả lời câu hỏi cụ thể.

2. Phân rã ở mức trừu tượng thấp (Chain-of-Thought Retrieval)

Cách tiếp cận này chia nhỏ truy vấn thành chuỗi các bước tuần tự có sự phụ thuộc lô-gic. Kết quả của bước trước có thể hỗ trợ định hướng cho bước sau.

Ví dụ với câu hỏi "RAG hoạt động ra sao và sự khác biệt với Fine-tuning là gì?", quy trình phân rã có thể là:

  1. Bước 1 - Định nghĩa: "RAG là gì?" -> Truy xuất định nghĩa cơ bản.
  2. Bước 2 - Cơ chế: "Các bước hoạt động chi tiết của RAG?" -> Truy xuất chi tiết kỹ thuật.
  3. Bước 3 - Khái niệm liên quan: "Fine-tuning trong LLM là gì?" -> Truy xuất thông tin về kỹ thuật đối chiều.
  4. Bước 4 - So sánh: "Sự khác biệt giữa RAG và Fine-tuning?" -> Tổng hợp thông tin để so sánh.

Phương pháp này đặc biệt hiệu quả với các câu hỏi so sánh hoặc yêu cầu reasoning nhiều bước, giúp giảm nhiễu tín hiệu trong không gian vector mà một truy vấn phức tạp đơn lẻ gây ra.

Thẻ: RAG Vector Database LLM HyDE Reciprocal Rank Fusion

Đăng vào ngày 29 tháng 9 lúc 13:59