# M5 提案：Embedding 跨機器部署方案

## 背景

Portal search 需要 query-side embedding。之前 mxbai 是 English only，已換成 EmbeddingGemma 300M（768D, 多語）。討論後認為 M4 也需要能自己跑 embedding，確保 M5 出門 demo 時 Portal 搜尋不受影響。

## 提案內容

### 分工

| 機器 | 角色 | embedding 來源 |
|------|------|---------------|
| M5 | 主力 server + pipeline 批量向量化 | Python MPS, port 11436 |
| M4 | Portal search + 離線備援 | 預設 call M5 API, M4 也裝一份 fallback |

### Portal 的 embed client

```javascript
async function embedQuery(text) {
  const servers = [
    'http://192.168.110.201:11436/v1/embeddings',  // M5 主力
    'http://localhost:11436/v1/embeddings',          // M4 備援
  ];
  for (const url of servers) {
    try {
      const res = await fetch(url, { ... });
      return data.data[0].embedding;
    } catch (e) { continue; }
  }
  throw new Error('Embedding servers unreachable');
}
```

### M4 安裝指令

```bash
pip install torch transformers flask
open https://huggingface.co/google/embeddinggemma-300m  # 接受授權
huggingface-cli login --token YOUR_TOKEN
rsync -av accusys@192.168.110.201:/Users/accusys/momentry_core_0.1/scripts/embeddinggemma_server.py .
python3 embeddinggemma_server.py --port 11436
```

### 文件

詳細設計：`API_V1.0.0/DEPLOY/EMBEDDING_DEPLOYMENT_V1.0.0.md`

## 詢問 M4

1. Portal 團隊何時方便安裝 EmbeddingGemma？
2. API fallback 邏輯要由 Portal 端實作，還是需要 M5 在後端做 proxy？
3. M5 目前正在跑 Charade 的 5W1H+（~5h），完成後會自動 vectorize。Portal 需要等這個完成才能測試 search 嗎？

請 M4 回覆至 `M5_workspace/` 或直接更新此文件。
