AI Hunter
Member
Bạn vừa Fine-tune lại Prompt. Bạn vừa đổi Vector DB từ Chroma sang Pinecone.
Bạn tự tin nói: "Hệ thống giờ ngon hơn rồi!"
Nhưng ngon hơn ở đâu?
- Nó có bớt bịa đặt (Hallucination) không?
- Nó có tìm đúng tài liệu hơn không?
- Hay nó chỉ đang nói dài dòng hơn?
Nếu không đo lường được, bạn không thể cải thiện được. Trong bài viết này, chúng ta sẽ sử dụng Ragas - framework mã nguồn mở phổ biến nhất để chấm điểm hệ thống RAG một cách khoa học.
1. question: Câu hỏi của user.
2. answer: Câu trả lời mà Bot của bạn vừa sinh ra.
3. contexts: Danh sách các đoạn văn bản mà Bot đã tìm thấy (Retrieved docs).
4. ground_truth: (Tùy chọn) Câu trả lời mẫu chuẩn (do con người viết) để so sánh.
Phân tích:
* Nếu Faithfulness thấp: Cần chỉnh lại Prompt để bắt AI "chỉ trả lời dựa trên context".
* Nếu Context Precision thấp: Cần xem lại cách cắt văn bản (Chunking) hoặc đổi Vector DB xịn hơn.
Mỗi khi bạn sửa code, hệ thống sẽ tự chạy test Ragas. Nếu điểm số tụt xuống dưới 0.8 -> Chặn không cho Deploy.
Bạn tự tin nói: "Hệ thống giờ ngon hơn rồi!"
Nhưng ngon hơn ở đâu?
- Nó có bớt bịa đặt (Hallucination) không?
- Nó có tìm đúng tài liệu hơn không?
- Hay nó chỉ đang nói dài dòng hơn?
Nếu không đo lường được, bạn không thể cải thiện được. Trong bài viết này, chúng ta sẽ sử dụng Ragas - framework mã nguồn mở phổ biến nhất để chấm điểm hệ thống RAG một cách khoa học.
1. Ragas chấm điểm dựa trên cái gì?
Ragas không chấm điểm kiểu "Đúng/Sai" đơn thuần. Nó dựa trên bộ ba RAG Triad:- Faithfulness (Độ trung thực): Câu trả lời của AI có dựa hoàn toàn vào tài liệu được cung cấp không? (Điểm thấp = AI đang chém gió/bịa đặt).
- Answer Relevancy (Độ liên quan): Câu trả lời có đi thẳng vào vấn đề người dùng hỏi không? (Điểm thấp = AI trả lời lan man, lạc đề).
- Context Precision (Độ chính xác ngữ cảnh): Hệ thống tìm kiếm (Retriever) có lôi ra được đúng tài liệu cần thiết không?
2. Cài đặt
Bạn cần cài Ragas và LangChain (để xử lý dữ liệu).
Bash:
pip install ragas langchain openai
3. Chuẩn bị dữ liệu test (Dataset)
Để chấm điểm, bạn cần một bộ dữ liệu gồm 4 cột:1. question: Câu hỏi của user.
2. answer: Câu trả lời mà Bot của bạn vừa sinh ra.
3. contexts: Danh sách các đoạn văn bản mà Bot đã tìm thấy (Retrieved docs).
4. ground_truth: (Tùy chọn) Câu trả lời mẫu chuẩn (do con người viết) để so sánh.
Python:
from datasets import Dataset
data_samples = {
'question': [
'Thủ đô của Việt Nam là gì?',
'Cách reset mật khẩu?'
],
'answer': [
'Thủ đô của Việt Nam là Hà Nội.',
'Bạn cần gửi email cho IT để reset.'
],
'contexts': [
['Hà Nội là thủ đô của nước CHXHCN Việt Nam.', 'TP.HCM là trung tâm kinh tế.'],
['Quy trình IT: Gửi email [email protected] để yêu cầu cấp lại pass.']
],
'ground_truth': [
'Hà Nội',
'Gửi email cho bộ phận IT.'
]
}
dataset = Dataset.from_dict(data_samples)
4. Tiến hành chấm điểm
Ragas sử dụng chính GPT-4 (hoặc GPT-3.5) làm giám khảo để chấm điểm cho Bot của bạn. Đây gọi là kỹ thuật LLM-as-a-Judge.
Python:
import os
from ragas import evaluate
from ragas.metrics import (
faithfulness,
answer_relevancy,
context_precision,
context_recall,
)
# Đừng quên set API Key vì Ragas cần dùng OpenAI để chấm
os.environ["OPENAI_API_KEY"] = "sk-..."
# Chọn các tiêu chí muốn chấm
metrics = [
faithfulness,
answer_relevancy,
context_precision,
context_recall,
]
print("⏳ Đang chấm điểm... (Tốn chút tiền API đấy nhé)")
results = evaluate(
dataset = dataset,
metrics = metrics,
)
print(results)
5. Đọc hiểu kết quả
Kết quả trả về sẽ là một Dictionary dạng:
JSON:
{
'faithfulness': 0.95, // Rất tốt, AI bám sát tài liệu
'answer_relevancy': 0.88, // Tốt, trả lời đúng trọng tâm
'context_precision': 0.50, // Khá tệ, Retriever tìm lẫn nhiều rác
'context_recall': 1.00 // Tìm đủ thông tin, không bị sót
}
Phân tích:
* Nếu Faithfulness thấp: Cần chỉnh lại Prompt để bắt AI "chỉ trả lời dựa trên context".
* Nếu Context Precision thấp: Cần xem lại cách cắt văn bản (Chunking) hoặc đổi Vector DB xịn hơn.
6. Tích hợp vào CI/CD
Bước chuyên nghiệp cuối cùng là đưa script này vào quy trình Deploy.Mỗi khi bạn sửa code, hệ thống sẽ tự chạy test Ragas. Nếu điểm số tụt xuống dưới 0.8 -> Chặn không cho Deploy.
Python:
# Ví dụ logic chặn deploy
if results['faithfulness'] < 0.8:
raise Exception("❌ CẢNH BÁO: Model đang có xu hướng bịa đặt dữ liệu!")
else:
print("✅ Model đạt chuẩn chất lượng.")
Kết luận
Dùng Ragas giúp bạn chuyển từ trạng thái "code bằng niềm tin" sang "code dựa trên dữ liệu". Đừng để người dùng là người đầu tiên phát hiện ra lỗi ngớ ngẩn của Chatbot. Hãy để Ragas làm điều đó.Bài viết liên quan