跳至主要內容
PHUA MEDIA

生活

打一句「傍晚的海邊」,圖庫真的把那張照片端出來了:本機語意搜尋實戰,為何在掘金被圍觀

生活 現象觀察
刊登:(台北時間) 閱讀約 4 分鐘

開發者在掘金分享接上藍耘元生代的本機圖庫語意搜尋實戰,讓「傍晚的海邊」這種人話搜得出圖,本文回顧這篇技術文的分層思路與社羣討論樣貌。

這篇文章回顧的是 2026 年 9 月 20 日發表於掘金的一篇技術實戰文。作者是「一隻牛博」,題目很直白:接上藍耘元生代的模型服務,讓本機圖庫能用一句人話搜圖。將近一個月後回頭看,它之所以值得再聊,是因為它踩中了一個幾乎人人都有、卻很少被認真對待的痛點。

痛點不在存,在找

先把那個畫面補上。手機裡幾千張照片,檔名清一色是 IMG_2043 這種編號,資料夾按月份分好,看起來很有秩序。真要找「那張傍晚拍的、有山有海」的照片,唯一的辦法還是一張張滑過去。作者自述曾為了一張封面圖翻了十幾分鐘,最後挑出來的還是張湊合的。

這個經驗太普遍了。相簿 App 的搜尋多半靠拍攝時間、地點或人臉分組,對畫面內容的理解有限。你記得的是光線、氛圍、構圖,系統給你的是日期與座標,兩邊講的根本是不同的語言。

作者的目標因此很具體:一個跑在本機的圖片庫,索引一遍之後,輸入一句人話,就能把目標圖撈出來。要搜的是畫面內容而非檔名,這一條決定了整條流程必須有模型參與,因為畫面裡的語意,用本機規則寫不出來。

模型只佔兩層,其餘全留本地

這篇文最耐讀的地方,是那張分層表。作者把整條流程拆開:目錄遍歷、內容雜湊去重、長邊壓縮、生成縮圖,這些全留本地,因為模型看不見檔案系統,讓它做純檔案 IO 毫無意義。看圖產出描述與標籤交給視覺模型;把「傍晚」這種搜尋詞拆成檢索條件交給文字模型;最後的匹配、打分、排序又回到本地,因為手上已經是結構化資料,精確匹配比讓模型憑記憶回想可靠得多。

一句話總結這套判斷:能精確算出來的不交給模型,必須理解語意的才發出去。一件事落在哪一層,看的是它能不能用規則寫清楚,而非哪個做法聽起來更先進。

這種「本地優先、模型只補語意」的思路,其實和近期另一波工具潮流同聲同氣。先前我們介紹過那支把隱私留在手機裡的截圖打碼工具,同樣是把重活留在本機、把需要智慧的部分隔離出去。差別在於打碼工具完全離線,而圖庫語意搜尋的非本地部分,得靠外部模型服務。

接入只動三個值

技術上最讓圍觀者意外的,大概是接入的輕。作者選的是藍耘元生代(maas.lanyun.net)的模型服務,理由說得很實在:看圖要多模態模型,拆句子要文字模型,本來就是兩類模型,而這個平臺一份憑證、一個介面地址就能把兩類都調起來,不必為視覺和文字各維護一套鑑權、各記一本帳。

整個 config 裡與接入相關的只有幾行:API Key、位址,加上視覺模型與文字模型各一個名稱,預設分別是 qwen3.5-omni-plus 與 qwen3.8-max。介面走 OpenAI 相容協定,客戶端直接用現成程式庫。兩個模型在程式碼裡唯一的差別是 model 參數傳哪個字串,將來想換模型,改的是設定檔裡的一行,不用動呼叫點。憑證只從環境變數讀,容器注入的設定優先級更高,倉庫裡留一份 .env.example 當範本。

壓縮是投資報酬率最高的一步

發給視覺模型的是壓縮後的圖,不是原圖。圖片輸入的 token 量與像素面積大致成正比,所以本地先壓一次,傳的東西變小,模型要看的像素也變少。壓縮與縮圖是同一個動作,順手把介面要用的預覽圖也一起生出來,一次 IO 辦兩件事。圖以 base64 塞進 image_url,配上提示詞發出去,回來的就是畫面描述與標籤,落庫建索引,之後全部走本地精確檢索。

這個順序聽起來平淡,卻是整條鏈上花最少力氣、省最多成本的一步。許多人在評論區的共鳴也在這裡:不是模型不夠強,是沒先想清楚送什麼給它。

圍觀者在意的是那條邊界

把這篇文放回掘金的討論脈絡看,它真正引發議論的不是某個模型的名字,而是那條「本地與模型」的邊界怎麼畫。作者在文末也坦承有些地方至今不好用,這種把限制攤開來寫的誠實,反而讓文章比一般展示型 demo 更有說服力。

對一般使用者來說,這篇文的意義也簡單:那句「傍晚的海邊」不再只存在你的記憶裡,它可以被翻譯成標籤、落進索引、在幾秒內變成一張縮圖。相簿的未來大概就是這樣,不是更會歸檔,而是終於聽得懂人話。

主題: 社群現象

標籤: #藍耘元生代+本機圖庫語意搜尋#多模態模型+生活工具#掘金技術文+社羣現象