首页 > 其他分享 >书生大模型实战(从入门到进阶)L2-茴香豆:企业级知识库问答工具

书生大模型实战(从入门到进阶)L2-茴香豆:企业级知识库问答工具

时间:2024-09-28 11:22:49浏览次数:13  
标签:进阶 huixiangdou 茴香豆 知识库 企业级 models 所示 root

目录

茴香豆介绍

 茴香豆本地标准版搭建

 环境搭建

配置服务器:

搭建茴香豆虚拟环境:

安装茴香豆

下载茴香豆

 安装茴香豆所需依赖

下载模型文件

更改配置文件

知识库创建

测试知识助手

命令行运行

Gradio UI 界面测试


本文是对书生大模型L2-茴香豆:企业级知识库问答工具部分的学习和实现,学习地址如下:

学习地址:‬​​​​⁠​​‌⁠‍⁠​‬​​​​​​​⁠‬​​​⁠​​‌​​​​​‍​​​⁠​​​学员闯关手册 - 飞书云文档 (feishu.cn)

茴香豆介绍

茴香豆 是由书生·浦语团队开发的一款开源、专门针对国内企业级使用场景设计并优化的知识问答工具。在基础 RAG 课程中我们了解到,RAG 可以有效的帮助提高 LLM 知识检索的相关性、实时性,同时避免 LLM 训练带来的巨大成本。在实际的生产和生活环境需求,对 RAG 系统的开发、部署和调优的挑战更大,如需要解决群应答、能够无关问题拒答、多渠道应答、更高的安全性挑战。因此,根据大量国内用户的实际需求,总结出了三阶段Pipeline的茴香豆知识问答助手架构,帮助企业级用户可以快速上手安装部署。

茴香豆特点

  • 三阶段 Pipeline (前处理、拒答、响应),提高相应准确率和安全性

  • 打通微信和飞书群聊天,适合国内知识问答场景

  • 支持各种硬件配置安装,安装部署限制条件少

  • 适配性强,兼容多个 LLM 和 API

  • 傻瓜操作,安装和配置方便

茴香豆本地标准版搭建

环境搭建

配置服务器:

镜像选择 Cuda11.7-conda ,资源类型选择 30% A\*100。输入开发机名称 huixiangdou, 点击立即创建。

在 开发机 页面选择刚刚创建的个人开发机 huixiangdou,单击 启动

搭建茴香豆虚拟环境:

命令行中输入一下命令,创建茴香豆专用 conda 环境:

studio-conda -o internlm-base -t huixiangdou

创建成功,用下面的命令激活环境:

conda activate huixiangdou

如下图所示:

安装茴香豆

下载茴香豆

先从茴香豆仓库拉取代码到服务器:

如下图所示:

cd /root
# 克隆代码仓库
git clone https://github.com/internlm/huixiangdou && cd huixiangdou
git checkout 79fa810

安装茴香豆所需依赖

首先安装茴香豆所需依赖:

如下图所示:

conda activate huixiangdou
# parsing `word` format requirements
apt update
apt install python-dev libxml2-dev libxslt1-dev antiword unrtf poppler-utils pstotext tesseract-ocr flac ffmpeg lame libmad0 libsox-fmt-mp3 sox libjpeg-dev swig libpulse-dev
# python requirements
pip install BCEmbedding==0.15 cmake==3.30.2 lit==18.1.8 sentencepiece==0.2.0 protobuf==5.27.3 accelerate==0.33.0
pip install -r requirements.txt
# python3.8 安装 faiss-gpu 而不是 faiss

这里在安装发生了报错BCEmbedding的版本不对,后来改为了0.1.5版本,重新安装:

后面安装依赖时发现BCEmbedding和transformer的版本不匹配,出现报错,如下如所示:

这里我重新安装4.36.0版本的transformer,后来成功安装,如下图所示:

下载模型文件

茴香豆默认会根据配置文件自动下载对应的模型文件,为了节省时间,所需的模型已经提前下载到服务器中,我们只需要为所需的模型建立软连接,然后在配置文件中设置相应路径就可以,如下图所示:

# 创建模型文件夹
cd /root && mkdir models

# 复制BCE模型
ln -s /root/share/new_models/maidalun1020/bce-embedding-base_v1 /root/models/bce-embedding-base_v1
ln -s /root/share/new_models/maidalun1020/bce-reranker-base_v1 /root/models/bce-reranker-base_v1

# 复制大模型参数(下面的模型,根据作业进度和任务进行**选择一个**就行)
ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-7b /root/models/internlm2-chat-7b

更改配置文件

执行下面的命令更改配置文件,让茴香豆使用本地模型。

如下图所示:

sed -i '9s#.*#embedding_model_path = "/root/models/bce-embedding-base_v1"#' /root/huixiangdou/config.ini
sed -i '15s#.*#reranker_model_path = "/root/models/bce-reranker-base_v1"#' /root/huixiangdou/config.ini
sed -i '43s#.*#local_llm_path = "/root/models/internlm2-chat-7b"#' /root/huixiangdou/config.ini

知识库创建

修改完配置文件后,就可以进行知识库的搭建,本次教程选用的是茴香豆和 MMPose 的文档,利用茴香豆搭建一个茴香豆MMPose 的知识问答助手。

