2026年2月

本人有个 app ,日活 1 万多,家里有台机架式服务器,所有复杂的计算请求都是通过位于广州的腾讯云的服务器 frp 回家中计算并回传,日均上传流量大概在 5G 左右。
坐标苏州,家里接入的是移动家宽。最近看网上 PCDN 限速搞怕了,于是想了个法子,准备买个移动云的苏州地区的云服务器作中转。复杂计算请求先从广州的服务器转发到移动云的服务器,再通过 frp 转发到家中的服务器。这种情况下所有上传流量既不跨市,也不跨省,更没有跨网。问下这种情况触发 PCDN 限速的可能性大吗?

背景:

最近在 B 站看到有作者对多个 LLM 进行医学难题的测试,但视频看起来有点像商单,于是萌生了个想法把手头的 AI 都测试一下,看 AI 给 AI 打分,还挺有趣的。于是分享给大家看看。

流程:

首先使用 ChatGPT 5.2 Pro(标准 effort) 生成一道内科医学难题。
然后让以下 AI 进行解答,然后把所有回答再给 ChatGPT 5.2 Pro(标准 effort)进行评分。评分一次后,再让它核对一遍评分。

被测选手:

模型 设置 链接
Gemini 3.1 Pro Preview 绑定 Key 、开启 Code Execution 、开启 Grounding With Google Search 、思考程度 High https://aistudio.google.com/
Kimi K2.5 思考 https://www.kimi.com/
豆包 专家模式 https://www.doubao.com/chat/
DeepSeek 深度思考、联网搜索 https://chat.deepseek.com/
ChatGPT 5.2 Thinking (标准 effort) 关闭了记忆和参考历史聊天 https://chatgpt.com/
Grok 4.20 beta - https://grok.com/
Qwen-3.5 Plus 深度思考、联网搜索 https://www.qianwen.com/chat/
Minimax M2.5 全能模式 https://agent.minimaxi.com/

结果(使用 ChatGPT 5.2 Pro(标准 effort)对他们的回答打分):

模型 评分 耗时 模型对它的评价 对话链接
Gemini 3.1 Pro Preview 95 87.3s 并行抓住“高钾致死链+高危 PE 梗阻性休克”,资源整合与再灌注/ECMO 桥接决策成熟,接近范文。 -
Kimi K2.5 83 未显示耗时,但应该在 5min 以内 主线正确且能用 POCUS 推动高危 PE 通道,但气道通气策略(尤其 PEEP 倾向)与抗凝逆转触发条件不够严谨。 链接
豆包 78 未显示耗时,但应该在 5min 以内 中后段决策很强(不等 CT 、走介入/ECMO/CRRT ),但开局把插管写成默认优先导致关键顺序高危扣分。 链接
DeepSeek 83 80s 处理顺序总体稳健、要点齐全,但关键路径(抗凝/再灌注/血液净化的明确触发点与兜底)写得偏笼统。 链接
ChatGPT 5.2 97 未显示耗时,但应该在 5min 以内 最符合考点:先拆可逆致死因素、用 POCUS 定休克分型、再用介入/ECMO 等“第三条路”跨过出血矛盾。 链接
Grok 4.20 beta 89 106s 思路接近高分答案且并行处置到位,但部分“尽早插管”表述与指南/数字断言过满,严苛阅卷会扣分。 链接
Qwen-3.5 Plus 38 45s 识别 PE 但在题干强出血风险背景下直接系统溶栓并自我合理化黑便,属于本题核心安全红线。 链接
Minimax M2.5 82 至少 17.9s 框架很强、流程完整,但 DOAC 逆转/监测( INR 、维生素 K 等)存在药理概念错误且早期一些操作偏冒进。 链接

附注

之前其实还测了几次,感觉 Grok 4.20 beta 的排名比较浮动,有几次高于 Gemini 3.1 ,本次比 Gemini 低。ChatGPT 5.2 Pro 的对话链接在:链接

白血病细胞与正常细胞识别数据集:医学影像与智能诊断的细胞分析数据

数据集分享链接

链接:https://pan.baidu.com/s/1P3UI6Y8rHldq692ML0ekPw?pwd=iaq2

提取码:iaq2 复制这段内容后打开百度网盘手机App,操作更方便哦

一、医学影像智能诊断的时代背景

在医学影像智能分析的快速发展中,血液疾病的自动化检测逐渐成为研究热点。白血病作为一种严重的血液系统恶性肿瘤,其早期诊断和精确识别对于提高患者生存率具有至关重要的意义。传统的细胞识别依赖显微镜下的人工观察,这不仅耗时耗力,而且极易受到医生主观经验的影响。

在医学诊断领域,白血病(Leukemia)是一种常见的血液系统恶性肿瘤,其特征是骨髓和外周血中出现大量异常的白细胞。根据世界卫生组织(WHO)的统计,白血病是儿童和青少年中最常见的癌症类型之一,同时在成人群体中也具有较高的发病率。对于这类疾病,早期筛查和准确诊断至关重要,因为治疗效果与患者确诊时的病程阶段密切相关。

在传统临床环境中,白血病的检测依赖于血液学专家通过显微镜对血液涂片进行观察,分析细胞形态学特征。这种方式虽然直观,但存在一些显著不足:主观性强:不同医生的经验水平和判断标准可能有所差异、耗时耗力:需要逐个细胞进行观察和记录、难以规模化:在大规模筛查中效率低下。

在智能诊断领域,基于计算机视觉的细胞检测技术为医学诊断提供了新的解决方案。计算机视觉技术能够自动分析血细胞图像,识别细胞的形态学特征。深度学习技术能够自动学习细胞特征,提高细胞识别的准确性和效率。基于计算机视觉与深度学习的细胞自动识别技术,能够实现细胞的自动识别、定位和分类,为医学诊断提供数据支持。

随着人工智能的发展,尤其是计算机视觉与深度学习在医学影像中的成功应用,利用AI对血细胞进行自动识别和分类已经成为热点研究方向。为推动相关研究,本数据集整理了7000张白血病细胞与正常细胞图像,并进行了规范化的划分和标注。

该数据集的发布,为医学人工智能领域的研究人员、开发者以及高校师生提供了一个坚实的实验平台,帮助大家更好地探索AI在疾病诊断中的应用与价值。

在这里插入图片描述

二、数据集核心特性与架构分析

该数据集是一个二分类医学图像数据集,旨在区分白血病细胞与正常血细胞。以下是该数据集的核心特性分析:

graph TD
    A[白血病细胞与正常细胞数据集] --> B[数据规模]
    A --> C[检测类别]
    A --> D[数据质量]
    A --> E[场景多样性]
    
    B --> B1[7000张图片]
    B --> B2[白血病细胞3500张]
    B --> B3[正常细胞3500张]
    B --> B4[类别平衡]
    
    C --> C1[正常细胞]
    C --> C2[白血病细胞]
    C --> C3[2个类别]
    
    D --> D1[高分辨率]
    D --> D2[清晰结构]
    D --> D3[精确标注]
    
    E --> E1[不同光照]
    E --> E2[不同染色]
    C --> E3[个体差异]

2.1 数据集基本信息

数据集的基本信息如下:

项目说明
图像总量7000张
类别数量2个类别
白血病细胞约3500张
正常细胞约3500张
类别平衡性平衡
图像分辨率高分辨率
任务类型图像分类(Image Classification)
推荐模型ResNet / DenseNet / EfficientNet / YOLO

2.2 检测类别定义

数据集共包含2个检测类别:

正常细胞(Normal Cells)

正常细胞是指健康的血细胞,具有正常的形态学特征。正常细胞是白血病检测的重要检测对象,对于区分正常和异常具有重要意义。正常细胞的准确识别能够帮助系统确认细胞的健康状态,为医学诊断提供数据支持。

白血病细胞(Leukemia Cells)

白血病细胞是指异常的白细胞,具有异常的形态学特征。白血病细胞是白血病检测的重要检测对象,对于早期诊断具有重要意义。白血病细胞的准确识别能够帮助系统及时发现白血病,为医学诊断提供数据支持。

2.3 数据集主要特点

类别数量

类别数量:2类。二分类任务能够专注于正常细胞和白血病细胞的区分,提高分类的准确性和效率。

总图像数

总图像数:7000张。图像数量充足,能够为模型训练提供足够的数据支持。

分辨率与清晰度

图像在显微镜下采集,分辨率较高,能够清晰展示细胞核、细胞质等关键结构特征。高分辨率能够为模型训练提供清晰的图像特征,提升分类性能。

鲁棒性与泛化能力

该数据集不仅保持了类别之间的平衡性,还涵盖了在不同条件(光照、染色、个体差异)下的细胞样本,具备良好的鲁棒性和泛化能力。

三、数据集详细内容解析

3.1 数据集概述

该数据集是一个二分类医学图像数据集,旨在区分白血病细胞与正常血细胞。类别数量:2类(正常细胞Normal Cells、白血病细胞Leukemia Cells)、总图像数:7000张、分辨率与清晰度:图像在显微镜下采集,分辨率较高,能够清晰展示细胞核、细胞质等关键结构特征。

该数据集不仅保持了类别之间的平衡性,还涵盖了在不同条件(光照、染色、个体差异)下的细胞样本,具备良好的鲁棒性和泛化能力。

3.2 数据集详情

样本分布

白血病细胞图片:约3500张、正常细胞图片:约3500张、类别平衡性:保证了训练过程中模型不会因类别失衡而出现偏置问题。

数据划分比例

这种划分方式在深度学习研究中十分常见,可以确保模型的训练、调优与最终评估各自独立进行。

在这里插入图片描述

数据集示例

研究人员可以通过Python的matplotlib或opencv库快速可视化样本图像。例如:

import matplotlib.pyplot as plt
import cv2
import os
import random

# 假设数据集路径结构为 data/Normal 和 data/Leukemia
data_dir = "data"
categories = ["Normal", "Leukemia"]

plt.figure(figsize=(8,4))

for i, category in enumerate(categories):
    path = os.path.join(data_dir, category)
    img_name = random.choice(os.listdir(path))
    img_path = os.path.join(path, img_name)
    img = cv2.imread(img_path)
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

    plt.subplot(1, 2, i+1)
    plt.imshow(img)
    plt.title(category)
    plt.axis("off")

plt.show()

运行后可以随机展示一张正常细胞与白血病细胞的对比图,帮助研究人员直观理解数据集特征。

四、数据集应用场景深度剖析

该数据集适合多个方向的应用与研究:

graph LR
    A[白血病细胞与正常细胞数据集] --> B[细胞分类模型]
    A --> C[医学辅助诊断]
    A --> D[目标检测分割]
    A --> E[可解释性研究]
    A --> F[科研教学]
    
    B --> B1[CNN模型]
    B --> B2[迁移学习]
    B --> B3[二分类]
    
    C --> C1[辅助工具]
    C --> C2[初筛结果]
    B --> C3[诊断效率]
    
    D --> D1[YOLO]
    D --> D2[Mask R-CNN]
    B --> D3[细胞定位]
    
    E --> E1[Grad-CAM]
    E --> E2[LIME]
    B --> E3[可解释性]
    
    F --> F1[实验数据]
    F --> F2[公开基准]
    B --> F3[方法对比]

4.1 细胞分类模型构建

在细胞分类模型构建领域,利用CNN(如ResNet、DenseNet、EfficientNet)实现正常细胞与白血病细胞的二分类任务,应用迁移学习(Transfer Learning)提高小样本下的识别精度。这是数据集在医学诊断领域的重要应用。通过训练图像分类模型,可以实现对细胞的自动分类和识别。

在实际应用中,细胞分类模型可以部署在医院实验室的设备上,实时采集血细胞图像并进行分类分析。通过分析细胞的形态学特征,可以区分正常细胞和白血病细胞,为医学诊断提供数据支持。这种智能化的分类方式大大提高了诊断效率,降低了诊断成本。

CNN模型

利用CNN(如ResNet、DenseNet、EfficientNet)实现正常细胞与白血病细胞的二分类任务。CNN模型能够自动学习细胞的形态学特征,提高分类的准确性和效率。

迁移学习

应用迁移学习(Transfer Learning)提高小样本下的识别精度。迁移学习能够利用预训练模型的知识,提高模型的泛化能力。

二分类任务

实现正常细胞与白血病细胞的二分类任务。二分类任务能够专注于正常细胞和白血病细胞的区分,提高分类的准确性和效率。

4.2 医学辅助诊断系统开发

在医学辅助诊断系统开发领域,可作为医院实验室的辅助工具,为医生提供自动化的初筛结果,提高诊断效率与准确性。这是数据集在医学诊断领域的重要应用。通过训练图像分类模型,可以实现对细胞的自动分类和识别。

在实际应用中,医学辅助诊断系统可以整合多种数据源,进行细胞分类分析。通过分析细胞的形态学特征,可以为医生提供自动化的初筛结果,为医学诊断提供数据支持。这种智能化的诊断方式大大提高了诊断效率,降低了诊断成本。

辅助工具

可作为医院实验室的辅助工具,为医生提供自动化的初筛结果。辅助工具能够提高诊断效率与准确性。

初筛结果

为医生提供自动化的初筛结果。初筛结果能够为医生提供参考,提高诊断效率。

诊断效率

提高诊断效率与准确性。诊断效率能够为医生提供支持,提高诊断的准确性和效率。

在这里插入图片描述

4.3 目标检测与分割任务

在目标检测与分割任务领域,基于YOLO、Mask R-CNN等框架,在血液涂片图像中定位并分割单个细胞,提取更细粒度的形态特征。这是数据集在医学诊断领域的重要应用。通过训练目标检测模型,可以实现对细胞的自动定位和分割。

在实际应用中,目标检测与分割系统可以部署在医院实验室的设备上,实时采集血细胞图像并进行检测分析。通过分析细胞的形态学特征,可以定位并分割单个细胞,为医学诊断提供数据支持。这种智能化的检测方式大大提高了诊断效率,降低了诊断成本。

YOLO框架

基于YOLO框架,在血液涂片图像中定位单个细胞。YOLO框架能够实现实时的细胞检测,提高检测的准确性和效率。

Mask R-CNN框架

基于Mask R-CNN框架,在血液涂片图像中分割单个细胞。Mask R-CNN框架能够实现精确的细胞分割,提高分割的准确性和效率。

细胞定位与分割

在血液涂片图像中定位并分割单个细胞,提取更细粒度的形态特征。细胞定位与分割能够为医学诊断提供更详细的数据支持。

4.4 可解释性研究

在可解释性研究领域,结合Grad-CAM、LIME等方法,分析模型关注的细胞区域,提升医学AI的可解释性。这是数据集在医学诊断领域的重要应用。通过使用数据集进行可解释性研究,可以推动医学AI的发展。

