【无标题】书生大模型实战营闯关记录----第十二关:茴香豆:企业级知识库问答工具;Web版茴香豆使用教程;茴香豆本地化标准版部署搭建教程;知识库构建问答

news2024/11/28 4:00:11

0 茴香豆介绍

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

茴香豆特点

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

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

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

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

  • 傻瓜操作,安装和配置方便
    在这里插入图片描述

本教程将通过茴香豆 Web 版和本地版的搭建,带领同学们学会如何快速搭建一个企业级的 RAG 知识问答系统。

1 Web 版茴香豆

Web 版茴香豆部署在浦源平台,可以让大家零编程体验茴香豆的各种功能。这里 有大神亲自的视频演示。

1.1 创建 Web 版茴香豆账户和密码

登录 https://openxlab.org.cn/apps/detail/tpoisonooo/huixiangdou-web,可以看到 Web 版茴香豆的知识库注册页面,在对应处输入想要创建的知识库名称和密码,该名称就是 Web 版茴香豆的账户密码,请牢记,以后对该知识助手进行维护和修改都要使用这个账户和密码。
在这里插入图片描述

1.2 创建 Web 版茴香豆知识库

完成账户创建或者输入已有账户密码后会进入相应知识库的开发页面,当前 Web 版茴香豆功能包括:

  • 添加/删除文档

  • 编辑正反例

  • 打通微信和飞书群

  • 开启网络搜索功能(需要填入自己的 Serper token,token 获取参考 3.1 开启网络搜索)

  • 聊天测试
    在这里插入图片描述

点击添加文档的 查看或上传 按钮,对知识库文档进行修改,目前支持 pdf、word、markdown、excel、ppt、html 和 txt 格式文件的上传和删除。上传或删除文件后将自动进行特征提取,生成的向量知识库被用于后续 RAG 检索和相似性比对。
完成相关文档上传后,可以直接用下面的聊天测试窗口测试知识助手的效果:
在这里插入图片描述

1.3 通过配置正反例调优知识助手效果

在真实的使用场景中,调试知识助手回答相关问题和拒答无关问题(如闲聊)是保证回答准确率和效率十分重要的部分。茴香豆的架构中,除了利用 LLM 的功能判断问题相关性,也可以通过手动添加正例(希望模型回答的问题)和反例(希望模型拒答的问题)来调优知识助手的应答效果。

在 Web 版茴香豆中,点击添加正反例下的 查看或编辑 按钮,进入正反例添加页面:
在这里插入图片描述
在这里插入图片描述

添加好正反例,我们来测试一下:
在这里插入图片描述

对于正例相似问题,茴香豆会在知识库中尽量搜寻相关解答,在没有相关知识的情况下,会推测答案,并在回答中提示我们该回答并不准确。这保证了回答的可追溯性。
在这里插入图片描述

对于反例问题,茴香豆拒绝作答,这保证了在对话,尤其是企业级群聊中的闲聊、非问题和无关问题触发回答带来的回答混乱和资源浪费。

1.4 搭建自己的 web 版茴香豆

上面的教程是基于部署在浦源平台的 Web 版茴香豆进行 RAG 知识助手的开发。根据企业算力预算和对数据安全的要求不同,茴香豆 Web 版代码也可以搭建在自有服务器上,详细操作文档如下:

https://github.com/InternLM/HuixiangDou/blob/main/web/README.md。

2 茴香豆本地标准版搭建

在第一部分中,我们利用 Web 版茴香豆实现了零代码开发部署一款 RAG 知识助手,在接下来的部分,我们要动手尝试将茴香豆从源码部署到本地服务器(以 InternlmStudio 为例),并开发一款简单的知识助手 Demo。

2.1 环境搭建

2.1.1 搭建茴香豆虚拟环境

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

studio-conda -o internlm-base -t huixiangdou

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

conda activate huixiangdou

环境激活成功后,命令行前的括号内会显示正在使用的环境,请确保所有茴香豆操作指令在 huixiangdou 环境下运行。

2.2 安装茴香豆

下面开始茴香豆本地标准版的安装。

2.2.1 下载茴香豆

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

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

拉取完成后进入茴香豆文件夹。

2.2.2 安装茴香豆所需依赖

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

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

2.2.3 下载模型文件

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

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

# 下载BCE模型
git clone https://huggingface.co/maidalun1020/bce-embedding-base_v1
git clone https://huggingface.co/maidalun1020/bce-reranker-base_v1

# 复制大模型参数(下面的模型,根据作业进度和任务进行**选择一个**就行)
git clone https://huggingface.co/internlm/internlm2_5-7b-chat

2.2.4 更改配置文件

茴香豆的所有功能开启和模型切换都可以通过 config.ini 文件进行修改.
执行下面的命令更改配置文件,让茴香豆使用本地模型:

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

也可以用编辑器手动修改,文件位置为 /root/huixiangdou/config.ini
修改后的配置文件如下:
在这里插入图片描述

