⚡《AI 知識系統建造日誌》這不是一篇純技術文章,而是一場工程師的魔法冒險。程式是咒語、流程是魔法陣、錯誤訊息則是黑暗詛咒。
請準備好你的魔杖(鍵盤),我們要繼續探索如何編排基礎組件,打造穩定、可擴展的 AI 知識系統。
儲存陣營:
後端陣營:
AI 魔法陣營:
docker-compose.yml
docker compose up
depends_on
下面是我們的七大服務舞台編排示例,每個小精靈都有自己的任務與資源。
networks:
langfuse-otel-net:
external: true
services:
noteserver:
build:
context: .
dockerfile: ./services/noteservice/Dockerfile.noteserver
image: noteserver:latest
container_name: note
volumes:
- ./note:/app
- ./data/noteserver:/data
ports:
- "8022:8000"
env_file:
- .env
depends_on:
- arxiv-worker
- postgres
- qdrant
networks:
- ai-net
ollama:
image: ollama/ollama
container_name: hi-ollama
ports:
- "11434:11434"
volumes:
- ./ollama_models:/root/.ollama
networks:
- ai-net
arxiv-flow:
build:
context: .
dockerfile: ./services/arxivservice/Dockerfile.arxiv
image: arxiv-flow:latest
container_name: arxiv-flow
command: bash /app/deploy_flows.sh
volumes:
- ./arxiv:/app
- ./data/arxiv_flow:/data
env_file:
- .env
networks:
- ai-net
email-flow:
build:
context: .
dockerfile: ./services/emailservice/Dockerfile.email
image: email-flow:latest
container_name: email-flow
command: bash /app/deploy_flows.sh
volumes:
- ./email:/app
env_file:
- .env
networks:
- ai-net
postgres:
image: postgres:15
container_name: postgres
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: ai_db
volumes:
- ./data/postgres:/var/lib/postgresql/data
ports:
- "5432:5432"
networks:
- ai-net
qdrant:
image: qdrant/qdrant:v1.2.0
container_name: qdrant
ports:
- "6333:6333"
volumes:
- ./data/qdrant:/qdrant/storage
networks:
- ai-net
orion:
image: prefecthq/prefect:3-latest
container_name: prefect-orion
command: prefect server start --host 0.0.0.0 --port 4200
ports:
- "4200:4200" # Web UI + API
environment:
PREFECT_API_DATABASE_CONNECTION_URL: sqlite+aiosqlite:///prefect.db
volumes:
- ./data/prefect_data:/root/.prefect
networks:
- langfuse-otel-net
每個服務都是舞台上的小精靈。設定好依賴與網絡,才能確保演出順暢。
docker compose up -d
背景執行魔法,小精靈出現在舞台上,不干擾你的控制台。
docker compose build
把 Dockerfile 轉化為魔法石,準備施法材料。
docker compose down
讓舞台恢復平靜,容器與網絡都被收回。
docker compose logs -f
即時追蹤每個容器的行為,便於偵錯。
docker compose exec noteserver bash
可以直接操作容器內部,觀察或測試內部流程。
volumes
將容器內資料同步到宿主機。depends_on
+ 健康檢查,確保啟動順序。8022:8000
)。魔法失效 | 解法 |
---|---|
服務啟不起來 | 檢查依賴順序與端口衝突 |
資料庫連線錯誤 | 驗證連線字串、環境變數 |
向量檢索慢 | 確認索引建立、批量插入策略 |
模型回應延遲 | 使用非同步 API,或預熱模型 |
任務失敗無重試 | 設定 Prefect retry 與 timeout |
今天,我見證了整個 AI 知識系統的舞台活起來:PostgreSQL 穩定存取資料,Qdrant 提供迅速向量檢索,Ollama 靈巧生成語言魔法,Prefect 精準掌控流程順序。每個小精靈都在正確的時刻出現,運作協調,宛如一場精準的魔法交響樂,為高階 AI 魔法奠定堅實而穩固的基礎。