跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

QAnything 本地知识库问答系统:支持海量数据与跨语种 RAG 应用

QAnything 是一款支持任意格式文件的本地知识库问答系统,基于检索增强生成(RAG)技术。它采用两阶段检索机制(Embedding + Rerank),利用 BCEmbedding 模型实现强大的双语和跨语种语义表征能力,解决大规模数据检索退化问题。系统支持 PDF、Word、PPT 等多种文件格式,可断网部署,保障数据安全。文章介绍了其架构优势、核心模型评测、LLM 集成方式、快速安装步骤及常见问题解决方案。

CryptoLab发布于 2025/2/6更新于 2026/7/2336 浏览
QAnything 本地知识库问答系统:支持海量数据与跨语种 RAG 应用

QAnything 本地知识库问答系统:基于检索增强生成式应用(RAG)

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

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

目前已支持格式:PDF,Word(doc/docx),PPT,Markdown,Eml,TXT,图片(jpg,png 等),网页链接,更多格式,敬请期待…

特点

  • 数据安全,支持全程拔网线安装使用。
  • 支持跨语种问答,中英文问答随意切换,无所谓文件是什么语种。
  • 支持海量数据问答,两阶段向量排序,解决了大规模数据检索退化的问题,数据越多,效果越好。
  • 高性能生产级系统,可直接部署企业应用。
  • 易用性,无需繁琐的配置,一键安装部署,拿来就用。
  • 支持选择多知识库问答。

架构

QAnything System Architecture

1. 两阶段检索优势

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

Two Stage Retrieval Performance

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

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

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

基于 LlamaIndex 的 RAG 评测,表现 SOTA。

双语和跨语种优势

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

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

1.1 一阶段检索(embedding)

模型名称
Retrieval
STS
PairClassification
Classification
Reranking
Clustering
平均
bge-base-en-v1.537.1455.0675.4559.7343.0537.7447.20
bge-base-zh-v1.547.6063.7277.4063.3854.8532.5653.60
bge-large-en-v1.537.1554.0975.0059.2442.6837.3246.82
bge-large-zh-v1.547.5464.7379.1464.1955.8833.2654.21
jina-embeddings-v2-base-en31.5854.2874.8458.4241.1634.6744.29
m3e-base46.2963.9371.8464.0852.3837.8453.54
m3e-large34.8559.7467.6960.0748.9931.6246.78
bce-embedding-base_v157.6065.7374.9669.0057.2938.9559.43

1.2 二阶段检索(rerank)

模型名称Reranking平均
bge-reranker-base57.7857.78
bge-reranker-large59.6959.69
bce-reranker-base_v160.0660.06
评测结果详情

Language: en

Task Type: Reranking

ModelAskUbuntuDupQuestionsMindSmallRerankingSciDocsRRStackOverflowDupQuestionsAVG
bge-reranker-base54.7028.4867.0937.5546.96
bge-reranker-large58.7328.8471.3039.0449.48
bce-reranker-base_v156.5430.7375.7942.8851.48

Summary on en

ModelRerankingAVG
bge-reranker-base46.9646.96
bge-reranker-large49.4849.48
bce-reranker-base_v151.4851.48

Language: zh

Task Type: Reranking

ModelT2RerankingMMarcoRerankingCMedQAv1CMedQAv2AVG
bge-reranker-base67.2835.4681.2784.1067.03
bge-reranker-large67.6037.6482.1484.1867.89
bce-reranker-base_v170.2534.1379.6481.3166.33

Summary on zh

ModelRerankingAVG
bge-reranker-base67.0367.03
bge-reranker-large67.8967.89
bce-reranker-base_v166.3366.33

Language: en-zh

Task Type: Reranking

ModelT2RerankingEn2ZhMMarcoRerankingEn2ZhAVG
bge-reranker-base60.4564.4162.43
bge-reranker-large61.6467.1764.41
bce-reranker-base_v163.6367.9265.78

Summary on en-zh

ModelRerankingAVG
bge-reranker-base62.4362.43
bge-reranker-large64.4164.41
bce-reranker-base_v165.7865.78

Language: zh-en

Task Type: Reranking

ModelT2RerankingZh2EnMMarcoRerankingZh2EnAVG
bge-reranker-base63.9463.7963.87
bge-reranker-large64.1367.8966.01
bce-reranker-base_v165.3867.2366.31

Summary on zh-en

ModelRerankingAVG
bge-reranker-base63.8763.87
bge-reranker-large66.0166.01
bce-reranker-base_v166.3166.31

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