在学术研究中,数据集可以用于验证可解释性方法的性能,探索最优的可解释性方法。研究人员可以尝试不同的可解释性方法,提升医学AI的可解释性。

Grad-CAM方法

结合Grad-CAM方法,分析模型关注的细胞区域。Grad-CAM方法能够可视化模型的注意力,提升医学AI的可解释性。

LIME方法

结合LIME方法,分析模型关注的细胞区域。LIME方法能够解释模型的决策过程,提升医学AI的可解释性。

可解释性提升

分析模型关注的细胞区域,提升医学AI的可解释性。可解释性提升能够增强医生对AI系统的信任,推动医学AI的应用。

4.5 科研与教学

在科研与教学领域,在医学图像处理相关的课程中作为实验数据,帮助学生理解计算机视觉在医疗中的应用,在学术研究中作为公开基准,用于方法对比和论文实验。这是数据集在学术研究领域的重要应用。通过使用数据集进行科研和教学,可以推动医学AI的发展。

在学术研究中,数据集可以用于验证新算法的性能,探索最优的模型架构。研究人员可以尝试不同的网络结构、损失函数、优化策略等,提升细胞分类的性能。

实验数据

在医学图像处理相关的课程中作为实验数据,帮助学生理解计算机视觉在医疗中的应用。实验数据能够帮助学生理解医学AI的应用,推动医学AI的教育。

公开基准

在学术研究中作为公开基准,用于方法对比和论文实验。公开基准能够推动算法的进步和应用。

方法对比

用于方法对比和论文实验。方法对比能够推动算法的进步和应用。

五、技术实践示例

以下是一个基于PyTorch的简单训练代码示例,展示如何快速加载该数据集并进行模型训练:

import torch
import torch.nn as nn
import torch.optim as optim
from torchvision import datasets, transforms, models

# 数据预处理
transform = transforms.Compose([
    transforms.Resize((224,224)),
    transforms.ToTensor(),
    transforms.Normalize([0.5,0.5,0.5], [0.5,0.5,0.5])
])

train_data = datasets.ImageFolder("data/train", transform=transform)
valid_data = datasets.ImageFolder("data/valid", transform=transform)

train_loader = torch.utils.data.DataLoader(train_data, batch_size=32, shuffle=True)
valid_loader = torch.utils.data.DataLoader(valid_data, batch_size=32, shuffle=False)

# 使用预训练模型 ResNet18
model = models.resnet18(pretrained=True)
model.fc = nn.Linear(model.fc.in_features, 2)  # 二分类

criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)

# 训练循环
for epoch in range(5):
    model.train()
    running_loss = 0.0
    for images, labels in train_loader:
        optimizer.zero_grad()
        outputs = model(images)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()
        running_loss += loss.item()
    print(f"Epoch {epoch+1}, Loss: {running_loss/len(train_loader):.4f}")

这段代码演示了如何在该数据集上进行快速训练,研究人员可以根据需要调整网络结构、学习率和优化器。

在这里插入图片描述

在这里插入图片描述

六、实践心得与经验总结

在医学影像智能分析的快速发展中,血液疾病的自动化检测逐渐成为研究热点。白血病作为一种严重的血液系统恶性肿瘤,其早期诊断和精确识别对于提高患者生存率具有至关重要的意义。传统的细胞识别依赖显微镜下的人工观察,这不仅耗时耗力,而且极易受到医生主观经验的影响。

在整理和使用这个白血病细胞与正常细胞数据集的过程中,有以下几点体会:

6.1 类别平衡性的重要性

数据集不仅保持了类别之间的平衡性,还涵盖了在不同条件(光照、染色、个体差异)下的细胞样本。类别平衡性有助于模型学习平衡的特征,提升模型的泛化能力。类别平衡性的重要性在于能够为模型训练提供平衡的数据,提升模型的泛化能力。

6.2 图像质量的重要性

图像在显微镜下采集,分辨率较高,能够清晰展示细胞核、细胞质等关键结构特征。图像质量能够为模型训练提供清晰的图像特征,提升分类性能。图像质量的重要性在于能够为模型训练提供清晰的图像特征,提升分类性能。

6.3 数据标准化的便利性

数据集采用标准化的划分和标注,数据标准化能够降低使用门槛,使更多研究者能够使用该数据集进行研究和开发。

6.4 智能诊断应用价值的重要性

白血病检测技术具有重要的智能诊断应用价值。通过自动检测白血病细胞,可以为医学诊断提供数据支持。这种技术能够为智能诊断提供有力支撑,推动智能诊断的发展。

6.5 医学诊断的重要性

白血病检测是医学诊断的重要环节。通过自动检测白血病细胞,可以提高医学诊断的准确性和效率。医学诊断的重要性在于能够保障患者的健康和生命安全。

七、未来发展方向与展望

随着人工智能技术的不断发展,白血病检测技术将朝着更高精度、更强鲁棒性、更智能化的方向发展。数据集作为技术发展的基石,将持续发挥重要作用,推动白血病检测技术的进步和应用落地。

未来,数据集可以从以下几个方向进行扩展和优化:

一是增加更多样本数量,提升模型的泛化能力;二是增加更多细胞类型,如不同类型的白血病细胞、不同类型的正常细胞等,提供更全面的细胞描述;三是增加更多标注信息,如细胞核形态、细胞质特征等,提供更丰富的细胞信息;四是引入多模态数据,如基因数据、病理切片等,提供更丰富的诊断信息;五是添加细胞严重程度标注,支持疾病程度评估和预测。

此外,还可以探索数据集与其他医学数据集的融合,构建更全面的医学知识库。通过整合白血病细胞数据、其他疾病细胞数据、基因数据等,可以构建更智能的医学决策支持系统,为医学诊断提供更强大的数据支撑。

八、数据集总结

数据集名称:白血病细胞与正常细胞数据集

图片总数:7000张

任务类型:图像分类

推荐模型:ResNet / DenseNet / EfficientNet / YOLO

该数据集是一个二分类医学图像数据集,旨在区分白血病细胞与正常血细胞。类别数量:2类(正常细胞Normal Cells、白血病细胞Leukemia Cells)、总图像数:7000张、分辨率与清晰度:图像在显微镜下采集,分辨率较高,能够清晰展示细胞核、细胞质等关键结构特征。

该数据集为AI研究者与开发者提供了一个高质量的医学图像分类任务起点。无论你是刚入门的深度学习初学者,还是希望优化模型性能的研究者,该数据集都能助你快速构建高精度的分类系统。

通过本数据集,你可以快速构建出具有实际应用价值的分类模型,为后续的算法优化与项目部署打下坚实基础。未来,我们将持续更新数据集内容,拓展更多复杂场景与多类别标注,助力AI研究者在医学影像与智能诊断领域取得更高成果。

102类农业害虫图像识别数据集:智慧农业与精准防控的高质量资源

数据集分享链接

链接:https://pan.baidu.com/s/1DZIAYJqoTomT9WJEsIrX7Q?pwd=sede

提取码:sede 复制这段内容后打开百度网盘手机App,操作更方便哦

一、智慧农业与害虫智能防控的时代背景

在智慧农业和智能害虫监测中,构建一个高质量的农业害虫识别数据集是实现自动化检测与分类的关键。农业作为国民经济的基础产业,其健康发展直接关系到粮食安全和农民收入。然而,在农业生产过程中,害虫问题始终是制约农作物产量和品质提升的重要因素。害虫不仅直接啃食作物,造成产量损失,还可能传播病害,进一步加剧农作物的损害。

