写点什么

QAnything 本地知识库问答系统:基于检索增强生成式应用(RAG)两阶段检索、支持海量数据、跨语种问答

  • 2024-01-22
    浙江
  • 本文字数:4276 字

    阅读完需:约 14 分钟

QAnything本地知识库问答系统:基于检索增强生成式应用(RAG)两阶段检索、支持海量数据、跨语种问答

QAnything 本地知识库问答系统:基于检索增强生成式应用(RAG)两阶段检索、支持海量数据、跨语种问答

QAnything (Question and Answer based on Anything) 是致力于支持任意格式文件或数据库的本地知识库问答系统,可断网安装使用。


您的任何格式的本地文件都可以往里扔,即可获得准确、快速、靠谱的问答体验。


目前已支持格式: PDFWord(doc/docx)PPTMarkdownEmlTXT图片(jpg,png 等)网页链接,更多格式,敬请期待...


  • 特点

  • 数据安全,支持全程拔网线安装使用。

  • 支持跨语种问答,中英文问答随意切换,无所谓文件是什么语种。

  • 支持海量数据问答,两阶段向量排序,解决了大规模数据检索退化的问题,数据越多,效果越好。

  • 高性能生产级系统,可直接部署企业应用。

  • 易用性,无需繁琐的配置,一键安装部署,拿来就用。

  • 支持选择多知识库问答。

  • 架构


1.两阶段检索优势

知识库数据量大的场景下两阶段优势非常明显,如果只用一阶段 embedding 检索,随着数据量增大会出现检索退化的问题,如下图中绿线所示,二阶段 rerank 重排后能实现准确率稳定增长,即数据越多,效果越好



BCEmbedding 是由网易有道开发的中英双语和跨语种语义表征算法模型库,其中包含 EmbeddingModel 和 RerankerModel 两类基础模型。EmbeddingModel 专门用于生成语义向量,在语义搜索和问答中起着关键作用,而 RerankerModel 擅长优化语义搜索结果和语义相关顺序精排。


BCEmbedding 作为有道的检索增强生成式应用(RAG)的基石,特别是在 QAnything [github]中发挥着重要作用。QAnything 作为一个网易有道开源项目,在有道许多产品中有很好的应用实践,比如有道速读和有道翻译。


QAnything 使用的检索组件BCEmbedding有非常强悍的双语和跨语种能力,能消除语义检索里面的中英语言之间的差异,从而实现:


  • 强大的双语和跨语种语义表征能力【<a href="https://github.com/netease-youdao/BCEmbedding/tree/master?tab=readme-ov-file#semantic-representation-evaluations-in-mteb" target="_Self">基于 MTEB 的语义表征评测指标</a>】。

  • 基于 LlamaIndex 的 RAG 评测,表现 SOTA【<a href="https://github.com/netease-youdao/BCEmbedding/tree/master?tab=readme-ov-file#rag-evaluations-in-llamaindex" target="_Self">基于 LlamaIndex 的 RAG 评测指标</a>】。


  • 双语和跨语种优势

  • 现有的单个语义表征模型在双语和跨语种场景中常常表现不佳,特别是在中文、英文及其跨语种任务中。BCEmbedding 充分利用有道翻译引擎的优势,实现只需一个模型就可以在单语、双语和跨语种场景中表现出卓越的性能。


EmbeddingModel 支持中文和英文(之后会支持更多语种);RerankerModel 支持中文,英文,日文和韩文。

1.1 一阶段检索(embedding)


1.2 二阶段检索(rerank)



  • Reranker Evaluation Results

  • Language: en

  • Task Type: Reranking


  • Summary on en


  • Language: zh

  • Task Type: Reranking


  • Summary on zh


  • Language: en-zh

  • Task Type: Reranking


  • Summary on en-zh


  • Language: zh-en

  • Task Type: Reranking


  • Summary on zh-en


  • Summary on all langs: ['en', 'zh', 'en-zh', 'zh-en']


1.3 基于 LlamaIndex 的 RAG 评测(embedding and rerank)


NOTE:


  • 在 WithoutReranker 列中,我们的 bce-embedding-base_v1 模型优于所有其他 embedding 模型。

  • 在固定 embedding 模型的情况下,我们的 bce-reranker-base_v1 模型达到了最佳表现。

  • bce-embedding-base_v1 和 bce-reranker-base_v1 的组合是 SOTA。

  • 如果想单独使用 embedding 和 rerank 请参阅:BCEmbedding

2.LLM

开源版本 QAnything 的大模型基于通义千问,并在大量专业问答数据集上进行微调;在千问的基础上大大加强了问答的能力。如果需要商用请遵循千问的 license,具体请参阅:通义千问


2.1 快速开始

必要条件

  • For Linux|System| Required item | Minimum Requirement | Note ||---------------------------|--------------------------|---------------------------|-------------------------------------------------------------------------||Linux | Single NVIDIA GPU Memory <br> or Double NVIDIA GPU Memory | >= 16GB <br> >= 11GB + 5G | NVIDIA 3090 x 1 recommended <br> NVIDIA 2080TI × 2 recommended || | NVIDIA Driver Version | >= 525.105.17 | || | CUDA Version | >= 12.0 | || | Docker version | >= 20.10.5 | Docker install || | docker compose version | >= 2.23.3 | docker compose install |

  • For Winodws 11 with WSL 2|System| Required item | Minimum Requirement | Note ||---------------------------|--------------------------|---------------------------|-----------------------------------------------------------------------------------------------||Windows 11 with WSL 2| Single NVIDIA GPU Memory <br> or Double NVIDIA GPU Memory | >= 16GB <br> >= 11GB + 5G | NVIDIA 3090 <br> NVIDIA 2080TI × 2 | || | GEFORCE EXPERIENCE | >= 546.33 |GEFORCE EXPERIENCE download | || | Docker Desktop | >= 4.26.1(131620) | Docker Desktop for Windows |

