主要更改: 1. rag-python/app.py: - /api/rag-analyze 接口添加 similarity 字段 - 添加服务端控制台日志打印检索结果 2. PromptBuilder.java: - 增强角色设定,强调先共情后分析的风格 - 根据年龄自动添加关注点提示 - 根据职业自动添加相关压力源提示 - 增加参考资料长度限制 - 新增核心原则:个性化优先、具体化表达、共情式开头 - 建议分层:即时可行、短期调整、长期发展 3. comprehensive.vue: - 添加详细的浏览器控制台日志输出 - 显示检索到的知识库文件列表、相似度和内容预览 |
||
|---|---|---|
| .. | ||
| app.py | ||
| batch_index.py | ||
| config.py | ||
| document_parser.py | ||
| file_watcher.py | ||
| knowledge_service.py | ||
| README.md | ||
| requirements.txt | ||
| text_splitter.py | ||
| vector_store.py | ||
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,或手动执行:
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
2. 启动服务
双击运行 start.bat,或手动执行:
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 修改配置:
# 服务端口
PORT = 5000
# 文本分块大小
CHUNK_SIZE = 500
CHUNK_OVERLAP = 50
# 向量模型(支持中文)
EMBEDDING_MODEL = "paraphrase-multilingual-MiniLM-L12-v2"
# 检索返回数量
TOP_K = 5
与 Java 项目集成
Java 项目通过 HTTP 调用本服务的 API:
- 确保 Python 服务已启动
- Java 配置文件中设置:
rag: python: url: http://localhost:5000 enabled: true - 前端知识库管理页面会自动检测服务状态
常见问题
Q: 首次启动很慢?
A: 首次启动需要下载向量模型(约 500MB),请耐心等待。模型会缓存到用户目录。
Q: 如何更换向量模型?
A: 修改 config.py 中的 EMBEDDING_MODEL,推荐使用支持中文的模型。
Q: 索引数据在哪里?
A: 索引保存在 index_data 目录,包括 FAISS 索引和文档元数据。
Q: 如何清空知识库?
A: 删除 index_data 目录下的文件,或调用重建索引 API。
Q: 电脑重启后如何恢复?
A: 只需再次运行 start.bat,服务会自动加载已有索引。