204 lines
4.4 KiB
Markdown
204 lines
4.4 KiB
Markdown
# RAG知识库容量说明
|
||
|
||
## 📊 当前配置容量
|
||
|
||
### SimpleVectorStore(文件持久化)
|
||
|
||
**推荐容量**:
|
||
- 文档数量:50-200个文档文件
|
||
- 文档片段:1000-5000个片段
|
||
- 总文本量:5-20MB
|
||
- 内存占用:10-50MB
|
||
- 文件大小:20-100MB
|
||
|
||
**适用场景**:
|
||
- ✅ 心理测评标准文档(10-50个)
|
||
- ✅ 心理学理论知识(20-100个)
|
||
- ✅ 案例分析文档(50-200个)
|
||
- ✅ 干预建议文档(20-100个)
|
||
|
||
## 🔢 容量计算
|
||
|
||
### 单个文档处理
|
||
|
||
以一个10页的PDF文档为例:
|
||
```
|
||
原始文档:10页 × 500字/页 = 5000字
|
||
分块配置:800字/块,重叠200字
|
||
生成片段:约 8-10个片段
|
||
向量数据:10片段 × 3KB = 30KB
|
||
```
|
||
|
||
### 知识库规模示例
|
||
|
||
**小型知识库(推荐)**:
|
||
- 文档数量:50个
|
||
- 文档片段:500个
|
||
- 内存占用:~5MB
|
||
- 文件大小:~10MB
|
||
- 查询速度:极快(<50ms)
|
||
|
||
**中型知识库**:
|
||
- 文档数量:200个
|
||
- 文档片段:2000个
|
||
- 内存占用:~20MB
|
||
- 文件大小:~40MB
|
||
- 查询速度:快(<100ms)
|
||
|
||
**大型知识库(接近上限)**:
|
||
- 文档数量:500个
|
||
- 文档片段:5000个
|
||
- 内存占用:~50MB
|
||
- 文件大小:~100MB
|
||
- 查询速度:较快(<200ms)
|
||
|
||
## ⚠️ 性能影响因素
|
||
|
||
### 1. 内存占用
|
||
- 所有向量数据加载到内存
|
||
- 建议JVM堆内存:至少512MB
|
||
- 推荐配置:`-Xmx1024m`
|
||
|
||
### 2. 查询速度
|
||
- 线性扫描所有向量
|
||
- 1000片段:~50ms
|
||
- 5000片段:~200ms
|
||
- 10000片段:~500ms(不推荐)
|
||
|
||
### 3. 启动时间
|
||
- 需要从文件加载所有数据
|
||
- 1000片段:~1秒
|
||
- 5000片段:~3秒
|
||
- 10000片段:~10秒
|
||
|
||
### 4. 保存时间
|
||
- 每次添加/删除都会保存
|
||
- 1000片段:~0.5秒
|
||
- 5000片段:~2秒
|
||
|
||
## 🚀 优化建议
|
||
|
||
### 当前配置(已优化)
|
||
|
||
```yaml
|
||
# 文本分块配置
|
||
text-splitter:
|
||
chunk-size: 800 # 分块大小
|
||
chunk-overlap: 200 # 重叠大小
|
||
|
||
# 检索配置
|
||
retrieval:
|
||
top-k: 5 # 返回前5个最相关片段
|
||
similarity-threshold: 0.7 # 相似度阈值
|
||
```
|
||
|
||
### 如果需要更大容量
|
||
|
||
**方案1:调整分块大小**
|
||
```yaml
|
||
text-splitter:
|
||
chunk-size: 1200 # 增大分块,减少片段数
|
||
chunk-overlap: 200
|
||
```
|
||
- 优点:减少片段数量,提高性能
|
||
- 缺点:单个片段信息更多,可能降低精确度
|
||
|
||
**方案2:升级到ChromaDB**
|
||
```bash
|
||
# 安装ChromaDB
|
||
pip install chromadb
|
||
|
||
# 启动服务
|
||
chroma run --path D:/wwwroot/RAG/data/chroma_db --port 8000
|
||
```
|
||
- 支持:10万+文档片段
|
||
- 性能:使用索引,查询速度快
|
||
- 持久化:专业的向量数据库
|
||
|
||
**方案3:使用数据库存储**
|
||
- 将向量存储到MySQL/PostgreSQL
|
||
- 使用pgvector扩展(PostgreSQL)
|
||
- 适合超大规模数据
|
||
|
||
## 📈 扩容路线图
|
||
|
||
### 阶段1:当前方案(0-5000片段)
|
||
✅ SimpleVectorStore + 文件持久化
|
||
- 简单、快速、无需额外服务
|
||
- 适合大多数场景
|
||
|
||
### 阶段2:ChromaDB(5000-100000片段)
|
||
- 专业向量数据库
|
||
- 支持更大规模
|
||
- 需要额外服务
|
||
|
||
### 阶段3:企业级方案(100000+片段)
|
||
- Milvus / Qdrant / Weaviate
|
||
- 分布式部署
|
||
- 高可用架构
|
||
|
||
## 💡 实际使用建议
|
||
|
||
### 心理测评系统场景
|
||
|
||
**核心知识库**(推荐):
|
||
- 测评标准:20个文档
|
||
- 理论知识:50个文档
|
||
- 案例分析:100个文档
|
||
- 干预建议:30个文档
|
||
- **总计:200个文档,约2000片段**
|
||
|
||
**预期性能**:
|
||
- 内存占用:~20MB
|
||
- 查询速度:<100ms
|
||
- 启动时间:~2秒
|
||
- 完全满足需求 ✅
|
||
|
||
### 文档质量 > 数量
|
||
|
||
重要提示:
|
||
- 📚 精选高质量文档比大量低质量文档更有效
|
||
- 🎯 200个精心整理的文档 > 1000个杂乱文档
|
||
- ✨ 定期更新和维护知识库内容
|
||
|
||
## 🔧 监控和维护
|
||
|
||
### 查看当前容量
|
||
```bash
|
||
# 访问系统状态API
|
||
curl http://localhost:30081/api/knowledge/status
|
||
```
|
||
|
||
返回信息包括:
|
||
- 文档片段数量
|
||
- 内存占用
|
||
- 查询性能统计
|
||
|
||
### 定期清理
|
||
- 删除过时文档
|
||
- 合并重复内容
|
||
- 优化文档质量
|
||
|
||
### 备份策略
|
||
```bash
|
||
# 备份向量数据
|
||
copy D:\wwwroot\RAG\data\chroma_db\vector_store.json backup_20250119.json
|
||
|
||
# 备份文档
|
||
xcopy D:\wwwroot\RAG\uploads backup_uploads\ /E /I
|
||
```
|
||
|
||
## 📞 何时需要升级
|
||
|
||
如果出现以下情况,考虑升级到ChromaDB:
|
||
|
||
- ❌ 文档片段超过5000个
|
||
- ❌ 查询速度超过500ms
|
||
- ❌ 启动时间超过10秒
|
||
- ❌ 内存占用超过100MB
|
||
- ❌ 需要更复杂的查询功能
|
||
|
||
---
|
||
|
||
**当前配置完全满足心理测评系统的需求!** 🎉
|