注意!配置文件默认的模型和下载好的模型相同。如果不修改地址为本地模型地址,茴香豆将自动从 huggingface hub 拉取模型。如果选择拉取模型的方式,需要提前在命令行中运行 huggingface-cli login 命令,验证 huggingface 权限。

2.3 知识库创建

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

conda activate huixiangdou

cd /root/huixiangdou && mkdir repodir

# 将自己的知识库文件存放到repodir中

# Save the features of repodir to workdir, and update the positive and negative example thresholds into `config.ini`
mkdir workdir
python3 -m huixiangdou.service.feature_store

在 huixiangdou 文件加下创建 repodir 文件夹,用来储存知识库原始文档。再创建一个文件夹 workdir 用来存放原始文档特征提取到的向量知识库。
在这里插入图片描述
知识库创建成功后会有一系列小测试,检验问题拒答和响应效果,如图所示,测试结果可以很好的反馈相应答案和对应的参考文件,说明我们的知识助手工作正常。

和 Web 版一样,本地版也可以通过编辑正反例来调整茴香豆的拒答和响应,正例位于 /root/huixiangdou/resource/good_questions.json 文件夹中,反例位于/root/huixiangdou/resource/bad_questions.json

需要注意的是,每次更新原始知识文档和正反例,都需要重新运行 python3 -m huixiangdou.service.feature_store 命令进行向量知识库的重新创建和应答阈值的更新。
在这里插入图片描述

2.4 测试知识助手

2.4.1 命令行运行

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

python3 -m huixiangdou.main --standalone

在这里插入图片描述
在这里插入图片描述

通过命令行的方式可以看到对话的结果以及中间的过程,便于我们确认知识库是否覆盖需求,正反例是否合理。

2.4.2 Gradio UI 界面测试

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

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

ssh -CNg -L 7860:127.0.0.1:7860 root@ssh.intern-ai.org.cn -p <你的ssh端口号>

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

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

在这里插入图片描述

看到上图相同的结果,说明 Gradio 服务启动成功,在本地浏览器中输入 127.0.0.1:7860 打开茴香豆助手测试页面:

在这里插入图片描述

现在就可以用页面测试一下茴香豆的交互效果了。

问答效果

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

Yolov5 AI学习笔记

Yolov5 AI学习笔记 环境准备 需要Python的开发环境&#xff0c;安装Anaconda。 Anaconda的一些命令&#xff1a; # 创建虚拟环境 conda create -n yolo_cpu python3.9 # 查看虚拟环境 conda env list # 激活虚拟环境 conda activate <env_name>Yolov5上手 下载源码 …

上下文的弹性

“上下文的弹性”是指在自然语言处理中&#xff0c;模型对输入文本的上下文信息的理解和利用能力。它描述了模型在处理文本时能够根据上下文信息来调整其输出的程度。具有弹性上下文的模型可以更好地处理自然语言中的语义和语境&#xff0c;从而提供更准确和有用的回答。这种弹…

这才是老板喜欢的产品经理简历

速创猫今天给大家分享的是应届毕业生产品经理简历优化案例&#xff0c;希望对大家求职有帮助。速创猫总结了以下七条简历制作干货&#xff0c;希望对大家有帮助&#xff1a; 明确目标岗位&#xff1a;在简历的开头&#xff0c;明确指出你申请的职位&#xff0c;让招聘者一眼就能…

聚焦AI4SE软件工程领域,基于Multi Agent System多智能体系统开发的最新成果,实现软件开发领域的PUGC!

可能有很多小伙伴不了解AI4SE是什么&#xff0c;其实从字意上就不难看出一定是和AI相关。 AI4SE&#xff08;Artificial Intelligence for Software Engineering&#xff09;是指将人工智能技术应用于软件工程领域。 其核心目标是通过自动化和智能化技术降低软件开发的复杂性…

MySQL 官方高可用方案 InnoDB Cluster

文章目录 前言1. 方案构成2. 使用要求和限制3. 集群部署3.1 环境说明3.2 软件下载3.2 MySQL Server 安装3.3 MySQL Shell 安装3.4 检测实例是否符合资格3.5 创建集群3.6 向集群中添加节点3.7 配置 Router3.8 测试验证 4. 集群运维4.1 Router 服务管理4.2 MySQL 服务管理4.3 集群…

结束Linux特定端口上的进程,超级实用!

在使用 Linux 时&#xff0c;您可能会遇到特定端口被进程占用的情况。了解如何终止在特定端口上运行的进程可能非常有用&#xff0c;特别是对于排除故障和有效地管理系统而言。 本文中&#xff0c;我们将完成查找端口号、识别使用该端口的进程以及安全停止该进程。 详细步骤 …

【最全深度学习介绍】基本概念、类型、应用、优缺点、与机器学习区别是什么?

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发…

PostgreSQL技术内幕6:PostgreSQL索引技术

