当前位置:首页 > 技术分析 > 正文内容

QAnything本地知识库问答系统

ruisui884个月前 (02-24)技术分析10

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有非常强悍的双语和跨语种能力,能消除语义检索里面的中英语言之间的差异, 从而实现: - 强大的双语和跨语种语义表征能力【基于MTEB的语义表征评测指标】。 - 基于LlamaIndex的RAG评测,表现SOTA【基于LlamaIndex的RAG评测指标】。

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

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

1.1 一阶段检索(embedding)

模型名称

Retrieval

STS

PairClassification

Classification

Reranking

Clustering

平均

bge-base-en-v1.5

37.14

55.06

75.45

59.73

43.05

37.74

47.20

bge-base-zh-v1.5

47.60

63.72

77.40

63.38

54.85

32.56

53.60

bge-large-en-v1.5

37.15

54.09

75.00

59.24

42.68

37.32

46.82

bge-large-zh-v1.5

47.54

64.73

79.14

64.19

55.88

33.26

54.21

jina-embeddings-v2-base-en

31.58

54.28

74.84

58.42

41.16

34.67

44.29

m3e-base

46.29

63.93

71.84

64.08

52.38

37.84

53.54

m3e-large

34.85

59.74

67.69

60.07

48.99

31.62

46.78

bce-embedding-base_v1

57.60

65.73

74.96

69.00

57.29

38.95

59.43

  • 更详细的评测结果详见Embedding模型指标汇总。

1.2二阶段检索(rerank)

模型名称

Reranking

平均

bge-reranker-base

57.78

57.78

bge-reranker-large

59.69

59.69

bce-reranker-base_v1

60.06

60.06

  • 更详细的评测结果详见Reranker模型指标汇总
  • Reranker Evaluation Results
    • Language: en
      • Task Type: Reranking
        | Model | AskUbuntuDupQuestions | MindSmallReranking | SciDocsRR | StackOverflowDupQuestions |
        AVG |
        |:-------------------------------|:--------:|:--------:|:--------:|:--------:|:--------:|
        | bge-reranker-base | 54.70 | 28.48 | 67.09 | 37.55 | 46.96 |
        | bge-reranker-large | 58.73 | 28.84 | 71.30 | 39.04 | 49.48 |
        | bce-reranker-base_v1 | 56.54 | 30.73 | 75.79 | 42.88 | 51.48 |
      • Summary on en
        | Model | Reranking |
        AVG |
        |:-------------------------------|:--------:|:--------:|
        | bge-reranker-base | 46.96 | 46.96 |
        | bge-reranker-large | 49.48 | 49.48 |
        | bce-reranker-base_v1 | 51.48 | 51.48 |
        • Language: zh

      • Task Type: Reranking
        | Model | T2Reranking | MMarcoReranking | CMedQAv1 | CMedQAv2 |
        AVG |
        |:-------------------------------|:--------:|:--------:|:--------:|:--------:|:--------:|
        | bge-reranker-base | 67.28 | 35.46 | 81.27 | 84.10 | 67.03 |
        | bge-reranker-large | 67.60 | 37.64 | 82.14 | 84.18 | 67.89 |
        | bce-reranker-base_v1 | 70.25 | 34.13 | 79.64 | 81.31 | 66.33 |
      • Summary on zh
        | Model | Reranking |
        AVG |
        |:-------------------------------|:--------:|:--------:|
        | bge-reranker-base | 67.03 | 67.03 |
        | bge-reranker-large | 67.89 | 67.89 |
        | bce-reranker-base_v1 | 66.33 | 66.33 |
        • Language: en-zh
      • Task Type: Reranking
        | Model | T2RerankingEn2Zh | MMarcoRerankingEn2Zh |
        AVG |
        |:-------------------------------|:--------:|:--------:|:--------:|
        | bge-reranker-base | 60.45 | 64.41 | 62.43 |
        | bge-reranker-large | 61.64 | 67.17 | 64.41 |
        | bce-reranker-base_v1 | 63.63 | 67.92 | 65.78 |
      • Summary on en-zh
        | Model | Reranking |
        AVG |
        |:-------------------------------|:--------:|:--------:|
        | bge-reranker-base | 62.43 | 62.43 |
        | bge-reranker-large | 64.41 | 64.41 |
        | bce-reranker-base_v1 | 65.78 | 65.78 |
        • Language: zh-en

      • Task Type: Reranking
        | Model | T2RerankingZh2En | MMarcoRerankingZh2En |
        AVG |
        |:-------------------------------|:--------:|:--------:|:--------:|
        | bge-reranker-base | 63.94 | 63.79 | 63.87 |
        | bge-reranker-large | 64.13 | 67.89 | 66.01 |
        | bce-reranker-base_v1 | 65.38 | 67.23 | 66.31 |
      • Summary on zh-en
        | Model | Reranking |
        AVG |
        |:-------------------------------|:--------:|:--------:|
        | bge-reranker-base | 63.87 | 63.87 |
        | bge-reranker-large | 66.01 | 66.01 |
        | bce-reranker-base_v1 | 66.31 | 66.31 |
      • Summary on all langs: ['en', 'zh', 'en-zh', 'zh-en']
        | Model | Reranking (12) |
        AVG (12) |
        |:-------------------------------|:--------:|:--------:|
        | bge-reranker-base | 59.04 | 59.04 |
        | bge-reranker-large | 60.86 | 60.86 |
        | bce-reranker-base_v1 | 61.29 | 61.29 |

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,具体请参阅:通义千问

  • 在线试用QAnything
  • 在线试用有道速读
  • ? 想只使用BCEmbedding(embedding & rerank)
  • 常见问题

