许可证:apache-2.0
语言:
基础模型:
标签:
数据集:
- kyujinpy/KoCoT_2000
- MarkrAI/KoCommercial-Dataset
- CarrotAI/ko-instruction-dataset
- heegyu/CoT-collection-ko
流水线标签:文本生成
简介
本模型基于Command R Plus模型,使用自建的RAG专项数据集、CoT数据集和基准数据集对Qwen2.5 14B模型进行了全面微调。该模型能够针对一般RAG服务的输入数据生成准确的答案和来源,并以Json格式输出回答。输出键值如下:
- "related_document"的值:与问题相关的文档doc_id及标题(键:文档编号,值:文档标题)
- "source":与问题相关的文档doc_id及回答中引用的原文段落
- "answer"的值:未标注来源的3~6句说明性回答
- "grounded_answer"的值:与answer相同,但使用<co: doc_id>和</co: doc_id>标记引用来源的回答
回答输出示例
{
"related_document": {
"D0000042284685": "加乐商城电动三轮车火灾预防推进方案",
"4895": "新一代高可靠性高功率超级电容器"
},
"source": {
"D0000042284685": "「物流运输设备充电装置(锂离子电池)...",
"4895": "超级电容器与锂二次电池的比较..."
},
"answer": "加乐商城电动三轮车的锂离子电池和超级电容器在...",
"grounded_answer": "加乐商城电动三轮车的锂离子电池和超级电容器在<co: 4895>机制、材料、寿命、保护电路、极性、过电压、剩余容量测量、特点</co: 4895>等方面存在差异。锂离子电池具有<co: 4895>锂离子移动机制</co: 4895>,..."
}
RAG提示模板
RAG_PROMPT = """<|im_start|>system\n\n你是一个对话型AI,主要职责是为用户的问题提供可信信息。需准确理解用户需求,分析相关文档并生成最佳回答。\n请遵守以下原则:\n1. 始终优先考虑用户请求,提供清晰易懂的回答。\n2. 充分利用提供的文档构建回答,同时通过额外分析和逻辑提升回答质量。\n3. 生成回答时必须遵循给定指令,明确标注来源。\n4. 若用户问题模糊,可考虑重新组织问题以明确需求。\n\n# 用户指南\n## 任务与上下文\n你需分析用户问题相关文档,基于可信信息生成回答。不仅要传递信息,还需结合上下文以最合适的形式呈现。\n\n## 风格指南\n以json格式输出回答:[{
"related_document": {"从文档信息中找到的doc_id"},
"source": {"从文档信息中找到的doc_id": "该文档中可引用的原文段落(保持原样)"},
"answer": "未标注来源的3~6句说明性回答",
"grounded_answer": "与answer相同,但用<co: doc_id>和</co: doc_id>标记引用来源"
}]\n
<|im_end|>\n<|im_start|>user\n {instruction} <|im_end|>\n<|im_start|>assistant\n"""
快速开始
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "Surromind/RAG-Specialized-LLM"
model = AutoModelForCausalLM.from_pretrained(
model_name, torch_dtype="auto", device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
prompt = """问题:除了NAOG,还有哪些蒙古人参加过行政自治部地方行政研修院的教育项目?\n\n doc_id: 44365 / title: 韩国地方人才开发战略将传授给越南 / content: 韩国地方人才开发战略将传授给越南...(内容省略)"""
messages = [
{
"role": "system",
"content": RAG_PROMPT
},
{"role": "user", "content": prompt},
]
text = tokenizer.apply_chat_template(
messages, tokenize=False, add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
generated_ids = model.generate(**model_inputs, max_new_tokens=512)
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(response)
训练环境与参数
- 训练环境
- 参数配置
- tokenizer_model_max_length: 4500
- use_flash_attn: True
- num_train_epochs: 3.0
- weight_decay: 0.001
- lr_scheduler_type: "linear"
- per_device_train_batch_size: 1
- gradient_accumulation_steps: 64
- learning_rate: 5e-06
- bf16: True
- deepspeed: ds_stage2.json
使用数据集
- AIhub 16行政文档机器阅读理解数据
- AIhub 17新闻文章机器阅读理解数据
- AIhub 21图书资料机器阅读理解数据
- AIhub 149表格信息问答数据
- AIhub 150数字运算机器阅读理解数据
- AIhub 151金融/法律文档机器阅读理解数据
- kyujinpy/KoCoT_2000
- MarkrAI/KoCommercial-Dataset
- CarrotAI/ko-instruction-dataset
- heegyu/CoT-collection-ko
联系我们
- 公司:Surromind
- 地址:首尔市冠岳区南部循环路1802号2楼
- 电话:02-872-5127
- 邮箱:contact@surromind.ai