项目介绍:Mistral-RAG
Mistral-RAG项目是一个基于Mistral-Ita-7b模型的精细调优版本,专为提升问答任务而设计。该模型具备独特的双响应功能,提供生成模式和抽取模式,以满足多种信息需求。
项目背景
Mistral-RAG的基础模型为Mistral-Ita-7b,专注于处理意大利语言的问答任务。其开发旨在通过改进的生成能力为教育、建议服务等场景提供深入的回答,同时通过快速精准的抽取能力提高研究、法律及专业环境中的精准度。
模型特点
生成模式
- 描述:生成模式面向需要复杂综合回答的场景。该模式整合来自多个来源的信息,提供详尽的解释。
- 理想应用场景:
- 教育用途:为学生或学习者提供深度背景知识
- 顾问服务:为客户或用户提供专业建议
- 创作场景:需要深度理解和细致分析的创作过程
抽取模式
- 描述:抽取模式侧重于速度和精准性,能够通过文本抽取给出直接且简明的答案。
- 理想应用场景:
- 研究中的事实查询:快速获得可靠的信息
- 法律环境:提供精确的法律依据和证据
- 专业环境:需要准确性和直接证据的场合
使用方法
要使用Mistral-RAG模型,可以通过如下Python代码进行调用。代码中展示了如何加载模型,并且通过生成和抽取两种模式来回答问题:
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
MODEL_NAME = "DeepMount00/Mistral-RAG"
model = AutoModelForCausalLM.from_pretrained(MODEL_NAME, torch_dtype=torch.bfloat16).eval()
model.to(device)
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
def generate_answer(prompt, response_type="generativo"):
# 根据答题模式创建上下文和问题
if response_type == "estrattivo":
prompt = f"Rispondi alla seguente domanda in modo estrattivo, basandoti esclusivamente sul contesto.\n{prompt}"
else:
prompt = f"Rispondi alla seguente domanda in modo generativo, basandoti esclusivamente sul contesto.\n{prompt}"
# 为模型准备消息
messages = [
{"role": "user", "content": prompt},
]
model_inputs = tokenizer.apply_chat_template(messages, return_tensors="pt").to(device)
generated_ids = model.generate(model_inputs, max_new_tokens=200, do_sample=True,
temperature=0.001, eos_token_id=tokenizer.eos_token_id)
decoded = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)
return decoded[0].split("[/INST]", 1)[1].strip() if "[/INST]" in decoded[0] else "Errore nella generazione della risposta"
# 新功能示例使用
contesto = """星期五,在印度尼西亚附近火山附近的超过2100名居民因火山喷发的风险被疏散。星期二,位于苏拉威西以北约100公里的Ruang火山岛开始喷发,喷出烟柱高达1200米。目前,疏散工作仍在进行中,总共有超过11000人被告知离开他们的家园。大部分居民住在附近的矿岛上,总人口为20000;不仅可能受到火山灰和火山碎屑流的影响,还可能因为熔岩和岩石落入海中引发海啸。"""
domanda = "为什么居民被疏散出家园?"
prompt = f"Contesto: {contesto}\nDomanda: {domanda}"
answer = generate_answer(prompt, "estrattivo")
print(answer)
开发者
该项目由[Michele Montebovi]开发,致力于通过高效的问答系统解决多种语言环境下的信息需求。