Project Icon

QAnything

多格式文件支持的本地知识库智能问答系统

QAnything是一款支持多种文件格式的本地知识库智能问答系统。该系统可离线安装使用,支持PDF、Word、PPT等多种文件格式,具备数据安全、跨语言问答和海量数据处理能力。通过采用两阶段检索排序技术,QAnything有效解决了大规模数据检索退化问题。系统设计注重易用性,无需复杂配置,可一键安装部署,适合企业级应用场景。

Logo

基于任何内容的问答系统

English | 简体中文 | 日本語

         

              

    

目录

🚀 重要更新

重要的事情说三遍。

2024-05-17:最新安装使用说明文档

2024-05-17:最新安装使用说明文档

2024-05-17:最新安装使用说明文档

商务联系方式:

010-82558901

什么是QAnything?

QAnything(基于任何内容的问答)是一个本地知识库问答系统,设计用于支持广泛的文件格式和数据库,允许离线安装和使用。

使用QAnything,您可以简单地放入任何本地存储的任意格式文件,并获得准确、快速和可靠的答案。

目前支持的格式包括:PDF(pdf)Word(docx)PPT(pptx)XLS(xlsx)Markdown(md)电子邮件(eml)TXT(txt)图像(jpg,jpeg,png)CSV(csv)网页链接(html),更多格式即将推出...

主要特性

  • 数据安全,支持全程拔掉网线安装使用。
  • 跨语言QA支持,可以自由切换中英文QA,不受文档语言限制。
  • 支持海量数据QA,两阶段检索排序,解决大规模数据检索退化问题;数据越多,效果越好。
  • 高性能生产级系统,可直接部署用于企业应用。
  • 用户友好,无需繁琐配置,一键安装部署,即开即用。
  • 多知识库QA 支持选择多个知识库进行问答

架构

qanything_system

为什么使用两阶段检索?

在知识库数据量大的场景下,两阶段方法的优势非常明显。如果只使用第一阶段的嵌入检索,随着数据量的增加会出现检索退化的问题,如下图绿线所示。但是经过第二阶段的重排序后,可以稳定提升准确率,数据越多,效果越好

two stage retrievaal

QAnything使用检索组件BCEmbedding,它以双语和跨语言能力著称。BCEmbedding在弥合中英文语言差距方面表现出色,实现了

第一阶段检索(嵌入)

模型检索STS对分类分类重排聚类平均
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

第二阶段检索(重排)

模型重排平均
bge-reranker-base57.7857.78
bge-reranker-large59.6959.69
bce-reranker-base_v160.0660.06

LlamaIndex中的RAG评估(嵌入和重排)

注意:

  • 无重排设置下,我们的bce-embedding-base_v1优于所有其他嵌入模型。
  • 固定嵌入模型的情况下,我们的bce-reranker-base_v1取得了最佳性能。
  • bce-embedding-base_v1bce-reranker-base_v1的组合达到了最先进水平
  • 如果您想单独使用嵌入和重排,请参考BCEmbedding

大语言模型

QAnything的开源版本基于QwenLM,并在大量专业问答数据集上进行了微调。它极大地增强了问答能力。 如果您需要将其用于商业目的,请遵循QwenLM的许可。更多详情,请参考:QwenLM

🚀 最新更新

  • 2024-05-20支持其他与OpenAI API兼容的大型模型服务,并提供优化的强大PDF解析器。 - 查看更多👉 v1.4.1
  • 2024-04-26支持网络搜索、FAQ、自定义机器人、文件可追溯性预览等。 - 查看更多👉 v1.4.0
  • 2024-04-03支持纯Python环境安装。支持混合搜索。 - 查看更多👉 v1.3.0
  • 2024-01-29支持自定义大型模型,包括OpenAI API和其他开源大型模型,最低GPU要求为GTX 1050Ti,极大改善部署、调试和用户体验。 - 查看更多👉 v1.2.0
  • 2024-01-23默认启用重排,修复Windows启动时的各种问题。 - 查看更多👉 v1.1.1
  • 2024-01-18支持一键启动,支持Windows部署,提高PDF、XLSX、HTML解析效率。 - 查看更多👉 v1.1.0

开始之前

在GitHub上为我们点星,立即获得新版本通知! star_us

开始使用

安装方法

我们提供两个版本: Python版本和Docker版本 Python版本适合快速体验新功能,而Docker版本适合二次开发和在实际生产环境中使用,暂时不支持新功能。

不同安装方法对应的功能如下:

