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 ็›ด่ฟžๆฃ€็ดข

ๅ…ณ้”ฎไปฃ็ :

# 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 ๅ…ณ้”ฎ้…็ฝฎ:

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