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)等格式。
一.后端启动
1.run.sh命令启动
因为显卡配置原因,没有使用Qwen-7B-QAnything
模型,而使用了MiniChat-2-3B
模型,启动命令bash ./run.sh -c local -i 0 -b hf -m MiniChat-2-3B -t minichat
。其中参数物理意义如下所示:
参数 | 解释 |
---|---|
-c | 用于指定 llm API 模式的选项,可以选择 local 或 cloud 。默认是 local 。如果设置为 -c cloud ,则需要先手动将环境变量 {OPENAI_API_KEY, OPENAI_API_BASE, OPENAI_API_MODEL_NAME, OPENAI_API_CONTEXT_LENGTH} 设置到 .env 文件中。 |
-i | 用于指定 GPU 设备 ID。 |
-b | 用于指定 LLM 推理运行时后端,选项包括 default 、hf 和 vllm 。 |
-m | 用于指定使用 FastChat serve API 加载 LLM 模型的路径,选项包括 Qwen-7B-Chat 、deepseek-llm-7b-chat 等。 |
-t | 用于指定使用 FastChat serve API 时,根据 LLM 模型的对话模板,选项包括 qwen-7b-chat 、deepseek-chat 等。 |
更加完整的QAnything服务启动命令使用,如下所示:
为了使用更多LLM,需要在/path/to/QAnything/third_party/FastChat/fastchat/conversation.py
中配置conv_template。支持使用 FastChat API 与 Huggingface Transformers/vllm 运行时后端的公共大型语言模型(LLM),如下所示:
2.启动成功日志
如果想要查看相关日志,请查看QAnything/logs/
目录下的日志文件,如下所示:
序号 | 日志文件 | 解释 |
---|---|---|
1 | debug.log | 用户请求处理日志 |
2 | sanic_api.log | 后端服务运行日志 |
3 | llm_embed_rerank_tritonserver.log(单卡部署) | LLM embedding和rerank tritonserver服务启动日志 |
4 | llm_tritonserver.log(多卡部署) | LLM tritonserver服务启动日志 |
5 | embed_rerank_tritonserver.log(多卡部署或使用openai接口) | embedding和rerank tritonserver服务启动日志 |
6 | rerank_server.log | rerank服务运行日志 |
7 | ocr_server.log | OCR服务运行日志 |
8 | npm_server.log | 前端服务运行日志 |
9 | llm_server_entrypoint.log | LLM中转服务运行日志 |
10 | fastchat_logs/*.log | FastChat服务运行日志 |
11 | qa_logs/qa.log | 问答服务运行日志 |
3.启动成功容器
容器名称 | 解释 |
---|---|
qanything-container-local | 这是一个运行 qanything 应用的容器。qanything 是一个基于深度学习的对话系统,可以处理各种对话任务。在这个容器中,qanything 应用会根据环境变量的设置,选择本地或云端的模型进行运行。 |
milvus-standalone-local | 这是一个运行 milvus 的容器。milvus 是一个开源的向量数据库,用于处理大规模的向量检索和相似性搜索。在这个容器中,milvus 以单机模式运行。 |
milvus-minio-local | 这是一个运行 minio 的容器。minio 是一个高性能的开源对象存储服务器,用于存储非结构化的数据,如图片、视频、日志文件等。在这个容器中,minio 用于存储 milvus 的数据。 |
mysql-container-local | 这是一个运行 mysql 的容器。mysql 是一个关系型数据库管理系统,用于存储结构化的数据。在这个容器中,mysql 用于存储应用的数据。 |
milvus-etcd-local | 这是一个运行 etcd 的容器。etcd 是一个开源的分布式键值存储系统,用于共享配置和服务发现。在这个容器中,etcd 用于存储 milvus 的配置信息。 |
二.前端启动
1.npm命令启动
前端启动命令分别为npm install
和npm run dev
,如下所示:
2.启动成功界面
3.新建知识库
新建知识库后,上传文件,就可以和知识库进行对话了,如下所示:
三.部署问题
1.CUDA驱动版本更新
在部署QAnything过程中遇到的最大问题是NVIDIA Driver问题,但是没在意这个问题,后面部署失败,升级后基本就成功了。
ERROR: This container was built for NVIDIA Driver Release 530.30 or later, but version 522.06 was detected and compatibility mode is UNAVAILABLE.
2.通过GeForce Experience升级驱动
通过GeForce Experience升级驱动为最新版本,如下所示:
说明:驱动升级完毕后,重启电脑,然后重新运行run.sh命令。
参考文献
[1] QAnything GitHub:https://github.com/netease-youdao/QAnything
[2] QAnything HuggingFace:https://huggingface.co/netease-youdao/QAnything
[3] Ant Design Vue:https://www.antdv.com/components/overview-cn/
[4] Node.js下载地址:https://nodejs.org/dist/v18.16.0/
[5]前端开发文档:https://github.com/ai408/QAnything/blob/master/front_end/README.md
[6] QAnything接口文档:https://github.com/netease-youdao/QAnything/blob/master/docs/API.md
[7] QAnything中文介绍:https://github.com/netease-youdao/QAnything/blob/master/README_zh.md
[8] 有道智云AI开放平台:https://ai.youdao.com/DOCSIRMA/html/aigc/api/qanything/index.html