# 向量數據存放狀況報告

**作者**：M4  
**日期**：2026-05-06  

---

## 1. 向量儲存方案總覽

Momentry 使用三種向量儲存方案：

| 方案 | 用途 | 維度 |
|------|------|------|
| **Qdrant** | 即時向量搜尋（face / voice / visual chunk） | face=512, voice=192, chunk=1024 |
| **pgvector** (PG extension) | 持久化向量儲存、identity 比對 | 多種維度 |
| **chunk_vectors** (PG table) | chunk embedding 快取 | 768 (nomic) / 1024 (mxbai) |

---

## 2. Qdrant（即時向量搜尋）

| Collection | M4 | M5 |
|-----------|-----|------|
| **Qdrant 服務** | ❌ 未執行 | ✅ port 6333 |
| `momentry_dev_face` | — | ✅ 64 points (512D) |
| `momentry_dev_voice` | — | ❌ **不存在** ← pipeline 失敗根因 |
| 其他 collection | 無 | 無 |

---

## 3. pgvector（PostgreSQL 內建向量）

### 3.1 向量欄位一覽

| Schema | Table | Column | Dim | M4 rows | M5 rows |
|--------|-------|--------|-----|---------|---------|
| dev | face_detections | embedding | **512** | **12,397** (100%) | **12,397** (100%) |
| dev | identities | embedding | ? | 41 (0 filled) | 41 (0 filled) |
| dev | identities | face_embedding | ? | 41 (12 filled) | 41 (12 filled) |
| dev | identities | voice_embedding | ? | 41 (0 filled) | 41 (0 filled) |
| dev | identities | identity_embedding | ? | 41 (0 filled) | 41 (0 filled) |
| dev | chunks | embedding | ? | 10,546 (**0%**) | 0 |
| public | face_detections | embedding | ? | — | ? |
| public | face_clusters | centroid | ? | — | ? |
| public | face_identities | embedding | ? | — | ? |
| public | identities | (4 cols) | ? | ? | ? |
| public | talents | face_embedding | ? | — | ? |
| public | talents | voice_embedding | ? | — | ? |

### 3.2 重點發現

#### ✅ face_detections（最完整）
- M4 + M5 各 **12,397 筆**，全部有 512D embedding
- 覆蓋 **2,347 個 trace** / **2 個 file_uuid**
- 這是目前最完整的向量資料集

#### ❌ chunks.embedding（完全空白）
- M4：**10,546 筆 chunks，0 筆有 embedding** (0%)
- M5：chunks 為 0（Rule 1 未觸發）
- chunk 向量從未被寫入 pgvector

#### ⚠️ identities 向量（部分空白）
- 41 個 identity，**12 個有 face_embedding**（TMDb 產生）
- **0 個有 voice_embedding 或 identity_embedding**

---

## 4. chunk_vectors（PG 傳統 table）

| 項目 | M4 | M5 |
|------|-----|-----|
| Table | `public.chunk_vectors` | ❌ 不存在 |
| Total rows | 1,870 | — |
| Embedding dim | **3 ~ 768**（混雜） | — |
| 說明 | test123 (3D) + nomic-embed-text (768D) | M5 未建立 |

---

## 5. 綜合問題

### 🔴 Critical
1. **Qdrant `momentry_dev_voice` 不存在** — ASRX panic，pipeline 阻塞
2. **chunks.embedding 完全空白** — Rule 1 chunks 無向量，semantic search 無資料可查

### 🟡 Medium
3. **M4 Qdrant 未執行** — M4 無法做任何 vector search
4. **vector 維度不一致** — 現有 768D (nomic) vs 目標 1024D (mxbai)
5. **chunk_vectors table 位置混亂** — M4 在 public, M5 不存在

### 🟢 Low
6. **identities 向量不完整** — voice_embedding / identity_embedding 完全空白
7. **Qdrant face collection 資料異常** — 64 points 但 vectors_count=0

---

## 6. 建議順序

1. 建立 Qdrant `momentry_dev_voice` collection (192D) — 解 pipeline 阻塞
2. 用 mxbai-1024D 為 chunks 產生 embedding，寫入 `dev.chunks.embedding`
3. M4 啟動 Qdrant
4. 重建 Qdrant face collection (512D) 並 sync
5. 清理 `public.chunk_vectors` 中 3D 測試資料
