你手机里存了上万张照片。想找一张“去年夏天在海边拍的日落”,手指上上下下划了五分钟,看花了眼——最后发现那张图被你存成了一个默认文件名:IMG_4521.jpg。
不是你不会整理,是传统的相册只认得两种信息:时间和地点。它们看不见照片里的内容。于是你要么一边翻一边赌记忆,要么干脆把照片全上传到 Google Photos——让云端的 AI 替你“看懂”,但同时,你也把自己的生活细节交了出去。
有没有一种办法,既能让电脑像人一样理解你的照片,又不必把隐私丢进别人的服务器里?
有。用开源多模态模型 Gemma 4,在你的电脑上搭建一个真正的本地智能相册。
让模型当你的“照片解说员”
Gemma 4 是 Google 在 2026 年放出的开源多模态模型。所谓“多模态”,简单说就是它既能读文字,也能“看”图片——给它一张照片,再丢进去一句话,它就能回答照片里有什么。
你可以把它想象成一个刚招进家的私人管家:你递过去一张照片,问“这张照片里有什么?”它会告诉你:“一张木桌上摆着半杯咖啡,窗外是阴天的街道,画面色调偏冷。”这不就是最精准的图片标签吗?
而且,Gemma 4 有两个版本:大杯(31B 参数)性能更强但需要高端显卡;小杯(4B 参数)更亲民,在普通笔记本上就能跑起来。我们当然选小杯——对整理相册来说,它已经够用了。
三步搭起来:安装 → 描述 → 搜索
第一步:装一个模型运行器
让 Gemma 4 在本地跑起来,最简单的方式是用 Ollama。它是一个一键部署大模型的工具,截止目前最新版本是 0.24.0。你可以在它的官网下载安装程序,和装一个普通软件没区别。
装完之后,打开终端(Windows 用户打开命令提示符),一句话把模型拉下来:
ollama pull gemma4:4b
这条命令会下载 Gemma 4 的小杯版(约 4B 参数),下载量大约几个 GB,取决于你的网速。拉完之后,模型就安静地住在你的硬盘上了,不需要联网就可以用。
第二步:让模型给每张照片写“说明”
接下来写一小段 Python 脚本,让它自动遍历你的照片文件夹,为每一张图片生成一段文字描述。别被“写脚本”吓到,下面的代码你复制粘贴改个文件夹路径就能用。
import ollama
import os
import json
photo_folder = "./我的照片" # 改成你存放照片的文件夹
descriptions = {}
for file_name in os.listdir(photo_folder):
if file_name.lower().endswith(('.png', '.jpg', '.jpeg')):
full_path = os.path.join(photo_folder, file_name)
# 把图片传给模型,让它描述内容
response = ollama.chat(
model='gemma4:4b',
messages=[{
'role': 'user',
'content': '请详细描述这张照片里的内容,包括场景、人物、主要物品和光线氛围。',
'images': [full_path]
}]
)
descriptions[file_name] = response['message']['content']
print(f"✅ 已完成:{file_name}")
# 保存成 JSON 文件,以便以后搜索时直接读取
with open('photo_descriptions.json', 'w', encoding='utf-8') as f:
json.dump(descriptions, f, ensure_ascii=False, indent=2)
这段代码干的事情很简单:把所有图片挨个递给 Gemma 4,让它“看图说话”,然后把每张图的描述攒成一个字典,存进 photo_descriptions.json 文件里。
运行之后,你会得到类似这样的结果:
{
“IMG_4521.jpg”: “黄昏时分的海滩,橙红色天空下波浪平缓,远处有几个人影,前景是一双拖鞋。”,
“IMG_4806.jpg”: “一只橘猫趴在沙发上打盹,旁边是一本摊开的书,室内光线柔和。”
}
这个过程,本质上就是在给每张照片自动贴上有意义的“内容标签”,只不过标签不是几个词,而是一整句自然语言描述。
第三步:用关键词把照片“搜”出来
有了描述文件,一个最简单的搜索工具就已经成形了:
def search_photos(query, descriptions):
results = []
for file_name, desc in descriptions.items():
if query in desc:
results.append(file_name)
return results
# 搜索“日落”
with open('photo_descriptions.json', 'r', encoding='utf-8') as f:
desc_data = json.load(f)
print(search_photos("海", desc_data))
输入“日落”,IMG_4521.jpg 立刻就会被揪出来。因为它的描述里明确写着“黄昏时分的海滩”。
如果想更“聪明”一点,比如搜“宠物”也能找到那张猫的照片,哪怕描述里写的是“橘猫”,那你可以在保存描述时同时生成标签,或者引入简单的词向量搜索(用 ChromaDB 这样的本地向量库)。但对个人使用而言,关键词匹配已经可以解决 80% 以上的需求了。
这意味着什么
不用这个方案,大多数人的选择会是两种:要么继续靠日期滚动,忍受大海捞针式的翻找;要么把照片交给云服务——Google Photos 确实好用,但你的每一次搜索,每一次“回忆推送”,都建立在所有照片明文躺在别人服务器上的前提下。
而本地智能相册把你的数据圈在了自家硬盘里。Gemma 4 这个小杯模型跑起来只需要 8GB 内存,如果你有 4GB 以上显存的显卡,处理一张照片大约 2~3 秒;如果没有显卡,纯 CPU 推理一张可能要 10 秒以上,慢,但依然能跑完。
当然,它不是魔法。4B 参数的小模型偶尔会犯错——把秋田犬说成柴犬,或者描述不出画面里极端的细节。但它提供的,是一个零隐私代价、零月费、完全可定制的起点。
下一次你想找那张日落照片,不用再赌自己是哪一天拍的了。问一句“去年夏天海滩日落”,你的相册就会把它递到你面前——它一直都知道答案,只是以前没人替它说出来。