文章目录 0. 简介1.PG索引类型介绍2. PG创建索引说明及索引属性查看2.1 创建说明2.2 查看方式2.2.1 查看PG默认支持的索引及对应的Handler类型2.2.2 查看B树索引属性 3. 索引选择3.1 查看索引情况 4.PG中B-Tree索引原理4.1 页存储结构 5.索引代码分析5.1 不同索引结构解析5.1.1…

郑州建站网页手机版

随着移动互联网的迅猛发展&#xff0c;越来越多的企业和个人开始重视手机网页的建设。在郑州&#xff0c;这一趋势尤为明显&#xff0c;搭建手机网页已经成为提升品牌形象和吸引客户的重要方式。本文将就郑州建站网页手机版的现状、重要性及注意事项进行探讨。 首先&#xff0c…

LabVIEW中升采样和降采样

升采样 (Upsampling) 和 降采样 (Downsampling) 是信号处理中的两种常见操作&#xff0c;用于改变信号的采样率。它们在数字信号处理&#xff08;DSP&#xff09;和许多工程应用中非常重要&#xff0c;尤其是在处理不同采样率的数据流时。 升采样 (Upsampling) 升采样是增加信…

SpringBoot 引入使用消息队列RabbitMQ通信 配置连接 无路由模式

介绍 请先对Rabbitmq的用户和权限配置好在进行往下的操作 依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>下面将演示最简单的例子不过路由 生产者 -&g…

IDEA工程连接不上Mysql数据库

在进行项目创建的时候&#xff0c;发现IDEA工程连接不上数据库。即使登陆的用户名和密码全部正确也报错。 在服务里发现Mysql80没有启动 直接利用命令提示符启动&#xff0c;也显示启动失败。 通过 netstat -ano | findstr :3306 查看数据库默认端口3306的占用情况&#…

【CSP:202009-2】风险人群筛查(Java)

题目链接 202009-2 风险人群筛查 题目描述 求解思路 本题的数据量并不大&#xff0c;直接模拟即可。x和y表示每次读取的坐标点。res1表示经过高风险场地的人数&#xff0c;res2表示在高风险场地停留的人数。s用来记录连续在高风险场地停留的点数。r1表示是否经过高风险场地&…

【学习笔记】卫星通信NTN 3GPP标准化进展分析(三)- 3GPP Release17 内容

一、引言&#xff1a; 本文来自3GPP Joern Krause, 3GPP MCC (May 14,2024) Non-Terrestrial Networks (NTN) (3gpp.org) 本文总结了NTN标准化进程以及后续的研究计划&#xff0c;是学习NTN协议的入门。 【学习笔记】卫星通信NTN 3GPP标准化进展分析&#xff08;一&#xff…

CART算法原理及Python实践

一、CART算法原理 CART&#xff08;Classification And Regression Trees&#xff09;算法是一种用于分类和回归任务的决策树学习技术。它采用贪心策略递归地划分数据集&#xff0c;以构建一棵二叉决策树。CART算法的原理可以概括为以下几个关键步骤&#xff1a; 1. 特征选择与…

如何在 CentOS 6 上安装 Nagios

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 Status: 已弃用 本文涵盖的 CentOS 版本已不再受支持。如果您目前正在运行 CentOS 6 服务器&#xff0c;我们强烈建议升级或迁移到受支持…

什么是单片机?为什么要学习单片机?

实现目标 1、熟悉单片机定义、特点、应用场景、发展历史等&#xff1b; 2、理解为什么要学习单片机&#xff1f;怎样学习单片机&#xff1f; 一、单片机是什么&#xff1f; 1、定义 单片机是集成在一块&#xff08;单&#xff09;芯片上的微型计算机。平时我们把 MCU&#x…

E. Sheep Eat Wolves

https://codeforces.com/gym/104869/problem/E 赛时队友想贪心&#xff0c;贪不了一点&#xff0c;我想了数学办法每次都送固定的发现送过去就不满足了 赛后补&#xff0c;暴力做O&#xff08;n4) 至少要几次才能把安全所有羊送到对岸去 考虑最短路,bfs,用数组存下所有状态 …

nerf论文代码理解

近年来&#xff0c;生成式AI(AGI)快速发展&#xff0c;各类生成式模型层出不群&#xff0c;但我更觉得具有物理意义的生成式AI将是未来革命性技术。因此也在抽空看看关于三维重建的知识&#xff0c;这篇文章就是记录我对nerf的理解。 一、论文理解 首先&#xff0c;需要知道ne…

车载冰箱的介绍

车载冰箱产业链的上游环节主要涉及制冷模块的研发与制造&#xff0c;这一环节根据所采用的制冷技术不同而展现出各自的特点。压缩机制冷模块和半 导体制冷模块是车载冰箱制冷系统的核心组成部分&#xff0c;它们在设计、材料选择和制造工艺上各有千秋。 车载冰箱的原理图 车载…