372 lines
7.3 KiB
Markdown
372 lines
7.3 KiB
Markdown
|
|
# RAG知识库系统 - 完整配置总结
|
|||
|
|
|
|||
|
|
## ✅ 已完成的配置
|
|||
|
|
|
|||
|
|
### 1. 系统架构
|
|||
|
|
|
|||
|
|
**混合模式(Hybrid Mode)**:
|
|||
|
|
- 📥 文档嵌入:本地Ollama (`nomic-embed-text`)
|
|||
|
|
- 🤖 AI生成:远程Kimi API (`moonshot-v1-32k`)
|
|||
|
|
- 💾 向量存储:SimpleVectorStore(文件持久化)
|
|||
|
|
|
|||
|
|
### 2. 配置文件
|
|||
|
|
|
|||
|
|
**application.yml**:
|
|||
|
|
```yaml
|
|||
|
|
rag:
|
|||
|
|
mode: hybrid # 混合模式
|
|||
|
|
|
|||
|
|
openai:
|
|||
|
|
base-url: https://api.moonshot.cn/v1
|
|||
|
|
api-key: sk-U9fdriPxwBcrpWW0Ite3N0eVtX7VxnqqqYUIBAdWd1hgEA9m
|
|||
|
|
generate-model: moonshot-v1-32k
|
|||
|
|
|
|||
|
|
ollama:
|
|||
|
|
url: http://localhost:11434
|
|||
|
|
embed-model: nomic-embed-text
|
|||
|
|
|
|||
|
|
storage:
|
|||
|
|
upload-path: D:/wwwroot/RAG/uploads
|
|||
|
|
log-path: D:/wwwroot/RAG/logs
|
|||
|
|
chroma-data-path: D:/wwwroot/RAG/data/chroma_db
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 目录结构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
D:\wwwroot\RAG\
|
|||
|
|
├── uploads\ # 文档上传目录
|
|||
|
|
├── logs\ # 系统日志
|
|||
|
|
└── data\
|
|||
|
|
└── chroma_db\
|
|||
|
|
└── vector_store.json # 向量数据持久化文件
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. 后端功能
|
|||
|
|
|
|||
|
|
**控制器**:`PsyKnowledgeController.java`
|
|||
|
|
- ✅ 文档上传(自动处理)
|
|||
|
|
- ✅ 文档列表查询
|
|||
|
|
- ✅ 文档详情查看
|
|||
|
|
- ✅ 文档删除
|
|||
|
|
- ✅ 文档搜索
|
|||
|
|
- ✅ 重建索引
|
|||
|
|
- ✅ 获取统计信息
|
|||
|
|
- ✅ 清空知识库
|
|||
|
|
|
|||
|
|
**服务层**:`KnowledgeService.java`
|
|||
|
|
- ✅ 自动解析文档
|
|||
|
|
- ✅ 自动分块处理
|
|||
|
|
- ✅ 自动生成向量
|
|||
|
|
- ✅ 自动存储到向量库
|
|||
|
|
- ✅ 文档索引管理
|
|||
|
|
|
|||
|
|
**向量存储**:`SimpleVectorStore.java`
|
|||
|
|
- ✅ 内存存储
|
|||
|
|
- ✅ 文件持久化
|
|||
|
|
- ✅ 自动加载/保存
|
|||
|
|
- ✅ 余弦相似度检索
|
|||
|
|
|
|||
|
|
### 5. 前端页面
|
|||
|
|
|
|||
|
|
**知识库管理**:`xinli-ui/src/views/psychology/knowledge/index.vue`
|
|||
|
|
- ✅ 统计卡片(文档数、片段数、服务状态)
|
|||
|
|
- ✅ 文档上传(拖拽上传、分类选择)
|
|||
|
|
- ✅ 文档列表(分页、查看、删除)
|
|||
|
|
- ✅ 重建索引
|
|||
|
|
- ✅ 清空知识库
|
|||
|
|
|
|||
|
|
## 🚀 使用流程
|
|||
|
|
|
|||
|
|
### 方式1:Web界面上传(推荐)
|
|||
|
|
|
|||
|
|
1. 登录系统
|
|||
|
|
2. 进入"知识库管理"页面
|
|||
|
|
3. 点击"上传文档"
|
|||
|
|
4. 选择分类和文件
|
|||
|
|
5. 点击确定
|
|||
|
|
6. **系统自动处理**:
|
|||
|
|
```
|
|||
|
|
上传 → 保存 → 解析 → 分块 → 向量化 → 存储 → 完成
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 方式2:批量处理
|
|||
|
|
|
|||
|
|
1. 将文档放入 `D:\wwwroot\RAG\uploads\`
|
|||
|
|
2. 运行 `处理上传文件.bat`
|
|||
|
|
3. 或在Web界面点击"重建索引"
|
|||
|
|
|
|||
|
|
### 方式3:API调用
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 上传文档
|
|||
|
|
POST /psychology/knowledge/upload
|
|||
|
|
Content-Type: multipart/form-data
|
|||
|
|
file: [文件]
|
|||
|
|
category: assessment
|
|||
|
|
|
|||
|
|
# 重建索引
|
|||
|
|
POST /psychology/knowledge/rebuild
|
|||
|
|
|
|||
|
|
# 查看状态
|
|||
|
|
GET /psychology/knowledge/statistics
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📊 系统容量
|
|||
|
|
|
|||
|
|
**推荐配置**:
|
|||
|
|
- 文档数量:50-200个
|
|||
|
|
- 文档片段:1000-5000个
|
|||
|
|
- 内存占用:10-50MB
|
|||
|
|
- 查询速度:50-200ms
|
|||
|
|
|
|||
|
|
**适用场景**:
|
|||
|
|
- ✅ 心理测评标准文档
|
|||
|
|
- ✅ 心理学理论知识
|
|||
|
|
- ✅ 案例分析文档
|
|||
|
|
- ✅ 干预建议文档
|
|||
|
|
|
|||
|
|
## 🔧 维护操作
|
|||
|
|
|
|||
|
|
### 检查状态
|
|||
|
|
|
|||
|
|
**使用脚本**:
|
|||
|
|
```bash
|
|||
|
|
检查知识库状态.bat
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**使用API**:
|
|||
|
|
```bash
|
|||
|
|
curl http://localhost:30081/api/knowledge/statistics
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**查看文件**:
|
|||
|
|
```
|
|||
|
|
D:\wwwroot\RAG\data\chroma_db\vector_store.json
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 备份数据
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 备份向量数据
|
|||
|
|
copy D:\wwwroot\RAG\data\chroma_db\vector_store.json backup\
|
|||
|
|
|
|||
|
|
# 备份文档
|
|||
|
|
xcopy D:\wwwroot\RAG\uploads backup\uploads\ /E /I
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 清空知识库
|
|||
|
|
|
|||
|
|
**Web界面**:点击"清空知识库"按钮
|
|||
|
|
|
|||
|
|
**API调用**:
|
|||
|
|
```bash
|
|||
|
|
curl -X DELETE http://localhost:30081/api/knowledge/clear
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🎯 AI分析使用
|
|||
|
|
|
|||
|
|
### 在测评报告中使用
|
|||
|
|
|
|||
|
|
1. 进入"测评报告"页面
|
|||
|
|
2. 选择一个报告
|
|||
|
|
3. 点击"AI分析"按钮
|
|||
|
|
4. 系统流程:
|
|||
|
|
```
|
|||
|
|
分析测评结果
|
|||
|
|
↓
|
|||
|
|
从知识库检索相关知识(Ollama嵌入)
|
|||
|
|
↓
|
|||
|
|
构建提示词(包含检索到的知识)
|
|||
|
|
↓
|
|||
|
|
调用Kimi API生成分析
|
|||
|
|
↓
|
|||
|
|
显示分析结果和知识来源
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 分析质量优化
|
|||
|
|
|
|||
|
|
**提高质量的方法**:
|
|||
|
|
1. 上传高质量、专业的文档
|
|||
|
|
2. 确保文档内容与测评相关
|
|||
|
|
3. 文档结构清晰、分段明确
|
|||
|
|
4. 定期更新知识库内容
|
|||
|
|
5. 删除无效或过时的文档
|
|||
|
|
|
|||
|
|
## 📝 支持的文档格式
|
|||
|
|
|
|||
|
|
- `.txt` - 纯文本文件
|
|||
|
|
- `.pdf` - PDF文档
|
|||
|
|
- `.docx` - Word文档
|
|||
|
|
- `.md` - Markdown文档
|
|||
|
|
|
|||
|
|
**文件限制**:
|
|||
|
|
- 单个文件最大 10MB
|
|||
|
|
- 建议文档内容清晰、结构化
|
|||
|
|
|
|||
|
|
## 🔍 工作原理
|
|||
|
|
|
|||
|
|
### 文档处理流程
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
1. 上传文档
|
|||
|
|
↓
|
|||
|
|
2. 保存到 D:/wwwroot/RAG/uploads
|
|||
|
|
↓
|
|||
|
|
3. 解析文档内容(DocumentParser)
|
|||
|
|
↓
|
|||
|
|
4. 文本分块(TextSplitter)
|
|||
|
|
- 块大小:800字符
|
|||
|
|
- 重叠:200字符
|
|||
|
|
↓
|
|||
|
|
5. 生成向量(Ollama)
|
|||
|
|
- 模型:nomic-embed-text
|
|||
|
|
- 维度:768维
|
|||
|
|
↓
|
|||
|
|
6. 存储到SimpleVectorStore
|
|||
|
|
- 内存存储
|
|||
|
|
- 自动保存到 vector_store.json
|
|||
|
|
↓
|
|||
|
|
7. 完成!可立即使用
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### AI分析流程
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
1. 用户请求AI分析
|
|||
|
|
↓
|
|||
|
|
2. 提取测评结果关键信息
|
|||
|
|
↓
|
|||
|
|
3. 生成查询向量(Ollama)
|
|||
|
|
↓
|
|||
|
|
4. 检索相关知识片段(Top-5)
|
|||
|
|
- 使用余弦相似度
|
|||
|
|
- 相似度阈值:0.7
|
|||
|
|
↓
|
|||
|
|
5. 构建提示词
|
|||
|
|
- 系统角色:心理咨询专家
|
|||
|
|
- 测评结果
|
|||
|
|
- 检索到的知识
|
|||
|
|
↓
|
|||
|
|
6. 调用Kimi API生成分析
|
|||
|
|
- 模型:moonshot-v1-32k
|
|||
|
|
- 上下文:32k tokens
|
|||
|
|
↓
|
|||
|
|
7. 返回分析结果和知识来源
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 💰 成本说明
|
|||
|
|
|
|||
|
|
**免费部分**:
|
|||
|
|
- ✅ 文档处理(本地Ollama)
|
|||
|
|
- ✅ 向量生成(本地Ollama)
|
|||
|
|
- ✅ 知识检索(本地SimpleVectorStore)
|
|||
|
|
- ✅ 数据存储(本地文件)
|
|||
|
|
|
|||
|
|
**付费部分**:
|
|||
|
|
- 💰 AI报告生成(Kimi API)
|
|||
|
|
- 按调用次数计费
|
|||
|
|
- 你的API额度
|
|||
|
|
|
|||
|
|
## ⚙️ 配置参数
|
|||
|
|
|
|||
|
|
### 文本分块
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
text-splitter:
|
|||
|
|
chunk-size: 800 # 分块大小(字符)
|
|||
|
|
chunk-overlap: 200 # 重叠大小(字符)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 检索参数
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
retrieval:
|
|||
|
|
top-k: 5 # 返回前5个最相关片段
|
|||
|
|
similarity-threshold: 0.7 # 相似度阈值
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 存储路径
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
storage:
|
|||
|
|
upload-path: D:/wwwroot/RAG/uploads
|
|||
|
|
log-path: D:/wwwroot/RAG/logs
|
|||
|
|
chroma-data-path: D:/wwwroot/RAG/data/chroma_db
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🛠️ 故障排查
|
|||
|
|
|
|||
|
|
### 问题1:上传失败
|
|||
|
|
|
|||
|
|
**可能原因**:
|
|||
|
|
- Ollama未运行
|
|||
|
|
- 文件格式不支持
|
|||
|
|
- 文件大小超限
|
|||
|
|
- 磁盘空间不足
|
|||
|
|
|
|||
|
|
**解决方法**:
|
|||
|
|
1. 检查Ollama:`ollama list`
|
|||
|
|
2. 检查文件格式和大小
|
|||
|
|
3. 查看应用日志
|
|||
|
|
|
|||
|
|
### 问题2:AI分析没有使用知识库
|
|||
|
|
|
|||
|
|
**可能原因**:
|
|||
|
|
- 知识库为空
|
|||
|
|
- 文档内容不相关
|
|||
|
|
- 相似度阈值过高
|
|||
|
|
|
|||
|
|
**解决方法**:
|
|||
|
|
1. 检查知识库状态
|
|||
|
|
2. 上传相关文档
|
|||
|
|
3. 调整相似度阈值
|
|||
|
|
|
|||
|
|
### 问题3:向量数据丢失
|
|||
|
|
|
|||
|
|
**可能原因**:
|
|||
|
|
- 文件被删除
|
|||
|
|
- 文件权限问题
|
|||
|
|
- 保存失败
|
|||
|
|
|
|||
|
|
**解决方法**:
|
|||
|
|
1. 检查 `vector_store.json` 是否存在
|
|||
|
|
2. 检查文件权限
|
|||
|
|
3. 重建索引
|
|||
|
|
|
|||
|
|
### 问题4:性能慢
|
|||
|
|
|
|||
|
|
**可能原因**:
|
|||
|
|
- 文档数量过多
|
|||
|
|
- Ollama性能不足
|
|||
|
|
- 内存不足
|
|||
|
|
|
|||
|
|
**解决方法**:
|
|||
|
|
1. 删除无用文档
|
|||
|
|
2. 升级硬件
|
|||
|
|
3. 调整分块大小
|
|||
|
|
|
|||
|
|
## 📚 相关文档
|
|||
|
|
|
|||
|
|
- `README-RAG-SYSTEM.md` - 系统概述
|
|||
|
|
- `RAG-使用指南.md` - 使用指南
|
|||
|
|
- `RAG-容量说明.md` - 容量说明
|
|||
|
|
- `知识库管理-使用说明.md` - 管理说明
|
|||
|
|
- `快速开始-知识库.md` - 快速开始
|
|||
|
|
|
|||
|
|
## 🎉 总结
|
|||
|
|
|
|||
|
|
系统已完整配置,具备:
|
|||
|
|
- ✅ 自动文档处理
|
|||
|
|
- ✅ 持久化存储
|
|||
|
|
- ✅ Web管理界面
|
|||
|
|
- ✅ AI分析功能
|
|||
|
|
- ✅ 完整的API
|
|||
|
|
|
|||
|
|
现在可以开始使用了!
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**配置完成时间**:2025-12-19
|
|||
|
|
**系统版本**:1.0.0
|