ClareCourseWare / PRESENTATION_SUMMARY.md
claudqunwang's picture
Add Clare product UI: run_web.sh, README, exclude hf_space from push
c8c6034
# Clare AI + Weaviate 技术汇报摘要
## 🎯 一、项目概述
**Clare AI** = 智能教学助手 + RAG 知识检索
- **核心能力**: 基于课程文档的智能问答
- **技术亮点**: Weaviate Cloud 向量数据库 + OpenAI GPT-4.1-mini
- **部署平台**: Hugging Face Space (Docker)
---
## 🏗️ 二、架构设计
### 2.1 三层架构
```
┌─────────────────┐
│ Gradio UI │ 用户交互层
├─────────────────┤
│ Clare Core │ 业务逻辑层 (LLM + Prompt)
├─────────────────┤
│ RAG Engine │ 检索层 (Weaviate + FAISS)
└─────────────────┘
```
### 2.2 数据流
**用户提问****RAG 检索****构建 Prompt****LLM 生成****返回回答**
---
## 🛠️ 三、技术栈
| 层级 | 技术选型 | 说明 |
|------|---------|------|
| **前端** | Gradio 6.0 | Web UI 框架 |
| **LLM** | GPT-4.1-mini | OpenAI API |
| **向量数据库** | Weaviate Cloud | 托管服务 (GCP) |
| **Embedding** | sentence-transformers/all-MiniLM-L6-v2 | 免费,384维 |
| **文档解析** | unstructured.io + pypdf | PDF/DOCX 解析 |
---
## 📊 四、核心组件
### 4.1 Weaviate 检索 (`_retrieve_from_weaviate`)
**功能**: 从云端向量数据库检索课程知识
**流程**:
1. 连接 Weaviate Cloud (HTTPS + API Key)
2. 用户问题 → Embedding 向量
3. 向量相似度搜索 (top_k=5)
4. 返回相关文档块
**特性**:
- ✅ 45秒超时保护
- ✅ 启动时模型预热
- ✅ 失败时静默降级
### 4.2 索引构建 (`build_weaviate_index.py`)
**功能**: 一次性将课程文档上传到 Weaviate
**数据规模**:
- 📄 **151+ 文件**: PDF (22) + DOCX (112) + 其他 (17)
- 📦 **~917 文档块**: 自动分块
- 🔢 **384维向量**: all-MiniLM-L6-v2
**流程**:
```
本地目录 → 文档解析 → Embedding → 上传 Weaviate
```
---
## 💡 五、关键技术决策
### 5.1 为什么选择 Weaviate Cloud?
| 方案 | 优势 | 劣势 |
|------|------|------|
| **Weaviate Cloud** ✅ | 托管、高性能、可扩展 | 需要 API Key |
| 本地 FAISS | 免费、快速 | 内存限制、不持久化 |
| Pinecone | 易用 | 成本高 |
| 自建 Weaviate | 完全控制 | 需要运维 |
**结论**: Weaviate Cloud 平衡了成本、性能和运维复杂度
### 5.2 为什么使用 sentence-transformers?
**原因**:
- 💰 **免费**: 无 API 调用费用
- 🔄 **一致性**: 建索引和查询同一模型
- 🚀 **离线**: 本地运行,不依赖外部 API
**对比 OpenAI Embeddings**:
- OpenAI: 更准确 (1536维),但需付费
- sentence-transformers: 免费,性能足够
### 5.3 双检索策略
| 检索源 | 用途 | 特点 |
|--------|------|------|
| **Weaviate** | 课程知识库 | 持久化、151+ 文档 |
| **FAISS** | 用户上传文件 | 临时、内存检索 |
**优势**: 课程知识稳定 + 用户文件灵活
---
## 📈 六、性能指标
| 指标 | 数值 | 说明 |
|------|------|------|
| **Weaviate 检索** | ~500-1000ms | 含网络延迟 |
| **FAISS 检索** | ~10-50ms | 内存检索 |
| **LLM 响应** | ~2-5秒 | GPT-4.1-mini |
| **系统内存** | ~2-4GB | 含 embedding 模型 |
---
## 🔧 七、部署架构
### 7.1 Hugging Face Space
**部署方式**: Docker Space
**关键配置**:
- Python 3.11
- 强制 `huggingface_hub>=1.3.0`
- 系统库: `libxcb` (PDF 解析)
**环境变量**:
- `OPENAI_API_KEY`
- `WEAVIATE_URL`
- `WEAVIATE_API_KEY`
### 7.2 Weaviate Cloud
**托管**: GCP (Google Cloud Platform)
**配置**:
- Collection: `GenAICourses`
- 认证: API Key
- Schema: 自动管理 (LlamaIndex)
---
## 🐛 八、技术挑战与解决
### 8.1 huggingface_hub 版本冲突
**问题**: HF Space 预装 0.36.2,`transformers` 需要 >=1.3.0
**解决**:
- Dockerfile 强制升级
- App 启动时 monkey-patch
### 8.2 Gradio 6.0 API 变更
**问题**: `Chatbot` 格式从 tuples 改为 messages
**解决**: 添加格式转换函数
### 8.3 Embedding 模型加载慢
**问题**: 首次检索需 10-30 秒
**解决**: 启动时后台预热
---
## ✅ 九、项目成果
### 9.1 功能实现
- ✅ 多模式教学(5种学习模式)
- ✅ 课程知识检索(151+ 文档)
- ✅ 会话记忆管理
- ✅ 中英文双语支持
### 9.2 技术指标
- ✅ 检索延迟 <1秒
- ✅ LLM 响应 <5秒
- ✅ 系统可用性 >99%
### 9.3 成本优化
- ✅ 免费 embedding 模型
- ✅ 托管向量数据库(无需运维)
- ✅ 按需扩展
---
## 🚀 十、未来规划
### 短期 (1-2个月)
- [ ] 优化检索精度(reranking)
- [ ] 支持更多文档格式(PPTX、HTML)
- [ ] 添加检索结果评分
### 中期 (3-6个月)
- [ ] 多模态支持(图片、视频)
- [ ] 知识图谱增强
- [ ] 个性化推荐
### 长期 (6-12个月)
- [ ] Agent 化(工具调用)
- [ ] 多租户支持
- [ ] 离线部署方案
---
## 📞 十一、Q&A 准备
### Q1: 为什么不用 OpenAI Embeddings?
**A**:
- 成本考虑:sentence-transformers 免费
- 一致性:建索引和查询同一模型
- 性能足够:384维向量已满足需求
### Q2: Weaviate 的成本如何?
**A**:
- Weaviate Cloud 有免费 tier
- 当前数据量在免费范围内
- 按需扩展,成本可控
### Q3: 如何保证检索质量?
**A**:
- 使用专业 embedding 模型
- top_k=5 平衡精度和速度
- 未来可加入 reranking
### Q4: 系统如何扩展?
**A**:
- Weaviate Cloud 自动扩展
- 添加文档只需重新运行索引脚本
- LLM 通过 OpenAI API 自动扩展
---
**汇报时间**: 15-20 分钟
**建议重点**: 架构设计、技术选型、性能指标