[控场AI]
· 5 分钟阅读· 2,691 字

EmbeddingGemma 2 浏览器端图文检索:WebGPU 本地推理实践

EmbeddingGemma 2 浏览器端图文检索:WebGPU 本地推理实践

EmbeddingGemma 2 图文嵌入模型借助 WebGPU 推理库 ruNNtime,实现纯浏览器本地的照片语义搜索。

EmbeddingGemma 2 将图像和文本映射到同一个 768 维向量空间,使自然语言搜索照片成为可能。更值得关注的是其运行方式:开发者将该模型的文本塔与视觉塔移植到 ruNNtime——一个基于 WebGPU、用 TypeScript 编写的浏览器推理库,让整个图文检索过程完全在用户本地 GPU 上完成,无需后端服务器。这一组合带来了低部署成本、天然隐私保护和零门槛试用等实际优势。ruNNtime 还支持多种视觉模型,并提供交互式文档供开发者直接试用。这个项目折射出更广泛的技术趋势:随着 WebGPU 成熟,端侧 AI 正从手机和桌面程序延伸至网页,嵌入模型成为浏览器推理最易落地的切入点。

EmbeddingGemma 2 把图像与文本放进同一个语义空间

多模态检索的核心难题,是如何让「一张照片」和「一句描述」在计算层面变得可比较。EmbeddingGemma 2 给出的方案是把图像和文本统一映射到一个 768 维的共享向量空间。换句话说,当你用自然语言描述一张照片时,模型会把这句话转成向量,再在同一空间里寻找距离最近的图像向量——这就是图文检索(image-text retrieval)的基本逻辑。

这种共享嵌入空间的设计并不新鲜,CLIP 系列早已验证过其有效性,但 EmbeddingGemma 2 的意义在于它把这套能力做进了 Gemma 生态,并且同时提供了文本塔(text tower)和视觉塔(vision tower)两部分,让开发者可以分别调用,灵活组合成检索、分类或语义搜索等应用。

reddit source: Image-text retrieval with EmbeddingGemma 2's vision tower, running in the browser on WebGPU

CLIP(Contrastive Language–Image Pre-training)由 OpenAI 于 2021 年提出,核心思路是用大规模图文对做对比学习:训练时让匹配的图文对在向量空间中相互靠近,让不匹配的对相互远离。这种训练方式使模型天然学到跨模态的语义对齐,而不需要为每个下游任务单独标注数据。之后 SigLIP、ALIGN 等变体进一步优化了训练效率和检索精度,共享嵌入空间已成为多模态检索的标准范式。EmbeddingGemma 2 沿用了这一思路,并将其整合进 Google 的 Gemma 开源模型家族,意味着开发者可以在同一生态内同时获得语言模型能力与多模态检索能力,减少跨框架集成的摩擦。

真正的亮点:全程跑在浏览器 GPU 上

这个项目最值得关注的地方,不是模型本身,而是运行方式。开发者把 EmbeddingGemma 2 的文本塔和视觉塔移植到了 ruNNtime——一个用 TypeScript 编写、基于 WebGPU 的推理库,并据此做了一个小型照片画廊 demo。整个检索过程完全在用户本地的 GPU 上完成,不经过任何服务器。

这意味着几件实际的事情。推理无需后端支持,部署成本极低,一个静态页面即可承载完整的 AI 搜索功能;用户的照片数据不离开本地设备,天然具备隐私优势;同时也降低了试用门槛——打开网页就能体验,不需要安装环境或申请 API Key。

WebGPU 作为新一代浏览器图形与计算 API,相比早期的 WebGL,提供了更接近原生的计算能力,正逐渐成为前端运行机器学习模型的现实选择。ruNNtime 这类库的出现,正是在填补「浏览器里跑真实模型」这条路径上的工程空白。

WebGPU 是 W3C 标准化的新一代 Web 图形与通用计算 API,2023 年起在 Chrome、Edge 等主流浏览器中默认启用。与此前广泛用于浏览器机器学习的 WebGL 相比,WebGPU 暴露了更底层的 GPU 计算原语(Compute Shader),支持更通用的并行计算而不局限于图形渲染管线,在矩阵乘法等神经网络核心操作上性能更接近原生。此前的 ONNX Runtime Web、TensorFlow.js 等库已部分支持 WebGPU 后端,ruNNtime 则是专门围绕 WebGPU 计算能力设计的推理库,以 TypeScript 原生方式管理 GPU 资源,无需 WASM 或 Native 插件作为中间层。

ruNNtime:面向浏览器的 WebGPU 推理库

除了 EmbeddingGemma 2,ruNNtime 还支持多种视觉类模型,并在交互式文档中提供了可直接把玩的示例。项目地址为 github.com/software-mansion/runntime。

对开发者而言,ruNNtime 的价值在于用 TypeScript 这一前端主流语言封装了底层的 WebGPU 推理细节。相比把模型部署在云端再通过 API 调用,纯前端方案在交互延迟、离线可用性和数据隐私上都有独到之处,尤其适合图片语义搜索、本地相册管理这类对隐私敏感的场景。

适用场景的边界

需要客观看待的是,浏览器端推理并非万能。受限于设备 GPU 性能、模型加载时的网络开销以及内存占用,这类方案目前更适合中小规模的嵌入模型和检索任务,而非大参数量的生成式模型。EmbeddingGemma 2 作为嵌入模型,参数规模相对可控,恰好落在 WebGPU 能够胜任的区间内,这也是它适合做浏览器 demo 的原因之一。

浏览器端推理的内存瓶颈通常来自两方面:模型权重本身的大小,以及推理过程中的激活值缓存。目前主流浏览器对单个 GPU Buffer 的大小有限制,且设备显存远小于服务器 GPU,这使得超过数十亿参数的生成式模型在浏览器中运行仍面临较大挑战。嵌入模型(Embedding Model)的任务只需把输入映射为固定维度向量,不涉及自回归解码,因此推理时序列长度短、内存需求低,是目前浏览器端 AI 落地最顺畅的模型类别之一。此外,首次加载时模型权重需要通过网络下载,合理的模型量化(如 INT8/FP16)和浏览器缓存策略对用户体验影响显著。

这类实践透露的技术趋势

把嵌入模型搬进浏览器,反映出端侧 AI(on-device AI)正在从概念走向可用。过去「本地推理」多指手机 App 或桌面程序,而 WebGPU 让网页也成为一个合格的推理载体。对于不涉及海量算力的任务,开发者越来越倾向于把计算推到离用户最近的地方——既省服务器成本,又规避数据传输的合规风险。

EmbeddingGemma 2 的多模态嵌入能力加上 ruNNtime 的 WebGPU 封装,构成了一个轻量、可复用的技术组合。对想要尝试浏览器端 AI 应用的开发者,这是一个值得参考的起点:模型负责语义理解,运行时负责把推理搬到 GPU,而最终呈现的只是一个打开即用的网页。

如果你对图文检索或端侧推理感兴趣,可以直接访问项目仓库,在交互式文档里亲手试试搜索照片的效果。

分享:

相关推荐