当前位置: 首页 > news >正文

自定义RAG评估数据流

 这是前置工作

向量数据构建完成 

开始进行处理

因为我们要对上面构建的数据集添加一些内容,比如检索出来的数据,评分指标等,所以我们把他封装在一个自定义item类中进行操作,然后把item放进自己构建的dataset类中

ef get_dataset(config):
    """从配置加载数据集。"""

    # 从配置中获取数据集的路径,这个是我们数据集的路径
    dataset_path = config['dataset_path']
    # 获取要加载的数据集的分割名称,如'train'、'test'等
    all_split = config['split']

    # 创建一个字典,用于存储每个分割的数据集对象
    split_dict = {split: None for split in all_split}

    # 遍历每个分割
    for split in all_split:
        # 构建该分割对应的文件路径,这个步骤就是组成完整的文件路径
        split_path = os.path.join(dataset_path, f'{split}.jsonl')
        # 检查文件是否存在
        if not os.path.exists(split_path):
            print(f"{split} file not exists!")  # 如果文件不存在,打印提示信息
            continue
        # 如果分割是'test', 'val', 'dev'之一,初始化Dataset类的实例
        if split in ['test', 'val', 'dev']:
            split_dict[split] = Dataset(config,
                                        split_path,
                                        sample_num=config['test_sample_num'],
                                        random_sample=config['random_sample'])
        else:
            # 对于其它分割,直接初始化Dataset类的实例
            split_dict[split] = Dataset(config, split_path)

    # 返回包含所有分割数据集的字典
    return split_dict

 加载数据

如果没有传递data,那么根据路径进行加载,一行一样的进行读取 ,最后data列表中是一个个的item对象

 此时我们已经拿到所有的数据

all_split是个字典,通过key可以拿到dataset对象,并且在方法上加了@property注解,可以通过书想的方式调用方法 

 然后构建提示模版,根据传递的模型类型判断是生成chat类还是instruct类的提示模版

 然后运行pipeline

 pipeline里面获取检索器,生成器

 获取生成器实例

 

获取检索器

检索器分为两种,这里我们使用的是密集的

 encoder 是用来将query转换为向量的

 

 然后执行run方法

预测完之后,把预测完之后的值放入dataset中 

评估

评估就是拿到预测的值和金标准进行比较

评估的基类

这是子类方法写的一个评估的实例,首先肯定是拿到 生成的答案和金标准答案,然后通过自己写的计算方式进行评估

 f1计算得分的细节,把单词切分为token然后计算交集,或者进行正则

 最终生成的数据

 

re-ranking 

相关文章:

  • kotlin的onFailure: () -> Unit
  • 像素绽放PixelBloom(AiPPT.com) 联合创始人蒲世林:创新者的窘境就是新物种的机会
  • iOS 获取设备占用内存
  • C++17 数学特殊函数:探索标准库中的强大工具
  • 赶上AI的大潮:在VSCode中使用DeepSeek编程的极简方法
  • 解锁养生秘籍,拥抱健康生活
  • 网工项目理论1.9 广域网设计
  • sorted() 的 key 必须是可调用对象(callable),它会被 sorted() 调用,返回排序依据
  • 【Excel笔记_6】条件格式和自定义格式设置表中数值超过100保留1位,超过1000保留0位,低于100为默认
  • Linux上部署Java项目-通过sh脚本启动
  • 机器学习——支持向量机
  • 深度学习实战——卷积神经网络CNN在图片识别中的应用以及原理
  • 如何在 Mac 上下载安装仙剑游戏仙剑世界?可以通过IPA砸壳包安装非常简单
  • Dify搭建旅行规划助手
  • 基于时变天气网络的无人机群配送路径优化
  • .NET + Vue3 的前后端项目在IIS的发布
  • WordPress“更新失败,响应不是有效的JSON响应”问题的修复
  • 基于Open Babel将SDF转为MOL2格式
  • 前端带样式导出excel表格,html表格生成带样式的excel表格
  • PHP 文件与目录操作
  • 海南儋州市委副书记任延新已赴市人大常委会履新
  • 餐饮店直播顾客用餐,律师:公共场所并非无隐私,需对方同意
  • 国家发改委:我国能源进口来源多元,企业减少甚至停止自美能源进口对国内能源供应没有影响
  • 十大券商看后市|A股风险偏好有望边际改善,市场仍处黄金坑
  • 点燃“文化活火”,上海百年街区创新讲述“文化三地”故事
  • 5月动漫|“爱死机”即将回归,《明末》或是下一个大IP?