# Embedding 效能評估報告：Ollama vs llama.cpp

**作者**：M4  
**日期**：2026-05-07  
**測試環境**：M5 (192.168.110.201, Apple M5 Max, 48GB)  

---

## 測試結果

| 方案 | Model | Dim | short (11B) | medium (46B) | long (1000B) | RAM |
|------|-------|-----|------------|-------------|-------------|-----|
| **llama.cpp** | bge-m3 (Q8_0, 605MB) | 1024 | **42ms** | **50ms** | **152ms** | ~1.2GB |
| **Ollama** | mxbai-embed-large (669MB) | 1024 | **50ms** | **46ms** | **145ms** | ~1.3GB |

---

## 結論：效能幾乎相同

兩者 latency 差異在 ±10ms 內，對實際使用無感。

## 建議：使用 Ollama

| 考量 | Ollama | llama.cpp |
|------|--------|-----------|
| 效能 | ✅ 略同 | ✅ 略同 |
| 設定複雜度 | ✅ 一行指令 | ❌ 需另開 server + port |
| 現有整合 | ✅ `comic_embed.rs` 已支援 | ❌ 需改 code |
| 模型管理 | ✅ `ollama pull` | ❌ 手動下載 GGUF |
| 多模型支援 | ✅ 多模型同服務 | ⚠️ 每個模型需不同 port |
| 5W1H LLM | ❌ 不適用 | ✅ 可用 Gemma4(8081) |

**結論**：維持 Ollama 做 embedding。Ollama 已整合進現有 codebase、模型管理方便，效能與 llama.cpp 無顯著差異。bge-m3 可作為 multilingual 備選方案。

已在 M5 安裝好 llama.cpp bge-m3 embedding server（port 8082），如需交叉驗證可隨時使用。
