migrations 024/025/026 — 統一 LLM 遙測 + 預算告警 + RAG 一致性護欄 - 024: ai_calls 表 + 5 索引 + 6 CHECK constraint(H1/H2/M3/L3) - 025: mcp_calls + ai_call_budgets + 10 種子預算(含 ollama_secondary) - 026: ai_insights.embedding_signature + pgcrypto + CONCURRENTLY index A11 critic 三輪審查記錄完整保留: - Phase 1 schema review: 2 BLOCKER + 4 HIGH + 6 MEDIUM 全處理 - Phase 1 final sign-off: 0 BLOCKER + 2 HIGH + 4 MEDIUM - Phase 6 ADR review: 5 BLOCKER + 6 HIGH 全修 Operation Ollama-First v5.0 / Phase 0+1+6 護欄 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
232 lines
14 KiB
Markdown
232 lines
14 KiB
Markdown
# Phase 0 Research Report — Operation Ollama-First v5.0
|
||
|
||
> **角色**:A2 web-researcher
|
||
> **產出日期**:2026-05-03
|
||
> **任務**:驗證 Phase 3 + Phase 10 三大替代決策可行性
|
||
> **紀律**:所有結論基於 2026 年官方/第三方公開資料;禁止訓練資料記憶
|
||
> **限制聲明**:本報告不評估 GCP Ollama 主機本身的吞吐/延遲(屬 A1 基礎設施範疇),僅評估**模型品質與相容性**
|
||
|
||
---
|
||
|
||
## Executive Summary(紅綠燈總覽)
|
||
|
||
| 任務 | 決策 | 結論 | 風險等級 |
|
||
|------|------|------|----------|
|
||
| 1. OpenClaw Q&A:Gemini 2.5 Flash → Qwen 自建 | 🟡 **黃燈** | Qwen3-14B 可切,但需 prompt engineering + Gemini fallback | 中 |
|
||
| 2. Nemotron 威脅分派:NIM Llama-3.1 → DeepSeek-R1 自建 | 🟡 **黃燈(偏紅)** | DeepSeek-R1-0528 官方支援 tool_calls,但 **Ollama registry 版本未同步**;建議改用 Qwen3-14B | 中-高 |
|
||
| 3. Phase 10 Search API 自建 | 🟢 **綠燈** | Tavily + Exa 雙備援,免費額度足以覆蓋 180 calls/月 × 5 倍 | 低 |
|
||
|
||
---
|
||
|
||
## Section 1:OpenClaw Q&A — Qwen 替代 Gemini 2.5 Flash 結論
|
||
|
||
### 🟡 黃燈 — 條件式可切
|
||
|
||
**核心發現**:
|
||
|
||
1. **Qwen3 已於 2026-04-28 GA**,Apache 2.0 授權,Ollama 官方 registry 已上架完整 0.6B / 1.7B / 4B / 8B / 14B / 32B / 30B-MoE / 235B-MoE 系列。
|
||
- Ollama 標籤頁顯示 **「tools」capability 已支援**
|
||
- 14B 大小僅 9.3GB(fits 16GB GPU 容易)
|
||
- 來源:https://ollama.com/library/qwen3
|
||
|
||
2. **Qwen3 vs Qwen2.5 性能升級顯著**:
|
||
- 官方報告:Qwen3-1.7B/4B/8B/14B/32B-Base 性能 ≈ Qwen2.5-3B/7B/14B/32B/72B-Base
|
||
- 換句話說:**Qwen3-8B 已達 Qwen2.5-14B 等級;Qwen3-14B 已達 Qwen2.5-32B 等級**
|
||
- 來源:https://qwenlm.github.io/blog/qwen3/、https://arxiv.org/pdf/2505.09388
|
||
|
||
3. **vs Gemini 2.5 Flash 差距估算**(無 1:1 直接 benchmark,採推估):
|
||
- Gemini 2.5 Flash 與 Qwen2.5-72B 在主流 benchmark **接近持平**(Artificial Analysis 評估)
|
||
- Qwen3-14B ≈ Qwen2.5-32B-Base,仍小於 Qwen2.5-72B
|
||
- 推估:Qwen3-14B vs Gemini 2.5 Flash 在通用任務差距約 **10-20%**(落在綠/黃燈邊界)
|
||
- 來源:https://artificialanalysis.ai/models/comparisons/gemini-2-5-flash-reasoning-vs-qwen2-5-72b-instruct
|
||
|
||
4. **繁體中文短板(關鍵風險)**:
|
||
- 學術研究指出:**「Non-Traditional Chinese models, such as DeepSeek-V3 and Qwen2.5-72B-Instruct, perform worse on TMMLU+ and HKMMLU compared to CMMLU」**,明確表示 Qwen 系列在繁中(vs 簡中)有落差
|
||
- momo-pro 的 OpenClaw 戰略 Q&A **完全是繁中商業情境**,此短板不可忽視
|
||
- 來源:https://arxiv.org/html/2403.01858v1(TMMLU+)、https://arxiv.org/html/2505.02177(HKMMLU)
|
||
|
||
### 業界切換案例
|
||
|
||
- **Qwen3.5-Flash(API)vs Gemini 2.5 Flash-Lite 同價**($0.10/M input、$0.40/M output),意味市場已視為同級可替代品
|
||
- 自建 Qwen 經濟學:H100 月租 $2,440 → 需 ~483K queries/月才打平。momo-pro 月 8.4M tokens(~28K queries/月)**遠未達自建 ROI 門檻**,但本案是用既有 GCP Ollama 容量,不另租 GPU,所以邊際成本接近 0
|
||
- 來源:https://ioannisp.medium.com/the-real-cost-of-self-hosted-rag-benchmarking-cpu-vs-h100-vs-gemini-3-0-flash-db8f59642435
|
||
|
||
### 🟡 黃燈執行建議
|
||
|
||
| 項目 | 建議 |
|
||
|------|------|
|
||
| **首選模型** | `qwen3:14b`(9.3GB / 40K context / tools 支援) |
|
||
| **次選模型** | `qwen3:8b`(5.2GB,省資源;品質約 Qwen2.5-14B 等級) |
|
||
| **Fallback 鏈** | Qwen3-14B → Qwen3-8B → Gemini 2.5 Flash(品質低於 threshold 才走雲端) |
|
||
| **必做補強** | (1) System prompt 加入「使用繁體中文回答,避免簡體用詞」明確指令 (2) 預先準備 50 題繁中商業 Q&A 黃金集做 A/B 評測 (3) 建立 quality scorer:BERTScore vs Gemini baseline 答案,<0.75 自動 fallback |
|
||
| **不建議模型** | `qwen2.5:7b-instruct`(已有 Qwen3 同檔位免費可用,無理由用舊版) |
|
||
|
||
### Plan B(若黃金集 A/B 顯示差距 > 30%,紅燈)
|
||
- **Llama-3-Taiwan-70B-Instruct**:MediaTek + 國科會聯合微調,TMMLU+ 領先所有開源模型;缺點 70B 體積大需 GPU 升級
|
||
- 退回 Gemini,把優化方向改為 prompt caching + token 削減(直接砍 8.4M token 的 30%)
|
||
|
||
---
|
||
|
||
## Section 2:DeepSeek-R1 tool_calls 相容性結論
|
||
|
||
### 🟡 黃燈(偏紅)— 官方支援,但 Ollama 整合未到位
|
||
|
||
**核心發現**:
|
||
|
||
1. **DeepSeek-R1-0528(2025-05-28 release)官方加入 function calling 支援**:
|
||
- 官方公告:「supports function calling and JSON output」
|
||
- BFCL(Berkeley Function-Calling Leaderboard)93.25%,**屬第一梯隊水準**
|
||
- 來源:https://api-docs.deepseek.com/news/news250528
|
||
|
||
2. **致命整合問題:Ollama registry 版本落後**:
|
||
- GitHub Issue #10935:「DeepSeek-R1 0528 models missing tool calling updates in Ollama registry」
|
||
- 多個社群報告:**Ollama 上的 deepseek-r1 仍是 0528 之前版本,chat template 沒含 tool-calling 區塊**,呼叫 `/api/chat` 帶 `tools` 參數時不會回傳結構化 `tool_calls`
|
||
- opencode Issue #2123 直接標題:「Ollama deepseek-r1 0528 doesn't support tool calling」
|
||
- 來源:https://github.com/ollama/ollama/issues/10935、https://github.com/sst/opencode/issues/2123
|
||
|
||
3. **Ollama 官方頁面標示 tools capability 屬「誤導」**:
|
||
- 雖然 https://ollama.com/library/deepseek-r1 頁面 capability tab 列出 tools,但實際 chat template 缺對應 jinja 區塊(社群已反覆驗證)
|
||
- 替代方案 `MFDoom/deepseek-r1-tool-calling:14b` 是社群修補版,但**非官方、無 SLA**
|
||
- 來源:https://ollama.com/MFDoom/deepseek-r1-tool-calling
|
||
|
||
4. **R1 推理模型的次要問題**:
|
||
- R1 是 reasoning model,先吐 `<think>...</think>` 段才出最終回答
|
||
- Nemotron 派遣場景需**毫秒級決策**,R1 thinking overhead(5-30 秒)對威脅分派 latency 不友善
|
||
- 即使 tool_calls 修好,也不適合作為派遣模型主力
|
||
|
||
### 🟡→🔴 結論:不建議切到 DeepSeek-R1
|
||
|
||
| 評估面 | DeepSeek-R1:14b(Ollama) | 風險 |
|
||
|--------|---------------------------|------|
|
||
| 官方 tool_calls | ✅ 0528 已支援 | — |
|
||
| Ollama 整合 | ❌ template 未同步 | 高 |
|
||
| 解析 fallback | ⚠️ 可用 content-only JSON 解析(程式碼 537-550 行已支援) | 中 |
|
||
| 推理延遲 | ❌ thinking 模式拖慢派遣決策 | 高 |
|
||
| 穩定性 | ⚠️ 官方文件自承「unstable, may loop or empty response」 | 高 |
|
||
|
||
### Plan B:改用 Qwen3-14B 做威脅分派
|
||
|
||
- Qwen3 系列**官方 tools capability 已驗證可用**(Ollama 頁面 + qwenlm 部落格)
|
||
- Qwen3 預設關閉 thinking mode(`enable_thinking=False` 走 fast path)
|
||
- 14B 體積與 deepseek-r1:14b 同級(9.3GB vs 9.0GB)
|
||
- BFCL 分數略低於 R1-0528 但仍在主流 agent 框架可接受範圍
|
||
|
||
### 替代候選清單
|
||
|
||
| 模型 | 體積 | tool_calls 成熟度 | thinking overhead | 建議 |
|
||
|------|------|--------------------|-------------------|------|
|
||
| **qwen3:14b** | 9.3GB | ✅ 官方 + Ollama 雙確認 | 可關閉 | **首選** |
|
||
| qwen3:8b | 5.2GB | ✅ 同上 | 可關閉 | 次選 |
|
||
| llama3.3:70b | ~40GB | ✅ 官方支援成熟 | 無 | 資源夠用此 |
|
||
| meta/llama-3.1-8b(NIM 現況) | — | ✅ 已穩定運作 | 無 | 維持原狀也可 |
|
||
| deepseek-r1:14b | 9.0GB | ❌ Ollama 整合斷層 | 30s | **不建議** |
|
||
|
||
### 維持 NIM 的可能性
|
||
若 NIM 配額痛點主因是「速率限制」而非「成本」,建議**先觀察 GCP Ollama 主機切換後的整體流量再決定**——可能 Hermes 走自建後,Nemotron 在 NIM 額度反而充裕。Phase 3 不必一次切兩條鏈。
|
||
|
||
---
|
||
|
||
## Section 3:Phase 10 Search API 額度比較
|
||
|
||
### 🟢 綠燈 — 免費額度遠超需求
|
||
|
||
**momo-pro 預估流量**:6 calls/day × 30 = **180 calls/月**
|
||
|
||
### 三家比較表(2026-05 最新)
|
||
|
||
| 廠牌 | 免費額度(每月) | 需信用卡 | 超出單價 | 註冊 URL | 地區限制 | momo-pro 月成本 |
|
||
|------|------------------|----------|----------|----------|----------|------------------|
|
||
| **Tavily** | **1,000 credits**(≈1,000 次基礎 search) | ❌ 不需 | $0.008/credit(PAYGO) | https://www.tavily.com/ | 無限制(全球) | **$0**(180 < 1000) |
|
||
| **Exa** | **1,000 credits** | 註冊需 email;付費才需卡 | $7/1k(standard)、$12/1k(agentic) | https://exa.ai/ | 無限制 | **$0**(180 < 1000) |
|
||
| **Brave Search** | ❌ 已取消免費 tier(2026-02-12 起) | ✅ 需信用卡 | $5/1k requests(含每月 $5 = ~1k 免費 credits) | https://api-dashboard.search.brave.com/ | 無限制 | **$0**(180 次落在 $5 免費信用內,但需綁卡) |
|
||
|
||
### 關鍵變動警示
|
||
|
||
⚠️ **Brave 政策大改(必知)**:
|
||
> 「Brave removed its free Search API tier on February 12, 2026, replacing the zero-cost plan available since May 2023 with a credit-based billing system that charges $5 per thousand requests.」
|
||
|
||
新用戶**必須綁信用卡**才能拿到每月 $5 credit(≈1000 次)。先前 5000 queries/月免費方案僅保留給舊用戶。
|
||
- 來源:https://www.implicator.ai/brave-drops-free-search-api-tier-puts-all-developers-on-metered-billing/
|
||
|
||
⚠️ **Exa 漲價(2026-03)**:
|
||
> 「standard search from $5/1k to $7/1k, introducing an Agentic tier at $12/1k」
|
||
- 來源:https://exa.ai/docs/changelog/pricing-update
|
||
|
||
### 結論與建議
|
||
|
||
**主備援組合:Tavily(主) + Exa(備)**
|
||
|
||
理由:
|
||
1. **Tavily 免費額度最大方** — 1000 credits/月、不要卡,180 calls 用量僅 18% 占用率,**可承受 5x 流量增長**
|
||
2. **Exa 做雙保險** — 同免費額度,神經網路語義搜尋 (neural search) 對「競品深度報導/長文」這種 momo-pro 情境略強
|
||
3. **Brave 不推薦** — 強制綁卡 + 額度與 Tavily 同級,沒有差異化優勢,且 2026 政策變動證明風險偏高
|
||
|
||
**月成本估算**:
|
||
- 基礎情境(180 calls/月,主走 Tavily):**$0**
|
||
- 5x 流量(900 calls/月,仍主走 Tavily):**$0**
|
||
- 10x 流量(1800 calls/月,溢出 800 走 Exa 補):**$0**(雙家免費額度合計 2000)
|
||
- 20x 流量(3600 calls/月,溢出 1600 → Tavily PAYGO):**$12.80/月**
|
||
|
||
**註冊優先順序**:
|
||
1. 先註冊 Tavily(無卡片門檻最低)
|
||
2. 同步註冊 Exa 做備援
|
||
3. Brave 暫不申請(除非 Tavily/Exa 出現品質問題)
|
||
|
||
---
|
||
|
||
## Sources(完整引用清單)
|
||
|
||
### Section 1 — Qwen 替代品質
|
||
- [Qwen2.5 Technical Report (arXiv 2412.15115)](https://arxiv.org/pdf/2412.15115)
|
||
- [Qwen3 Technical Report (arXiv 2505.09388)](https://arxiv.org/pdf/2505.09388)
|
||
- [Qwen3 Blog — Think Deeper, Act Faster](https://qwenlm.github.io/blog/qwen3/)
|
||
- [Ollama qwen3 model registry](https://ollama.com/library/qwen3)
|
||
- [Artificial Analysis — Gemini 2.5 Flash vs Qwen2.5-72B](https://artificialanalysis.ai/models/comparisons/gemini-2-5-flash-reasoning-vs-qwen2-5-72b-instruct)
|
||
- [TMMLU+ — Improved Traditional Chinese Eval Suite (arXiv 2403.01858)](https://arxiv.org/html/2403.01858v1)
|
||
- [HKMMLU — Hong Kong MMLU (arXiv 2505.02177)](https://arxiv.org/html/2505.02177)
|
||
- [Qwen3.5-Flash vs Gemini 2.5 Flash-Lite Pricing](https://awesomeagents.ai/tools/qwen-3-5-flash-vs-gemini-flash-lite/)
|
||
- [Self-hosted RAG TCO Analysis (Medium)](https://ioannisp.medium.com/the-real-cost-of-self-hosted-rag-benchmarking-cpu-vs-h100-vs-gemini-3-0-flash-db8f59642435)
|
||
|
||
### Section 2 — DeepSeek-R1 tool_calls
|
||
- [DeepSeek-R1-0528 Release Notes (Official)](https://api-docs.deepseek.com/news/news250528)
|
||
- [DeepSeek Function Calling Docs](https://api-docs.deepseek.com/guides/function_calling)
|
||
- [Ollama Issue #10935 — R1 0528 missing tool calling updates](https://github.com/ollama/ollama/issues/10935)
|
||
- [opencode Issue #2123 — Ollama deepseek-r1 0528 no tool calling](https://github.com/sst/opencode/issues/2123)
|
||
- [Ollama deepseek-r1 model registry](https://ollama.com/library/deepseek-r1)
|
||
- [MFDoom community tool-calling fork](https://ollama.com/MFDoom/deepseek-r1-tool-calling)
|
||
- [SambaNova — Function Calling on DeepSeek-R1](https://sambanova.ai/blog/supercharging-ai-agents-with-function-calling-on-deepseek)
|
||
- [BAML — Structured outputs with DeepSeek-R1](https://boundaryml.com/blog/deepseek-r1-function-calling)
|
||
|
||
### Section 3 — Search APIs
|
||
- [Tavily Pricing (Official)](https://www.tavily.com/pricing)
|
||
- [Tavily API Credits Doc](https://docs.tavily.com/documentation/api-credits)
|
||
- [Brave Search API Pricing (Official)](https://api-dashboard.search.brave.com/documentation/pricing)
|
||
- [Brave Free Tier Removal Coverage (Implicator)](https://www.implicator.ai/brave-drops-free-search-api-tier-puts-all-developers-on-metered-billing/)
|
||
- [Exa API Pricing (Official)](https://exa.ai/pricing)
|
||
- [Exa 2026-03 Pricing Update](https://exa.ai/docs/changelog/pricing-update)
|
||
|
||
---
|
||
|
||
## 給 Phase 3+10 規劃者的重點摘要
|
||
|
||
1. **Phase 3 OpenClaw Q&A**:用 `qwen3:14b` 取代 `gemini-2.5-flash`,**必須**配 Gemini fallback + 繁中黃金集 A/B 驗證;prompt 加繁中強制指令。
|
||
2. **Phase 3 Nemotron 派遣**:**不要切 DeepSeek-R1**(Ollama integration 斷層 + thinking 延遲);改評估 `qwen3:14b`,或維持 NIM Llama-3.1 觀察一段時間。
|
||
3. **Phase 10 Search**:Tavily(主)+ Exa(備)雙免費註冊;**避開 Brave**(2026-02 取消免費 tier)。預估月成本 $0。
|
||
4. **共通注意**:所有結論基於 2026-05 公開資料,Ollama deepseek-r1 chat template 同步狀況請於正式切換前重新驗證一次(GitHub Issue 仍 open 中)。
|
||
|
||
---
|
||
|
||
[P7-COMPLETION]
|
||
任務: Phase 0 三大替代決策可行性查證
|
||
方案: WebSearch + WebFetch 並行查證 9 條官方/第三方來源;產出單一 markdown
|
||
變更: docs/phase0_research_report_20260503.md(新檔,純文件)
|
||
影響: 無程式碼變更;輸出供 Phase 3 + Phase 10 規劃決策參考
|
||
自審:
|
||
- 方案正確: 是;引用全為官方文件 + 2026 內 GitHub Issue + arXiv,無訓練資料記憶
|
||
- 影響完整: 是;三任務各給紅綠燈 + Plan B + 月成本/月風險量化
|
||
- Regression 風險: 無(純文件)
|
||
剩餘風險:
|
||
- Section 1 Qwen3-14B vs Gemini 2.5 Flash 無 1:1 benchmark,差距為推估(10-20%),實切前必跑黃金集 A/B
|
||
- Section 2 Ollama deepseek-r1 chat template 同步狀態為動態 issue,建議切換前一週重驗
|
||
- 部分 LLM-stats / blog 類來源可信度低於官方,已盡量交叉比對至官方一手出處
|