
Đánh giá RAG: Precision, Recall, Faithfulness trong Retrieval-Augmented Generation
Khi xây dựng hệ thống RAG (Retrieval-Augmented Generation), việc đo lường chất lượng retrieval và generation là cực kỳ quan trọng. Ba chỉ tiêu cốt lõi giúp bạn đánh giá hiệu suất RAG là Context Precision, Context Recall và Faithfulness.
RAG hiện đang là kiến trúc phổ biến nhất cho chatbot dựa trên dữ liệu nội bộ. Nhưng không phải lúc nào RAG cũng hoạt động tốt. Đôi khi hệ thống trả về đúng câu trả lời, nhưng dựa trên sai đoạn văn bản. Hay ngược lại: retrieval đúng, nhưng generation bịa đặt thông tin. Các metric này giúp bạn phát hiện chính xác điểm yếu.
Context Precision
Context Precision đo lường mức độ liên quan của các đoạn văn bản được truy xuất so với câu hỏi. Công thức: (Số đoạn văn bản liên quan) / (Tổng số đoạn văn bản được truy xuất). Giá trị cao nhất là 1.0, nghĩa là mọi đoạn văn bản được truy xuất đều liên quan đến câu hỏi.
Khi Context Precision thấp, nguyên nhân thường là embedding model không phân biệt tốt giữa ngữ cảnh liên quan và không liên quan, hoặc chunk size quá lớn khiến mỗi đoạn chứa quá nhiều thông tin thừa. Cải thiện bằng cách thử reranking với cross-encoder hoặc điều chỉnh overlap khi chunking.
Context Recall
Context Recall đo lường khả năng của retrieval system trong việc tìm thấy tất cả thông tin liên quan cần thiết để trả lời câu hỏi. Nó so sánh các đoạn văn bản được truy xuất với cơ sở dữ liệu thực tế (ground truth).
Recall thấp đồng nghĩa hệ thống bỏ sót thông tin quan trọng. Điều này thường xảy ra khi chunk size quá nhỏ, khiến một sự kiện bị chia nhỏ và mất ngữ cảnh. Khi đó retrieval không nhận diện được mối liên hệ giữa các mảnh thông tin.
Faithfulness
Faithfulness (Tính trung thực) đo lường xem câu trả lời được sinh ra có bám sát vào context được cung cấp hay không. Nó kiểm tra xem có thông tin nào trong câu trả lời không có trong context hay không (sự ảo tưởng – hallucination).
Faithfulness thấp thường xuất phát từ prompt yếu hoặc LLM có xu hướng bịa đặt để trả lời câu hỏi khi retrieval không đủ. Cách khắc phục là dùng prompt yêu cầu model trả lời chỉ dựa trên context, hoặc áp dụng retrieval-augmented generation với reranking.
Cách tính toán trong thực tế
Thư viện Ragas cung cấp các tính toán metric này sẵn:
from ragas.metrics import context_precision, context_recall, faithfulness
from ragas import evaluate
dataset = {
"question": ["Câu hỏi mẫu"],
"answer": ["Câu trả lời của LLM"],
"contexts": [["Đoạn context 1", "Đoạn context 2"]],
"ground_truth": ["Câu trả lời chuẩn"]
}
results = evaluate(dataset, metrics=[context_precision, context_recall, faithfulness])
print(results)
Các metric này cho phép bạn:
- So sánh các mô hình embedding khác nhau cho retrieval
- Điều chỉnh số lượng k-top documentos được truy xuất
- Đánh giá hiệu quả của các kỹ thuật reranking
- Theo dõi tiến bộ khi cải thiện pipeline RAG
Ưu điểm của việc sử dụng các metric này
Thay vì phụ thuộc chỉ vào cảm nhận chủ quan, các metric định lượng giúp bạn:
- Xác định chokepoint cụ thể trong pipeline RAG
- Quyết định dựa trên dữ liệu khi tối ưu hóa hệ thống
- Đối chiếu hiệu suất với các phương pháp tiên tiến khác
- Tích hợp vào CI/CD để giám sát chất lượng tự động
Khi xây dựng chatbot nội bộ cho công ty, bạn có thể chạy đánh giá hàng ngày trên tập câu hỏi thực tế. Nếu một commit nào đó làm giảm Precision từ 0.85 xuống 0.65, bạn sẽ phát hiện sớm thay vì chờ người dùng phàn nàn.
Ví dụ thực tế
Một công ty tài chính sử dụng RAG để trả lời câu hỏi về quy định. Trước khi tối ưu, Context Precision chỉ 0.62, Faithfulness 0.58. Sau khi áp dụng reranking với cross-encoder và tối ưu chunk size, các metric tăng lên 0.89 và 0.85 tương ứng, giảm đáng kể số trường hợp cung cấp thông tin sai lệch.


Nguồn: docs.ragas.io, Hugging Face Ragas
Nếu bạn đang triển khai RAG trong doanh nghiệp, hãy bắt đầu bằng việc xây dựng dataset đánh giá câu hỏi thực tế. Mục tiêu là đạt Context Precision trên 0.85 và Faithfulness trên 0.90 trước khi đưa vào production.
