一、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得分排名icon-default.png?t=N7T8https://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

三、实践

我传了一本《中医诊断学》,尝试提问。

这个似乎有些回答不是很准确

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