使用 LlamaIndex 部署本地 Mistral-7b 大模型实现 RAG

原理

LlamaIndex的文档链接:Using LLMs - LlamaIndex 🦙 0.9.33

LlamaIndex 的一般使用模式如下:

  1. 加载文档(手动或通过数据加载器)
  2. 将文档解析为节点
  3. 构建索引(来自节点或文档)
  4. (可选,高级)在其他索引之上构建索引
  5. 查询索引

默认情况下,LlamaIndex 使用 OpenAI 的text-davinci-003模型,然而由于 OpenAI 的网站在国内无法访问,故使用本地下载好的 🐋 Mistral-7B-OpenOrca 🐋 模型代替之。
模型的链接如下:
Open-Orca/Mistral-7B-OpenOrca · Hugging Face

示例

HuggingFaceLLM 的参数如下:

HuggingFaceLLM - LlamaIndex 🦙 0.9.33

generate_kwargs 就是在生成时传递给模型的参数,具体可以看:

Generation 说明

首先准备一段文字,任意内容皆可,我准备的是关于【科学指南针】服务机构的介绍,摘自下面的网站:

科学指南针科研推出论文阅读,管理神器,强大AI赋能,轻松科研_服务_工作台_用户

科学指南针,一家始终致力于为科研工作者提供专业、快捷、全方位的检测及科研服务的大型科研服务机构,近日重磅推出全新产品「科研工作台」——一款集论文阅读、管理、分析于一体的AI赋能神器。这款产品的推出,将AI技术与科研工作深度融合,为科研工作者提供前所未有的便利。
「科研工作台」不仅具备自动解读论文研究目的、主要内容、实验过程等强大功能,还支持一键定位原文精读。更重要的是,它配备的AI阅读助手可以基于论文内容,快速回答用户提出的任何问题,帮助科研人员快速获取所需信息。这一创新性的设计,无疑将极大地提升科研工作的效率。
此外,「科研工作台」还支持分组/标签双体系管理文献。用户可以根据自己的需求,自定义建立分组和子分组进行文献管理。同时,系统会自动根据关键信息为文献打标签,并允许用户自定义新增或删除标签。通过这一功能,用户可以快速筛选出自己需要的文献。
自2014年成立以来,科学指南针始终以全心全意服务科研,助力全球科技创新为使命。经过数年的努力,公司已建立起包括材料测试、环境检测、生物服务、行业解决方案、科研绘图、模拟计算、数据分析、论文服务、试剂耗材、指南针学院等在内的科研产品和服务矩阵。如今,「科研工作台」的推出,再次证明了科学指南针在推动创新方面的能力。
值得一提的是,科学指南针的生物实验室已经取得了实验动物许可证,环境实验室和南京材料实验室先后获得了中国计量认证证书(CMA)。此外,南京材料实验室还获得了ISO三体系认证。这些资质和认证,不仅证明了科学指南针在科研服务领域的专业性和可靠性,也为其未来的发展奠定了坚实的基础。
展望未来,科学指南针的愿景是成为世界级科研服务机构。他们坚信,只要有科研的地方,就应有科学指南针的存在。而「科研工作台」的推出,正是实现这一愿景的重要一步。这款产品将为全球科研工作者提供更为便捷、高效的服务,助力科研事业的发展。
在新的历史起点上,科学指南针将继续秉承全心全意服务科研的使命,不断创新、追求卓越。我们期待着他们在未来的发展中,继续为全球科技创新做出更大的贡献

代码如下,这里使用了 HuggingFaceLLM 包来加载本地的 LLM。使用 load_in_4bit 对模型进行量化。
embed_model 选用了 “local:BAAI/bge-large-zh-v1.5”