在 huixiangdou 文件加下创建 repodir 文件夹,用来储存知识库原始文档。再创建一个文件夹 workdir 用来存放原始文档特征提取到的向量知识库。

如下图所示:

知识库创建成功后会有一系列小测试,检验问题拒答和响应效果,如图所示,关于“mmpose 安装”的问题,测试结果可以很好的反馈相应答案和对应的参考文件,但关于“std::vector 使用”的问题,因为属于 C++ 范畴,不再在知识库范围内,测试结果显示拒答,说明我们的知识助手工作正常。

如下图所示:

测试知识助手

命令行运行

运行下面的命令,可以用命令行对现有知识库问答助手进行测试:

conda activate huixiangdou
cd /root/huixiangdou
python3 -m huixiangdou.main --standalone

Gradio UI 界面测试

茴香豆也用 gradio 搭建了一个 Web UI 的测试界面,用来测试本地茴香豆助手的效果。

茴香豆助手搭建在远程服务器上,因此需要先建立本地和服务器之间的透传,透传默认的端口为 7860,在本地机器命令行中运行如下命令,如下图所示:

在运行茴香豆助手的服务器端,输入下面的命令,启动茴香豆 Web UI:

conda activate huixiangdou
cd /root/huixiangdou
python3 -m huixiangdou.gradio

这里进入页面:

然后和它进行对话,如下图所示:

效果还是不错的。

标签:进阶,huixiangdou,茴香豆,知识库,企业级,models,所示,root
From: https://blog.csdn.net/m0_73672030/article/details/142603133

相关文章

  • 玩机进阶教程----MTK芯片杂牌机 小品牌机型以及其他mtk设备导出分区的另外一种方法解
            在前面多期博文中都是通过工具来导出分区制作线刷包的。今天我们以另外一种方法备份系统分区。mtk芯片较多。具体机型适合哪种方法需要自测。多种方法多条思路。遇到机型善用工具。目前一些wifi网卡 点读笔以及有些其他mtk芯片设备。通常分区都较小......
  • 【进阶编程】结合横向设计和纵向设计来分离业务领域类
        结合横向设计和纵向设计来分离业务领域类是一个常见的设计方法,特别是在复杂的企业级系统中。这个方法可以让系统在保持模块化和解耦的同时,充分利用不同设计模式的优势,从而实现更高的灵活性、可扩展性和可维护性。1.横向设计和纵向设计的结合横向设计:关注分层架构......
  • 数据飞轮:解构数据技术的进阶之旅
    数据飞轮:解构数据技术的进阶之旅在这个数据驱动的时代,数据技术的演变改变了我们理解世界的方式。从数据仓库、数据中台到数据飞轮,每一次跳跃都不仅仅是技术的刷新,更是业务思维和战略执行的彻底革命。今天,我们将解构这一进化史,并结合具体的业务场景,探讨数据飞轮如何赋能产品优化和......
  • Vivado进阶-时序分析之时钟偏移
    FPGA中绝大多数电路都是同步时序电路,基本模型为“寄存器+组合逻辑+寄存器”。同步就意味着时序路径上的所有寄存器都是在时钟信号的驱动下步调一致的运行。这就要求时钟信号要在同一时间点到达所有寄存器的时钟端口。为了尽量达到这个目的,在FPGA内部提供了专用的时钟布线资......
  • 【C++进阶】AVL树的介绍及实现
    【C++进阶】AVL树的介绍及实现......
  • 大模型开发入门到进阶(二)大模型的应用领域、大模型的优缺点
    一、大模型的应用领域大模型作为人工智能领域的重要成果,其应用领域广泛且深入,涵盖了自然语言处理、计算机视觉、生物信息学、自动驾驶、金融等多个关键领域。以下是对大模型应用领域的详细介绍:1.自然语言处理(NLP)大模型在自然语言处理领域的应用最为广泛和深入。它们可以......
  • Java进阶阶段的学习要点
    Java进阶阶段的学习要点相对更加深入和广泛,涵盖了Java语言的高级特性、框架、性能优化等多个方面。以下是根据搜索结果整理的详细学习要点:1.Java高级特性多线程与并发编程:深入理解Java并发包(`java.util.concurrent`)中的工具类,如`ExecutorService`、`Callable`、`Future`、`C......
  • 7-2 jmu-Java-04面向对象进阶-01-接口-Comparable
    编写实现Comparable接口的PersonSortable类,使其按name以及age排序1.编写PersonSortable类属性:privatename(String)、privateage(int)有参构造函数:参数为name,agetoString函数:返回格式为:name-age实现Comparable接口:实现先对name升序排序,如果name相同则对age进行升序排序......
  • 面向对象进阶
    在前面的章节我们已经了解了面向对象的入门知识,知道了如何定义类,如何创建对象以及如何给对象发消息。为了能够更好的使用面向对象编程思想进行程序开发,我们还需要对Python中的面向对象编程进行更为深入的了解。@property装饰器之前我们讨论过Python中属性和方法访问权限的问......
  • 企业级反向代理 HAProxy
    企业级反向代理HAProxyhaproxy只做代理,不提供其他功能。可以做四层,七层代理。有些公司会用haproxy做四层代理,haproxy比lvs好在功能更强大2HAProxy简介企业版(收费)社区版社区版网站:http://www.haproxy.org/github:https://github.com/haproxy#选偶数版本,长期支持版......