许可证:cc-by-nc-4.0
语言:
- 俄语
- 英语
任务标签:文档问答
标签:
- 文档问答
- 问答系统
- 自然语言处理
- 深度学习
- Transformer模型
- 多模态
- HuggingFace
- ruBert
- 机器学习
- 深度问答
- 文档AI
- 神经网络
- torch
- pytorch
库名称:transformers
评估指标:
- 准确率
- F1分数
- 召回率
- 精确匹配
- 精确度
基础模型:
- ai-forever/ruBert-base

文档问答模型 - Kaleidoscope_small_v1
本模型是基于sberbank-ai/ruBert-base微调的文档问答专用模型,针对从给定文档上下文中提取答案的任务进行了优化,并在包含上下文、问题和答案三元组的自定义JSON数据集上进行了微调。
核心特性
- 目标:根据用户问题从文档中提取答案。
- 基础模型:sberbank-ai/ruBert-base。
- 数据集:包含context、question、answer字段的自定义JSON文件。
- 预处理:通过拼接问题和文档上下文形成输入,引导模型聚焦相关段落。
训练配置:
- 训练轮次:20
- 批量大小:每设备4条
- 预热步数:总步数的10%
- 启用FP16混合精度训练(若CUDA可用)
- 硬件:单卡RTX 3070训练
模型说明
本模型使用Transformers库和定制训练流程进行微调,关键训练过程包括:
- 自定义数据集:加载器读取包含上下文-问题-答案三元组的JSON文件
- 特征处理:采用滑动窗口策略对长文本进行分词处理
- 训练过程:利用混合精度训练和AdamW优化器提升效果
- 评估机制:基于验证集性能保存检查点,采用早停策略防止过拟合
该模型特别适合交互式文档问答场景,可广泛应用于客服支持、文档检索和智能问答系统。虽然主要针对俄语文本优化,但同样支持英语输入(注:英语支持未经充分测试)。
使用示例
import torch
from transformers import AutoTokenizer, AutoModelForQuestionAnswering
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
tokenizer = AutoTokenizer.from_pretrained("LaciaStudio/Kaleidoscope_small_v1")
model = AutoModelForQuestionAnswering.from_pretrained("LaciaStudio/Kaleidoscope_small_v1")
model.to(device)
file_path = input("输入文档路径: ")
with open(file_path, "r", encoding="utf-8") as f:
context = f.read()
while True:
question = input("输入问题(输入'exit'退出): ")
if question.lower() == "exit":
break
inputs = tokenizer(question, context, return_tensors="pt", truncation=True, max_length=384)
inputs = {k: v.to(device) for k, v in inputs.items()}
outputs = model(**inputs)
start_index = torch.argmax(outputs.start_logits)
end_index = torch.argmax(outputs.end_logits)
answer = tokenizer.decode(inputs["input_ids"][0][start_index:end_index+1], skip_special_tokens=True)
print("答案:", answer)
问答示例
俄语
上下文:
Альберт Эйнштейн разработал теорию относительности.
问题:
Кто разработал теорию относительности?
答案:
альберт эинштеин
英语
上下文:
I had a red car.
问题:
What kind of car did I have?
答案:
a red car
由LaciaStudio | LaciaAI微调