当前位置:首页|资讯

小钢炮技术教程05|4G显存玩转MiniCPM RAG实战

作者:OpenBMB发布时间:2024-09-30

|原文章发布于2024年07月29日

今天,为大家带来的是MiniCPM RAG教程」 ➤  模型介绍 
🔗  MiniCPM:揭示端侧大语言模型的无限潜力 ➤  GitHub地址 

🔗 https://github.com/OpenBMB/MiniCPM

 ➤  B站配套视频 ,搭配食用更佳 
🔗 https://space.bilibili.com/493282299/channel/collectiondetail?sid=3433564

「面壁小钢炮MiniCPM通关宝典」会在接下来一段时间内持续上新,从技术拆解到部署推理到量化微调,手把手教你速通MiniCPM模型!公众号后台回复“小钢炮”,可解锁知识库全文。


简单说说RAG 

RAG是什么 

RAG指的是Retrieval-Augmented Generation,通过首先检索与query相关的文本,生成式语言模型llm再基于相关文本对query进行回复。

为什么需要RAG

大语言模型确实已经可以对很多问题进行回复,但是由于大语言模型llm仍然是基于历史数据进行训练的概率模型,因此对于训练过的问题可能有较为准确的答案,但仍存在幻觉问题。对于历史训练数据未提及或者实时性较强的问题,仅靠靠语言模型的概率生成容易出现胡说八道的问题。

因此,在给予大语言模型llm query的同时给予和query相关的背景知识,可以通过llm在历史数据中获取的context learning能力进行分析,这样可以获得更加可靠的回复。

说人话版:一个学霸(大语言模型)在原来思想政治、古代史、地理等等学科(历史数据)中拿到了优秀的分数,但是现在问他从没学过的近代史学科(query),学霸也难以获得高分。但是如果现在给他一本近代史的教材,并且告诉他答案在哪几页(Retrieval-data),学霸可以根据古代史等学科(历史数据)学习到的综合分析能力(context learning)获得一个好得多的分数。

RAG的基本流程是怎么样的

  1. 训练(或下载)一个用来Retrieval的模型,比如bge-base-zh,大部分Retrieval模型使用encoder模型进行对比学习进行训练获得,Retrieval模型的作用是将query和知识data编码成向量logits。

  2. 使用Retrieval模型对query和待召回文本data进行编码获得向量query_logit,向量data_logits.

  3. 使用query_logit和所有的data_logit计算相似度(大部分采用余弦相似度),取出前k个相似度高的data_logit对应的文本data_related。

  4. 对找到的和query高度相关的文本在进行rerank(optional)

  5. 将query和高相关文本data_related根据构建的prompt_template模版组合喂入大模型,获得最终答案。如下:

   

langchain_cpm_demo 

Github地址:https://github.com/OpenBMB/MiniCPM/blob/main/demo/langchain_demo.py

1. 参数设置


2. 继承langchain.llm

继承后此处可适配langchain,传入langchain的各种llm接口,也可以使用vllm的后端推理:

3. 加载embeding模型(retrieval模型)

4. 对文本进行embedding

5. 找到与query相似度最高的k个文本

6. 定义prompt_tamplate

7. 定义langchain流程

首先将输入的query和高相关数据docs放入prompt这个模版中形成组合数据然后就会调用llm对组合数据进行推理,llm是继承langchain.llm的minicpm

8. 调用以上qa链

9. Gradio前端

10. 最低使用显存

已经是本次调用过程中最大使用显存


 4G显存使用方法 

1. 根据「MiniCPM量化教程」对「openbmb/MiniCPM-1B-sft-bf16」进行int4量化,推荐awq

2. 修改MiniCPM/demo/langchain_demo.py的以下参数:

3. 执行MiniCPM/demo/langchain_demo.py


速度优先方法 

1. 使用非量化模型

2. 使用vllm作为后端

3. 将embeding模型放入gpu

4. 执行MiniCPM/demo/langchain_demo.py


 ➤ 欢迎加入 OpenBMB 社区一起讨论 

后台回复小钢炮”,解锁面壁小钢炮MiniCPM通关宝典全文。


官方网站

https://www.openbmb.org


GitHub

https://github.com/OpenBMBhttps://github.com/thunlp


长期开放招聘|含实习

开发岗  |  算法岗  |  产品岗


交流QQ群

735930538


Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1