在现代农业发展中,病虫害监测与防治始终是保障粮食安全和提高农作物产量的关键环节。根据联合国粮农组织的统计,全球每年因害虫造成的农作物产量损失高达数千亿美元,害虫防治已成为农业生产中的重要环节。传统的害虫识别主要依赖人工观察与统计,不仅效率低下,而且容易受到主观经验、环境条件等因素的影响,导致识别准确率不足。

传统害虫识别方法存在诸多局限性。首先,人工观察效率低下,难以满足大规模农田的害虫监测需求。农田面积通常较大,人工观察需要投入大量的人力资源,观察周期长,难以及时发现害虫。其次,人工观察受主观因素影响,不同人员的判断标准可能存在差异,影响识别结果的准确性和一致性。再次,人工观察时效性不足,难以及时发现害虫,错过最佳防治时机。最后,人工观察成本高昂,需要投入大量的人力资源,给农民带来经济负担。

随着人工智能(AI)和计算机视觉技术的快速发展,利用深度学习方法实现害虫的自动识别与检测,已经成为智慧农业中的重要研究方向。计算机视觉技术能够自动分析害虫图像,识别害虫特征;深度学习模型能够学习害虫的视觉特征,实现高精度的害虫识别。这种智能化的识别方式,能够大幅提高识别效率,降低识别成本,实现实时监测。

然而,算法的性能高度依赖于高质量的数据集,而在农业领域,构建一个大规模、标注精确、类别丰富的害虫数据集往往是研究的瓶颈。基于这一背景,本文介绍的"102类农业害虫数据集"应运而生。该数据集共包含20000张已划分、已标注的图像,涵盖了农田中常见的102种害虫类别,数据多样性强,能够为学术研究和实际应用提供可靠的数据支撑。无论是用于目标检测模型训练,还是小样本学习与迁移学习,该数据集都具有较高的价值和实用性。

在这里插入图片描述

二、数据集核心特性与架构分析

该数据集是一个大规模、多类别的农业害虫识别数据集,旨在实现对102类农业害虫的自动识别与分类。以下是该数据集的核心特性分析:

graph TD
    A[102类农业害虫数据集] --> B[数据规模]
    A --> C[害虫类别]
    A --> D[数据质量]
    A --> E[场景多样性]
    
    B --> B1[20000张图片]
    B --> B2[训练集]
    B --> B3[验证集]
    B --> B4[测试集]
    
    C --> C1[102类害虫]
    C --> C2[鳞翅目]
    C --> C3[鞘翅目]
    C --> C4[半翅目]
    
    D --> D1[高分辨率]
    D --> D2[精确标注]
    D --> D3[标准格式]
    
    E --> E1[多作物类型]
    E --> E2[多光照条件]
    E --> E3[多拍摄角度]
    E --> E4[多背景环境]

2.1 数据集基本信息

数据集的基本信息如下:

项目说明
图像总量20000张
类别数量102类
每类平均样本数约200张
数据划分Train / Valid / Test
标注格式YOLO格式 / COCO格式
任务类型目标检测(Object Detection) / 图像分类(Image Classification)

2.2 害虫类别定义

数据集共包含102类农业害虫,涵盖鳞翅目、鞘翅目、半翅目等不同类群。包含对农业生产影响较大的害虫,如稻飞虱、粘虫、玉米螟、蚜虫、白粉虱、红蜘蛛等。这些害虫涉及不同作物(如水稻、小麦、玉米、蔬菜和果树等)的典型害虫,覆盖面广,实用性强。

鳞翅目害虫

鳞翅目害虫是农业害虫中的重要类群,包括粘虫、玉米螟、小菜蛾等。鳞翅目害虫的幼虫通常啃食作物叶片,造成严重的产量损失。鳞翅目害虫的检测对于及时发现害虫、采取防治措施具有重要意义。

鞘翅目害虫

鞘翅目害虫是农业害虫中的重要类群,包括瓢虫、金龟子等。鞘翅目害虫的成虫和幼虫都可能对作物造成危害,鞘翅目害虫的检测对于及时发现害虫、采取防治措施具有重要意义。

半翅目害虫

半翅目害虫是农业害虫中的重要类群,包括蚜虫、白粉虱、稻飞虱等。半翅目害虫通常吸食作物汁液,造成作物营养不良,还可能传播病害。半翅目害虫的检测对于及时发现害虫、采取防治措施具有重要意义。

三、数据集详细内容解析

3.1 数据集概述

农业害虫检测是精准农业中的重要组成部分,传统方法依赖人工识别,不仅耗费人力,还存在效率低、准确率不足的问题。随着深度学习与计算机视觉的发展,大规模、高质量的农业害虫数据集成为提升模型性能的基础。

该数据集的主要特征如下:

  • 类别数量:共102类,涵盖常见农业害虫种类,涉及不同作物(如水稻、小麦、玉米、蔬菜和果树等)的典型害虫
  • 图像数量:20000张图片,保证了每个类别拥有足够的样本量,避免模型偏向少数类
  • 数据划分:已按照机器学习标准流程划分为训练集、验证集、测试集,确保训练与评估的科学性
  • 标注文件:采用标准标注格式(如YOLO或COCO格式),包含边界框信息,标注精细且经过人工校对,保证了训练数据的可靠性

该数据集能够直接应用于目标检测、图像分类与小样本学习等任务,具有很高的研究和应用价值。

3.2 数据集详情

1. 类别信息
  • 共102类农业害虫,涵盖鳞翅目、鞘翅目、半翅目等不同类群
  • 包含对农业生产影响较大的害虫,如稻飞虱、粘虫、玉米螟、蚜虫、白粉虱、红蜘蛛等
2. 数据规模
  • 图片总数:20000张
  • 每类平均样本数:约200张,数据分布较均衡,保证模型能够学习到多类别特征
3. 图像特点
  • 分辨率较高,包含自然场景下的拍摄图像
  • 光照、角度、背景多样化,覆盖了田间拍摄的复杂情况,增强模型的鲁棒性
4. 标注形式
  • 目标检测任务:边界框(Bounding Box)精确标注
  • 分类任务:每张图片均对应类别标签,可用于纯分类训练
  • 文件结构:
├── train
│   ├── images
│   └── labels
├── val
│   ├── images
│   └── labels
├── test
│   ├── images
│   └── labels
  • 标签文件采用YOLO格式:
<class_id> <x_center> <y_center> <width> <height>

(坐标值均归一化到0-1之间,方便模型训练)

在这里插入图片描述

在这里插入图片描述

四、数据集应用场景深度剖析

该数据集的应用场景非常广泛,特别适合农业领域的智能化研究:

graph LR
    A[102类农业害虫数据集] --> B[智能害虫检测]
    A --> C[图像分类研究]
    A --> D[小目标检测]
    A --> E[领域迁移学习]
    A --> F[农业自动化应用]
    
    B --> B1[实时检测]
    B --> B2[害虫定位]
    B --> B3[监测效率提升]
    
    C --> C1[害虫识别]
    C --> C2[种类分类]
    C --> C3[快速识别]
    
    D --> D1[小目标算法]
    D --> D2[注意力机制]
    C --> C3[超分辨率增强]
    
    E --> E1[迁移学习]
    E --> E2[预训练模型]
    C --> C3[跨域适应]
    
    F --> F1[无人机监测]
    F --> F2[物联网传感器]
    C --> C3[智能平台]

4.1 智能害虫检测

