Đánh giá RAG: Precision, Recall, Faithfulness trong Retrieval-Augmented Generation

Đá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.

Biểu đồ so sánh Context Precision, Recall, Faithfulness trước và sau tối ưu
Kiến trúc RAG với các điểm đo lường metric

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.

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

Self-attention là gì: cơ chế Q, K, V trong mô hình ngôn ngữ

Self-attention là gì: Q, K, V và cách mô hình ngôn ngữ tính ngữ cảnh Self-attention là cơ chế cho phép mô hình ngôn ngữ tự tính mối quan hệ…

Xem thêm

RAG là gì: retrieval-augmented generation và cách hoạt động

RAG là gì: retrieval-augmented generation và cách hoạt động Retrieval-augmented generation (RAG) là một kỹ thuật tiên tiến trong lĩnh vực AI giúp mô hình ngôn ngữ lớn (LLM) truy…

Xem thêm

Prompt engineering là gì: kỹ thuật viết lệnh cho AI hiệu quả

Prompt engineering là gì: kỹ thuật viết lệnh cho AI Prompt engineering là kỹ thuật thiết kế và tinh chỉnh câu lệnh (prompt) gửi cho mô hình AI để đạt…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất