目录
🚀 重要更新
重要的事情说三遍。
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使用检索组件BCEmbedding,它以双语和跨语言能力著称。BCEmbedding在弥合中英文语言差距方面表现出色,实现了
- 在MTEB语义表示评估中的高性能;
- 在LlamaIndex的RAG评估领域树立了新的基准。
第一阶段检索(嵌入)
模型 | 检索 | STS | 对分类 | 分类 | 重排 | 聚类 | 平均 |
---|---|---|---|---|---|---|---|
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 |
- 更多评估详情请查看嵌入模型评估总结。
第二阶段检索(重排)
模型 | 重排 | 平均 |
---|---|---|
bge-reranker-base | 57.78 | 57.78 |
bge-reranker-large | 59.69 | 59.69 |
bce-reranker-base_v1 | 60.06 | 60.06 |
- 更多评估详情请查看重排模型评估总结
LlamaIndex中的RAG评估(嵌入和重排)
注意:
- 在
无重排
设置下,我们的bce-embedding-base_v1
优于所有其他嵌入模型。 - 固定嵌入模型的情况下,我们的
bce-reranker-base_v1
取得了最佳性能。 bce-embedding-base_v1
和bce-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上为我们点星,立即获得新版本通知!
开始使用
安装方法
我们提供两个版本: Python版本和Docker版本 Python版本适合快速体验新功能,而Docker版本适合二次开发和在实际生产环境中使用,暂时不支持新功能。
不同安装方法对应的功能如下:
功能 | Python版本 | Docker版本 | 说明 |
---|---|---|---|
详细安装文档 | ✅ 详情 | ✅ 详情 | |
支持API | ✅ 详情 | ✅ 详情 | |
支持生产环境 | ❌ | ✅ | |
支持离线安装(私有化部署) | ❌ | ✅ 详情 | |
支持多并发 | ❌ | ✅ 详情 | Python版本使用API而非本地大模型时,可手动设置。详情 |
支持多卡推理 | ❌ | ✅ 详情 | |
支持Mac(M系列芯片) | ✅ | ❌ | 目前在Mac上运行本地LLM依赖llamacpp,问答速度较慢。建议使用OpenAI API调用模型服务。 |
支持Linux | ✅ | ✅ | Python版本在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系统
系统 | 所需项目 | 最低要求 | 注意 |
---|---|---|---|
Linux | NVIDIA GPU内存 | >= 4GB(使用OpenAI API) | 最低:GTX 1050Ti(使用OpenAI API) 推荐:RTX 3090 |
NVIDIA驱动版本 | >= 525.105.17 | ||
Docker版本 | >= 20.10.5 | Docker安装 | |
docker compose版本 | >= 2.23.3 | docker compose安装 | |
git-lfs | git-lfs安装 |
Windows WSL Ubuntu子系统
系统 | 所需项目 | 最低要求 | 注意 |
---|---|---|---|
Windows WSL Ubuntu子系统 | NVIDIA GPU内存 | >= 4GB(使用OpenAI API) | 最低:GTX 1050Ti(使用OpenAI API) 推荐:RTX 3090 |
GEFORCE EXPERIENCE | >= 546.33 | GEFORCE EXPERIENCE下载 | |
Docker Desktop | >= 4.26.1(131620) | Windows版Docker Desktop | |
git-lfs | git-lfs安装 |
懒人安装步骤,请点击这里。
步骤1:拉取qanything仓库
git clone https://github.com/netease-youdao/QAnything.git
步骤2:进入项目根目录并执行启动脚本。
- 📖 QAnything启动使用说明
- 通过
bash ./run.sh -h
获取LLM接口的详细使用说明
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,请参考以下地址:
- API地址:http://
your_host
:8777/api/ - 详细的API文档,请参考QAnything 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讨论群。
电子邮件
如果您需要私下联系我们的团队,请通过以下电子邮件与我们联系:
GitHub问题和讨论
通过以下方式与维护者联系:
- GitHub问题
- GitHub讨论
- 此GitHub个人资料上列出的联系方式
Star历史
许可证
QAnything
采用Apache 2.0许可证
致谢
QAnything
采用了以下项目的依赖:
- 感谢我们的BCEmbedding提供优秀的嵌入和重排序模型。
- 感谢Qwen提供强大的基础语言模型。
- 感谢Triton Inference Server提供出色的开源推理服务。
- 感谢FastChat提供完全兼容OpenAI的API服务器。
- 感谢FasterTransformer和vllm提供高度优化的LLM推理后端。
- 感谢Langchain提供出色的LLM应用框架。
- 感谢Langchain-Chatchat为本地知识库问答提供的灵感。
- 感谢Milvus提供优秀的语义搜索库。
- 感谢PaddleOCR提供易用的OCR库。
- 感谢Sanic提供强大的Web服务框架。
- 感谢RAGFlow为文档解析提供一些想法。