网易有道QAnything 安装部署实践(RAG)
网易有道QAnything 安装部署实践,理解一个完整RAG的高级构造。
一、QAnything 有什么优势
QAnything (Question and Answer based on Anything) 是致力于支持任意格式文件或数据库的本地知识库问答系统,可断网安装使用。其实,它就是一个较为高级的Retrieval-Augmented Generation(RAG)系统。
https://github.com/netease-youdao/QAnything
相比于其他的RAG系统,它主要的优势是
1. 强大的双语和跨语种语义表征能力
2. 二阶段rerank重排后能实现准确率稳定增长,即数据越多,效果越好。
这主要得益于有道的Embedding模型,目前最优,bce-embedding-base_v1 优于常见的m3e得分排名https://github.com/netease-youdao/BCEmbedding/tree/master?tab=readme-ov-file#evaluate-semantic-representation-by-mteb
RAG构架中多出来一个embedding,这个embedding是用来做检索的,或者说向量表征。选择使用额外的嵌入模型(embedding)通常是为了增强特定任务的性能或解决特定的问题。
二、如何部署
1. 演示环境
Windows 11 with WSL2 Ubuntu 22.04
GPU RTX 3090
Docker Desktop 4.27.1
Windows Terminal Powershell 内核
2. 下载
git clone https://github.com/netease-youdao/QAnything.git
git clone https://www.modelscope.cn/netease-youdao/QAnything.git
先下载QAnything源码,然后下载有道引以为豪的embedding模型。
把embedding模型下载下来以后解压:models.zip解压后是个models文件夹,这个文件夹要放到QAnything的根目录。这个models,就是我们说的RAG构架里的embedding模型,用来表征。
然后下载,大语言模型,官方推荐“通义千问”,下载放在
QAnything/assets/custom_models 这个路径下
git clone https://www.modelscope.cn/netease-youdao/Qwen-7B-QAnything.git
3. 运行bash
在运行bash文件之前,先做几个准备工作
- 设置docker,wsl,关联上自己本地的wsl系统
- wsl进入自己的linux子系统
- 更改shell脚本的回车(在windows下创建编辑的shell脚本是dos格式的,而linux却是只能执行格式为unix格式的脚本),否则执行时会报错,将回车符替换为空字符串
sed -i "s/\r//" scripts/run_for_local_option.sh
sed -i "s/^M//" scripts/run_for_local_option.sh
sed -i "s/\r//" scripts/run_for_cloud_option.sh
sed -i "s/^M//" scripts/run_for_cloud_option.sh
sed -i "s/\r//" run.sh
sed -i "s/^M//" run.sh
sed -i "s/\r//" close.sh
sed -i "s/^M//" close.sh
bash ./run.sh -c local -i 0 -b hf -m Qwen-7B-QAnything -t qwen-7b-qanything
-
若发现npm run install报错failed to install npm dependencies,请参考将npm换成yarn
\scripts\run_for_local_option.sh,找到npm install那里,修改一下代码
echo "Waiting for [npm run install](5/8)"
npm config set registry https://registry.npmmirror.com
npm install -g yarn
yarn config set registry https://registry.npmmirror.com
timeout $timeout_time yarn install
然后就接着下一步下一步,就可以安装完成了。
注意:只要成功一次,可以把run_for_local_option.sh,里面的前端下载和构建的代码注释掉,因为不需要每次都这样。
最后,不用了,可以关掉 bash close.sh
三、实践
我传了一本《中医诊断学》,尝试提问。
这个似乎有些回答不是很准确
更多推荐
所有评论(0)