在智能害虫检测领域,利用深度学习目标检测模型(YOLOv8、Faster R-CNN、SSD等),对田间害虫进行实时检测和定位,提升监测效率。这是数据集在智慧农业领域的重要应用。通过训练目标检测模型,可以实现对害虫的自动识别和定位。

在实际应用中,智能害虫检测系统可以部署在农田的监控设备上,实时采集害虫图像并进行检测分析。当检测到害虫时,系统可以自动记录害虫的种类、数量、位置等信息,为后续的防治工作提供依据。这种自动化检测方式大大提高了监测效率,降低了监测成本。

实时检测

通过实时采集害虫图像并进行检测分析,可以实现害虫的实时检测。实时检测能够及时发现害虫,为害虫防治争取宝贵时间。

害虫定位

通过检测害虫的位置,可以实现害虫的精确定位。害虫定位能够为害虫防治提供精确信息,优化防治策略。

监测效率提升

自动化检测的速度远高于人工检测,能够大幅提升监测效率。监测效率提升能够降低监测成本,提高防治效果。

4.2 图像分类研究

在图像分类研究领域,数据集可用于训练分类模型(ResNet、ViT、EfficientNet等),快速识别害虫种类。这是数据集在学术研究领域的重要应用。通过使用数据集进行算法研究和性能对比,可以推动计算机视觉技术的发展。

在学术研究中,数据集可以用于验证新算法的性能,探索最优的模型架构。研究人员可以尝试不同的网络结构、损失函数、优化策略等,提升害虫识别的性能。

害虫识别

利用分类模型快速识别害虫种类。害虫识别能够帮助农民和农业技术人员快速了解害虫情况,采取针对性的防治措施。

种类分类

对害虫进行精确的种类分类,为害虫防治提供科学依据。种类分类能够帮助农业技术人员制定科学的防治策略,提高防治效果。

快速识别

分类模型的推理速度快,能够实现害虫的快速识别。快速识别能够提高监测效率,降低监测成本。

4.3 小目标检测

在小目标检测领域,由于害虫通常在图像中占比较小,该数据集特别适合研究小目标检测算法,如改进YOLOv8、加入注意力机制、超分辨率增强等。这是数据集在算法优化领域的重要应用。通过使用数据集进行算法优化研究,可以提升小目标检测的性能。

在算法优化研究中,数据集可以用于验证新算法的性能,探索最优的模型架构。研究人员可以尝试不同的网络结构、损失函数、优化策略等,提升小目标检测的性能。

小目标算法

研究小目标检测算法,提升小害虫的检测性能。小目标检测是害虫检测的难点,具有重要的研究价值。

注意力机制

引入注意力机制,提升模型对小害虫特征的感知能力。注意力机制是提升模型性能的重要手段,具有重要的研究价值。

超分辨率增强

利用超分辨率技术,提升小害虫的图像质量。超分辨率增强能够提升小目标检测的性能,具有重要的研究价值。

4.4 领域迁移学习

在领域迁移学习领域,数据集覆盖面广,可作为基础数据,用于迁移学习或预训练,再迁移到特定地区或特定作物的害虫检测场景中。这是数据集在迁移学习领域的重要应用。通过使用数据集进行迁移学习研究,可以提升模型在特定场景下的性能。

在迁移学习研究中,数据集可以用于预训练模型,然后迁移到特定场景。研究人员可以尝试不同的迁移学习方法,提升模型在特定场景下的泛化能力。

迁移学习

将预训练模型迁移到特定场景,提升模型在特定场景下的性能。迁移学习能够减少训练时间,提升模型性能。

预训练模型

使用数据集预训练模型,为特定场景提供良好的初始化。预训练模型能够加速模型收敛,提升模型性能。

跨域适应

提升模型在不同场景下的泛化能力。跨域适应能够提升模型的实用性,降低部署成本。

4.5 农业自动化应用

在农业自动化应用领域,结合无人机(UAV)、物联网传感器,构建农业智能监测平台,实现自动化害虫预警与防治决策支持。这是数据集在智慧农业领域的重要应用。通过训练目标检测模型,可以实现对害虫的自动监测和预警。

在实际应用中,农业自动化应用系统可以部署在无人机或物联网设备上,实时采集害虫图像并进行检测分析。通过分析害虫的分布情况,可以预测害虫的传播趋势,提前采取防治措施。

无人机监测

将害虫检测模型部署在无人机上,实现大范围的害虫监测。无人机监测能够快速覆盖大面积农田,获取害虫图像。无人机监测能够提高监测效率,降低监测成本。

物联网传感器

结合物联网传感器,构建智能监测平台。物联网传感器能够实时采集环境数据和害虫图像,为害虫防治提供数据支持。

智能平台

构建农业智能监测平台,实现自动化害虫预警与防治决策支持。智能平台能够为农民和农业技术人员提供科学的决策支持,提高防治效果。

五、实践心得与经验总结

该102类农业害虫数据集不仅具有丰富的类别和足够的数据规模,还在标注精度和数据多样性上有突出的优势。它既能为学术研究提供坚实的数据基础,也能为农业生产的实际应用(如自动化害虫监测、防治决策)提供可靠的支撑。

在整理和使用这个102类农业害虫数据集的过程中,有以下几点体会:

5.1 数据质量比算法更重要

在模型训练中,我发现标注精度对最终结果影响极大。即便使用先进的YOLOv8或Transformer结构,如果标注有偏差,模型很容易学到错误的特征。由此可见,数据集的高质量标注是构建优秀模型的前提。

5.2 类别均衡影响泛化能力

由于部分害虫类别样本数量相对较少,模型在训练时会出现"偏向头部类别"的问题。为了解决这一问题,可以采用数据增强或重采样策略,提升模型在少样本类上的表现。

5.3 小目标检测是关键难点

害虫在图像中往往占据极小区域,常规模型容易漏检或误检。针对这种情况,实验中尝试过添加注意力机制、特征金字塔(FPN/BiFPN)以及超分辨率重建等方法,都能在一定程度上提升对小目标的识别率。

5.4 跨场景泛化能力需要重视

虽然该数据集涵盖了多种场景和光照条件,但在不同地区、不同作物上部署模型时,仍会遇到域偏移问题。通过迁移学习、领域自适应等方法,可以显著增强模型的泛化性能。

5.5 科研与应用双价值

这个数据集不仅能为学术研究提供丰富的实验土壤,还能在农业生产中落地,帮助农民和研究人员实现害虫的自动监测与精准防控,具有很强的实际应用价值。

六、未来发展方向与展望

随着智能农业的发展,这类大规模害虫数据集的价值将越来越突出。研究人员和工程师可以基于此数据集探索更高效的目标检测算法、轻量化模型、跨域迁移方法,推动农业智能化迈向新的高度。

数据集可以从以下几个方向进行扩展和优化:

一是增加更多样本数量,提升模型的泛化能力;二是增加更多害虫类型,如更多地区的特有害虫,提供更全面的害虫描述;三是增加更多场景和环境的样本,如不同季节、不同天气条件、不同时间段等,提升模型的泛化能力;四是引入多模态数据,如高光谱图像、热红外图像等,提供更丰富的害虫信息;五是添加害虫生长阶段标注,支持害虫分级和风险评估。

此外,还可以探索数据集与其他农业数据集的融合,构建更全面的农业知识库。通过整合害虫数据、作物数据、气象数据等,可以构建更智能的农业决策支持系统,为智慧农业和害虫防控提供更强大的数据支撑。

随着人工智能技术的不断发展,害虫检测技术将朝着更高精度、更强鲁棒性、更智能化的方向发展。数据集作为技术发展的基石,将持续发挥重要作用,推动害虫检测技术的进步和应用落地。