2.1快速开始

必要条件

  • For Linux |System| Required item | Minimum Requirement | Note | |---------------------------|--------------------------|---------------------------|-------------------------------------------------------------------------| |Linux | Single NVIDIA GPU Memory
    or Double NVIDIA GPU Memory | >= 16GB
    >= 11GB + 5G | NVIDIA 3090 x 1 recommended
    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
    or Double NVIDIA GPU Memory | >= 16GB
    >= 11GB + 5G | NVIDIA 3090
    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 QAnything
bash run.sh  # 默认在0号GPU上启动
  • 指定单GPU启动
cd QAnything
bash run.sh 0  # 指定0号GPU启动 GPU编号从0开始 windows机器一般只有一张卡,所以只能指定0号GPU
  • 指定多GPU启动
cd QAnything
bash 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.sh
sed -i "s/^M//" scripts/run_for_local.sh
cat -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启动

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/2193.html

分享给朋友:

“QAnything本地知识库问答系统” 的相关文章

祸害阿里云宕机3小时的IO HANG究竟是什么?

本文来自微信公号“CSDN”(ID:CSDNnews),作者 | 王知无, 责编| 郭 芮。2019年3月3日凌晨,微博炸锅,有网友反映说阿里云疑似出现宕机,华北很多互联网公司受到暴击伤害,APP、网站全部瘫痪,我自己的朋友圈和微信群里也有好友反馈,刚刚从被窝被叫起来去修Bug,结果发现服务器登不上...

K8S NFS 共享存储

NFS 共享存储前面我们学习了 hostPath 与 Local PV 两种本地存储方式,但是平时我们的应用更多的是无状态服务,可能会同时发布在不同的节点上,这个时候本地存储就不适用了,往往就需要使用到共享存储了,比如最简单常用的网络共享存储 NFS,本节课我们就来介绍下如何在 Kubernetes...

别让“跑焦”毁所有!仅需这一项设置,即可显著改善镜头对焦精度

我常常会收到一些摄影爱好者的私信,也一直在努力的帮助大家解决更多摄影中常见问题。在我收到的所有问题中。有一个问题是最麻烦的,那就是“为什么我的图像看起来模糊?”。这个问题几乎每个人都遇到过,究其原因可以说是多种多样相对复杂。起初我一直认为是对焦问题所导致,也就有了我之前所写的“后按对焦”以及“对焦模...

佳能 EOS R8 深度评测

佳能 EOS R8 的定位是入门级全画幅无反光镜可换镜头相机。尽管在产品阵容中处于这一位置,R8 仍然是一个强大的相机,配备了先进的 R6 II 同款成像传感器、快速处理器和令人难以置信的自动对焦系统,体积小、重量轻、价格低。这款相机是发烧友、旅行者、家庭以及任何想要全画幅传感器相机的人的绝佳选择。...

JS数组过滤元素的方法

引言JavaScript 作为前端开发的核心技术之一,在现代 Web 开发中扮演着举足轻重的角色。随着 Web 应用越来越复杂,高效处理数据集合的需求日益凸显。本文旨在介绍 JavaScript 中数组过滤的基础知识及其在实际项目中的应用技巧。技术概述定义数组过滤是 JavaScript 提供的一种...

Excel中的FILTER函数详细介绍及使用示例

在Excel中处理大量数据时,经常需要根据特定条件筛选出符合条件的数据行或列。这正是Excel的FILTER函数发挥作用的地方。FILTER函数是Excel中一个非常强大的工具,它可以基于一个或多个条件动态地过滤数据,使数据分析和报告制作变得更加高效和准确。本文将详细介绍FILTER函数的用法,并提...