ClareCourseWare / ARCHITECTURE.md
claudqunwang's picture
Add structured AI courseware APIs
2a4f012
# Clare AI + Weaviate ๆŠ€ๆœฏๆžถๆž„ๆ–‡ๆกฃ
## ๐Ÿ“‹ ็›ฎๅฝ•
1. [็ณป็ปŸๆฆ‚่ฟฐ](#็ณป็ปŸๆฆ‚่ฟฐ)
2. [ๆžถๆž„ๅ›พ](#ๆžถๆž„ๅ›พ)
3. [ๆŠ€ๆœฏๆ ˆ](#ๆŠ€ๆœฏๆ ˆ)
4. [ๆ ธๅฟƒ็ป„ไปถ](#ๆ ธๅฟƒ็ป„ไปถ)
5. [ๆ•ฐๆฎๆต](#ๆ•ฐๆฎๆต)
6. [้ƒจ็ฝฒๆžถๆž„](#้ƒจ็ฝฒๆžถๆž„)
7. [ๅ…ณ้”ฎๆŠ€ๆœฏๅ†ณ็ญ–](#ๅ…ณ้”ฎๆŠ€ๆœฏๅ†ณ็ญ–)
---
## ๐ŸŽฏ ็ณป็ปŸๆฆ‚่ฟฐ
**Clare AI** ๆ˜ฏไธ€ไธชๅŸบไบŽ RAG (Retrieval-Augmented Generation) ็š„ๆ™บ่ƒฝๆ•™ๅญฆๅŠฉๆ‰‹๏ผŒ้€š่ฟ‡ **Weaviate Cloud** ๅ‘้‡ๆ•ฐๆฎๅบ“ๆไพ›่ฏพ็จ‹็Ÿฅ่ฏ†ๆฃ€็ดข่ƒฝๅŠ›ใ€‚
### ๆ ธๅฟƒๅŠŸ่ƒฝ
- **ๅคšๆจกๅผๆ•™ๅญฆ**๏ผšๆฆ‚ๅฟต่งฃ้‡Šใ€่‹ๆ ผๆ‹‰ๅบ•ๅผ่พ…ๅฏผใ€่€ƒ่ฏ•ๅ‡†ๅค‡ใ€ไฝœไธšๅŠฉๆ‰‹ใ€ๅฟซ้€Ÿๆ€ป็ป“
- **็Ÿฅ่ฏ†ๆฃ€็ดข**๏ผšไปŽ 151+ ไธช่ฏพ็จ‹ๆ–‡ๆกฃ๏ผˆPDFใ€DOCXใ€ไปฃ็ ็ญ‰๏ผ‰ไธญๆฃ€็ดข็›ธๅ…ณๅ†…ๅฎน
- **ไผš่ฏ่ฎฐๅฟ†**๏ผš่ทŸ่ธชๅญฆ็”Ÿๅผฑ้กนใ€่ฎค็Ÿฅ็Šถๆ€ใ€ๅญฆไน ่ฟ›ๅบฆ
- **ๅคš่ฏญ่จ€ๆ”ฏๆŒ**๏ผšไธญ่‹ฑๆ–‡ๅŒ่ฏญๅฏน่ฏ
---
## ๐Ÿ—๏ธ ๆžถๆž„ๅ›พ
```
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Hugging Face Space โ”‚
โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚ โ”‚ ClareVoice (Gradio App) โ”‚ โ”‚
โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚
โ”‚ โ”‚ โ”‚ Frontend: Gradio UI โ”‚ โ”‚ โ”‚
โ”‚ โ”‚ โ”‚ - Chat Interface โ”‚ โ”‚ โ”‚
โ”‚ โ”‚ โ”‚ - File Upload โ”‚ โ”‚ โ”‚
โ”‚ โ”‚ โ”‚ - Session Management โ”‚ โ”‚ โ”‚
โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚
โ”‚ โ”‚ โ”‚ โ”‚
โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚
โ”‚ โ”‚ โ”‚ Core Logic (clare_core.py) โ”‚ โ”‚ โ”‚
โ”‚ โ”‚ โ”‚ - LLM: GPT-4.1-mini (OpenAI) โ”‚ โ”‚ โ”‚
โ”‚ โ”‚ โ”‚ - Prompt Engineering โ”‚ โ”‚ โ”‚
โ”‚ โ”‚ โ”‚ - Session Memory โ”‚ โ”‚ โ”‚
โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚
โ”‚ โ”‚ โ”‚ โ”‚
โ”‚ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚
โ”‚ โ”‚ โ”‚ RAG Engine (rag_engine.py) โ”‚ โ”‚ โ”‚
โ”‚ โ”‚ โ”‚ - Local FAISS (ไธŠไผ ๆ–‡ไปถ) โ”‚ โ”‚ โ”‚
โ”‚ โ”‚ โ”‚ - PDF/DOCX Parsing โ”‚ โ”‚ โ”‚
โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ”‚ โ”‚ โ”‚
โ”‚ โ”‚ HTTPS + API Key โ”‚
โ”‚ โ–ผ โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”‚
โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Weaviate Cloud (GCP) โ”‚
โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚ โ”‚ Collection: GenAICourses โ”‚ โ”‚
โ”‚ โ”‚ - 151+ ๆ–‡ๆกฃๅ— (chunks) โ”‚ โ”‚
โ”‚ โ”‚ - Vector Embeddings (384-dim) โ”‚ โ”‚
โ”‚ โ”‚ - Metadata (source_file, section) โ”‚ โ”‚
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ–ฒ
โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Index Builder (ๆœฌๅœฐ/CI) โ”‚
โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚ โ”‚ build_weaviate_index.py โ”‚ โ”‚
โ”‚ โ”‚ - ่ฏปๅ– GENAI COURSES/ ็›ฎๅฝ• โ”‚ โ”‚
โ”‚ โ”‚ - Embedding: sentence-transformers/all-MiniLM-L6-v2 โ”‚ โ”‚
โ”‚ โ”‚ - ไธŠไผ ๅˆฐ Weaviate Cloud โ”‚ โ”‚
โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
```
---
## ๐Ÿ› ๏ธ ๆŠ€ๆœฏๆ ˆ
### ๅ‰็ซฏๅฑ‚
- **Gradio 6.0+**: Web UI ๆก†ๆžถ๏ผŒๆ”ฏๆŒๅฎžๆ—ถๅฏน่ฏใ€ๆ–‡ไปถไธŠไผ 
- **Python 3.11**: ่ฟ่กŒ็Žฏๅขƒ
### ๅŽ็ซฏๅฑ‚
- **OpenAI GPT-4.1-mini**: ไธป่ฆ LLM๏ผŒ็”จไบŽ็”Ÿๆˆๅ›ž็ญ”
- **LangChain**: LLM ็ผ–ๆŽ’ๆก†ๆžถ
- **LlamaIndex**: ๅ‘้‡ๆฃ€็ดขๆก†ๆžถ
### ๅ‘้‡ๆ•ฐๆฎๅบ“
- **Weaviate Cloud**: ๆ‰˜็ฎกๅ‘้‡ๆ•ฐๆฎๅบ“๏ผˆGCP๏ผ‰
- Collection: `GenAICourses`
- Embedding Model: `sentence-transformers/all-MiniLM-L6-v2` (384็ปด)
- ๆ–‡ๆกฃ็ฑปๅž‹: PDF, DOCX, TXT, PY, IPYNB
### Embedding ๆจกๅž‹
- **ๅปบ็ดขๅผ•**: `sentence-transformers/all-MiniLM-L6-v2` (ๅ…่ดน๏ผŒๆœฌๅœฐ่ฟ่กŒ)
- **ๆŸฅ่ฏข**: ไธŽๅปบ็ดขๅผ•ไฝฟ็”จ็›ธๅŒๆจกๅž‹๏ผˆไฟ่ฏๅ‘้‡็ฉบ้—ดไธ€่‡ด๏ผ‰
### ๆ–‡ๆกฃ่งฃๆž
- **unstructured.io**: PDF ่งฃๆž๏ผˆไผ˜ๅ…ˆ๏ผ‰
- **pypdf**: PDF ่งฃๆž๏ผˆ้™็บงๆ–นๆกˆ๏ผ‰
- **python-docx**: DOCX ่งฃๆž
---
## ๐Ÿ”ง ๆ ธๅฟƒ็ป„ไปถ
### 1. ClareVoice App (`app.py`)
**่Œ่ดฃ**: ไธปๅบ”็”จๅ…ฅๅฃ๏ผŒๅค„็†็”จๆˆทไบคไบ’
**ๅ…ณ้”ฎๅŠŸ่ƒฝ**:
- Gradio UI ๆธฒๆŸ“
- ็”จๆˆทไผš่ฏ็ฎก็†
- ่ฐƒ็”จ RAG ๆฃ€็ดขๅ’Œ LLM ็”Ÿๆˆ
- Weaviate ็›ด่ฟžๆฃ€็ดข
**ๅ…ณ้”ฎไปฃ็ **:
```python
# Weaviate ๆฃ€็ดข๏ผˆไผ˜ๅ…ˆ๏ผ‰
if USE_WEAVIATE_DIRECT:
course_chunks = _retrieve_from_weaviate(message)
# ๆœฌๅœฐ FAISS๏ผˆไธŠไผ ๆ–‡ไปถ๏ผ‰
rag_context_text = retrieve_relevant_chunks(message, rag_chunks)
```
### 2. RAG Engine (`rag_engine.py`)
**่Œ่ดฃ**: ๆœฌๅœฐๆ–‡ไปถๅ‘้‡ๅŒ–ๅ’Œๆฃ€็ดข
**ๅŠŸ่ƒฝ**:
- ่งฃๆžไธŠไผ ็š„ PDF/DOCX
- ๆž„ๅปบ FAISS ็ดขๅผ•๏ผˆๅ†…ๅญ˜๏ผ‰
- ๅ‘้‡็›ธไผผๅบฆๆฃ€็ดข
### 3. Clare Core (`clare_core.py`)
**่Œ่ดฃ**: LLM ่ฐƒ็”จๅ’Œ Prompt ๆž„ๅปบ
**ๅŠŸ่ƒฝ**:
- ๆž„ๅปบๅคš่ฝฎๅฏน่ฏไธŠไธ‹ๆ–‡
- ๆ•ดๅˆ RAG ๆฃ€็ดข็ป“ๆžœ
- ็ฎก็†ไผš่ฏ่ฎฐๅฟ†๏ผˆๅผฑ้กนใ€่ฎค็Ÿฅ็Šถๆ€๏ผ‰
- ็”Ÿๆˆๆ•™ๅญฆๅ›ž็ญ”
### 4. Weaviate ๆฃ€็ดข (`app.py` โ†’ `_retrieve_from_weaviate`)
**่Œ่ดฃ**: ไปŽ Weaviate Cloud ๆฃ€็ดข่ฏพ็จ‹็Ÿฅ่ฏ†
**ๆต็จ‹**:
1. ๅŠ ่ฝฝ embedding ๆจกๅž‹๏ผˆ็ผ“ๅญ˜๏ผ‰
2. ่ฟžๆŽฅ Weaviate Cloud
3. ๅฐ†็”จๆˆท้—ฎ้ข˜็ผ–็ ไธบๅ‘้‡
4. ๅ‘้‡็›ธไผผๅบฆๆœ็ดข๏ผˆtop_k=5๏ผ‰
5. ่ฟ”ๅ›ž็›ธๅ…ณๆ–‡ๆกฃๅ—
**ๅ…ณ้”ฎ็‰นๆ€ง**:
- **่ถ…ๆ—ถไฟๆŠค**: 45็ง’่ถ…ๆ—ถ๏ผŒ้ฟๅ…้˜ปๅกž
- **ๆจกๅž‹้ข„็ƒญ**: ๅฏๅŠจๆ—ถๅŽๅฐๅŠ ่ฝฝ๏ผŒ้ฟๅ…้ฆ–ๆฌกๆŸฅ่ฏขๆ…ข
- **้”™่ฏฏ้™็บง**: ๅคฑ่ดฅๆ—ถ้™้ป˜่ฟ”ๅ›ž็ฉบ๏ผŒไธๅฝฑๅ“ไธปๆต็จ‹
---
## ๐Ÿ“Š ๆ•ฐๆฎๆต
### ็”จๆˆทๆ้—ฎๆต็จ‹
```
1. ็”จๆˆท่พ“ๅ…ฅ้—ฎ้ข˜
โ”‚
โ–ผ
2. ๆฃ€ๆต‹ๆ˜ฏๅฆไธบๅญฆๆœฏๆŸฅ่ฏข (is_academic_query)
โ”‚
โ”œโ”€ ๆ˜ฏ โ†’ ่งฆๅ‘ RAG ๆฃ€็ดข
โ”‚ โ”‚
โ”‚ โ”œโ”€ Weaviate ๆฃ€็ดข (ไผ˜ๅ…ˆ)
โ”‚ โ”‚ โ””โ”€ ่ฟ”ๅ›ž่ฏพ็จ‹ๆ–‡ๆกฃๅ—
โ”‚ โ”‚
โ”‚ โ””โ”€ ๆœฌๅœฐ FAISS ๆฃ€็ดข (ไธŠไผ ๆ–‡ไปถ)
โ”‚ โ””โ”€ ่ฟ”ๅ›žๆ–‡ๆกฃๅ—
โ”‚
โ””โ”€ ๅฆ โ†’ ่ทณ่ฟ‡ RAG
โ”‚
โ–ผ
3. ๆž„ๅปบ Prompt
โ”œโ”€ System Prompt (Clare ่บซไปฝ)
โ”œโ”€ Session Memory (ๅผฑ้กนใ€่ฎค็Ÿฅ็Šถๆ€)
โ”œโ”€ RAG Context (ๆฃ€็ดขๅˆฐ็š„ๆ–‡ๆกฃ)
โ””โ”€ User Message
โ”‚
โ–ผ
4. ่ฐƒ็”จ OpenAI API (GPT-4.1-mini)
โ”‚
โ–ผ
5. ่ฟ”ๅ›žๅ›ž็ญ” + ๆ›ดๆ–ฐไผš่ฏๅކๅฒ
```
### ็ดขๅผ•ๆž„ๅปบๆต็จ‹
```
1. ๆœฌๅœฐ่ฟ่กŒ build_weaviate_index.py
โ”‚
โ–ผ
2. ่ฏปๅ– GENAI COURSES/ ็›ฎๅฝ•
โ”œโ”€ ๆ”ฏๆŒๆ ผๅผ: .md, .pdf, .txt, .py, .ipynb, .docx
โ””โ”€ ้€’ๅฝ’ๆ‰ซๆๆ‰€ๆœ‰ๅญ็›ฎๅฝ•
โ”‚
โ–ผ
3. ๆ–‡ๆกฃๅˆ†ๅ— (LlamaIndex SimpleDirectoryReader)
โ””โ”€ ่‡ชๅŠจๅˆ†ๅ—๏ผŒไฟ็•™ๅ…ƒๆ•ฐๆฎ
โ”‚
โ–ผ
4. Embedding ็ผ–็ 
โ””โ”€ sentence-transformers/all-MiniLM-L6-v2
โ”‚
โ–ผ
5. ไธŠไผ ๅˆฐ Weaviate Cloud
โ”œโ”€ Collection: GenAICourses
โ”œโ”€ ๅ‘้‡ + ๅ…ƒๆ•ฐๆฎ (source_file, section)
โ””โ”€ ้ชŒ่ฏ object count
```
---
## ๐Ÿš€ ้ƒจ็ฝฒๆžถๆž„
### Hugging Face Space (ClareVoice)
**้ƒจ็ฝฒๆ–นๅผ**: Docker Space
**Dockerfile ๅ…ณ้”ฎ้…็ฝฎ**:
```dockerfile
FROM python:3.11-slim
# ๅฎ‰่ฃ…็ณป็ปŸไพ่ต– (libxcb for unstructured)
RUN apt-get update && apt-get install -y libxcb1 libxcb-xinerama0
# ๅผบๅˆถๅ‡็บง huggingface_hub>=1.3.0
RUN pip install --upgrade "huggingface_hub>=1.3.0,<2.0"
# ๅฎ‰่ฃ…ไพ่ต–
RUN pip install -r requirements.txt
```
**็Žฏๅขƒๅ˜้‡ (Secrets)**:
- `OPENAI_API_KEY`: OpenAI API ๅฏ†้’ฅ
- `WEAVIATE_URL`: Weaviate Cloud REST ๅœฐๅ€
- `WEAVIATE_API_KEY`: Weaviate API Key
- `WEAVIATE_COLLECTION`: ้›†ๅˆๅ๏ผˆ้ป˜่ฎค `GenAICourses`๏ผ‰
**ๅฏๅŠจๆต็จ‹**:
1. ๅŠ ่ฝฝ็Žฏๅขƒๅ˜้‡
2. ๅŽๅฐ้ข„็ƒญ Weaviate embedding ๆจกๅž‹
3. ๅฏๅŠจ Gradio ๆœๅŠก๏ผˆ็ซฏๅฃ 7860๏ผ‰
### Weaviate Cloud
**ๆ‰˜็ฎก**: Google Cloud Platform (GCP)
**้…็ฝฎ**:
- Cluster URL: `https://riiqvgc7tuum6cgwhik9ra.c0.us-west3.gcp.weaviate.cloud`
- Authentication: API Key
- Collection Schema: ่‡ชๅŠจๅˆ›ๅปบ๏ผˆLlamaIndex ็ฎก็†๏ผ‰
**ๆ•ฐๆฎ่ง„ๆจก**:
- ๆ–‡ๆกฃๆ•ฐ้‡: 151+ ๆ–‡ไปถ
- ๆ–‡ๆกฃๅ—ๆ•ฐ: ~917 objects
- ๅ‘้‡็ปดๅบฆ: 384 (all-MiniLM-L6-v2)
---
## ๐Ÿ’ก ๅ…ณ้”ฎๆŠ€ๆœฏๅ†ณ็ญ–
### 1. ไธบไป€ไนˆ้€‰ๆ‹ฉ Weaviate Cloud๏ผŸ
**ไผ˜ๅŠฟ**:
- โœ… **ๆ‰˜็ฎกๆœๅŠก**: ๆ— ้œ€่‡ชๅปบๆ•ฐๆฎๅบ“๏ผŒ้™ไฝŽ่ฟ็ปดๆˆๆœฌ
- โœ… **้ซ˜ๆ€ง่ƒฝ**: ๅ‘้‡ๆฃ€็ดขๅปถ่ฟŸ <100ms
- โœ… **ๅฏๆ‰ฉๅฑ•**: ๆ”ฏๆŒๅคง่ง„ๆจกๆ–‡ๆกฃๅบ“
- โœ… **API ็ฎ€ๅ•**: RESTful API๏ผŒๆ˜“ไบŽ้›†ๆˆ
**ๅฏนๆฏ”ๅ…ถไป–ๆ–นๆกˆ**:
- โŒ **ๆœฌๅœฐ FAISS**: ๅ†…ๅญ˜้™ๅˆถ๏ผŒๆ— ๆณ•ๆŒไน…ๅŒ–
- โŒ **Pinecone**: ๆˆๆœฌ่พƒ้ซ˜
- โŒ **่‡ชๅปบ Weaviate**: ้œ€่ฆๆœๅŠกๅ™จๅ’Œ่ฟ็ปด
### 2. ไธบไป€ไนˆไฝฟ็”จ sentence-transformers ่€Œ้ž OpenAI Embeddings๏ผŸ
**ๅŽŸๅ› **:
- โœ… **ๆˆๆœฌ**: ๅ…่ดน๏ผŒๆ—  API ่ฐƒ็”จ่ดน็”จ
- โœ… **ไธ€่‡ดๆ€ง**: ๅปบ็ดขๅผ•ๅ’ŒๆŸฅ่ฏขไฝฟ็”จๅŒไธ€ๆจกๅž‹๏ผŒไฟ่ฏๅ‘้‡็ฉบ้—ดไธ€่‡ด
- โœ… **็ฆป็บฟ่ƒฝๅŠ›**: ๆœฌๅœฐ่ฟ่กŒ๏ผŒไธไพ่ต–ๅค–้ƒจ API
**ๆƒ่กก**:
- โš ๏ธ **ๆ€ง่ƒฝ**: OpenAI `text-embedding-3-small` (1536็ปด) ๅฏ่ƒฝๆ›ดๅ‡†็กฎ
- โš ๏ธ **ๅปถ่ฟŸ**: ้ฆ–ๆฌกๅŠ ่ฝฝๆจกๅž‹้œ€่ฆ 10-30 ็ง’๏ผˆๅทฒ้€š่ฟ‡้ข„็ƒญ่งฃๅ†ณ๏ผ‰
### 3. ไธบไป€ไนˆ้‡‡็”จ Docker Space ่€Œ้ž Gradio SDK๏ผŸ
**ๅŽŸๅ› **:
- โœ… **ไพ่ต–ๆŽงๅˆถ**: ๅฏไปฅๅผบๅˆถๅ‡็บง็‰นๅฎšๅŒ…๏ผˆๅฆ‚ `huggingface_hub`๏ผ‰
- โœ… **็ณป็ปŸๅบ“**: ๅฏไปฅๅฎ‰่ฃ… `libxcb` ็ญ‰็ณป็ปŸไพ่ต–
- โœ… **็ตๆดปๆ€ง**: ๅฎŒๅ…จๆŽงๅˆถๆž„ๅปบ่ฟ‡็จ‹
### 4. ๅŒๆฃ€็ดข็ญ–็•ฅ๏ผˆWeaviate + FAISS๏ผ‰
**่ฎพ่ฎก**:
- **Weaviate**: ่ฏพ็จ‹็Ÿฅ่ฏ†ๅบ“๏ผˆ151+ ๆ–‡ๆกฃ๏ผŒๆŒไน…ๅŒ–๏ผ‰
- **FAISS**: ็”จๆˆทไธŠไผ ๆ–‡ไปถ๏ผˆไธดๆ—ถ๏ผŒๅ†…ๅญ˜๏ผ‰
**ไผ˜ๅŠฟ**:
- โœ… ่ฏพ็จ‹็Ÿฅ่ฏ†็จณๅฎšๅฏ็”จ
- โœ… ็”จๆˆทๆ–‡ไปถ็ตๆดปๅค„็†
- โœ… ้™็บงๆ–นๆกˆ๏ผšWeaviate ๅคฑ่ดฅๆ—ถไปๆœ‰ FAISS
---
## ๐Ÿ“ˆ ๆ€ง่ƒฝๆŒ‡ๆ ‡
### ๆฃ€็ดขๆ€ง่ƒฝ
- **Weaviate ๆฃ€็ดข**: ~500-1000ms๏ผˆๅซ็ฝ‘็ปœๅปถ่ฟŸ๏ผ‰
- **FAISS ๆฃ€็ดข**: ~10-50ms๏ผˆๅ†…ๅญ˜ๆฃ€็ดข๏ผ‰
- **Embedding ็ผ–็ **: ~100-300ms๏ผˆ้ฆ–ๆฌก้œ€ๅŠ ่ฝฝๆจกๅž‹๏ผ‰
### LLM ๅ“ๅบ”
- **GPT-4.1-mini**: ~2-5็ง’๏ผˆๅ–ๅ†ณไบŽๅ›ž็ญ”้•ฟๅบฆ๏ผ‰
### ็ณป็ปŸ่ต„ๆบ
- **ๅ†…ๅญ˜**: ~2-4GB๏ผˆๅซ embedding ๆจกๅž‹๏ผ‰
- **CPU**: ไธญ็ญ‰่ดŸ่ฝฝ๏ผˆembedding ่ฎก็ฎ—๏ผ‰
---
## ๐Ÿ”’ ๅฎ‰ๅ…จไธŽ้š็ง
### API ๅฏ†้’ฅ็ฎก็†
- โœ… ไฝฟ็”จ Hugging Face Secrets๏ผˆๅŠ ๅฏ†ๅญ˜ๅ‚จ๏ผ‰
- โœ… ไธๅœจไปฃ็ ไธญ็กฌ็ผ–็ ๅฏ†้’ฅ
### ๆ•ฐๆฎ้š็ง
- โœ… ็”จๆˆทไผš่ฏๆ•ฐๆฎไธๆŒไน…ๅŒ–๏ผˆไป…ๅ†…ๅญ˜๏ผ‰
- โœ… Weaviate ไป…ๅญ˜ๅ‚จ่ฏพ็จ‹ๆ–‡ๆกฃ๏ผˆๅ…ฌๅผ€ๅ†…ๅฎน๏ผ‰
- โœ… ็”จๆˆทไธŠไผ ๆ–‡ไปถไป…็”จไบŽๅฝ“ๅ‰ไผš่ฏ
---
## ๐Ÿ› ๅทฒ็Ÿฅ้—ฎ้ข˜ไธŽ่งฃๅ†ณๆ–นๆกˆ
### 1. huggingface_hub ็‰ˆๆœฌๅ†ฒ็ช
**้—ฎ้ข˜**: HF Space ้ข„่ฃ…ๆ—ง็‰ˆ (0.36.2)๏ผŒ`transformers` ้œ€่ฆ >=1.3.0
**่งฃๅ†ณ**:
- Dockerfile ไธญๅผบๅˆถๅ‡็บง
- App ๅฏๅŠจๆ—ถ monkey-patch `is_offline_mode`
### 2. Gradio 6.0 API ๅ˜ๆ›ด
**้—ฎ้ข˜**: `Chatbot` ไธๅ†ๆ”ฏๆŒ `type="tuples"`๏ผŒๆ”นไธบ `messages` ๆ ผๅผ
**่งฃๅ†ณ**: ๆทปๅŠ ๆ ผๅผ่ฝฌๆขๅ‡ฝๆ•ฐ `_tuples_to_messages` / `_messages_to_tuples`
### 3. Embedding ๆจกๅž‹้ฆ–ๆฌกๅŠ ่ฝฝๆ…ข
**้—ฎ้ข˜**: ้ฆ–ๆฌกๆฃ€็ดข้œ€่ฆ 10-30 ็ง’ๅŠ ่ฝฝๆจกๅž‹
**่งฃๅ†ณ**: ๅฏๅŠจๆ—ถๅŽๅฐ้ข„็ƒญ๏ผˆ`_warmup_weaviate_embed`๏ผ‰
---
## ๐Ÿ“ ๆ€ป็ป“
Clare AI ้‡‡็”จ **RAG + LLM** ๆžถๆž„๏ผŒ้€š่ฟ‡ **Weaviate Cloud** ๆไพ›็จณๅฎš็š„่ฏพ็จ‹็Ÿฅ่ฏ†ๆฃ€็ดข่ƒฝๅŠ›ใ€‚็ณป็ปŸ่ฎพ่ฎกๆณจ้‡๏ผš
1. **ๅฏ้ ๆ€ง**: ๅคš้‡้™็บงๆ–นๆกˆ๏ผŒ็กฎไฟๆœๅŠกๅฏ็”จ
2. **ๆ€ง่ƒฝ**: ๆจกๅž‹้ข„็ƒญใ€่ถ…ๆ—ถไฟๆŠคใ€็ผ“ๅญ˜ๆœบๅˆถ
3. **ๅฏๆ‰ฉๅฑ•**: ๆ‰˜็ฎกๆœๅŠก๏ผŒๆ˜“ไบŽๆ‰ฉๅฑ•ๆ–‡ๆกฃๅบ“
4. **ๆˆๆœฌ**: ไฝฟ็”จๅ…่ดน embedding ๆจกๅž‹๏ผŒ้™ไฝŽ่ฟ่ฅๆˆๆœฌ
---
**ๆ–‡ๆกฃ็‰ˆๆœฌ**: v1.0
**ๆœ€ๅŽๆ›ดๆ–ฐ**: 2026-02-11
**็ปดๆŠค่€…**: Clare AI Team