功能Python版本Docker版本说明
详细安装文档详情详情
支持API详情详情
支持生产环境
支持离线安装(私有化部署)详情
支持多并发详情Python版本使用API而非本地大模型时,可手动设置。详情
支持多卡推理详情
支持Mac(M系列芯片)目前在Mac上运行本地LLM依赖llamacpp,问答速度较慢。建议使用OpenAI API调用模型服务。
支持LinuxPython版本在Linux下默认使用onnxruntime-gpu,glibc<2.28时自动切换为onnxruntime。
支持windows WSL
支持仅CPU详情
支持混合搜索(BM25+embedding)
支持网页搜索(需要VPN)详情Docker版本计划中。
支持FAQ详情Docker版本计划中。
支持BOT详情Docker版本计划中。
支持溯源详情Docker版本计划中。
支持通过API查询日志详情Docker版本计划中。
支持音频文件Docker版本计划中,上传文件将支持mp3和wav格式文件。
支持OpenCloudOS详情
支持与Openaiapi兼容的接口(包括ollama)详情详情需要手动设置api_key、base_url、model等参数。
PDF解析性能提升(包括表格)详情
用户自定义配置(实验性:提高速度)详情
其他文件类型解析性能提升预计15天后发布下一版本。

安装(纯Python环境)

如果您不想使用Docker进行安装,我们提供了纯Python安装指南。纯Python环境的安装仅用于演示目的,不建议在生产环境中部署。

  • 支持仅CPU安装(检索在CPU上运行,而大语言模型调用在线API)。
  • 支持在Mac上安装。

安装(Docker)

先决条件

Linux系统

系统所需项目最低要求注意
LinuxNVIDIA GPU内存>= 4GB(使用OpenAI API)最低:GTX 1050Ti(使用OpenAI API)
推荐:RTX 3090
NVIDIA驱动版本>= 525.105.17
Docker版本>= 20.10.5Docker安装
docker compose版本>= 2.23.3docker compose安装
git-lfsgit-lfs安装

Windows WSL Ubuntu子系统

系统所需项目最低要求注意
Windows WSL Ubuntu子系统NVIDIA GPU内存>= 4GB(使用OpenAI API)最低:GTX 1050Ti(使用OpenAI API)
推荐:RTX 3090
GEFORCE EXPERIENCE>= 546.33GEFORCE EXPERIENCE下载
Docker Desktop>= 4.26.1(131620)Windows版Docker Desktop
git-lfsgit-lfs安装

懒人安装步骤,请点击这里。

步骤1:拉取qanything仓库

git clone https://github.com/netease-youdao/QAnything.git

步骤2:进入项目根目录并执行启动脚本。

cd QAnything
bash run.sh  # 默认在GPU 0上启动。
(注意)如果自动下载失败,您可以从以下三个地址之一手动下载模型。

modelscope:https://modelscope.cn/models/netease-youdao/QAnything

wisemodel:https://wisemodel.cn/models/Netease_Youdao/qanything

huggingface:https://huggingface.co/netease-youdao/QAnything

(可选)指定GPU启动
cd QAnything
bash ./run.sh -c local -i 0 -b default  # gpu id 0
(可选)指定GPU启动 - 推荐Windows10/Windows11 WSL2用户使用
# 对于Windows操作系统:需要进入**WSL2**环境。
# 步骤1. 下载公开LLM模型(如Qwen-7B-QAnything)并保存到"/path/to/QAnything/assets/custom_models"
# (可选)从ModelScope下载Qwen-7B-QAnything:https://www.modelscope.cn/models/netease-youdao/Qwen-7B-QAnything
# (可选)从Huggingface下载Qwen-7B-QAnything:https://huggingface.co/netease-youdao/Qwen-7B-QAnything
cd QAnything/assets/custom_models
git clone https://huggingface.co/netease-youdao/Qwen-7B-QAnything

# 步骤2. 执行服务启动命令。这里我们使用"-b hf"来指定Huggingface transformers后端。
cd ../../
bash ./run.sh -c local -i 0 -b hf -m Qwen-7B-QAnything -t qwen-7b-qanything
(可选)指定GPU启动 - 推荐GPU计算能力 >= 8.6且VRAM >= 24GB的用户使用
# GPU计算能力:https://developer.nvidia.com/cuda-gpus
# 步骤1. 下载公开LLM模型(如Qwen-7B-QAnything)并保存到"/path/to/QAnything/assets/custom_models"
# (可选)从ModelScope下载Qwen-7B-QAnything:https://www.modelscope.cn/models/netease-youdao/Qwen-7B-QAnything
# (可选)从Huggingface下载Qwen-7B-QAnything:https://huggingface.co/netease-youdao/Qwen-7B-QAnything
cd QAnything/assets/custom_models
git clone https://huggingface.co/netease-youdao/Qwen-7B-QAnything

# 步骤2. 执行服务启动命令。这里我们使用"-b vllm"来指定vllm后端。
cd ../../
bash ./run.sh -c local -i 0 -b vllm -m Qwen-7B-QAnything -t qwen-7b-qanything -p 1 -r 0.85
(可选)指定多GPU启动
cd QAnything
bash ./run.sh -c local -i 0,1 -b default  # gpu ids:0,1,请确认有多少GPU可用。最多支持两张卡启动。

步骤3:开始体验

前端

安装成功后,您可以通过在网络浏览器中输入以下地址来体验应用。

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

API

如果您想访问API,请参考以下地址:

调试

