M4: bug report - smart search still uses Ollama/mxbai

This commit is contained in:
Warren
2026-05-08 01:22:31 +08:00
parent 64cce1b2b4
commit b577f5b3bc

View File

@@ -0,0 +1,63 @@
# Bug: Smart Search 未遷移至 EmbeddingGemma
## 發現時間
2026-05-08 ~01:00release 前驗證)
## 症狀
`POST /api/v1/search/smart` 回傳 0 筆結果。
Smart search 流程:
1. `get_ollama_embedding()` → 呼叫 Ollamaport 11434→ ❌ Ollama 已停用
2. `search_parent_chunks_semantic()` → pgvector → 因 embedding 失敗而不執行
## 根因
`src/api/search.rs:160-186``get_ollama_embedding()` 未隨 embedding 模型遷移更新。
## 受影響程式碼
`src/api/search.rs` lines 160-186
```rust
async fn get_ollama_embedding(text: &str) -> Result<Vec<f32>, ...> {
let payload = serde_json::json!({
"model": "mxbai-embed-large", // ← 舊模型en only
"prompt": text
});
let res = client
.post("http://localhost:11434/api/embeddings") // ← Ollama 已停用
.send().await?
...
}
```
## 建議修正
改用 `comic_embed.rs``Embedder`(已支援 OpenAI API + 768D EmbeddingGemma
```rust
// 改用 Embedder與其他模組一致
use crate::core::embedding::comic_embed::Embedder;
let embedder = Embedder::new("embeddinggemma-300m".to_string());
let embedding = embedder.embed_query(text).await?;
```
或者直接使用 `state.embedder`server.rs 已初始化):
```rust
// line 55 改為
let embedding = state.embedder.embed_query(&req.query).await
.map_err(|e| ...)?;
```
## 相關檔案
| 檔案 | 說明 |
|------|------|
| `src/api/search.rs:160-186` | 需修改的 `get_ollama_embedding()` |
| `src/api/search.rs:47-63` | `smart_search()` 中呼叫 embedding 的位置 |
| `src/core/embedding/comic_embed.rs` | 現行 Embedder支援雙 API 格式) |
| `scripts/embeddinggemma_server.py` | EmbeddingGemma HTTP serverport 11436 |