7.3 KiB
7.3 KiB
RAG知识库系统 - 完整配置总结
✅ 已完成的配置
1. 系统架构
混合模式(Hybrid Mode):
- 📥 文档嵌入:本地Ollama (
nomic-embed-text) - 🤖 AI生成:远程Kimi API (
moonshot-v1-32k) - 💾 向量存储:SimpleVectorStore(文件持久化)
2. 配置文件
application.yml:
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界面上传(推荐)
- 登录系统
- 进入"知识库管理"页面
- 点击"上传文档"
- 选择分类和文件
- 点击确定
- 系统自动处理:
上传 → 保存 → 解析 → 分块 → 向量化 → 存储 → 完成
方式2:批量处理
- 将文档放入
D:\wwwroot\RAG\uploads\ - 运行
处理上传文件.bat - 或在Web界面点击"重建索引"
方式3:API调用
# 上传文档
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
适用场景:
- ✅ 心理测评标准文档
- ✅ 心理学理论知识
- ✅ 案例分析文档
- ✅ 干预建议文档
🔧 维护操作
检查状态
使用脚本:
检查知识库状态.bat
使用API:
curl http://localhost:30081/api/knowledge/statistics
查看文件:
D:\wwwroot\RAG\data\chroma_db\vector_store.json
备份数据
# 备份向量数据
copy D:\wwwroot\RAG\data\chroma_db\vector_store.json backup\
# 备份文档
xcopy D:\wwwroot\RAG\uploads backup\uploads\ /E /I
清空知识库
Web界面:点击"清空知识库"按钮
API调用:
curl -X DELETE http://localhost:30081/api/knowledge/clear
🎯 AI分析使用
在测评报告中使用
- 进入"测评报告"页面
- 选择一个报告
- 点击"AI分析"按钮
- 系统流程:
分析测评结果 ↓ 从知识库检索相关知识(Ollama嵌入) ↓ 构建提示词(包含检索到的知识) ↓ 调用Kimi API生成分析 ↓ 显示分析结果和知识来源
分析质量优化
提高质量的方法:
- 上传高质量、专业的文档
- 确保文档内容与测评相关
- 文档结构清晰、分段明确
- 定期更新知识库内容
- 删除无效或过时的文档
📝 支持的文档格式
.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额度
⚙️ 配置参数
文本分块
text-splitter:
chunk-size: 800 # 分块大小(字符)
chunk-overlap: 200 # 重叠大小(字符)
检索参数
retrieval:
top-k: 5 # 返回前5个最相关片段
similarity-threshold: 0.7 # 相似度阈值
存储路径
storage:
upload-path: D:/wwwroot/RAG/uploads
log-path: D:/wwwroot/RAG/logs
chroma-data-path: D:/wwwroot/RAG/data/chroma_db
🛠️ 故障排查
问题1:上传失败
可能原因:
- Ollama未运行
- 文件格式不支持
- 文件大小超限
- 磁盘空间不足
解决方法:
- 检查Ollama:
ollama list - 检查文件格式和大小
- 查看应用日志
问题2:AI分析没有使用知识库
可能原因:
- 知识库为空
- 文档内容不相关
- 相似度阈值过高
解决方法:
- 检查知识库状态
- 上传相关文档
- 调整相似度阈值
问题3:向量数据丢失
可能原因:
- 文件被删除
- 文件权限问题
- 保存失败
解决方法:
- 检查
vector_store.json是否存在 - 检查文件权限
- 重建索引
问题4:性能慢
可能原因:
- 文档数量过多
- Ollama性能不足
- 内存不足
解决方法:
- 删除无用文档
- 升级硬件
- 调整分块大小
📚 相关文档
README-RAG-SYSTEM.md- 系统概述RAG-使用指南.md- 使用指南RAG-容量说明.md- 容量说明知识库管理-使用说明.md- 管理说明快速开始-知识库.md- 快速开始
🎉 总结
系统已完整配置,具备:
- ✅ 自动文档处理
- ✅ 持久化存储
- ✅ Web管理界面
- ✅ AI分析功能
- ✅ 完整的API
现在可以开始使用了!
配置完成时间:2025-12-19 系统版本:1.0.0