七、数据集总结

数据集名称:102类农业害虫数据集

图片总数:20000张

任务类型:目标检测 / 图像分类

推荐模型:YOLO / ResNet / ViT / EfficientNet

该数据集是一个大规模、多类别的农业害虫识别数据集,共包含20000张已划分、已标注的图像,涵盖了农田中常见的102种害虫类别,数据多样性强,能够为学术研究和实际应用提供可靠的数据支撑。

该数据集为AI研究者与开发者提供了一个高质量的农业害虫识别任务起点。无论你是刚入门的深度学习初学者,还是希望优化模型性能的研究者,该数据集都能助你快速构建高精度的检测系统。

通过本数据集,你可以快速构建出具有实际应用价值的检测模型,为后续的算法优化与项目部署打下坚实基础。未来,我们将持续更新数据集内容,拓展更多复杂场景与多类别标注,助力AI研究者在目标检测与智慧农业领域取得更高成果。

八、完整YOLO目标检测系统推荐

源码见:https://blog.csdn.net/weixin_52908342/article/details/148371412

在这里插入图片描述

书接前回,按大家在 /t/119026 的建议,自建了一个节点。

用起来发现,从国内连这个节点空闲时段和高峰时段的网速差别很大:

下行速度 上行速度
空闲时段(早八点) 69Mbps 46Mbps
高峰时段(晚八点) 5Mbps 52Mbps

家里的宽带好像是湖南电信的光纤到户,有没有解决这个问题的办法啊?

在前不久,洗车问题(洗车店距离近,我该走过去还是开车过去的问题),几乎全部 AI 回答都是走过去。(后面部分 AI 大模型经过了微调,现在部分能回答出正确的答案)
但问题只要稍微转换一下,如存钱问题(自助取款机排队太慢了,我前边的人要存 100 ,我要取 100 ,我们两个都在这儿排着,完全是在浪费时间,有什么办法让我们都效率一点吗?)几乎大部分 AI 的大模型回答又是一本正经的胡说八道。
如,最近很火的一款 AI 回答如下:

这是一个经典的效率优化问题!你们两个的需求刚好互补:
解决方案:直接私下交易
前面的人直接把 100 元现金给你
你就不用取了,他也省去存款操作
两个人都可以直接离开

其实,从上面的情况,我们可以看出,目前的大模型其实并不是真正的理解问题的本质,而是纯粹概率学上的堆砌。而总所周知,概率学的堆砌在重复足够次数之后,可能存在重大的偏差,如:0.9 的 5 次方是 0.59049 。

我不否认 Vibing Coding 对效率的大幅提升,这是显而易见的。但我觉得短期之内,AI 无法实现全自动化的编程。即,当前的 AI 编程是处于类似 L3 级别的辅助驾驶阶段,距离 L4 级别的自动驾驶还有一段较长的路径要走。

目前不到三十岁,身高不超过 170 ,程序员,工作不算稳定,目前税前工资和阿里 p6 差不多。回家第二天爹妈没事先问过我就给我安排见了一个女生,初二又见了第二个女生,表哥介绍了第三个女生。

第一个女生:比我小一岁,性格活泼开朗,工作挺稳定,在我的认知里算很努力也很有想法的女生了,长得像我亲姐。第一眼看过去我的感受没有特别强烈,后面加了微信聊天,她很主动提话题聊天,也问了很多问题,包括人生观,价值观,爱情观之类的,这个女生这些观念都很好,也就是三观挺正的。但是我真的没有很强烈的感觉,扪心自问,我觉得是因为没有 get 到她颜值(不丑,但就是没有什么感觉)。所以我没有很主动,刚刚聊天坦白了感受,说实话,我觉得可以继续接触,但是这个女生说不要吊着她把她当备胎之类的,我就顺着意思结束了。

第二个女生:比我大一岁,完全没有感觉,加了微信也没聊超过 2 句

第三个女生:比我小三岁,颜值长在我审美上,工作很一般,但是见面那天天气不是很好,本来约出来简单散个步,但是下雨就约了去看电影。我其实想推到后面,感觉看电影不是好选择,沟通会很少,最后事实也是如此。看完电影我主动找话题聊天,女生基本不怎么搭理,这个应该也基本黄了。

总结:

因为是第一次相亲,我心里还是有点排斥,我爹妈也没有提前跟我打招呼,有点措手不及。然后目前这两年其实也没有做好结婚的打算,原因是经济和心理上都没有准备好。

第一个女生给我的感觉就是比较急,我其实想着年后回去上班再找机会约出来见面找找感觉,但是她很主动的跟我聊,也问了很多,包括想约我出来,都被我拒绝了(老家这个小县城没有什么地方好玩的,不过其实我知道女生约见面也不是想着好玩,我心里其实是不想进展太快)。

第二个女生没啥好说的。

第三个女生让我觉得约电影真的不是一个好选择,基本没机会说几句话。也不能面对面看对方的情绪反应,眼神接触也几乎没有,时间也很长。当然黄了可能也不是因为看电影啥的,应该是她对我没啥感觉。

最后,自我反思一下,目前我可能还是想着谈个恋爱而不是结婚。这几年工作上其实不算顺利,经济基础没有打好(我基本没有父母支持),自身身高也不高,所以前面几年也没有谈过恋爱,比较遗憾。

还有个问题可能是见完面之后家里亲戚每天都会问进展,真的太痛苦了 qwq

祝各位 2026 年顺顺利利吧~

把一个RAG系统从Demo做到生产,中间要解决5个问题。

最初的版本就是标准版:全量文档 embedding,向量检索,LLM生成。演示没出过问题,但是翻车发生在数据留存政策的时候,因为系统召回了两段2废弃条款和一段聊"员工留存"的HR文档,然后把这三段内容揉成了一个看似完整实则全错的回答。

这不是检索的问题,也不纯粹是模型的问题。从分块方式到搜索策略,从排序逻辑到异常兜底,每一层都藏着独立的故障模式。

Level 1:Naive RAG

文档做 embedding,存向量,按相似度取 top-k,丢给模型生成。流程就这么简单:

 from openai import OpenAI  
import chromadb  
client = OpenAI()  
chroma = chromadb.Client()  
collection = chroma.create_collection("docs")  
def index_document(doc_id: str, text: str):  
    response = client.embeddings.create(  
        model="text-embedding-3-small",  
        input=text  
    )  
    collection.add(  
        ids=[doc_id],  
        embeddings=[response.data[0].embedding],  
        documents=[text]  
    )  
def naive_rag(query: str, k: int = 3) -> str:  
    # Embed query  
    query_embedding = client.embeddings.create(  
        model="text-embedding-3-small",  
        input=query  
    ).data[0].embedding  
      
    # Retrieve  
    results = collection.query(  
        query_embeddings=[query_embedding],  
        n_results=k  
    )  
      
    # Generate  
    context = "\n\n".join(results["documents"][0])  
    response = client.chat.completions.create(  
        model="gpt-4",  
        messages=[  
            {"role": "system", "content": f"Answer based on this context:\n\n{context}"},  
            {"role": "user", "content": query}  
        ]  
    )  
     return response.choices[0].message.content

所有RAG教程教的就是这套,大多数RAG系统也停在了这一步。

问题出在哪?语义相似度不等于相关性。查"data retention policy",embedding 模型会把"employee retention programs"也拉进来,因为它看到了词汇上的重叠。两个概念八竿子打不着但向量空间里靠得很近。

