Skip to content

Latest commit

 

History

History
476 lines (365 loc) · 28.7 KB

README_zh.md

File metadata and controls

476 lines (365 loc) · 28.7 KB
Logo

Question and Answer based on Anything

English | 简体中文

         

              

目 录

🚀 重要更新

重要的事情说三遍!

商务问题联系方式:

010-82558901

什么是QAnything?

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

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

目前已支持格式: PDF(pdf)Word(docx)PPT(pptx)XLS(xlsx)Markdown(md)电子邮件(eml)TXT(txt)图片(jpg,jpeg,png)CSV(csv)网页链接(html),更多格式,敬请期待...

特点

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

架构

qanything_system

为什么是两阶段检索?

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

two stage retrievaal

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

一阶段检索(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

二阶段检索(rerank)

模型名称 Reranking 平均
bge-reranker-base 57.78 57.78
bge-reranker-large 59.69 59.69
bce-reranker-base_v1 60.06 60.06

基于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

LLM

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

🚀 最近更新

  • 2024-05-20: 支持与OpenAI API兼容的其他LLM服务,并提供优化后的PDF解析器。 - 详见👉 v1.4.1
  • 2024-04-26: 支持联网检索、FAQ、自定义BOT、文件溯源等。 - 详见👉 v1.4.0
  • 2024-04-03: 支持在纯Python环境中安装;支持混合检索。 - 详见👉 v1.3.0
  • 2024-01-29: 支持自定义大模型,包括OpenAI API和其他开源大模型,GPU需求最低降至GTX 1050Ti,极大提升部署,调试等方面的用户体验 - 详见👉 v1.2.0
  • 2024-01-23: 默认开启rerank,修复在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的方式调用模型服务
支持Linux python版本Linux下默认使用onnxruntime-gpu,glibc<2.28时自动切换为onnxruntime
支持windows WSL
支持纯CPU环境 详情
支持混合检索(BM25+embedding)
支持联网检索(需外网VPN) 详情 docker版本计划中
支持FAQ问答 详情 docker版本计划中
支持自定义机器人(可绑定知识库,可分享) 详情 docker版本计划中
支持文件溯源(数据来源可直接点击打开) 详情 docker版本计划中
支持问答日志检索(暂只支持通过API调用) 详情 docker版本计划中
支持解析语音文件(依赖faster_whisper,解析速度慢) docker版本计划中,上传文件时可支持mp3,wav格式文件
支持OpenCloudOS 详情
支持与OpenAI接口兼容的其他开源大模型服务(包括ollama) 详情 详情 需手动修改api_key,base_url,model等参数
pdf(包含表格)解析效果+++ 详情:需手动开启
用户自定义配置(实验性:提升速度) 详情:需手动开启
其他文件类型解析效果+++ 预计下个版本发布(15d)

纯python环境安装

不想用docker环境安装的,我们提供了纯Python版本安装教程,纯python环境的安装仅作为demo体验,不建议生产环境部署。

  • 支持纯CPU安装运行(检索部分跑在CPU上,大模型调用在线API)
  • 支持Mac安装运行

docker环境安装

必要条件

For Linux

System Required item Minimum Requirement Note
Linux NVIDIA GPU Memory >= 4GB (use OpenAI API) 最低: GTX 1050Ti(use OpenAI API)
推荐: RTX 3090
NVIDIA Driver Version >= 525.105.17
Docker version >= 20.10.5 Docker install
docker compose version >= 2.23.3 docker compose install
git-lfs git-lfs install

For Windows with WSL Ubuntu子系统

System Required item Minimum Requirement Note
Windows with WSL Ubuntu子系统 NVIDIA GPU Memory >= 4GB (use OpenAI API) 最低: GTX 1050Ti(use OpenAI API)
推荐: RTX 3090
GEFORCE EXPERIENCE >= 546.33 GEFORCE EXPERIENCE download
Docker Desktop >= 4.26.1(131620) Docker Desktop for Windows
git-lfs git-lfs install

step1: 下载本项目

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

step2: 进入项目根目录执行启动脚本

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

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

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

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

(可选)指定单GPU启动
cd QAnything
bash ./run.sh -c local -i 0 -b default # 指定0号GPU启动 GPU编号从0开始 windows机器一般只有一张卡,所以只能指定0号GPU
(可选)指定单GPU启动 - 推荐 Windows10/Windows11 WSL2 用户使用此方式运行 QAnything
# 注意: Windows系统请先进入**WSL2**环境
# Step 1. 下载开源 LLM 模型 (e.g., 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

# Step 2. 执行启动命令,其中"-b hf"表示指定使用 Huggingface transformers 后端运行 LLM.
cd ../../
bash ./run.sh -c local -i 0 -b hf -m Qwen-7B-QAnything -t qwen-7b-qanything
(可选)指定单GPU启动 - 推荐 GPU Compute Capability >= 8.6 && VRAM >= 24GB 使用此方式运行 QAnything
# 查看 GPU 算力 GPU Compute Capability: https://developer.nvidia.com/cuda-gpus
# Step 1. 下载开源 LLM 模型 (e.g., 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

# Step 2. 执行启动命令,其中"-b vllm"表示指定使用 vllm 后端运行 LLM.
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  # 指定0,1号GPU启动,请确认有多张GPU可用,最多支持两张卡启动

step3: 开始体验

前端页面

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

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

API

如果想要访问API接口,请参考下面的地址:

  • API address: http://your_host:8777/api/
  • For detailed API documentation, please refer to QAnything API 文档

DEBUG

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

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

关闭服务

bash close.sh

断网安装

windows断网安装

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

# 先在联网机器上下载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断网安装

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

# 先在联网机器上下载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

常见问题

常见问题

使用

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

multi_paper_qa.mp4

信息抽取

information_extraction.mp4

文件大杂烩

various_files_qa.mp4

网页问答

web_qa.mp4

接入API

如果需要接入API,请参阅QAnything API 文档

贡献代码

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

感谢以下所有贡献者

🛣️ 路线图 & 反馈

🔎 想了解QAnything的未来规划和进展,请看这里: QAnything Roadmap

🤬 想要给QAnything提交反馈,请看这里(可以给每个功能需求投票哦): QAnything Feedbak

交流 & 支持

Discord

欢迎加入QAnything Discord 社区!

微信

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

欢迎扫码进入QAnything交流群

邮箱

如果你需要私信我们团队,请通过下面的邮箱联系我们:

[email protected]

GitHub issues & discussions

有任何公开的问题,欢迎提交issues,或者在discussions区讨论

Logo

Star History

Star History Chart

协议

QAnything 依照 Apache 2.0 协议开源。

Acknowledgements