下载安装

  • step1: 下载本项目


git clone https://github.com/netease-youdao/QAnything.git
复制代码


  • step2: 进入项目根目录执行启动脚本如果在 Windows 系统下请先进入 wsl 环境


cd QAnythingbash run.sh  # 默认在0号GPU上启动
复制代码


  • 指定单 GPU 启动


cd QAnythingbash run.sh 0  # 指定0号GPU启动 GPU编号从0开始 windows机器一般只有一张卡,所以只能指定0号GPU
复制代码


  • 指定多 GPU 启动


cd QAnythingbash run.sh 0,1  # 指定0,1号GPU启动,请确认有多张GPU可用,最多支持两张卡启动
复制代码

开始体验

  • 前端页面运行成功后,即可在浏览器输入以下地址进行体验。


  • 前端地址: http://your_host:5052/qanything/


  • API 如果想要访问 API 接口,请参考下面的地址:


  • API address: http://your_host:8777/api/

  • For detailed API documentation, please refer to QAnything API 文档


  • 关闭服务


bash close.sh
复制代码

3.demo 展示

视频链接:https://blog.csdn.net/sinat_39620217/article/details/135743659

信息抽取

网页问答

文件大杂烩


4.常见问题

  • 在 windows 上执行 docker-compose 命令启动时报错:/bin/bash^M: bad interpreter: No such file or directory

  • 原因:在 windows 下创建编辑的 shell 脚本是 dos 格式的,而 linux 却是只能执行格式为 unix 格式的脚本,所以在 windows 上编辑过的文件在 linux 上(windows 下执行 wsl 后的环境通常也是 linux)执行时会报错。

  • 解决方案:将回车符替换为空字符串


#通过命令查看脚本文件是dos格式还是unix格式,dos格式的文件行尾为^M$ ,unix格式的文件行尾为$:cat -A scripts/run_for_local.sh  # 验证文件格式sed -i "s/\r//" scripts/run_for_local.shsed -i "s/^M//" scripts/run_for_local.shcat -A scripts/run_for_local.sh  # 验证文件格式
复制代码


  • 在前端页面输入问题后,返回结果报错:Triton Inference Error (error_code: 4)

  • 原因:显存不够了,目前在问答过程中大模型和 paddleocr 占用的显存会逐渐上升且不释放,可能造成显存不够。

  • 解决方案:重启服务,优化显存的工作已在计划中

  • 原因 2:如果发现显存够用,那是因为新版模型与部分显卡型号不兼容。

  • 解决方案:请更换为兼容模型和镜像,手动下载模型文件解压并替换 models 目录,然后重启服务即可。

  • 将 docker-compose-xxx.yaml 中的 freeren/qanyxxx:v1.0.9 改为 freeren/qanyxxx:v1.0.8

  • git clone https://www.wisemodel.cn/Netease_Youdao/qanything.git

  • cd qanything

  • git reset --hard 79b3da3bbb35406f0b2da3acfcdb4c96c2837faf

  • unzip models.zip

  • 替换掉现有的 models 目录

  • echo "v2.1.0" > models/version.txt # 手动避过版本检查

  • 在前端页面输入问题后,返回结果是类似后面的乱码:omiteatures 贶.scrollHeight㎜eaturesodo Curse.streaming pulumi 窟 IDI 贶沤贶.scrollHeight 贶贶贶 eatures 谜.scrollHeight 她是

  • 原因:显卡型号不支持,例如 V100,请使用 3080,3090,4080,4090 等显卡,显存需要大于 16G

  • 服务启动报错,在 api.log 中显示:mysql.connector.errors.DatabaseError: 2003 (HY000): Can't connect to MySQL server on 'mysql-container-local:3306' (111)

  • 原因:将之前的 QAnything 代码拉取下来后,复制了一份代码到其他的地址,其中有一个 volumes 是 mivlus 和 mysql 默认的本地数据卷,复制后可能导致了 mysql 的数据卷冲突,导致 mysql 无法启动。

  • 解决方案:删除冲突的数据卷 volumes,重新启动服务

  • 服务启动报错:ERROR: for qanything-container-local Cannot start service qanything_local: could not select device driver "nvidia" with capabilities: [[gpu]]

  • 原因:查看 nvidia 显卡驱动版本是否满足要求,windows 下建议直接更新到最新版;另外检查下是否安装了 NVIDIA Container Toolkit, windows 下需要进入 wsl2 环境,再参考 linux 下安装方法:https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker

  • 服务启动报错:nvidia-container-cli: mount error: file creation failed: /var/lib/docker/overlay2/xxxxxx/libnvidia-ml.s0.1: file exists: unknown

  • 原因:在 windows 系统上使用 docker-compose-linux.yaml 启动

  • 解决方案:使用 docker-compose-windows.yaml 启动


参考链接:


https://github.com/netease-youdao/QAnything/blob/master


更多内容请关注:


更多优质内容请关注公号:汀丶人工智能;会提供一些相关的资源和优质文章,免费获取阅读。

发布于: 10 分钟前阅读数: 5
用户头像

本博客将不定期更新关于NLP等领域相关知识 2022-01-06 加入

本博客将不定期更新关于机器学习、强化学习、数据挖掘以及NLP等领域相关知识,以及分享自己学习到的知识技能,感谢大家关注!

评论

发布
暂无评论
QAnything本地知识库问答系统:基于检索增强生成式应用(RAG)两阶段检索、支持海量数据、跨语种问答_搜索推荐_汀丶人工智能_InfoQ写作社区