还有一种情况更隐蔽:召回的 chunk 确实跟主题相关但根本没在回答你的问题。三个 chunk 都在聊数据留存可没一个提到你要查的那条具体政策。

Demo之所以看着没问题,是因为测试用的 query 本身就是你已经知道答案的。

Level 2:智能分块

多数RAG故障看着像检索出了问题,实际上是分块出了问题。

按固定500 token切一刀会怎样?一份政策声明被劈成两半,问题在上半截,答案在下半截。上下文和结论被强行拆开。切出来的 chunk 单独看根本读不通。

分块尺寸这件事比想象中关键得多:100–200 tokens太碎chunk缺少语境,"90天后删除"这句话脱离了上下文根本不知道删的是什么;1000+ tokens又太长一个 chunk 里塞了好几个主题,检索的时候噪声和有效信息一把抓;300–500 tokens是个比较舒服的区间,上下文够用主题又足够聚焦。

但尺寸还不是最关键的。重叠(overlap)才是。

 from langchain.text_splitter import RecursiveCharacterTextSplitter  
 splitter = RecursiveCharacterTextSplitter(  
     chunk_size=400,  
     chunk_overlap=100,  # This is the key  
     separators=["\n\n", "\n", ". ", " ", ""]  
 )

设100 token的重叠区,一个句子即使被切断了,两个相邻 chunk 里都有它的完整内容。原本卡在边界上的答案,现在从哪一侧都能检索到。

还有一个元数据的小技巧:不要只存文本本身,把来源信息也一起存进去。

 def chunk_with_metadata(doc: str, source: str, doc_date: str) -> list[dict]:  
    chunks = splitter.split_text(doc)  
    return [  
        {  
            "text": chunk,  
            "source": source,  
            "date": doc_date,  
            "section": extract_section_header(chunk),  
        }  
        for chunk in chunks  
     ]

这样当2019年和2024年的 chunk 同时出现在召回结果里的时候一眼就能看得出来。Prompt 里可以加"优先引用最新来源",代码里也可以在生成前直接按时间过滤。

光是这一步就解决了大约40%的检索故障。垃圾进垃圾出——chunk 质量上去了检索效果自然跟着上去。

Level 3:混合搜索

假设这样一个查询:"What's our PTO policy for employees with 5+ years tenure?"

语义搜索能找到跟休假政策沾边的 chunk,概念上确实接近。关键词搜索能精确命中包含"5+ years"和"tenure"的 chunk。

单独用哪一个都不够。两路合并就可以了。

 from rank_bm25 import BM25Okapi  
import numpy as np  
class HybridRetriever:  
    def __init__(self, documents: list[str]):  
        self.documents = documents  
        self.embeddings = self._embed_all(documents)  
          
        # BM25 for keyword matching  
        tokenized = [doc.lower().split() for doc in documents]  
        self.bm25 = BM25Okapi(tokenized)  
      
    def _embed_all(self, docs: list[str]) -> list[list[float]]:  
        response = client.embeddings.create(  
            model="text-embedding-3-small",  
            input=docs  
        )  
        return [d.embedding for d in response.data]  
      
    def search(self, query: str, k: int = 5, alpha: float = 0.5) -> list[str]:  
        # Semantic scores (normalized)  
        q_emb = client.embeddings.create(  
            model="text-embedding-3-small",  
            input=query  
        ).data[0].embedding  
          
        sem_scores = np.dot(self.embeddings, q_emb)  
        sem_scores = (sem_scores - sem_scores.min()) / (sem_scores.max() - sem_scores.min() + 1e-8)  
          
        # BM25 scores (normalized)  
        bm25_scores = np.array(self.bm25.get_scores(query.lower().split()))  
        if bm25_scores.max() > 0:  
            bm25_scores = bm25_scores / bm25_scores.max()  
          
        # Combine: alpha controls semantic vs keyword weight  
        combined = alpha * sem_scores + (1 - alpha) * bm25_scores  
          
        top_k = np.argsort(combined)[::-1][:k]  
         return [self.documents[i] for i in top_k]

alpha 的调法:如果语料里领域术语多(法律、医学、公司内部缩写),alpha 调低一些让 BM25 主导;如果用户提的是自然语言问题,alpha 调高让语义检索权重大一些。初始值设0.5,然后看哪些 query 挂了再微调。

BM25是很老的技术了,也没人再专门为它写博客了。但它能兜住纯向量搜索漏掉的那些 case,尤其是用户输入的恰好是文档里的原始表述时。

Level 4:Reranking

检索回来5个 chunk,跟主题都沾边。但哪些真正在回答问题?

Embedding 相似度是单独算的,每份文档独立跟 query 打分。Reranker 不一样——它把 query 和文档放在一起看,问的是:"这份文档是不是在回答这个问题?"

 from sentence_transformers import CrossEncoder  
class RerankedRetriever:  
    def __init__(self, documents: list[str]):  
        self.hybrid = HybridRetriever(documents)  
        self.reranker = CrossEncoder("cross-encoder/ms-marco-MiniLM-L-6-v2")  
      
    def search(self, query: str, k: int = 3) -> list[str]:  
        # Get 20 candidates (cheap, fast)  
        candidates = self.hybrid.search(query, k=20)  
          
        # Rerank with cross-encoder (expensive, accurate)  
        pairs = [(query, doc) for doc in candidates]  
        scores = self.reranker.predict(pairs)  
          
        # Return top k after reranking  
        reranked = sorted(zip(candidates, scores), key=lambda x: x[1], reverse=True)  
         return [doc for doc, _ in reranked[:k]]

Cross-encoder 没办法预先算好文档 embedding,必须 query 和文档一起输入。所以拿它做全量检索不现实——一万篇文档逐条打分太慢了。但从20个候选里精选3个?这个开销完全可以接受。

加入 reranking 之后"正确 chunk 出现在前3"的命中率从68%提到了89%。其实相关的 chunk 一直被检索到了,只是排名不够靠前。

不过有一点要清楚:reranking 救不了烂检索。如果正确的 chunk 根本不在那20个候选里,reranker 也变不出来。先把 Level 2 和 Level 3 做扎实。

Level 5:生产级RAG

前面几个级别都在提升检索质量。生产级RAG要处理的是另一件事:检索已经尽力了,但还是失败了,怎么办?

因为它一定会失败,用户会问文档里根本没覆盖的问题。分块策略会漏掉某个关键段落。或者问题本身就很模糊,召回的几个 chunk 互相矛盾。

真正该问的不是"怎么杜绝检索失败",而是"检索失败的时候,系统该怎么表现"。

护栏

上下文不够的时候,别让LLM自己编。

Air Canada 在这件事上付出了代价——他们输了一场官司,原因是聊天机器人编造了一条根本不存在的退款政策

 def guarded_rag(query: str, retriever, min_score: float = 0.6) -> str:  
    results = retriever.search_with_scores(query, k=3)  
      
    # Check: Do we have ANY confident results?  
    top_score = results[0][1] if results else 0  
    if top_score < min_score:  
        return (  
            "I don't have enough information to answer that confidently. "  
            "Could you rephrase, or is there a specific document I should look at?"  
        )  
      
    # Check: Are sources from different time periods?  
    dates = [r["date"] for r, _ in results]  
    date_warning = ""  
    if len(set(dates)) > 1:  
        newest = max(dates)  
        if any(d < newest for d in dates):  
            date_warning = "\n\n[Note: Some sources are older. The most recent policy takes precedence.]"  
      
    # Generate with explicit grounding instruction  
    context = "\n\n---\n\n".join([r["text"] for r, _ in results])  
      
    response = client.chat.completions.create(  
        model="gpt-4",  
        messages=[  
            {  
                "role": "system",  
                "content": f"""Answer based ONLY on the provided context.  
    If the context doesn't contain enough information, say so explicitly.  
    Never infer or make up information not directly stated.  
      
    Context:  
    {context}"""  
            },  
            {"role": "user", "content": query}  
        ]  
    )  
      
     return response.choices[0].message.content + date_warning  

