xinli/rag-python/README.md
2025-12-20 11:57:15 +08:00

181 lines
4.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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`,服务会自动加载已有索引。