Loading

茴香豆 RAG 平台实操-书生浦语大模型实战营第二期第3节作业

书生浦语大模型实战营第二期第3节作业

本页面包括实战营第二期第三节作业的全部操作步骤。如果需要知道RAG相关知识请访问学习笔记

作业要求

  • 基础作业

    1. 茴香豆 Web 版中创建自己领域的知识问答助手
    2. InternLM Studio 上部署茴香豆技术助手
  • 进阶作业 - 二选一

    • A.【应用方向】 结合自己擅长的领域知识(游戏、法律、电子等)、专业背景,搭建个人工作助手或者垂直领域问答助手,参考茴香豆官方文档,部署到下列任一平台。
    • B.【算法方向】尝试修改 good_questions.json、调试 prompt 或应用其他 NLP 技术,如其他 chunk 方法,提高个人工作助手的表现。
      • 完成不少于 400 字的笔记 ,记录自己的尝试和调试思路,涵盖全过程和改进效果截图
  • 大作业项目选题

    • A.【工程方向】 参与贡献茴香豆前端,将茴香豆助手部署到下列平台:Github issue、Discord、钉钉、X
    • B.【应用方向】 茴香豆RAG-Agent:应用茴香豆建立一个 ROS2 的机器人Agent
    • C.【算法方向】 茴香豆多模态:参与茴香豆多模态的工作

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

这个作业其实是比较简单的,对着视频教程做就好了。这里也为了凑够400字给出一个文字版的教程。

注册知识库

首先我们打开茴香豆的Web 版,如下图:

茴香豆的Web 版界面

然后下方输入知识库名称和密码。第一次可以自己创建:

输入账号和密码

创建完成后是这样的:

创建完成的页面

导入检索文档

接着点击“查看或上传”上传自己的PDF。按照要求我们上传了一个STM32教程。

上传中

等待上传结束,界面会变化的。

上传结束

开始聊天

之后就可以开始聊天了:

好慢啊。。。然后就崩掉了!!!提示内部错误

想了想,我重新简历个库,终于成功了:



不过,总感觉这么简单的例子不使用RAG也能答出来。还有,模型生成的回答并没有与书中的代码重复或接近。

所以,我从刚才STM32的PDF中取出了几页做成文件加了进去,换了个例子问它:

嘿嘿嘿。。。
挑了个问题:

书中的内容是这样的:

它的回答是这样的:

感觉AI在偷懒,有意回避写代码这个工作!!!于是,我直接和AI说我要代码:

对照一下文档,,,只能说RAG的效果一言难尽。。。它的回答可能是正确的,但是它并没有按照我给出的文档来。

这里,我创建的环境密码是123456,欢迎大家体验!

InternLM Studio 上部署茴香豆技术助手

这个作业需要使用的环境是30%A100的环境。

配置环境

在上一个作业中,我们已经能够很熟练地完成这些步骤了,这里简单过一下。首先是创建conda环境:

studio-conda -o internlm-base -t InternLM2_Huixiangdou
conda activate InternLM2_Huixiangdou
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
点击查看`InternLM2_Huixiangdou`环境中的所有软件包
# packages in environment at /root/.conda/envs/InternLM2_Huixiangdou:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                        main    defaults
_openmp_mutex             5.1                       1_gnu    defaults
accelerate                0.28.0                   pypi_0    pypi
aiohttp                   3.9.3                    pypi_0    pypi
aiosignal                 1.3.1                    pypi_0    pypi
annotated-types           0.6.0                    pypi_0    pypi
anyio                     4.3.0                    pypi_0    pypi
argcomplete               1.10.3                   pypi_0    pypi
asttokens                 2.4.1                    pypi_0    pypi
async-timeout             4.0.3                    pypi_0    pypi
attrs                     23.2.0                   pypi_0    pypi
auto-gptq                 0.7.1                    pypi_0    pypi
backoff                   2.2.1                    pypi_0    pypi
bcembedding               0.1.3                    pypi_0    pypi
beautifulsoup4            4.8.2                    pypi_0    pypi
blas                      1.0                         mkl    defaults
brotli-python             1.0.9           py310h6a678d5_7    defaults
bzip2                     1.0.8                h7b6447c_0    defaults
ca-certificates           2023.08.22           h06a4308_0    defaults
certifi                   2023.11.17      py310h06a4308_0    defaults
cffi                      1.16.0          py310h5eee18b_0    defaults
chardet                   3.0.4                    pypi_0    pypi
charset-normalizer        2.0.4              pyhd3eb1b0_0    defaults
click                     8.1.7                    pypi_0    pypi
comm                      0.2.2                    pypi_0    pypi
compressed-rtf            1.0.6                    pypi_0    pypi
cryptography              41.0.3          py310hdda0065_0    defaults
cssselect                 1.2.0                    pypi_0    pypi
cuda-cudart               11.7.99                       0    nvidia
cuda-cupti                11.7.101                      0    nvidia
cuda-libraries            11.7.1                        0    nvidia
cuda-nvrtc                11.7.99                       0    nvidia
cuda-nvtx                 11.7.91                       0    nvidia
cuda-runtime              11.7.1                        0    nvidia
dataclasses-json          0.6.4                    pypi_0    pypi
datasets                  2.18.0                   pypi_0    pypi
debugpy                   1.8.1                    pypi_0    pypi
decorator                 5.1.1                    pypi_0    pypi
dill                      0.3.8                    pypi_0    pypi
distro                    1.9.0                    pypi_0    pypi
docx2txt                  0.8                      pypi_0    pypi
ebcdic                    1.1.1                    pypi_0    pypi
einops                    0.7.0                    pypi_0    pypi
emoji                     2.11.0                   pypi_0    pypi
et-xmlfile                1.1.0                    pypi_0    pypi
exceptiongroup            1.2.0                    pypi_0    pypi
executing                 2.0.1                    pypi_0    pypi
extract-msg               0.28.7                   pypi_0    pypi
faiss-gpu                 1.7.2                    pypi_0    pypi
ffmpeg                    4.3                  hf484d3e_0    pytorch
filelock                  3.13.1          py310h06a4308_0    defaults
filetype                  1.2.0                    pypi_0    pypi
freetype                  2.12.1               h4a9f257_0    defaults
frozenlist                1.4.1                    pypi_0    pypi
fsspec                    2024.2.0                 pypi_0    pypi
gekko                     1.1.0                    pypi_0    pypi
giflib                    5.2.1                h5eee18b_3    defaults
gmp                       6.2.1                h295c915_3    defaults
gmpy2                     2.1.2           py310heeb90bb_0    defaults
gnutls                    3.6.15               he1e5248_0    defaults
greenlet                  3.0.3                    pypi_0    pypi
h11                       0.14.0                   pypi_0    pypi
httpcore                  1.0.5                    pypi_0    pypi
httpx                     0.27.0                   pypi_0    pypi
huggingface-hub           0.22.2                   pypi_0    pypi
idna                      3.4             py310h06a4308_0    defaults
imapclient                2.1.0                    pypi_0    pypi
intel-openmp              2023.1.0         hdb19cb5_46306    defaults
ipykernel                 6.29.4                   pypi_0    pypi
ipython                   8.23.0                   pypi_0    pypi
jedi                      0.19.1                   pypi_0    pypi
jinja2                    3.1.2           py310h06a4308_0    defaults
joblib                    1.3.2                    pypi_0    pypi
jpeg                      9e                   h5eee18b_1    defaults
jsonpatch                 1.33                     pypi_0    pypi
jsonpointer               2.4                      pypi_0    pypi
jupyter-client            8.6.1                    pypi_0    pypi
jupyter-core              5.7.2                    pypi_0    pypi
lame                      3.100                h7b6447c_0    defaults
langchain                 0.1.14                   pypi_0    pypi
langchain-community       0.0.31                   pypi_0    pypi
langchain-core            0.1.40                   pypi_0    pypi
langchain-text-splitters  0.0.1                    pypi_0    pypi
langdetect                1.0.9                    pypi_0    pypi
langsmith                 0.1.40                   pypi_0    pypi
lcms2                     2.12                 h3be6417_0    defaults
ld_impl_linux-64          2.38                 h1181459_1    defaults
lerc                      3.0                  h295c915_0    defaults
libcublas                 11.10.3.66                    0    nvidia
libcufft                  10.7.2.124           h4fbf590_0    nvidia
libcufile                 1.8.1.2                       0    nvidia
libcurand                 10.3.4.101                    0    nvidia
libcusolver               11.4.0.1                      0    nvidia
libcusparse               11.7.4.91                     0    nvidia
libdeflate                1.17                 h5eee18b_1    defaults
libffi                    3.4.4                h6a678d5_0    defaults
libgcc-ng                 11.2.0               h1234567_1    defaults
libgomp                   11.2.0               h1234567_1    defaults
libiconv                  1.16                 h7f8727e_2    defaults
libidn2                   2.3.4                h5eee18b_0    defaults
libnpp                    11.7.4.75                     0    nvidia
libnvjpeg                 11.8.0.2                      0    nvidia
libpng                    1.6.39               h5eee18b_0    defaults
libstdcxx-ng              11.2.0               h1234567_1    defaults
libtasn1                  4.19.0               h5eee18b_0    defaults
libtiff                   4.5.1                h6a678d5_0    defaults
libunistring              0.9.10               h27cfd23_0    defaults
libuuid                   1.41.5               h5eee18b_0    defaults
libwebp                   1.3.2                h11a3e52_0    defaults
libwebp-base              1.3.2                h5eee18b_0    defaults
loguru                    0.7.2                    pypi_0    pypi
lxml                      5.2.1                    pypi_0    pypi
lxml-html-clean           0.1.0                    pypi_0    pypi
lz4-c                     1.9.4                h6a678d5_0    defaults
markupsafe                2.1.1           py310h7f8727e_0    defaults
marshmallow               3.21.1                   pypi_0    pypi
matplotlib-inline         0.1.6                    pypi_0    pypi
mkl                       2023.1.0         h213fc3f_46344    defaults
mkl-service               2.4.0           py310h5eee18b_1    defaults
mkl_fft                   1.3.8           py310h5eee18b_0    defaults
mkl_random                1.2.4           py310hdb19cb5_0    defaults
mpc                       1.1.0                h10f8cd9_1    defaults
mpfr                      4.0.2                hb69a4c5_1    defaults
mpmath                    1.3.0           py310h06a4308_0    defaults
multidict                 6.0.5                    pypi_0    pypi
multiprocess              0.70.16                  pypi_0    pypi
mypy-extensions           1.0.0                    pypi_0    pypi
ncurses                   6.4                  h6a678d5_0    defaults
nest-asyncio              1.6.0                    pypi_0    pypi
nettle                    3.7.3                hbbd107a_1    defaults
networkx                  3.1             py310h06a4308_0    defaults
nltk                      3.8.1                    pypi_0    pypi
numpy                     1.26.2          py310h5f9d8c6_0    defaults
numpy-base                1.26.2          py310hb5e798b_0    defaults
olefile                   0.47                     pypi_0    pypi
openai                    1.16.1                   pypi_0    pypi
openh264                  2.1.1                h4ff587b_0    defaults
openjpeg                  2.4.0                h3ad879b_0    defaults
openpyxl                  3.1.2                    pypi_0    pypi
openssl                   3.0.12               h7f8727e_0    defaults
orjson                    3.10.0                   pypi_0    pypi
packaging                 23.2                     pypi_0    pypi
pandas                    2.2.1                    pypi_0    pypi
parso                     0.8.4                    pypi_0    pypi
pdfminer-six              20191110                 pypi_0    pypi
peft                      0.10.0                   pypi_0    pypi
pexpect                   4.9.0                    pypi_0    pypi
pillow                    10.0.1          py310ha6cbd5a_0    defaults
pip                       23.3.1          py310h06a4308_0    defaults
platformdirs              4.2.0                    pypi_0    pypi
prompt-toolkit            3.0.43                   pypi_0    pypi
protobuf                  4.25.3                   pypi_0    pypi
psutil                    5.9.8                    pypi_0    pypi
ptyprocess                0.7.0                    pypi_0    pypi
pure-eval                 0.2.2                    pypi_0    pypi
pyarrow                   15.0.2                   pypi_0    pypi
pyarrow-hotfix            0.6                      pypi_0    pypi
pycparser                 2.21               pyhd3eb1b0_0    defaults
pycryptodome              3.20.0                   pypi_0    pypi
pydantic                  2.6.4                    pypi_0    pypi
pydantic-core             2.16.3                   pypi_0    pypi
pygments                  2.17.2                   pypi_0    pypi
pymupdf                   1.24.1                   pypi_0    pypi
pymupdfb                  1.24.1                   pypi_0    pypi
pyopenssl                 23.2.0          py310h06a4308_0    defaults
pysocks                   1.7.1           py310h06a4308_0    defaults
python                    3.10.13              h955ad1f_0    defaults
python-dateutil           2.9.0.post0              pypi_0    pypi
python-docx               1.1.0                    pypi_0    pypi
python-iso639             2024.2.7                 pypi_0    pypi
python-magic              0.4.27                   pypi_0    pypi
python-pptx               0.6.23                   pypi_0    pypi
pytoml                    0.1.21                   pypi_0    pypi
pytorch                   2.0.1           py3.10_cuda11.7_cudnn8.5.0_0    pytorch
pytorch-cuda              11.7                 h778d358_5    pytorch
pytorch-mutex             1.0                        cuda    pytorch
pytz                      2024.1                   pypi_0    pypi
pyyaml                    6.0.1                    pypi_0    pypi
pyzmq                     25.1.2                   pypi_0    pypi
rapidfuzz                 3.8.1                    pypi_0    pypi
readability-lxml          0.8.1                    pypi_0    pypi
readline                  8.2                  h5eee18b_0    defaults
redis                     5.0.3                    pypi_0    pypi
regex                     2023.12.25               pypi_0    pypi
requests                  2.31.0          py310h06a4308_0    defaults
rouge                     1.0.1                    pypi_0    pypi
safetensors               0.4.2                    pypi_0    pypi
scikit-learn              1.4.1.post1              pypi_0    pypi
scipy                     1.13.0                   pypi_0    pypi
sentence-transformers     2.2.2                    pypi_0    pypi
sentencepiece             0.2.0                    pypi_0    pypi
setuptools                68.0.0          py310h06a4308_0    defaults
six                       1.12.0                   pypi_0    pypi
sniffio                   1.3.1                    pypi_0    pypi
sortedcontainers          2.4.0                    pypi_0    pypi
soupsieve                 2.5                      pypi_0    pypi
speechrecognition         3.8.1                    pypi_0    pypi
sqlalchemy                2.0.29                   pypi_0    pypi
sqlite                    3.41.2               h5eee18b_0    defaults
stack-data                0.6.3                    pypi_0    pypi
sympy                     1.11.1          py310h06a4308_0    defaults
tabulate                  0.9.0                    pypi_0    pypi
tbb                       2021.8.0             hdb19cb5_0    defaults
tenacity                  8.2.3                    pypi_0    pypi
textract                  1.6.5                    pypi_0    pypi
threadpoolctl             3.4.0                    pypi_0    pypi
tiktoken                  0.6.0                    pypi_0    pypi
tk                        8.6.12               h1ccaba5_0    defaults
tokenizers                0.15.2                   pypi_0    pypi
torchaudio                2.0.2               py310_cu117    pytorch
torchtriton               2.0.0                     py310    pytorch
torchvision               0.15.2              py310_cu117    pytorch
tornado                   6.4                      pypi_0    pypi
tqdm                      4.66.2                   pypi_0    pypi
traitlets                 5.14.2                   pypi_0    pypi
transformers              4.39.3                   pypi_0    pypi
transformers-stream-generator 0.0.5                    pypi_0    pypi
typing-inspect            0.9.0                    pypi_0    pypi
typing_extensions         4.7.1           py310h06a4308_0    defaults
tzdata                    2024.1                   pypi_0    pypi
tzlocal                   5.2                      pypi_0    pypi
unstructured              0.11.2                   pypi_0    pypi
urllib3                   1.26.18         py310h06a4308_0    defaults
wcwidth                   0.2.13                   pypi_0    pypi
wheel                     0.41.2          py310h06a4308_0    defaults
wrapt                     1.16.0                   pypi_0    pypi
xlrd                      1.2.0                    pypi_0    pypi
xlsxwriter                3.2.0                    pypi_0    pypi
xxhash                    3.4.1                    pypi_0    pypi
xz                        5.4.2                h5eee18b_0    defaults
yarl                      1.9.4                    pypi_0    pypi
zlib                      1.2.13               h5eee18b_0    defaults
zstd                      1.5.5                hc292b87_0    defaults

