MantisAI 本地私有化RAG知识库对话系统,完全本地运行不上传第三方云端。技术栈:前端HTML+JS + PHP业务接口 + Python3.11向量后端 + llama.cpp GGUF本地嵌入 + Tesseract图文OCR识别。
# Windows 拉取至D盘网站根目录
cd D:\
git clone https://gitcode.com/nick_xu_i/MantisAI mantisai
# Linux 拉取服务目录
cd /data
git clone https://gitcode.com/nick_xu_i/MantisAI mantisai
cd mantisai
# Windows查看文件
dir
# Linux查看文件
ls
cd D:\Apache24\bin
httpd.exe -k install -n "Apache24"
mkdir d:\ai-chat\logs
mkdir d:\mdpdf\logs
ServerRoot "D:/Apache24"
# 必须开启反向代理、WebSocket、重写模块
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
LoadModule headers_module modules/mod_headers.so
LoadModule php8_module "D:/php8/php8apache2_4.dll"
# PHP解析配置
PHPIniDir "D:/php8"
AddHandler application/x-httpd-php .php
DirectoryIndex index.html index.php
# 监听端口声明,必须添加
Listen 8888
Listen 8889
# 8888 主AI会话页面
<VirtualHost *:8888>
ServerName localhost-test
ServerAlias 127.0.0.8888
DocumentRoot "d:/ai-chat"
<Directory "d:/ai-chat">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
DirectoryIndex index.html
RewriteEngine On
# WebSocket反向代理适配PDF生成长连接
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule ^/ws/(.*)$ ws://127.0.0.1:8000/ws/$1 [P,L]
# API接口反向代理
ProxyPass /api http://127.0.0.1:8000/api
ProxyPassReverse /api http://127.0.0.1:8000/api
# PDF静态文件代理
ProxyPass /pdf http://127.0.0.1:8000/pdf
ProxyPassReverse /pdf http://127.0.0.1:8000/pdf
ProxyPreserveHost On
ProxyTimeout 3600
RequestHeader set X-Forwarded-Proto "http"
ErrorLog "d:/ai-chat/logs/error.log"
CustomLog "d:/ai-chat/logs/access.log" combined
</VirtualHost>
cd D:\Apache24\bin
httpd -t
net start Apache24
# 重启服务
httpd.exe -k restart -n "Apache24"sudo apt update
sudo apt install apache2
<VirtualHost *:80>
ServerName 127.0.0.1
DocumentRoot /data/mantisai
<Directory /data/mantis>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
DirectoryIndex index.html index.php
</VirtualHost>
sudo a2ensite mantis.conf
sudo systemctl restart apache2
extension=curl
extension=json
extension=fileinfo
extension=mbstring
extension=openssl
extension=pdo_sqlite
extension=gd
extension_dir = "D:/php8/ext"
upload_max_filesize = 50M
post_max_size = 100M
memory_limit = 512M
官网下载离线安装包,安装时勾选 Add Python to PATH 自动配置环境变量
python --version
# 输出 Python 3.11.x 即为正常
cd D:\mantisai
# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
venv\Scripts\activate
# 激活成功命令行前缀出现 (venv)
# 全套整合安装命令,一次性安装RAG+文档导出+PDF生成所有依赖
pip install chromadb flask flask-cors asgiref rank-bm25 sentence-transformers fpdf2 python-docx python-doc-template openpyxl xlrd python-pptx matplotlib pandas langchain langchain-community langchain-text-splitters langchain-core langchain-chroma langchain-ollama pypdf docx2txt pytesseract pillow requests fastapi uvicorn playwright -i https://pypi.tuna.tsinghua.edu.cn
# 安装PDF生成所需Chrome浏览器内核
playwright install chromium
python main.py
监听127.0.0.1:5000,CMD窗口保持后台常驻
sudo apt update
sudo apt install python3.11 python3.11-dev python3-pip python3.11-venv
sudo ln -s /usr/bin/python3.11 /usr/bin/python3
python3 --version
cd /data/mantisai
python3 -m venv venv
source venv/bin/activate
pip3 install chromadb flask flask-cors asgiref rank-bm25 sentence-transformers fpdf2 python-docx python-docx-template openpyxl xlrd python-pptx matplotlib pandas langchain langchain-community langchain-text-splitters langchain-core langchain-chroma langchain-ollama pypdf docx2txt pytesseract pillow requests -i https://pypi.tuna.tsinghua.edu.cn/simple
python3 main.py
# 安装tesseract二进制程序
conda install -c conda-forge tesseract -y
# 安装python OCR依赖
pip install pytesseract pillow
C:\Users\你的用户名\anaconda3\envs\你的虚拟环境名\Library\tessdata
# base默认环境路径
C:\Users\你的用户名\anaconda3\Library\tessdata
import os
import pytesseract
# tessdata语言包目录
os.environ['TESSDATA_PREFIX'] = r'C:\Users\你的用户名\anaconda3\Library\tessdata'
# tesseract执行程序路径
pytesseract.tesseract_cmd = r"C:\Users\你的用户名\anaconda3\Library\bin\tesseract.exe"
C:\Program Files\Tesseract-OCR
import pytesseract
pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
os.environ['TESSDATA_PREFIX'] = r'C:\Program Files\Tesseract-OCR\tessdata'
D:\llama.cpp\llama-server.exe -m Qwen3-Embedding-4B.Q4_K_M.gguf --embeddings -c 32768 --port 8082
./llama-server -m Qwen3-Embedding-4B.Q4_K_M.gguf --embeddings -c 32768 --port 8082
自定义元数据字段(姓名/部门/年份),上传文件绑定,检索可按字段过滤
全局文档标签,多维度筛选知识库内容
工单、合同、专业词汇自动扩展,提升召回准确率
支持PDF/Word/PPT/Excel导出完整对话记录
管理员新增/删除用户、配置知识库访问权限
| GGUF模型 | 上下文token | 推荐base_chunk_len | 硬件需求 |
|---|---|---|---|
| Qwen3-Embedding-4B Q4_K_M | 32768 | 2200 | 16G内存,首选 |
| bge-large-zh-v1.5 Q4 | 1024 | 900 | 10G内存 |
| bge-base-zh-v1.5 Q4 | 512 | 420 | 低配8G,易token超限 |