Chuyển tới nội dung chính

Đánh giá AI

Tài liệu tổng hợp chỉ số CV, truy xuất RAG và hiệu năng retrieval.

Tổng quan các luồng AI và đánh giá

Kết quả model bệnh DX-Farm EfficientNetV2-M do người huấn luyện cung cấp; không chấm lại accuracy trong đợt tích hợp. Các phép thử bộ lọc ảnh ở mục 3.2 và 3.4 giữ kết quả trước đây vì bộ lọc không thay đổi.

1. Phạm vi​

Hạng mụcGiá trị
Mô hìnhDX-Farm-EfficientNetV2-M 4.0.0: Healthy, Blast, Brown Spot, Leaf Smut, Rice Tungro, Sheath Blight
Tiền xử lý model bệnhRGB/EXIF, resize toàn ảnh 480×480 bicubic có antialias, chuẩn hóa ImageNet, softmax sáu lớp và top-1
Bộ lọc ảnhKích thước, độ nét (có nhánh cho ảnh nền đơn sắc), độ sáng, bộ phân loại cây trồng (ngưỡng lúa 0.80)
NgưỡngWorkflow nhận confidence từ 0.70, kỹ sư vẫn duyệt kết luận
Mã chạyPlantDiseaseService và assess_image của service thật, qua python -m scripts.evaluate_cv <thư mục>

2. Bộ ảnh​

  • Model bệnh: tập test 1.466 ảnh RiceLeafDiseaseBD v3, DOI 10.17632/86s4jzj2m4.3, CC BY 4.0, theo báo cáo người huấn luyện.
  • Bộ lọc ảnh: phép thử trước đây dùng 100 ảnh Dhan-Shomadhan (Mendeley Data, DOI 10.17632/znsxdctwtt.1, CC BY 4.0), chia đều năm nhóm và hai loại nền Field/White.
  • Bộ ảnh kiểm bộ lọc không phải tập chấm model bệnh mới.
  • Ảnh không phải lúa để thử bộ phân loại: 15 ảnh ngô (Project-AgML/corn_leaf_disease_classification) và 15 ảnh mía (Project-AgML/sugarcane_leaf_disease_classification).

3. Kết quả​

3.1. Model bệnh theo báo cáo người huấn luyện​

LớpPrecisionRecallF1Số ảnh
Healthy0.9083330.9237290.915966236
Blast0.8864860.8241210.854167199
Brown Spot0.8495580.8807340.864865327
Leaf Smut0.7706420.7777780.774194108
Rice Tungro0.9329270.9080120.920301337
Sheath Blight0.9471700.9691120.958015259
Macro avg0.8825190.8805810.8812511466
Weighted avg0.8946290.8942700.8941601466

Accuracy 0.894270 (89,43%); đây là chỉ số classifier, không phải độ chính xác toàn pipeline có quality/crop gate.

3.2. Bộ lọc ảnh​

NềnSố ảnhQua bộ lọcBị chặn ở độ nétBị chặn ở bộ phân loại cây trồng
Field504118 (5 Rice Tungro, 2 Brown Spot, 1 Leaf Scald)
White504910

Độ nét được kiểm trên 17 ảnh mỗi nền, kèm bản làm mờ nhân tạo (Gaussian 0.2% và 0.4% cạnh dài) và bản làm mờ 0.4% cộng nhiễu hạt 4, 8, 12 mức xám:

NềnẢnh gốc đạtLàm mờ 0.4% đạtLàm mờ 0.4% kèm nhiễu 4, 8, 12 đạt
Field17/170/170/17 mỗi mức
White16/170/170/17 mỗi mức

Làm mờ 0.2% cho 9/17 ảnh Field và 0/17 ảnh White đạt; kèm nhiễu 12 thì 1/17 ảnh White đạt.

3.3. Ngưỡng workflow​

Giữ ngưỡng 0.70 và so trên confidence chưa làm tròn. Báo cáo được cung cấp chưa đo riêng precision/recall hoặc tỉ lệ nhận ảnh tại ngưỡng này. Healthy là lớp được huấn luyện, không suy ra từ việc model không phát hiện được bệnh.

