xinli/rag-python/README.md

181 lines
4.2 KiB
Markdown
Raw Normal View History

# RAG 知识库服务 (rag-python)
独立的 Python 知识库服务,提供文档解析、向量化和检索功能。
## 部署说明
此文件夹可以与 Java jar 包放在同级目录使用:
```
部署目录/
├── xinli-admin.jar # Java 后端 jar 包
├── rag-python/ # Python RAG 服务
│ ├── app.py
│ ├── start.bat # 启动脚本
│ ├── install.bat # 安装脚本
│ ├── knowledge_docs/ # 知识库文档(放入文档)
│ ├── index_data/ # 索引数据(自动生成)
│ └── ...
└── ...
```
## 快速开始
### 1. 安装依赖
双击运行 `install.bat`,或手动执行:
```bash
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
```
### 2. 启动服务
双击运行 `start.bat`,或手动执行:
```bash
venv\Scripts\activate
python app.py
```
服务启动后访问: http://localhost:5000
### 3. 添加文档
有两种方式添加文档到知识库:
**方式一:直接放入文件夹**
- 将文档文件放入 `knowledge_docs` 文件夹
- 服务会自动检测并索引新文件
**方式二:通过 API 上传**
- 使用前端页面上传
- 或调用 `/api/documents/upload` 接口
## 功能特点
- 🔄 **自动索引**: 启动时自动扫描 `knowledge_docs` 文件夹并索引所有文档
- 📁 **文件监控**: 实时监控文件夹变化,自动处理新增/修改/删除的文件
- 🔍 **语义搜索**: 使用多语言向量模型,支持中文语义检索
- 📄 **多格式支持**: 支持 txt、md、pdf、docx 格式
- 💾 **持久化存储**: 索引数据保存到磁盘,重启后自动加载
- 🌐 **REST API**: 提供完整的 HTTP API方便集成
## API 接口
### 健康检查
```
GET /api/health
```
### 文档管理
```
# 获取文档列表
GET /api/documents
# 上传文档
POST /api/documents/upload
Content-Type: multipart/form-data
file: <文件>
# 删除文档
DELETE /api/documents/<filename>
```
### 搜索
```
POST /api/search
Content-Type: application/json
{
"query": "搜索内容",
"top_k": 5
}
```
### 索引管理
```
# 获取统计信息
GET /api/stats
# 扫描文件夹(索引新文件)
POST /api/scan
# 重建索引
POST /api/rebuild
```
## 目录结构
```
rag-python/
├── app.py # Flask 应用入口
├── config.py # 配置文件
├── document_parser.py # 文档解析器
├── text_splitter.py # 文本分块器
├── vector_store.py # 向量存储FAISS
├── knowledge_service.py # 知识库服务
├── file_watcher.py # 文件监控
├── requirements.txt # Python 依赖
├── install.bat # 安装脚本
├── start.bat # 启动脚本
├── knowledge_docs/ # 知识库文档目录(放入文档)
├── index_data/ # 索引数据目录(自动生成)
└── uploads/ # 上传临时目录(自动生成)
```
## 配置说明
编辑 `config.py` 修改配置:
```python
# 服务端口
PORT = 5000
# 文本分块大小
CHUNK_SIZE = 500
CHUNK_OVERLAP = 50
# 向量模型(支持中文)
EMBEDDING_MODEL = "paraphrase-multilingual-MiniLM-L12-v2"
# 检索返回数量
TOP_K = 5
```
## 与 Java 项目集成
Java 项目通过 HTTP 调用本服务的 API
1. 确保 Python 服务已启动
2. Java 配置文件中设置:
```yaml
rag:
python:
url: http://localhost:5000
enabled: true
```
3. 前端知识库管理页面会自动检测服务状态
## 常见问题
### Q: 首次启动很慢?
A: 首次启动需要下载向量模型(约 500MB请耐心等待。模型会缓存到用户目录。
### Q: 如何更换向量模型?
A: 修改 `config.py` 中的 `EMBEDDING_MODEL`,推荐使用支持中文的模型。
### Q: 索引数据在哪里?
A: 索引保存在 `index_data` 目录,包括 FAISS 索引和文档元数据。
### Q: 如何清空知识库?
A: 删除 `index_data` 目录下的文件,或调用重建索引 API。
### Q: 电脑重启后如何恢复?
A: 只需再次运行 `start.bat`,服务会自动加载已有索引。