这一步我在做的时候程序运行了好久啊,建议切到10% 的 A100 去做。

另外需要额外说的是,huixiangdou其实是有自己的requirement.txt的,比对了一下这里的指令只是额外指定了这些包的版本号(为我们能够成功完成实验操碎了心)

huixiangdou的requirement.txt如下,可自行与上面的命令进行比对:

accelerate>=0.26.1
aiohttp
auto-gptq
bcembedding
beautifulsoup4
einops
faiss-gpu
langchain>=0.1.12
loguru
lxml_html_clean
openai>=1.0.0
openpyxl
pandas
pydantic>=1.10.13
pymupdf
python-docx
pytoml
readability-lxml
redis
requests
scikit-learn
sentence_transformers==2.2.2
textract
tiktoken
torch>=2.0.0
transformers>=4.37.0
transformers_stream_generator
unstructured

然后是下载模型和茴香豆代码:

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

# 下载茴香豆源码并指定代码版本
cd /root
git clone https://github.com/internlm/huixiangdou && cd huixiangdou
git checkout 447c6f7e68a1657fce1c4f7c740ea1700bde0440

我们还需要将源码中的文件替换为自己刚才下载(复制)的文件位置。茴香豆项目在这一块的处理比大模型demo处理得好了很多,我们仅需修改配置文件即可,而不需要修改源代码。