3.4. Bộ phân loại cây trồng với ảnh không phải lúa​

Bộ ảnhSố ảnhBị nhận là lúa
Ngô156
Mía1515

4. Nhận xét​

  1. Sheath Blight có F1 cao nhất (0.958015), Leaf Smut thấp nhất (0.774194) trong báo cáo người huấn luyện.
  2. Confidence từ 0.70 vẫn cần kỹ sư duyệt; chưa có đánh giá độc lập về độ tin cậy ngoài tập test.
  3. Bộ lọc độ nét nhận ảnh nền trắng đồng nhất; ảnh làm mờ và ảnh mờ có nhiễu hạt bị chặn.
  4. Bộ phân loại cây trồng chặn 8/50 ảnh lúa nền ruộng, nặng nhất ở Rice Tungro (lá vàng cam), và nhận mía, ngô là lúa vì chỉ có 10 lớp, không có lớp ngô, mía, cỏ.
  5. Classifier sáu lớp chưa có cơ chế nhận biết bệnh ngoài tập nhãn; ảnh lạ có thể bị gán một lớp với confidence cao.

5. Giới hạn của phép thử​

  • Chỉ số model mới là báo cáo của người huấn luyện trên tập test dự án, chưa phải đánh giá độc lập theo cây/ruộng.
  • Phép thử bộ lọc dùng 100 ảnh, mỗi ô 10 ảnh nên khoảng tin cậy còn rộng.
  • Ảnh mờ là mờ nhân tạo, chưa có ảnh mờ do rung tay hay lệch tiêu cự thật.
  • Các ngưỡng độ nét, lúa và 0.70 chưa đo trên ảnh ngoài ruộng của hợp tác xã.
  • Ảnh không phải lúa chỉ gồm ngô và mía, chưa có cỏ dại và lúa mì.

6. Hướng cải thiện​

  • Chụp từ 100 ảnh ruộng thật của hợp tác xã, kỹ sư gán nhãn, rồi chạy lại phép thử này làm mốc.
  • Bổ sung ảnh thực địa và dữ liệu cho Leaf Smut, kiểm tra các cặp bệnh hay nhầm trước khi huấn luyện thêm classifier.
  • Thay hoặc huấn luyện thêm bộ phân loại cây trồng với lớp ngô, mía, cỏ dại, lúa mì.
  • Ghi confusion matrix và chỉ số theo lớp khi có đủ mẫu.

7. Đánh giá truy xuất RAG​

Các phép đo đánh giá RAG

Đo ngày 28/10/2026 bằng ir_measures: 27 câu Farm, 39 câu Lab trên 25 tài liệu, 244 đoạn. Tổng bộ đề có 72 câu, gồm thêm 6 câu chẩn đoán. Chủ dự án đã duyệt 42 câu pilot; 30 câu mở rộng còn nhãn nháp. Dataset vẫn là draft, chưa được đánh giá độc lập. Điểm được tính sau bước lọc truy xuất, trước khi Backend gộp các đoạn tài liệu.

StrategyFarm Recall@4Farm nDCG@4Lab Recall@4Lab nDCG@4
Cosine + boost0,5216050,4585210,7307690,674168
BM250,4876540,5005540,7692310,749210
BM25 + cosine/RRF0,5555560,4921400,7820510,733912
Hybrid + rerank0,6481480,6023630,7628210,703415

Recall@4 đo tỷ lệ đoạn liên quan tìm được trong bốn kết quả đầu; nDCG@4 đo mức ưu tiên đoạn hữu ích ở đầu danh sách. Điểm từ 0–1, càng cao càng tốt; chỉ đánh giá truy xuất tài liệu. Hybrid + rerank cao nhất trên Farm; Lab có Recall@4 cao nhất với hybrid/RRF, nDCG@4 cao nhất với BM25. Chatbot hiện mặc định dùng hybrid + rerank cho cả hai namespace.

Sáu câu tham khảo chẩn đoán đạt Recall@3 và nDCG@3 bằng 1,0 với mã bệnh cho sẵn; không đo độ đúng CV hoặc toàn pipeline chẩn đoán.