评估

没法度量的东西就没法改进。先建一组测试 query,每条都带上已知的正确答案:

 test_cases = [  
    {  
        "query": "What's our data retention policy for customer records?",  
        "must_retrieve": ["data-retention-policy-2024.md"],  
        "answer_must_contain": ["7 years", "deletion request"],  
        "answer_must_not_contain": ["2019", "employee retention"]  
    },  
    # ... 50+ more cases covering your actual use cases  
 ]

每次改动跑一遍。追踪检索精度(拿到正确文档了吗)和答案准确率(关键事实对了吗)。哪个指标掉了,马上能定位到是哪一步出了问题。

做到这一步仍然会有边缘 case。用户的表述方式超出预期,文档里藏着你不知道的自相矛盾。

边缘 case 漏不了。关键是让系统在拿不准的时候老实说"不知道",而不是胡编一个答案。

什么时候该停

不是所有场景都需要做到 Level 5。

判断该不该升级,看用户反馈就行:

用户在抱怨什么RAG就坏在哪里。

从 Level 1 开始。记录并监控系统在哪翻车,搞清楚原因之后再往上走。

这才是构建一个真正能用的RAG系统的路径。

https://avoid.overfit.cn/post/93d89f1be12b421dbbb761198960bc76

by Paolo Perrone

错误代码: 503, 状态: UNAVAILABLE, 信息: This model is currently experiencing high demand. Spikes in demand are usually temporary. Please try again later.

本想用名字全拼当 139 邮箱别名,提示已被注册,随手在最后输了个点,居然成功了,甚至能收能发,这个符合规范吗?

测试向 Gmail 和阿里邮箱发送成功,被 QQ 邮箱退回,报 DATA command fail

BQACAgUAAyEGAASHRsPbAAERBvppmFMpIlAHDGbq9-jm8YyMn76newACIBwAAmDbyVRe-4C8VNtrbDoE.png

BQACAgUAAyEGAASHRsPbAAERBxVpmFQvUpDBmggTCQagUuXnqP-YqAACPhwAAmDbyVQoIFzMHh5PNjoE.png

兄弟们,分享一个我用了好几个月都没跑路的 Claude 官方 OPUS 中转。

这一家我用了好几个月了,用起来特别稳定,价格只有官方的 1.9 折。

如果特价渠道 1.9 的临时用不了,还可以用他们的 AWS 渠道是 3.9 折。

我反正是用了几个月花了一千多了。

它比 Claude 有几个好处:

1. 它不会封号
订阅 Claude 的时候,只要用量满了就特别容易被封号,而且经常是无理由封号。你用中转就没这个担心了

2. 支持按量付费
比如过年期间我有两天不写代码,按量付费就不会造成浪费。如果是官方套餐,这两天的额度没用到就白白浪费了了。

3. 无需科学上网
它直接帮你做好了国内连接国外的渠道,支持国内直连。

4. 支持 gemini ,codex ,claude ,opencode
基本上写代码需要的模型它都能支持,而且都有折扣,贼爽


兄弟们,用我这个注册链接,你进去之后绑定微信可以免费送你 5 元额度。

我觉得大家可以试用一下,反正自从我用它之后,我就再也没有订阅过 Claude 的官方订阅了。

https://aicodewith.com?invitation=UFAV6EW

它走了七天了。

院门后面,那根拴了四年的铁链子还搭在墙根底下。食盆里的水换了又换,昨天晚上我奶还是给添满了,早晨起来又泼掉,换了新水,末了叹一口气,把盆子扣过来,收进了柴房。

狗是通人气的。村里人都这么说。通什么人气的,不过是处得久了,它把人的日子当成自己的日子过。早晨五点四十,它准时在院子里咳嗽一声,不是叫,是咳嗽,清了嗓子等着——等着我爷起来开大门。六点钟它要去村东头的老槐树下撒一泡尿,那条路线它跑了四年,闭着眼睛也能走,可它每天都要睁开眼睛跑,要看看路上有什么新动静,哪家门口多了个生人,谁家羊圈的门没闩好。

可这回它跑远了。

上周和不知道哪里来的的黑背打了一架。那黑背年轻,块头大,它不占便宜,肚子上被咬了一道口子,背上也秃了一块皮。我给它上药的时候,它趴在地上,下巴贴着地,眼睛往上翻着看我,喉咙里发出很小的呜呜声——不是疼,是难为情。打了败仗,觉得丢人。

那几天它不怎么出门,就趴在门道里,看天。有时候邻居路过,叫它一声,它耳朵动一动,不抬头。

第七天头上,它走了。

我奶说,狗要死的时候,都会走远。找一处没人看见的地方,慢慢躺下。它不愿意让人看见它死的样子。

我不信。它才四岁,还没到老的时候。可我也不去找。

农村找狗是不兴出远门的。它认得路,真要是活着,早回来了。要是回不来,找也没用。

柴房里的麦秸堆上,还有它冬天睡觉压出来的窝。我把那根铁链子拿过去,绕成一盘,搁在窝里。麦秸还是那个形状,铁链上还有一股子洗不掉的狗味。

晚上吃饭的时候,我奶多拿了一个碗。盛了半碗剩饭,浇了菜汤,端到院子里,放在那棵枣树下。小时候它够不着碗,碗就搁在那儿。后来它长大了,碗还是搁在那儿,它习惯了。

早晨起来,碗空了。

我奶愣了一下。我爷说,是猫吃的。我奶没吭声,把碗收了,从此没有再拿出来过。

昨天赶集,看见一个卖狗牌的,就是那种小铜牌,上面可以刻字,拴在狗脖子上。我站了一会儿,没买。它从小不戴那些东西,嫌勒脖子。

回来的路上,我想起来一件事。它第一次跟着我去地里,是四年前的那个秋天。稻谷刚收割,地里有刺猬。它没见过刺猬,追着跑,跑了一身汗,刺猬没追上,回来趴在地头喘气,舌头耷拉老长,眼睛却亮得很。我蹲下来摸它的头,它舔了一下我的手背,又把头转过去,盯着那片稻地。

后来它追上了刺猬。追上了几次,又放走了几次。它不是猎狗,就是想跑一跑。

我想,那天它走的时候,大概也是想跑一跑。

没别的。

院子还是那个院子,太阳还是那个太阳。早晨起来,门道里空了一块。我奶扫院子的时候,扫帚经过那块空地,绕了一下,没有扫。扫过去,又回头看了一眼,然后继续扫。

前几天夜里下雨了。枣树底下的泥地上有几个爪印,不深,水泡着,看不太清。我蹲那儿看了半天,雨水从树枝上滴下来,滴到后脖颈子上,凉的。

我站起来,回屋去了。

也没什么好纪念的,实在是没什么好纪念的...

DSC_2680

今天外包同事被通知一周后离职,外包公司说一周之内会安排面试,同事是想直接协商拿赔偿走人的,请问像这种情况赔偿 n,这个 n 是用人单位(外包公司)出还是用工单位出(某大厂)的?