茴香豆 RAG 智能助理 搭建

news/2024/7/7 20:10:45

一. 环境准备

1. 构建Conda环境

studio-conda -o internlm-base -t InternLM2_Huixiangdou


2. 进入创建的conda环境

conda activate InternLM2_Huixiangdou

二. 准备基础文件

1. 创建文件夹

cd /root && mkdir models

2. 构建软链接

# 复制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

3. 安装依赖库

pip install protobuf==4.25.3 accelerate==0.28.0 aiohttp==3.9.3 auto-gptq==0.7.1 bcembedding==0.1.3 beautifulsoup4==4.8.2 einops==0.7.0 faiss-gpu==1.7.2 langchain==0.1.14 loguru==0.7.2 lxml_html_clean==0.1.0 openai==1.16.1 openpyxl==3.1.2 pandas==2.2.1 pydantic==2.6.4 pymupdf==1.24.1 python-docx==1.1.0 pytoml==0.1.21 readability-lxml==0.8.1 redis==5.0.3 requests==2.31.0 scikit-learn==1.4.1.post1 sentence_transformers==2.2.2 textract==1.6.5 tiktoken==0.6.0 transformers==4.39.3 transformers_stream_generator==0.0.5 unstructured==0.11.2

4. 下载代码工程

cd /root
# 下载 repo
git clone https://github.com/internlm/huixiangdou && cd huixiangdou
git checkout 447c6f7e68a1657fce1c4f7c740ea1700bde0440

三. 搭建茴香豆RAG助手

1. 修改配置文件

        向量数据库和词嵌入的模型

        sed -i '6s#.*#embedding_model_path = "/root/models/bce-embedding-base_v1"#' /root/huixiangdou/config.ini
        用于检索的重排序模型

        sed -i '7s#.*#reranker_model_path = "/root/models/bce-reranker-base_v1"#' /root/huixiangdou/config.ini

        使用的大模型

        sed -i '29s#.*#local_llm_path = "/root/models/internlm2-chat-7b"#' /root/huixiangdou/config.ini

        修改后的配置文件

2. 创建知识库

        下载 Huixiangdou 语料

        cd /root/huixiangdou && mkdir repodir

        git clone https://github.com/internlm/huixiangdou --depth=1 repodir/huixiangdou

  • 接受问题列表,希望茴香豆助手回答的示例问题
    • 存储在 huixiangdou/resource/good_questions.json 中
  • 拒绝问题列表,希望茴香豆助手拒答的示例问题
    • 存储在 huixiangdou/resource/bad_questions.json 中

3. 创建向量数据库

cd /root/huixiangdou

echo '[
"huixiangdou 是什么?",
"你好,介绍下自己"
]' > ./test_queries.json

# 创建向量数据库存储目录
cd /root/huixiangdou && mkdir workdir 

# 分别向量化知识语料、接受问题和拒绝问题中后保存到 workdir
python3 -m huixiangdou.service.feature_store --sample ./test_queries.json

4. 运行茴香豆

         填入问题
        sed -i '74s/.*/    queries = ["huixiangdou 是什么?", "茴香豆怎么部署到微信群", "今天天气怎么样?"]/' /root/huixiangdou/huixiangdou/main.py

        运行茴香豆
        cd /root/huixiangdou/
        python3 -m huixiangdou.main --standalone

四. 在茴香豆 Web 版中创建自己领域的知识问答助手

1. 创建 嵌入式软件开发的 问答助手

2. 上传知识库文档

3. 问答测试

五. 搭建web页面的茴香豆

1. 首先,安装 Gradio 依赖组件:

pip install gradio==4.25.0 redis==5.0.3 flask==3.0.2 lark_oapi==1.2.4

2. 运行脚本,启动茴香豆对话 Demo 服务:

cd /root/huixiangdou
python3 -m tests.test_query_gradio 

此时服务器端接口已开启。如果在本地服务器使用,直接在浏览器中输入 127.0.0.1:7860 ,即可进入茴香豆对话 Demo 界面。

3. 设置端口映射,转发端口到本地浏览器

在本地powershell 中执行:

ssh -CNg -L 7860:127.0.0.1:7860 root@ssh.intern-ai.org.cn -p 38995

4. 在本地浏览器中输入 127.0.0.1:7860 进入 Gradio 对话 Demo 界面,开始对话


http://lihuaxi.xjx100.cn/news/2159727.html

相关文章

蓝桥杯 基础练习 特殊的数字

资源限制 内存限制:512.0MB C/C时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 问题描述 153是一个非常特殊的数,它等于它的每位数字的立方和,即1531*1*15*5*53*3*3。编程求所有满足这种条件…

字符函数strlen、strcpy、strcat、strcmp、strstr、strtok、 strerror和perror函数

目录 1、strlen函数 strlen函数的模拟实现 2、strcpy函数 strcpy函数的模拟实现 strncpy函数 strncpy函数的模拟实现 3、srtcat函数 strcat函数的模拟实现 strncat函数 strncat函数的模拟实现 4、strcmp函数 strcmp函数的模拟实现 strncmp函数 5、strstr函数 st…

【2023注册测绘师考试综合能力考试攻略】综合练习题

学习目标: 学完航空摄影测量等章节,试着做做题吧。 学习内容: 【单项选择题】 (1)某航摄分区的航摄比例尺为 1:6000,所用航摄仪主距为100mm,则分区内地形高差最大 应不超过( )m。 A.50 B.100 C.150 D.200 【答案】B (2)根据现行规范规定,行政区域界线测量中,界桩…

【刷题篇】回溯算法(三)

文章目录 1、全排列2、子集3、找出所有子集的异或总和再求和4、全排列 II5、电话号码的字母组合6、括号生成 1、全排列 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 class Solution { public:vector<vector<i…

三:synchronized 关键字

目录 1、共享带来的问题2、synchronized 用法3、类加载器对 Class 锁的影响4、synchronized 实现原理4.1、同步方法、同步代码块4.2、对象内存布局4.3、Monitor 对象定义 5、synchronized 与原子性6、synchronized 与可见性7、synchronized 与有序性8、synchronized 锁升级8.1、…

[闲聊统计]之参数估计是什么?(上)

参数估计是推断统计的重要内容之一。它是在抽样及抽样分布的基础上&#xff0c;根据样本统计量来推断所关心的总体参数。说白了&#xff0c;就是用样本信息来代替总体信息 例如&#xff1a;现在要调查某大学大学生的一个消费情况&#xff0c;假设全校大学生的平均消费金额为 μ…

Java Swing游戏开发学习23

内容来自RyiSnow视频讲解 这一节讲的是Character Status角色状态或属性。 前言 这一节讲的是实现角色状态或属性的显示&#xff0c;就有点像RPG游戏中&#xff0c;人物属性显示的面板&#xff0c;其中有玩家的装备、玩家的等级&#xff0c;各种防御值、闪避值、跑速什么的。…

vue将html生成pdf并分页

jspdf html2canvas 此方案有很多的css兼容问题&#xff0c;比如虚线边框、svg、页数多了内容显示不全、部分浏览器兼容问题&#xff0c;光是解决这些问题就耗费了我不少岁月和精力 后面了解到新的技术方案&#xff1a; jspdf html-to-image npm install --save html-to-i…