基础模型: Qwen/Qwen2-7B-Instruct
语言:
- 越南语
许可证: apache-2.0
标签:
- 检索增强生成
- 文本生成推理
库名称: transformers
管道标签: text-generation
模型卡片: Vi-Qwen2-7B-RAG
模型描述:
Vi-Qwen2-7B-RAG 是基于 Qwen2-7B-Instruct 基础模型(https://huggingface.co/Qwen/Qwen2-7B-Instruct)微调的大型语言模型,专为 RAG(检索增强生成)任务设计。该模型在越南语数据集上训练,旨在提升越南语处理能力并优化检索增强生成任务的性能。
用途:
Vi-Qwen2-7B-RAG 专为 RAG 任务设计(支持最长 8192 个标记的上下文),可解决以下场景:
- 抗噪声能力:从含噪声文档中提取有效信息(1 正例 + 4 负例或 1 负例)
- 负例过滤:当检索文档中不包含问题所需知识时拒绝回答(1-6 负例)
- 信息整合:回答需要综合多篇文档信息的复杂问题(2 部分正例 + 3 负例或 3 部分正例 + 2 负例)
- 正/负例判定:判断上下文是否包含问题答案(准确率约 99%)
我们还发布了不同用途的轻量版模型:
Vi-Qwen2-1.5B-RAG(https://huggingface.co/AITeamVN/Vi-Qwen2-1.5B-RAG)
和 Vi-Qwen2.5-3B-RAG(https://huggingface.co/AITeamVN/Vi-Qwen2-3B-RAG)
- 除 RAG 任务外,您也可用该模型进行常规对话,甚至支持连续问答的上下文输入。
局限性:
由于专为 RAG 任务设计,可能存在以下限制:
- 不保证政治、社会等相关问题的准确性
- 可能表现出不当偏见或观点
基准测试
我们使用自建数据集 EvalRAGData 评估了多个 LLM 模型的 RAG 表现,采用人工评分(满分10分):

VMLU 排行榜表现:
模型 |
理工科 |
社会科学 |
人文学科 |
其他 |
平均 |
Vi-Qwen2-7B-RAG |
60.22 |
57.8 |
52.67 |
51.08 |
56.04 |
使用方式
1. 基础用法
输入上下文仅包含单条内容(1 正例或 1 负例)
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
path = 'AITeamVN/Vi-Qwen2-7B-RAG'
model = AutoModelForCausalLM.from_pretrained(
path,
torch_dtype=torch.bfloat16,
device_map="auto",
use_cache=True
)
tokenizer = AutoTokenizer.from_pretrained(path)
system_prompt = "你是一位热情诚实的越南语助手。请始终提供最有帮助的回答。"
template = '''注意以下要求:
- 若上下文包含答案,回答必须准确完整
- 仅使用提供的上下文信息
- 若上下文无答案,只需拒绝回答不作额外推断
请根据上下文回答问题:
### 上下文 :
{context}
### 问题 :
{question}
### 回答 :'''
context = '''Insuact 10mg治疗什么疾病?Insuact 10mg主要成分是阿托伐他汀。该药用于降低原发性高胆固醇血症和混合型血脂异常患者的胆固醇和甘油三酯水平...(详细说明适应症、用法用量和副作用)'''
question = '''Insuact 10mg的适应症和具体用法是什么?'''
conversation = [{"role": "system", "content": system_prompt }]
conversation.append({"role": "user", "content": template.format(context = context, question = question)})
text = tokenizer.apply_chat_template(
conversation,
tokenize=False,
add_generation_prompt=True)
model_inputs = tokenizer(text,return_tensors="pt").to(model.device)
generated_ids = model.generate(
model_inputs.input_ids,
max_new_tokens=2048,
temperature = 0.1,
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(response)
'''回答:
根据上下文,Insuact 10mg适用于:
1. **原发性高胆固醇血症和混合型血脂异常**:
- 用法:10mg/次/日
- 疗效:2-4周见效,需长期维持
2. **家族性高胆固醇血症**:
- 用法:10mg/次/日(常规),最大80mg/次/日
3. **10-17岁严重血脂异常**:
- 用法:初始10mg/次/日,可增至20mg/次/日
注意事项:需空腹或餐后口服,肝功能不全者禁用...(完整说明)'''
2. 抗噪声能力
context = '''- 段落1:校园暴力处理建议...
- 段落2:清朝亲王不造反的三大原因:1)需皇帝批准继承爵位 2)受朝廷严密监控 3)被孤立无法结党
- 段落3:儿童教育方法...
- 段落4:艺人家庭故事...
- 段落5:影视拍摄花絮...'''
question = '''为何清朝亲王虽有权势却不敢造反?'''
'''回答:
清朝亲王不敢造反的原因有三:
1. **爵位继承受限**:需皇帝批准并建功立业
2. **严密监控**:朝廷实施严格监督
3. **政治孤立**:禁止与其他大臣深交'''
3. 负例过滤
context = '''- 段落1:太平省工业规划...
- 段落2:平定省科技中心定位...
- 段落3:广宁省发展目标...'''
question = '''根据2021-2030规划,西宁省如何通过重点要素实现可持续发展?'''
'''回答:
提供的上下文中不包含西宁省规划信息。若需准确回答,请补充相关背景资料。'''
4. 信息整合
context = '''- 段落1:死刑执行队员补贴标准(3倍基础工资)
- 段落2:尸体认领程序(亲属需提交申请)
- 段落3:死刑犯羁押规定
- 段落4:丧葬费用明细(普通木棺+4米裹尸布等)
- 段落5:医疗人员补贴标准(2倍最低工资)'''
question = '''注射死刑后无人认领的尸体如何处理?'''
'''回答:
综合上下文:
1. **安葬程序**:由省级刑事执行机关组织土葬
2. **三年后遗骨**:亲属可申请领取,需提交居住地证明并承诺承担费用
3. **丧葬标准**:包含普通木棺、4米裹尸布及消毒用品'''
5. 正/负例判定
template = '''判断上下文是否包含回答问题所需完整信息。回答仅需"有"或"无"
### 上下文 :
{context}
### 问题 :
{question}
### 回答 :'''
context = '''卡培他滨通过胸苷磷酸化酶选择性转化为5-FU,靶向作用于肿瘤组织...(详细药理机制)'''
question = '''为何卡培他滨在体外无细胞毒性却在体内转化为5-FU?其靶向机制如何保护正常组织?'''
'''回答:有'''
下版本预告
更强大的版本将尽快发布,可处理更复杂的数据场景。
开发团队
成员:阮文忠、阮日光
联系方式
邮箱: nguyennhotrung3004@gmail.com
领英: Trung Nguyen Nho
引用
@misc{ViRAG-Gen,
title={ViRAG-Gen: 面向越南语RAG任务的专用大语言模型},
author={阮文忠, 阮日光},
year={2024},
publisher={Huggingface},
}