在这里,官方教程给的修改文件方案是使用sed -i命令。这个命令的作用就是修改某一行的内容。sed是一个文件编辑命令。我们自己使用其他方式编辑文件效果其实也是一样的。

# 修改用于向量数据库和词嵌入的模型
# 将第6行的内容替换为embedding_model_path = "/root/models/bce-embedding-base_v1"
sed -i '6s#.*#embedding_model_path = "/root/models/bce-embedding-base_v1"#' /root/huixiangdou/config.ini

# 替换第7行的内容以修改用于检索的重排序模型
sed -i '7s#.*#reranker_model_path = "/root/models/bce-reranker-base_v1"#' /root/huixiangdou/config.ini

# 替换第29行的内容以修改本次选用的大模型
sed -i '29s#.*#local_llm_path = "/root/models/internlm2-chat-7b"#' /root/huixiangdou/config.ini

改之前是:

embedding_model_path = "maidalun1020/bce-embedding-base_v1"
reranker_model_path = "maidalun1020/bce-reranker-base_v1"
local_llm_path = "internlm/internlm2-chat-7b"

改之后是:

embedding_model_path = "/root/models/bce-embedding-base_v1"
reranker_model_path = "/root/models/bce-reranker-base_v1"
local_llm_path = "/root/models/internlm2-chat-7b"