from llama_index import VectorStoreIndex, SimpleDirectoryReader
from llama_index import ServiceContext
from llama_index.llms import HuggingFaceLLM
import torch
from transformers import BitsAndBytesConfig, AutoModelForCausalLM, AutoTokenizer
from llama_index.prompts import PromptTemplate
from llama_index import set_global_service_contextquantization_config = BitsAndBytesConfig(load_in_4bit=True,bnb_4bit_compute_dtype=torch.float16,bnb_4bit_quant_type="nf4",bnb_4bit_use_double_quant=True,
)model_name = "/root/autodl-tmp/kdy/models/Mistral-7B-OpenOrca"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
question = [{"role": "user", "content": "{query_str}"},
]
llm = HuggingFaceLLM(  model=model,tokenizer=tokenizer,query_wrapper_prompt=PromptTemplate(tokenizer.apply_chat_template(question, tokenize=False)),context_window=3900,max_new_tokens=500,model_kwargs={"quantization_config": quantization_config},generate_kwargs={"temperature": 0.2, "top_k": 5, "do_sample": True, "top_p": 0.95},device_map="auto",
)
service_context = ServiceContext.from_defaults(llm=llm, embed_model="local:BAAI/bge-large-zh-v1.5")
set_global_service_context(service_context)documents = SimpleDirectoryReader("/root/autodl-tmp/kdy/RAG/data").load_data()
index = VectorStoreIndex.from_documents(documents)
index.storage_context.persist(persist_dir="./storage")query_engine = index.as_query_engine(streaming=True, similarity_top_k=3)
response_stream = query_engine.query("科学指南针提供哪些服务?")
response_stream.print_response_stream()
print()

其中documents = SimpleDirectoryReader("/root/autodl-tmp/kdy/RAG/data").load_data() 中的 data 文件夹下存放自己提供的内容。

输出如下:
在这里插入图片描述

response_stream.print_response_stream() 方法会将答案逐字输出,如下面的 GIF 所示。
在这里插入图片描述

参考文献:

Using LLMs - LlamaIndex 🦙 0.9.33

Google Colaboratory

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/644893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年 IT 行业就业情况能否回春?很多人说道…