如果您想查看相关日志,请查看QAnything/logs/debug_logs目录下的日志文件。

  • debug.log
    • 用户请求处理日志
  • sanic_api.log
    • 后端服务运行日志
  • llm_embed_rerank_tritonserver.log(单卡部署)
    • LLM嵌入和重排tritonserver服务启动日志
  • llm_tritonserver.log(多卡部署)
    • LLM tritonserver服务启动日志
  • embed_rerank_tritonserver.log(多卡部署或使用OpenAI接口)
    • 嵌入和重排tritonserver服务启动日志
  • rerank_server.log
    • 重排服务运行日志
  • ocr_server.log
    • OCR服务运行日志
  • npm_server.log
    • 前端服务运行日志
  • llm_server_entrypoint.log
    • LLM中间服务器运行日志
  • fastchat_logs/*.log
    • FastChat服务运行日志

关闭服务

如果您使用的是Windows11系统:需要进入WSL环境。

bash close.sh

离线安装

如果您想离线安装QAnything,可以使用以下命令启动服务。

Windows离线安装

# 在有网络的机器上下载docker镜像
docker pull quay.io/coreos/etcd:v3.5.5
docker pull minio/minio:RELEASE.2023-03-20T20-16-18Z
docker pull milvusdb/milvus:v2.3.4
docker pull mysql:latest
docker pull freeren/qanything-win:v1.2.x  # 从[https://github.com/netease-youdao/QAnything/blob/master/docker-compose-windows.yaml#L103]获取最新版本号。

# 打包镜像
docker save quay.io/coreos/etcd:v3.5.5 minio/minio:RELEASE.2023-03-20T20-16-18Z milvusdb/milvus:v2.3.4 mysql:latest freeren/qanything-win:v1.2.1 -o qanything_offline.tar

# 下载QAnything代码
wget https://github.com/netease-youdao/QAnything/archive/refs/heads/master.zip

# 将镜像qanything_offline.tar和代码QAnything-master.zip复制到离线机器
cp QAnything-master.zip qanything_offline.tar /path/to/your/offline/machine

# 在离线机器上加载镜像
docker load -i qanything_offline.tar

# 解压代码并运行
unzip QAnything-master.zip
cd QAnything-master
bash run.sh

Linux离线安装

# 在有网络的机器上下载docker镜像
docker pull quay.io/coreos/etcd:v3.5.5
docker pull minio/minio:RELEASE.2023-03-20T20-16-18Z
docker pull milvusdb/milvus:v2.3.4
docker pull mysql:latest
docker pull freeren/qanything:v1.2.x  # 从[https://github.com/netease-youdao/qanything/blob/master/docker-compose-linux.yaml#L104]获取最新版本号。

# 打包镜像
docker save quay.io/coreos/etcd:v3.5.5 minio/minio:RELEASE.2023-03-20T20-16-18Z milvusdb/milvus:v2.3.4 mysql:latest freeren/qanything:v1.2.1 -o qanything_offline.tar

# 下载QAnything代码
wget https://github.com/netease-youdao/QAnything/archive/refs/heads/master.zip

# 将镜像qanything_offline.tar和代码QAnything-master.zip复制到离线机器
cp QAnything-master.zip qanything_offline.tar /path/to/your/offline/machine

# 在离线机器上加载镜像
docker load -i qanything_offline.tar

# 解压代码并运行
unzip QAnything-master.zip
cd QAnything-master
bash run.sh

常见问题

常见问题

使用示例

跨语言:多篇英文论文问答

信息提取

各种文件

网页问答

API文档

如果您需要访问API,请参考QAnything API文档

贡献

我们感谢您对为我们的项目做出贡献的兴趣。无论您是修复错误、改进现有功能,还是添加全新的内容,我们都欢迎您的贡献!

感谢所有贡献者的努力

🛣️ 路线图和反馈

🔎 要了解QAnything的未来计划和进展,请查看:QAnything路线图

🤬要向QAnything提供反馈,请查看:QAnything反馈

社区和支持

Discord

欢迎加入QAnything的Discord社区

微信

欢迎关注QAnything微信公众号,获取最新信息。

欢迎扫码加入QAnything讨论群。

电子邮件

如果您需要私下联系我们的团队,请通过以下电子邮件与我们联系:

qanything@rd.netease.com

GitHub问题和讨论

通过以下方式与维护者联系:

Logo

Star历史

Star历史图表

许可证

QAnything采用Apache 2.0许可证

致谢

QAnything采用了以下项目的依赖:

  • 感谢我们的BCEmbedding提供优秀的嵌入和重排序模型。
  • 感谢Qwen提供强大的基础语言模型。
  • 感谢Triton Inference Server提供出色的开源推理服务。
  • 感谢FastChat提供完全兼容OpenAI的API服务器。
  • 感谢FasterTransformervllm提供高度优化的LLM推理后端。
  • 感谢Langchain提供出色的LLM应用框架。
  • 感谢Langchain-Chatchat为本地知识库问答提供的灵感。
  • 感谢Milvus提供优秀的语义搜索库。
  • 感谢PaddleOCR提供易用的OCR库。
  • 感谢Sanic提供强大的Web服务框架。
  • 感谢RAGFlow为文档解析提供一些想法。
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号