Youngger9765
refactor: reorganize project structure and add new features
e66ee1b

Backend Scripts

Reprocess All Documents

重新處理所有已上傳的文檔,使用新的 chunking 參數。

使用方式

# 確保 backend API 正在運行
python backend/scripts/reprocess_all_docs.py

功能

  • 自動獲取資料庫中所有文檔
  • 為每個文檔調用 /api/ingest/reprocess/{doc_id} endpoint
  • 使用新的參數重新切割文本(chunk_size=400, overlap=80)
  • 重新生成 embeddings
  • 顯示詳細進度和統計數據

輸出範例

🔄 Reprocessing All Documents with New Chunk Parameters
================================================================================
   New chunk_size: 400
   New overlap: 80
================================================================================

📋 Fetching document list...
✅ Found 3 documents

[1/3] Processing: 職涯諮詢師初階培訓簡報.pdf (ID: 1)
   ✅ Success!
      Old chunks: 9
      New chunks: 28
      Embeddings: 28

[2/3] Processing: 職涯諮詢師進階培訓簡報.pdf (ID: 2)
   ✅ Success!
      Old chunks: 4
      New chunks: 15
      Embeddings: 15

================================================================================
📊 SUMMARY
================================================================================
✅ Successful: 2
❌ Failed: 0

📈 Total old chunks deleted: 13
📈 Total new chunks created: 43
📈 Chunk increase: +30 (+230.8%)

注意事項

  1. 需要 API 運行: 確保 backend API 在 http://localhost:8000 運行
  2. 時間較長: 處理過程需要為每個 chunk 生成 embedding,可能需要數分鐘
  3. OpenAI API: 會消耗 OpenAI API credits
  4. 無法復原: 舊的 chunks 會被刪除,請確認後再執行

疑難排解

如果遇到 pgbouncer 錯誤:

  1. 等待幾分鐘讓 Supabase 緩存清除
  2. 確認 .env 中的 DATABASE_URL 正確
  3. 重啟 backend API

如果遇到 timeout:

  1. 增加 httpx.AsyncClient(timeout=300.0) 的 timeout 值
  2. 確認網路連接穩定
  3. 檢查 OpenAI API key 是否有效