这说明,我们使用的大语言模型是internlm2-chat-7b,使用的embedding_model是网易的bce-embedding-base_v1,使用的reranker_model是网易的bce-reranker-base_v1

如果我们使用vscode,它的版本管理插件就会以行首标蓝的方式提示我们文件发生变动:

文件变动

创建知识库

首先下载语料:

cd /root/huixiangdou && mkdir repodir
git clone https://github.com/internlm/huixiangdou --depth=1 repodir/huixiangdou

之后,我们向/root/huixiangdou/resource/good_questions.json中追加一些教程里的内容,更改完成以后/root/huixiangdou/resource/good_questions.json如下:

追加的好问题列表

再创建一个用于测试拒答流程的问询列表:

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

在这里,官方教程使用echo命令将指定的。这个命令的作用就是将后面的参数输出至标准输出流。之后,该命令通过>将标准输出流重定向至/root/huixiangdou/test_queries.json文件。

创建完成后/root/huixiangdou/下会出现如下test_queries.json文件:

创建向量数据库

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

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

这里,数据库向量化的过程用到了LangChain的相关模块(甚至还是一堆过时的API),默认嵌入和重排序模型调用的网易BCE双语模型。完成后,新增的知识向量数据库就存储在 workdir 文件夹下。源码调用的API可能在不久的将来都会被废弃,所以运行的时候报了非常多的LangChainDeprecationWarning

