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