我只能说可以,以前我是看不到的。但是鸿蒙全栈自研让我重新看到希望! 2024年1月18日,华为鸿蒙千帆启航发布会。讲到HarmonyOS NEXT作为原生鸿蒙,其系统底座全栈自研,去掉了传统的AOSP 代码(“Android 开放…

【latex】在Overleaf的IEEE会议模板中,快速插入参考文献

【LaTeX】在Overleaf的IEEE会议模板中,快速插入参考文献 写在最前面第一步:在文献检索网站导出引用文献的bib文件第二步:编辑overleaf模版方法二:EduBirdie生成参考文献(补充)使用LaTeX在Overleaf的IEEE会议…

杰卡德距离(Jaccard Distance)

杰卡德距离(Jaccard Distance),是用于衡量两个集合差异性的一种指标,它是杰卡德相似系数的补集,可以用来区分集合(如知识图谱)。 杰卡德相似系数 杰卡德相似系数(Jaccard similari…

80.网游逆向分析与插件开发-背包的获取-自动化助手显示物品数据

内容参考于:易道云信息技术研究院VIP课 上一个内容:升级Notice类获得背包基址-CSDN博客 码云地址(ui显示角色数据 分支):https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号:3be017de38c50653b1…

【MATLAB源码-第124期】基于matlab的GFDM系统(64QAM/QPSK调制)在AWGN和PA信道误码率对比。

操作环境: MATLAB 2022a 1、算法描述 广义频分复用(GFDM)是一种先进的信号调制技术,近年来在无线通信领域获得了广泛的关注。GFDM作为一种多载波调制方案,是对经典的正交频分复用(OFDM)技术的…

Java内存模型

主内存与工作内存 Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。此处的变量包括实例变量、静态字段和构成数组对象的元素,但不包括局部变量与方法参数,因为局部变…

什么是DMA?DMA究竟有多快!

原文来自公众号:工程师看海 直接内存访问(Direct Memory Access,DMA):在计算机体系结构中,DMA 是一种数据传输方式,允许外部设备直接访问计算机的内存,而无需通过中央处理单元&#…

网络防御保护---防火墙USG6000V接口配置实验

一、实验拓扑 二、实验要求 1.防火墙向下使用子接口分别对应生产区和办公区 2.所有分区设备可以ping通网关 三、实验思路 1、配置各设备的IP地址 2、划分VLAN及VLAN的相关配置 3、配置路由及安全策略 四、实验配置 4.1、配置各设备IP地址 PC1配置 Client1配置 PC2配置…

maven搭建编程环境

Maven – Download Apache Mavenmaven下载官网地址下载后解压,配置系统环境变量, 新建系统变量,在系统path中配置%MAVEN396_HOME%\bincmd中输入mvn -version查询是否成功配置本地仓库地址 创建一个本地文件夹当做本地仓库,名字可以…

应用机器学习的建议 (Advice for Applying Machine Learning)

1.决定下一步做什么 问题: 假如,在你得到你的学习参数以后,如果你要将你的假设函数放到一组 新的房屋样本上进行测试,假如说你发现在预测房价时产生了巨大的误差,现在你的问题是要想改进这个算法,接下来应…

CMS如何调优

业务JVM频繁Full GC如何排查 原则是先止损,再排查。 FGC的原因是对象晋升失败或者并发模式失败,原因都是老年代放不下晋升的对象了。 1.可能是大对象导致的内存泄漏。快速排查方法:观察数据库网络IO是否和FGC时间点吻合,找到对应…

碳排放预测 | Matlab实现LSTM多输入单输出未来碳排放预测,预测新数据

碳排放预测 | Matlab实现LSTM多输入单输出未来碳排放预测,预测新数据 目录 碳排放预测 | Matlab实现LSTM多输入单输出未来碳排放预测,预测新数据预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab实现LSTM长短期记忆神经网络多输入单输出未来…

推荐收藏!48道数据分析师高频面试题汇总!

大家好,最近很多小伙伴私信我,讲一下数据分析的面试题,今天给大家整理了48道数据分析师面试时被频繁问到的题目,找数据分析岗位的同学一定要码住认真看。 想了解最新的面试动态、最新高频考点、技术交流的同学,可以文…

别不信❗️你离数据专家只差一个CDMP证书

1⃣️为什么选择CDMP证书? 🌟🌟亲爱的朋友们,如果你在寻找一个能让你在数据管理领域大展拳脚的证书,那么CDMP(Certified Data Management Professional)证书就是你的不二之选!&#…

西瓜书读书笔记整理(十二) —— 第十二章 计算学习理论(上)

第十二章 计算学习理论(上) 12.1 基础知识12.1.1 什么是计算学习理论(computational learning theory)12.1.2 什么是独立同分布(independent and identically distributed, 简称 i . i . d . i.i.d. i.i.d.&#xff0…

一键拥有你的GPT4

这几天我一直在帮朋友升级ChatGPT,现在已经可以闭眼操作了哈哈😝。我原本以为大家都已经用上GPT4,享受着它带来的巨大帮助时,但结果还挺让我吃惊的,还是有很多人仍苦于如何进行升级。所以就想着写篇教程来教会大家如何…

响应拦截器的 return Promise.reject(res.data.message)

今天在看老师讲解代码的时候,解决了我心中的一些疑惑。 在做excel文件导出的时候,没有告诉浏览器文件的格式是Blod产生了报错。 看下图: 可以看到下面的内容:如果业务成功 返回 res.data 如果业务失败,给出错误信息的提示,将这个错误抛出去。 因此我们在发送一个…

基于springboot+vue的网上租赁系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 研究背景…

鸿蒙开发案列一

1、开发需求 案例app一打开是“Hello world” 界面,开发者点击“Hello world”变成“Hello ArkUI”’ 2、源代码 Entry Component struct Hello {State person_name: string Worldbuild() {Row() {Column() {Text(Hello this.person_name).fontSize(50).fontWei…

PMP证书要怎么考,含金量怎么样?

PMP含金量更多的是“敲门砖”作用,公司招聘的门槛,现在坐项目的大部分都需要PMP/NPDP证书。 当然现在PMP管理模式也很热门,对企业发展很有利,各大企业都有引进改良应用在公司的项目上,之前在校友群里面大家在讨论PMP …