避坑指南:assert (len(context) <= context_max_length)

如果只有Warning的话其实也还好,但是实际上跟着教程走的话程序是会报错的。

报错

我们的解决方法就比较骚气了,直接编辑/root/huixiangdou/huixiangdou/service/retriever.py的第109行,将 context_max_length16000 改大一些,如修改为 160000就能不报错。

但是,其实这样做是有问题的。我们的学习笔记里提到过,context_length 超过16k会导致中间丢失现象的出现。但是这里为了完成作业先这样吧。

运行结束后会报一个信息非常长的warning,但是其实此时知识库已经搭建完成了。最后的输出如下图:

知识库搭建完成

运行茴香豆知识助手

我们已经提取了知识库特征,并创建了对应的向量数据库。现在,让我们来测试一下效果。

我们更改/root/huixiangdou/huixiangdou/main.py第74行的queries

之后再运行/root/huixiangdou/huixiangdou/main.py

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

运行结果为:

04/08/2024 20:52:56 - [INFO] -aiohttp.access->>>    127.0.0.1 [08/Apr/2024:20:52:33 +0800] "POST /inference HTTP/1.1" 200 2369 "-" "python-requests/2.31.0"
2024-04-08 20:52:56.505 | INFO     | __main__:lark_send_only:79 - ErrorCode.SUCCESS, huixiangdou 是什么?, HuixiangDou 是一个基于 LLM(大型语言模型)的群组聊天助手。它使用两阶段管道来处理群组聊天场景,以回答用户问题,而不会导致信息过载。该工具的优点包括:

1. 两阶段管道:HuixiangDou 使用一个两阶段管道来处理群组聊天。首先,它使用一个预训练的模型来快速判断一个消息是否需要被处理。如果消息需要被处理,它将使用另一个模型来生成回答。这种设计可以避免信息过载,并提高处理效率。
2. 低成本:HuixiangDou 只需要 1.5GB 的内存,并且不需要进行训练,因此它的成本相对较低。
3. 完整套件:HuixiangDou 提供了 Web、Android 和管道源代码的完整套件,这些代码是工业级和商业上可行的。
4. 运行场景:HuixiangDou 已经在多个场景中运行,包括 WeChat 和 Feishu 群组。
5. 开源:HuixiangDou 的源代码是开源的,并且可以在 [OpenXLab](https://openxlab.org.cn/apps/detail/tpoisonooo/huixiangdou-web) 上使用,用户可以轻松地构建自己的知识助手,而无需编写任何代码。

HuixiangDou 的更多信息可以在 [arxiv2401.08772](https://arxiv.org/abs/2401.08772) 论文中找到。, ['README.md']

模型找到了第一个问题的答案,也找到了第二个问题的答案:

2024-04-08 20:53:44.837 | INFO     | __main__:lark_send_only:79 - ErrorCode.SUCCESS, 茴香豆怎么部署到微信群, 要部署茴香豆到微信群,请按照以下步骤操作:

1. __安装茴香豆__:
   - 首先,您需要从 GitHub 上下载茴香豆的源代码。
   - 在您的计算机上安装 Python 3.8 或更高版本。
   - 使用 `pip` 安装茴香豆的依赖项:`pip install -r requirements.txt`。

2. __准备数据__:
   - 您需要为茴香豆提供一些数据,例如问题、答案和相关知识。
   - 将数据整理成 JSON 格式,并保存为 `data.json` 文件。

3. __配置茴香豆__:
   - 打开 `config.ini` 文件,并根据您的需求配置参数。
   - 配置 `model` 参数,以选择您要使用的模型。
   - 配置 `data` 参数,以指定您要使用的数据文件。
   - 配置 `log` 参数,以指定日志文件的路径。

4. __运行茴香豆__:
   - 在终端中,导航到茴香豆的根目录。
   - 运行 `python huixiangdou.py` 启动茴香豆。
   - 茴香豆将开始处理数据,并准备回答用户的问题。

5. __集成到微信群__:
   - 在您的微信中,创建一个新的群聊。
   - 将茴香豆的 QQ 号添加到该群聊中。
   - 茴香豆将开始接收来自微信群的消息,并尝试回答用户的问题。

6. __测试和优化__:
   - 测试茴香豆的性能,并根据需要进行调整。
   - 您可以通过添加更多数据、调整参数或使用更高级的模型来提高茴香豆的性能。

请注意,以上步骤仅提供了一个基本的部署流程,您可能需要根据您的具体需求进行一些调整。同时,为了确保茴香豆的正常运行,请确保您的计算机具有足够的计算资源,并且您的数据集是干净、有组织且格式正确的。, ['README_zh.md']

模型将第三个问题判断为“不相关问题”:

2024-04-08 20:53:46.212 | INFO     | huixiangdou.service.llm_server_hybrid:generate_response:519 - ('“今天天气怎么样?”\n请仔细阅读以上内容,判断句子是否是个有主题的疑问句,结果用 0~10 表示。直接提供得分不要解释。\n判断标准:有主语谓语宾语并且是疑问句得 10 分;缺少主谓宾扣分;陈述句直接得 0 分;不是疑问句直接得 0 分。直接提供得分不要解释。', '根据给定的标准,"今天天气怎么样?" 是一个有主语、谓语和宾语,并且是疑问句的句子。因此,它的得分是 10 分。')
2024-04-08 20:53:46.410 | INFO     | __main__:lark_send_only:79 - ErrorCode.UNRELATED, 今天天气怎么样?, , ['HuixiangDou.pdf']

这里仍然提供教程里给出的InternLM2-Chat-7B 的关于 huixiangdou 问题的原始输出做一个对比,说明RAG是很有用的:

InternLM2-Chat-7B

作业运行截图

这次的作业只要求回答一个问题,所以我们将main.py第74行的queries改为["茴香豆怎么部署到微信群"]并运行。运行的全部输出为:

茴香豆作业

进阶作业:部署个人工作助手

先说一下为什么选A题吧。B题其实不难,但是使用什么指标评定改进效果?我还没有想好。所以就选择了A题。

在这里,我们将基于茴香豆的Web版搭建垂直领域问答助手,并将其部署至飞书。步骤如下:

  1. 进入飞书开放平台,创建企业自建应用

  2. 点击确定后稍等。进入机器人主页后点击“凭证与基础信息”

  3. 进去之后复制App ID和Secret

  4. 在茴香豆Web 版中输入知识库和密码,上传文档进行初步测试后,点击“零开发集成飞书”,在弹出的对话框中将先前复制的App ID和Secret输入至1和2处,并复制3和4处的内容备用。

  5. 在飞书机器人主页点击“事件与回调 | 加密策略”,将步骤4中的3和4分别填进飞书中的 Encrypt KeyVerification Token

  6. 将步骤4中的6处飞书事件请求地址填入飞书后台的开发配置-事件与回调tab-事件配置

  7. 点击“添加事件”,搜索“接收消息”

  8. 点击“权限管理”,申请开通权限:im:chat:readonlyim:message:send_as_bot

  9. 发布应用,创建应用版本

啪的一下,很快啊,就通过审核了。

  1. 记得给机器人添加机器人能力

  2. 创建群聊,注意群后缀要改为步骤4中5处的后缀,再将刚刚创建并发布的应用机器人添加到群聊中。

  3. 实际上我后来发消息以后机器人没反应,我才意识到这里需要开通更多的权限。事件与回调这一块要好好配。

  4. 我现在只是随便问问如何编程,它就直接照着文档开始教我如何使用 Quartus 了,因为我给的文档里面只有Quartus 。这就是RAG。

个人助手问答截图

显存使用

建立向量数据库时,使用的显存大小为:

建库gpu

最后使用茴香豆推理时,使用的显存大小为:

推理gpu

posted @ 2024-04-08 23:15  vanilla阿草  阅读(229)  评论(0编辑  收藏  举报