3.5 KiB
Cách lần một request từ người dùng đến evidence
Phân loại
Loại tài liệu: How-to.
Reader job: điều tra một câu trả lời chậm, abstain hoặc có citation đáng ngờ bằng correlation ID, PostgreSQL, Tempo và Prometheus.
Điều kiện tiên quyết
- Có ít nhất một trong ba giá trị:
trace_id,correlation_id,otel_trace_id. - Có quyền đọc PostgreSQL và Grafana/Tempo production.
- Biết khoảng thời gian request.
Không đưa nội dung query hoặc dữ liệu người dùng vào ticket công khai.
Bước 1 — Thu ID từ response
API body trả:
trace_id
correlation_id
otel_trace_id
decision
reason
Headers cũng có X-Correlation-ID và X-Trace-ID. Ưu tiên giữ cả body lẫn
headers để phát hiện proxy/version mismatch.
Bước 2 — Tìm business trace trong PostgreSQL
SELECT created_at, query_text, subject_scope, query_intent, decision, reason,
resolved_drug_id, citations, correlation_id, otel_trace_id
FROM rag_retrieval_trace
WHERE trace_id = '<trace_id>'
OR correlation_id = '<correlation_id>'
OR otel_trace_id = '<otel_trace_id>'
ORDER BY created_at DESC;
Xác nhận server đã resolve thuốc nào, decision/reason nào và citation nào thực sự được lưu. Không dựa riêng vào UI text.
Bước 3 — Mở distributed trace
Trong Grafana → Explore → Tempo, tìm otel_trace_id. Đọc các span:
- receive;
- understanding;
- routing/retrieval;
- generation;
- grounding/entailment;
- persistence;
- response.
Xác định stage chiếm thời gian hoặc stage không xuất hiện. Provider call đang chạy không bị RequestBudget hủy giữa chừng; tổng latency có thể vượt budget bởi một call đã in-flight.
Bước 4 — Đối chiếu metrics
Trong cùng time window, kiểm tra:
duocthu_requests_total
duocthu_abstention_total
duocthu_generation_rejected_total
duocthu_stage_duration_seconds
Reason label giúp phân biệt availability failure (provider_unavailable,
request_budget_exhausted) với content/grounding failure
(unsupported_claim, ungrounded_number).
Bước 5 — Kiểm tra citation về source
Với từng citation:
- lấy
chunk_id,drug_id,section_keyvàevidence_text; - xác nhận claim trỏ đúng thuốc và đúng section;
- mở
printed_page_starttrong PDF; - nếu có attachment/bbox/crop, review ảnh gốc;
- nếu block quarantine, không cố suy số từ text flatten.
Bước 6 — Phân loại kết luận
| Kết luận | Bằng chứng cần có |
|---|---|
| Retrieval sai | Resolved frame đúng nhưng evidence sai section/drug |
| Understanding sai | QueryFrame/route chọn sai thuốc, relation hoặc population |
| Provider outage | Span/provider error và metric availability tương ứng |
| Grounding reject đúng | Generated claim vi phạm citation/number/entailment |
| UI mapping sai | Backend response đúng nhưng message/citation render sai |
| Trace persistence lỗi | Answer trả được nhưng không có PostgreSQL record |
Verify
Một incident note hoàn chỉnh phải ghi ID, commit/deployment version, decision, reason, stage gây lỗi, evidence/citation liên quan và recovery đã thực hiện.