1. 评测工作
在大模型微调和RAG工作都在进行的同时,我们搭建了一套评测数据集。这套数据集有山东大学周易研究中心背书。主要考察大模型对于易学基本概念与常识的理解与掌握能力。
1.1. 构建评测集
在周易研究中心的指导下,我们构建出了一套用以考察大模型对易学基本概念的掌握能力的数据集。
这套数据集是纯手工制作的,没有用之前之前的自动语料生成技术。因为我们要确保评测集100%的正确性和权威性。因此手写了170个四选一的单选题,配有分类与正确答案,让大模型进行回答。
怎么评估大模型在这个评测数据集上的性能?
我们对回答结果与正确结果进行比对,评估大模型的能力(准确来说,是Solve Rate,问题解决率)。其中,Solve Rate计算公式如下:
这里,SR是Solve Rate,分子是解决的问题数(也即大模型给出的答案能和正确答案对的上的问题数),分母是问题总数。
评测数据集的结构
评测数据集的一行的结构如下所示:
其中:
- A列:一个有关周易(易学)的问题,有且仅有一个明确的答案。
- B~E列:这个问题的4个选项,分别对应A\B\C\D。其中有且仅有一个正确答案。
- F列:这个问题的正确答案。
- G列:该问题的分类
共170行,对应170个问题。
1.2. 构建测试过程
我们打算与目前现有的大模型对比,进行基准(baseline)测试。由于评测数据集和测试脚本完成编写后,我们微调的大模型还没有能够集成到服务器上。因此一开始我只跑了三个大模型:
- chatglm3-6b + 我们构建的易学知识库
- chatglm3-6b(不带知识库)
- 智谱AI chatglm-4(但是不带知识库)
在这个实验中,我们想探究知识库对于会给大模型的能力带来多少提升。我这里就以这个基准测试举例了,重点介绍这个Baseline Test的Working Pipeline。(后续,我们会加入经过结构化文本构成的数据集微调的大模型,并有带/不带知识库两种类型,另外还可以加入国内外已有通用大模型,例如文心一言、ChatGPT等)。
配置测试环境
这里我通过一个json文件对基线测试的环境进行配置。
{
"sources": ["./source/test_data.xlsx"],
"targets": ["./target/target1"],
"prompt": {
"one_out_of_four": "我现在有一个关于周易的问题,是一个四选一选择题,请你帮我回答。题目是:{question},选项是:{options},答案是:(请你回答)。请直接回答,不要解释。"
},
"test_args": {
"origin_llm_kb": {
"url": "http://zy.tessky.top/chat/knowledge_base_chat",
"top_k": 20,
"score_threshold": 1.00,
"llm_models&#