M4: bug report - smart search still uses Ollama/mxbai
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
# Bug: Smart Search 未遷移至 EmbeddingGemma
|
||||
|
||||
## 發現時間
|
||||
|
||||
2026-05-08 ~01:00(release 前驗證)
|
||||
|
||||
## 症狀
|
||||
|
||||
`POST /api/v1/search/smart` 回傳 0 筆結果。
|
||||
|
||||
Smart search 流程:
|
||||
1. `get_ollama_embedding()` → 呼叫 Ollama(port 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 server(port 11436) |
|
||||
Reference in New Issue
Block a user