本地索引一年的影片:在舊款 Apple Silicon 上利用 Gemma 4 31B
對於許多攝影師和內容創作者來說,檔案庫正成為一種日益增加的負擔。隨著影片素材從 iPhone、無人機到專業無反光鏡相機,累積在多個 SSD 和裝置上的檔案不斷增加,瓶頸已從捕捉內容轉變為尋找特定瞬間時產生的巨大認知負荷。當你的檔案被命名為 IMG_1103.MOV 並儲存在像 Mara june 2024 backup final FINAL 這樣的資料夾中時,檔案庫就變成了一個黑洞。
大多數 AI 影片編輯器試圖透過提供迭代編輯或生成式 B-roll 工具來解決此問題。然而,這些工具假設影片素材已經過標籤化。真正的問題不在於編輯,而在於索引。為了達成這個目標,一位工程師使用 2021 年的 M1 Max MacBook Pro 和 Gemma 4 31B 模型,建立了一個「本地優先」的索引流程,將一年的未標籤影片轉化為可透過英文查詢的搜尋able 數據庫。
本地索引的架構
為了避免將數 TB 的個人與專業影片素材上傳到雲端的成本與隱私疑慮,該系統採用了「本地優先」的設計理念。目標是建立一個「側邊欄」系統:為每個片段建立一個 .description.md 檔案,並與原始檔案並存,確保數據具有可移植性且可使用 grep 進行搜尋。
處理流程
該流程使用一系列專業工具,在將視覺數據傳遞給大型語言模型 (LLM) 之前,先提取所有可能的元數據 (metadata):
- 元數據提取:
ffprobe處理技術元數據,而exiftool則提取 GPS 座標和高度。 - 地理編碼: 透過 Nominatim 將 GPS 數據轉換為人類可讀的地點。
- 視覺採樣:
ffmpeg以 1920px 解析度提取五個間隔均勻的影格,用以代表該片段。 - 音訊轉錄: WhisperX 提供支援 97 種語言的單字級對齊與說話者分類。
- 人臉識別:
insightface偵測人臉並將 512 維的 ArcFace 嵌入向量儲存在中央 SQLite 資料庫中,以便進行跨檔案庫的人員查詢。 - 視覺分析: 視覺模型(透過 LM Studio 使用 Gemma 4 31B)分析影格、轉錄文本與資料夾上下文,以生成結構化的 YAML frontmatter 和一段散文式描述。
硬體挑戰:M1 Max 與 50GB 的 Swap
這次建置中最令人驚訝的面向之一是這台五年前的 M1 Max (64GB RAM) 的效能表現。雖然 Gemma 4 31B Q4 模型大約佔用 28GB 記憶體,但大規模的索引過程將系統推向了極限,導致超過 50GB 的 swap 使用量。
雖然由於 SSD 損耗,日常使用通常不建議進行大量 swap,但作者指出,對於短期、高強度的專案,M1 Max 的統一記憶體架構與高記憶體頻寬使其變得可行。正如一位社群成員所言,在 x86 架構上達到類似程度的 swap 使用量,可能會導致推論速度慢到無法使用。
建置經驗教訓
使用 Claude Code 作為主要協調工具來建置此系統,揭示了關於部署本地 LLM 的幾個關鍵技術教訓:
1. 使用列舉 (Enums) 而非指令
開放式的散文提示詞容易產生「幻覺」(confabulation)。例如,如果模型誤解了室內照明,它可能會將夜間場景描述為「光線充足」。透過強制模型從嚴格的列舉值中進行選擇(例如 golden_hour | bright_daylight | nighttime | unclear),可以將模型限制在一組有效的選項中,從而顯著提高準確度。
2. 「篩選」邏輯
在攝影中,「篩選」(culling) 是非常激進的(移除模糊或對焦不準的畫面)。但在影片回憶中,「篩選」必須是寬容的。一段手持、模糊的摩托車行駛片段可能在技術上很「差」,但在情感上卻很有價值。因此,系統被重新定義為僅篩選「非紀錄內容」(如鏡頭蓋、口袋裡的畫面),而非不完美的捕捉。
3. 處理靜默失敗
在編寫類似 Claude CLI 的 AI 工具腳本時,非互動模式可能會將權限錯誤回傳為成功回應(exit code 0)。實施防禦性檢查——例如針對「I need permission」進行字串比對——對於防止流程將錯誤訊息而非描述填入索引中至關重要。
策略性啟示:索引是先決條件
這個專案的核心洞察是,目前的 AI 影片編輯市場定位「過於高層次」。大多數工具都專注於於編輯的表面層次,但真正的價值在於索引。
一旦檔案庫可以透過簡單的英文進行查詢——例如,「show me handheld interior clips from Mara, golden hour, with people, longer than 8 seconds」——實際的編輯就變成了一個薄且直接的層次。透過先建立索引,作者將一個龐大且停滯的檔案庫轉化為了一項功能性資產,證明了本地 31B 模型現在已足以處理以往屬於昂貴雲端 API 的大規模檔案歸檔工作。