ModelReranking (12)AVG (12)
bge-reranker-base59.0459.04
bge-reranker-large60.8660.86
bce-reranker-base_v161.2961.29

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

LlamaIndex RAG Evaluation

NOTE:

  • 在 WithoutReranker 列中,我们的 bce-embedding-base_v1 模型优于所有其他 embedding 模型。
  • 在固定 embedding 模型的情况下,我们的 bce-reranker-base_v1 模型达到了最佳表现。
  • bce-embedding-base_v1 和 bce-reranker-base_v1 的组合是 SOTA。

2. LLM

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

2.1 快速开始

必要条件

For Linux

SystemRequired itemMinimum RequirementNote
LinuxSingle NVIDIA GPU Memory>= 16GBNVIDIA 3090 x 1 recommended
LinuxDouble NVIDIA GPU Memory>= 11GB + 5GNVIDIA 2080TI × 2 recommended
LinuxNVIDIA Driver Version>= 525.105.17
LinuxCUDA Version>= 12.0
LinuxDocker version>= 20.10.5
Linuxdocker compose version>= 2.23.3

For Windows 11 with WSL 2

SystemRequired itemMinimum RequirementNote
Windows 11 with WSL 2Single NVIDIA GPU Memory>= 16GBNVIDIA 3090
Windows 11 with WSL 2Double NVIDIA GPU Memory>= 11GB + 5GNVIDIA 2080TI × 2
Windows 11 with WSL 2GEFORCE EXPERIENCE>= 546.33
Windows 11 with WSL 2Docker Desktop>= 4.26.1(131620)
下载安装
  • Step 1: 下载本项目
git clone https://github.com/netease-youdao/QAnything.git
  • Step 2: 进入项目根目录执行启动脚本。如果在 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/

关闭服务

bash close.sh

3. Demo 展示

信息抽取

Information Extraction Demo

网页问答

Web QA Demo

文件大杂烩

File Mix Demo

File Mix Demo 2

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 是 milvus 和 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 下安装方法:
  • 服务启动报错: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 启动

Windows Docker Compose Config

目录

  1. QAnything 本地知识库问答系统:基于检索增强生成式应用(RAG)
  2. 特点
  3. 架构
  4. 1. 两阶段检索优势
  5. 双语和跨语种优势
  6. 1.1 一阶段检索(embedding)
  7. 1.2 二阶段检索(rerank)
  8. 评测结果详情
  9. 1.3 基于 LlamaIndex 的 RAG 评测(embedding and rerank)
  10. 2. LLM
  11. 2.1 快速开始
  12. 必要条件
  13. 下载安装
  14. 开始体验
  15. 3. Demo 展示
  16. 信息抽取
  17. 网页问答
  18. 文件大杂烩
  19. 4. 常见问题
  20. 通过命令查看脚本文件是 dos 格式还是 unix 格式,dos 格式的文件行尾为^M$ ,unix 格式的文件行尾为$:
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Python 遍历字典的 8 种常用方法
  • 基于 Higress 将 REST API 转换为 MCP Server 的配置实践
  • 移动端部署 Stable Diffusion 开源方案与使用指南
  • 大语言模型综述:核心能力与局限性分析
  • 小型无人机轻量化与成本控制方法
  • 高鋒集團合夥人黃俊瑯:以資本與生態賦能傳統企業 Web3 轉型
  • 使用 OpenClaw 与飞书搭建服务器运维机器人
  • 流处理、实时分析与 RAG 驱动的 Python ETL 框架:构建智能数据管道 (上)
  • Python 数据分析通用全流程指南
  • 常见 AI 模型与编程术语美式发音速查表
  • Python 调用高德地图 MCP 服务查询天气示例
  • 大模型落地应用:企业智能化转型的策略与实践
  • LFM2-1.2B:面向边缘设备的混合模型整理
  • GitHub 学生认证与 PyCharm 配置 Copilot 流程指南
  • 快手 AI 研发范式演进:从 Copilot 到 Agentic 的组织级重构
  • Vue 实例劫持突破 Web 编辑器粘贴限制
  • Python Tkinter 集成 DocsGPT API 实现代码编辑器
  • C++ 多态进阶:纯虚函数、抽象类与虚函数表底层原理
  • Windows 10/11 下 WSL2 + Ubuntu 20.04 安装到 D 盘全流程指南
  • 使用 OpenAI API 构建网页版 AI 聊天助手

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online