Spaces:
Sleeping
Sleeping
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)
功能: 从云端向量数据库检索课程知识
流程:
- 连接 Weaviate Cloud (HTTPS + API Key)
- 用户问题 → Embedding 向量
- 向量相似度搜索 (top_k=5)
- 返回相关文档块
特性:
- ✅ 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_KEYWEAVIATE_URLWEAVIATE_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 分钟
建议重点: 架构设计、技术选型、性能指标