python版本:3.11.9
- 於 Supabase 執行
sql/schema.sql建表與 RPC。 - 複製
.env.example為.env並填入SUPABASE_URL、SUPABASE_KEY、OPENAI_API_KEY。 - 建立 ES 索引(執行
backend\worker\create_index.py)。 - 建置啟動容器:
docker compose build --no-cache docker compose up
- Gateway:
http://localhost:8090/docs - Worker:
http://localhost:8091/docs - PHP UI:
http://localhost:8081/chat、http://localhost:8081/chat、http://localhost:8081/uploader
- 重新建立索引:
python backend/worker/create_index.py - 清空索引資料:
curl -X POST "http://localhost:9200/estate_knowledge/_delete_by_query?pretty" \ -H "Content-Type: application/json" \ -d '{"query": { "match_all": {} }}'
SUPABASE_URL(必填):Supabase 專案 URLSUPABASE_KEY(必填):Supabase service_role keyOPENAI_API_KEY(必填):OpenAI API keyEMBEDDING_MODEL(選填):向量模型backend/shared/settings.py預設text-embedding-3-largeseed_data.py/reembed_missing.py預設text-embedding-3-small→ 建議在.env明確設定避免不一致
CHAT_MODEL(選填):對話模型,預設gpt-4o-miniRERANK_MODEL(選填):重排模型,未設定時使用CHAT_MODELINGEST_BUCKET(選填):Storage bucket,預設inheritance-tax-filesSTORAGE_BUCKET(選填):INGEST_BUCKET的替代名稱(worker 會讀)ES_URL(選填):Elasticsearch URL- Docker 內預設
http://elasticsearch:9200 - 本機預設
http://localhost:9200
- Docker 內預設
MAX_CHARS_PER_BATCH(選填):單批次切片上限,預設600000
IN_DOCKER:是否在 Docker 內執行(影響 ES URL 判斷)ALLOW_ORIGINS:CORS 白名單,預設*STATIC_BASE_URL:Gateway 下載報告用的 base URLSTATIC_DIR:Gateway 靜態檔案目錄,預設/app/static
GEMINI_API_KEY:僅 AI Studio 範例 UI 使用
PYTHONUNBUFFERED、PIP_DISABLE_PIP_VERSION_CHECK、PIP_NO_CACHE_DIRPYTHONIOENCODING、LANG、LC_ALL- Elasticsearch 容器:
discovery.type、xpack.security.enabled、ES_JAVA_OPTS、search.max_buckets - PHP 容器:
APACHE_RUN_USER、APACHE_RUN_GROUP