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`) | |
| **功能**: 从云端向量数据库检索课程知识 | |
| **流程**: | |
| 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 分钟 | |
| **建议重点**: 架构设计、技术选型、性能指标 | |