使用 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,一经查实,立即删除!

相关文章

GO 的 Web 开发系列(二)—— Web 项目的技术框架选择和项目搭建

Web 系统搭建第一步,选择技术框架,完成 Hello World。 小玖用的 Go 版本是 1.21.6 介绍项目的技术选型个结构,不包括代码。 全文链接:https://blog.nineya.com/archives/149.html 一、技术框架选择 Web 框架: githu…

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…

012vuerouter

VUEROUTER3–vue2 vuerouter4–vue3 一个html可以切换多个组件&#xff0c;用户体验好很多 使用&#xff1a;导入-全局注册&#xff08;use import vuerouter from vuerouter Vue.use(vuerouter) vue-router有 < router-link > 并且使用< router-view>来声明路由…

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

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

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

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

Java内存模型

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

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

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

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

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

maven搭建编程环境

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

MySQL重装记录

一、win10安装MySQL8 https://jingyan.baidu.com/article/5225f26b548b2ea7fb090846.html 二、win10重装系统后Mysql环境和数据的恢复 1.mysqld --initialize --insecure &#xff08;生成data文件&#xff09; 2.mysqld mysql -install 3.net start mysql &#xff08;启…

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

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

CMS如何调优

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

Mysql:5.1升级5.6遇到的问题及解决方式

yum是不可行的.因为yum源没更新,我已经使用了163网易的源,但是还是不行.最新版仍然不是5.6.没办法,mysql分区是5.5之后的功能,要使用分区功能,就必须升级.. 去官网下载地址:MySQL :: Download MySQL Community Server, 下载了全部包. 报 错.file /usr/share/mysql/charsets/RE…

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

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

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

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

使用Process Explorer/Process Hacker和Windbg高效排查软件高CPU占用问题

目录 1、为什么需要将Process Explorer/Process Hacker与Windbg结合起来分析高CPU占用问题?

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

1⃣️为什么选择CDMP证书&#xff1f; &#x1f31f;&#x1f31f;亲爱的朋友们&#xff0c;如果你在寻找一个能让你在数据管理领域大展拳脚的证书&#xff0c;那么CDMP&#xff08;Certified Data Management Professional&#xff09;证书就是你的不二之选&#xff01;&#…

CloudCompare 二次开发(26)——RANSAC分割多个平面

目录 一、概述二、代码集成三、结果展示一、概述 使用CloudCompare与PCL编程实现的RANSAC分割多个平面。具体计算原理见:PCL RANSAC分割多个平面。 二、代码集成 1、mainwindow.h文件public中添加: void doActionPCLRansacFitMultiPlane(); // 分割多个平面2、mainwindo…