Cách chạy và xem kết quả trên Langfuse: ai/README.md.

8. Thử tải HTTP retrieval​

Đo ngày 28/10/2026 bằng k6: 1.369 request qua 12 lượt, không ghi nhận lỗi HTTP, sai định dạng phản hồi hoặc hết bộ nhớ. Mỗi mức tải chạy 10 giây sau khi làm nóng model, lặp một lần; AI dùng 2 CPU, 1.536 MiB RAM và một worker. Mỗi người dùng gửi yêu cầu tiếp theo sau khi nhận phản hồi, với thời gian chờ tối đa 20 giây.

NhómVUCosine req/sCosine p95 (ms)Hybrid + rerank req/sHybrid + rerank p95 (ms)
Farm133,7845,540,831561,44
Farm217,06294,650,912376,22
Farm57,95931,890,876145,04
Lab136,3735,671,071139,32
Lab222,42168,700,982668,25
Lab511,84598,111,074869,63

VU là số người dùng đồng thời; req/s là số yêu cầu xử lý mỗi giây; p95 là thời gian mà 95% yêu cầu không vượt quá. RAM đỉnh đo bằng docker stats: AI cosine 1.112,1 MiB, AI hybrid + rerank 1.413,1 MiB; pgvector 34,3 MiB. Hybrid + rerank đạt 0,83–1,07 req/s; p95 tăng tới 6,15 giây ở 5 VU. Phép đo chỉ gồm /api/v1/knowledge/search trên máy dùng chung; không gồm CV, Backend/gateway hoặc Qwen.

Cách chạy và xem báo cáo: ai/README.md. Runner mặc định chạy 36 lượt, 30 giây mỗi mức, lặp ba lần; bảng trên là kết quả chạy rút gọn, chưa phải kết quả cấu hình mặc định.

9. Đánh giá nhận biết phạm vi và khả năng trả lời​

Hạng mụcHiện trạng
Bộ đề75 câu scope (45 trong miền, 30 ngoài miền) + 15 ca trong miền nhưng kho tri thức không đủ thông tin để trả lời
Phép đoChatSearch thật qua evaluate_scope.py --live, đã nối vào runner quality
Chỉ sốPrecision, Recall, F1 về scope; số ca nhận biết đúng khi không đủ thông tin để trả lời
Kết quảĐã được kiểm tra; điểm scope chưa được ghi trong tài liệu này

Chế độ không có --live chỉ kiểm gate legacy, không đại diện chatbot hiện tại.

10. Chất lượng câu trả lời Qwen​

Hạng mụcHiện trạng
Phạm viHỏi đáp Farm/Lab; giải thích chẩn đoán khi bật include_explanation
Kiểm tra đã cóTest hợp đồng với model giả: schema, nguồn, nội dung bị cấm, fallback và giữ nguyên quy tắc điều trị
Chất lượng nội dungChưa có bảng chấm bởi người duyệt; chưa có điểm chất lượng Qwen trong runner Langfuse
Hiệu năngChưa nằm trong kết quả tải ở mục 8

Tỷ lệ trả lời generated không phải tỷ lệ trả lời đúng. Phần cần chấm tiếp: đúng trọng tâm, bám nguồn, dễ đọc và từ chối đúng khi thiếu bằng chứng.

11. Kết quả trên Langfuse​

Langfuse hiển thị kết quả đã lưu của ba nhóm: retrieval, scope và tải HTTP. Thời lượng trace là thời gian replay/publish, không phải độ trễ suy luận.

Kết quả cần đối chiếuArtifact
Recall/nDCG và so sánh strategyscore.json, comparison.json
Phạm vi và khả năng trả lờiscope.json
Tải HTTP, CPU/RAMperformance-*/benchmark.json
Phiên bản code, model và dữ liệuingest.json, collect.json, dataset.json

Các bảng ngày 28/10/2026 giữ số liệu đã công bố; chưa bổ sung run ID hoặc liên kết experiment để đối chiếu trực tiếp. Cách chạy và mở lịch sử: ai/README.md.