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

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS AI 助手,专业版
简介: 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有非常强悍的双语和跨语种能力,能消除语义检索里面的中英语言之间的差异,
从而实现:

  • 强大的双语和跨语种语义表征能力【基于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 |

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

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可用,最多支持两张卡启动

开始体验

  • 前端页面

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

  • 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
      • 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-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启动

更多内容请关注:

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

相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
相关文章
|
11月前
|
人工智能 自然语言处理 知识图谱
Yuxi-Know:开源智能问答系统,基于大模型RAG与知识图谱技术快速构建知识库
Yuxi-Know是一个结合大模型RAG知识库与知识图谱技术的智能问答平台,支持多格式文档处理和复杂知识关系查询,具备多模型适配和智能体拓展能力。
3066 55
Yuxi-Know:开源智能问答系统,基于大模型RAG与知识图谱技术快速构建知识库
|
11月前
|
存储 人工智能 自然语言处理
RAG 实战|用 StarRocks + DeepSeek 构建智能问答与企业知识库
本文由镜舟科技解决方案架构师石强与StarRocks TSC Member赵恒联合撰写,围绕RAG(检索增强生成)技术展开,结合DeepSeek和StarRocks构建智能问答系统。RAG通过外部知识检索与AI生成相结合,解决大模型知识静态、易编造信息的问题。文章详细介绍了系统组成、操作流程及优化方法,包括DeepSeek部署、StarRocks向量索引配置、知识存储与提取等环节,并通过代码示例演示了从文本向量化到生成回答的完整过程。最后,加入RAG机制后,系统性能显著提升,支持企业级知识库与智能客服场景。文中还提供了Web可视化界面实现方案,助力开发者快速上手。
|
9月前
|
存储 缓存 API
从零构建企业知识库问答系统(基于通义灵码+RAG+阿里云OSS的落地实践)
本系统基于RAG技术,结合语义检索与大语言模型,解决企业知识管理中的信息孤岛、检索低效和知识流失问题。采用通义灵码、Milvus与阿里云OSS,实现知识查询效率提升、新员工培训周期缩短及专家咨询减少。支持多模态文档处理,具备高可用架构与成本优化方案,助力企业智能化升级。
1313 3
|
9月前
|
数据采集 存储 人工智能
智能体(AI Agent)开发实战之【LangChain】(二)结合大模型基于RAG实现本地知识库问答
智能体(AI Agent)开发实战之【LangChain】(二)结合大模型基于RAG实现本地知识库问答
|
9月前
|
人工智能 自然语言处理 JavaScript
【开源项目】MaxKB4J基于java开发的工作流和 RAG智能体的知识库问答系统
MaxKB4J是一款基于Java开发的开源LLM工作流应用与RAG知识库问答系统,结合MaxKB和FastGPT优势,支持智能客服、企业知识库等场景。它开箱即用,可直接上传/爬取文档,支持多种大模型(如Qwen、通义千问等),具备灵活的工作流编排能力,并无缝嵌入第三方系统。技术栈包括Vue.js、Springboot3、PostgreSQL等,提供稳定高效的智能问答解决方案。访问地址:`http://localhost:8080/ui/login`,项目详情见[Gitee](https://gitee.com/taisan/MaxKB4j)。
|
人工智能 自然语言处理 前端开发
【AI落地应用实战】大模型加速器2.0:基于 ChatDoc + TextIn ParseX+ACGE的RAG知识库问答系统
本文探讨了私有知识库问答系统的难点及解决方案,重点分析了企业知识管理中的痛点,如信息孤岛、知识传承依赖个人经验等问题。同时,介绍了IntFinQ这款知识管理工具的核心特点和实践体验,包括智能问答、深度概括与多维数据分析等功能。文章还详细描述了IntFinQ的本地化部署过程,展示了其从文档解析到知识应用的完整技术闭环,特别是自研TextIn ParseX引擎和ACGE模型的优势。最后总结了该工具对企业和开发者的价值,强调其在提升知识管理效率方面的潜力。
|
11月前
|
人工智能 数据可视化 关系型数据库
23.5K star!零代码构建AI知识库,这个开源神器让问答系统开发像搭积木一样简单!
FastGPT 是一个基于大语言模型的智能知识库平台,提供开箱即用的数据处理、RAG检索和可视化AI工作流编排能力,让你无需编写代码就能轻松构建复杂的问答系统!
792 1
|
人工智能 机器人 API
阿里云百炼xWaytoAGI共学课 DAY2 - 更好用的文本知识库应用跟学,快速上手阿里云百炼
本课程是阿里云百炼平台的第二天课程内容,旨在帮助用户了解如何通过阿里云百炼构建和发布自己的AI应用。介绍了如何利用大模型和智能体应用来创建具备强大语言理解和生成能力的AI助手,并通过不同的渠道(如网站、钉钉、微信公众号等)发布这些应用。
2185 8