笔记
0工具
0此页用于记录用户反馈问题后的每一次改进
关于
“写笔记”支持四种格式——Word 文档、Excel 表格、Markdown、纯文本,起稿或二次编辑时都能随时切换,同一篇笔记想用哪种形态来记,都由你说了算。
md、txt、csv、json 这类纯文本则原样载入,不做多余加工。拿一张现成的表倒进来、改几笔、再导出去,等于白用一台免费的格式转换器。
要带走就在右上角点“下载”,可导出 PDF、Word、Markdown、Excel、TXT 等格式;列表卡片“⋯”菜单里,也有同样的下载入口。
在“工具”页点“+ 上传工具”即可发布:填好名称与链接,再用 Markdown 把使用方法写清楚——能解决什么问题、怎么装、怎么用,比堆介绍实在。
要分发安装包就一并上传压缩包(ZIP、RAR、7Z、TAR.GZ,最大 35MB),别人在详情页一键下载;只放链接不带附件也可以。
工具按大家的收藏热度排序,好用的自然会被顶上来。发布后可在详情页或卡片菜单里编辑、下架。
写笔记时勾上“隐藏”,这篇就只存在于你自己的账号里:不进列表、不进搜索、不上首页精选,也不会出现在任何公开的页面,链接发给别人同样打不开。
适合放密码、草稿、日记这类只给自己看的内容;想公开,去“发布”打开它,把“隐藏”的勾去掉再保存,之后编辑会默认保持原状态,不会悄悄变回公开。
不想公开、只想临时给人看:点“分享”生成一条带密码和有效期的链接,到期自动失效,你也能随时撤销。
你的内容会同时保存在多个副本上,系统定期做备份与完整性校验,再配合异地容灾机制:就算某台机器出问题,数据也不会丢,可以长期放心存放;特别重要的资料,仍建议你另外再留一份备份。
全站跑在容器化、模块化的现代架构上,更新、部署、回滚都很快,扩展性和稳定性都按长期运营的标准来设计(Built for reliability, designed to scale)。
这个网站最早只是一个人的笔记仓库,后来慢慢长成现在的知识中枢。设计上很克制——没有广告、没有追踪、没有推荐算法,只是干干净净地存放一些东西;既然做好了,就公开出来,万一有人用得上呢。
不做大而全,不做平台梦,保持简单、保持克制、保持好奇。所有内容都由用户贡献、由用户维护:不会突然冒出付费墙,不会在角落塞广告位,也不会把你的数据卖给第三方。
产品会持续迭代,站内日志页记录着每一次改动,改了什么都有迹可循;想了解这个站是怎么一步步走到今天的,翻翻日志就能看到来龙去脉。
如果在这里看到涉嫌违规的内容,点对应卡片右侧的“举报”按钮就能提交,我们会尽快核实处理;也谢谢你花一点时间,一起把这里维护干净。
趋势
腾讯WeMM-Embedding:统一多模态嵌入模型,开启跨模态检索新范式
WeMM-Embedding:腾讯微信视觉团队开源的通用多模态嵌入模型家族,支持图文跨模态理解与检索。
一、项目背景与痛点
在当前的AI应用生态中,文本嵌入模型(如OpenAI的text-embedding-3、BGE等)已经非常成熟,广泛应用于搜索、推荐、RAG(检索增强生成)等场景。然而,现实世界的数据并非单一模态——商品图片、视频帧、语音片段、文档截图等非文本信息在互联网中占据绝对主流。传统做法是先将视觉内容转成文字描述(如通过VLM生成caption),再走文本检索链路,但这带来了几个致命问题:
- 信息丢失:文字描述永远无法完整表达图片中的颜色、纹理、空间关系、物体属性等细节。
- 延迟与成本:每次索引或查询都要调用大模型生成描述,工程链路过长。
- 模态割裂:用户可能用一张图去搜相似图,或者用一段文字去搜特定视觉内容,传统单模态模型无法直接对齐。
- 领域适配差:通用CLIP模型在特定领域(如电商、医疗影像、工业质检)效果不佳,需要大量微调数据。
腾讯微信视觉团队开源的WeMM-Embedding正是为了解决上述痛点而设计——它是一组通用多模态嵌入模型,能够将图像和文本映射到同一个向量空间,直接计算跨模态相似度,支持图文双向检索、多模态RAG、零样本分类等任务。
二、项目快速上手
2.1 安装
项目基于Python,推荐使用transformers库直接加载(支持HuggingFace Hub)。首先安装依赖:
bash
pip install transformers torch pillow
2.2 基础用法:图文嵌入与相似度计算
python
from transformers import AutoModel, AutoTokenizer, AutoProcessor
import torch
from PIL import Image
import requests
加载模型(以WeMM-Embedding-Base为例)
model_name = "Tencent/WeMM-Embedding-Base"
model = AutoModel.from_pretrained(model_name, trust_remote_code=True)
processor = AutoProcessor.from_pretrained(model_name, trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained(model_name)
准备输入
text = "一只在草地上奔跑的金毛犬"
image_url = "https://example.com/dog.jpg"
image = Image.open(requests.get(image_url, stream=True).raw)
编码
text_input = tokenizer(text, return_tensors="pt", padding=True, truncation=True)
image_input = processor(images=image, return_tensors="pt")
获取嵌入向量
with torch.no_grad():
text_emb = model.encode_text(**text_input)
image_emb = model.encode_image(**image_input)
归一化后计算余弦相似度
text_emb = torch.nn.functional.normalize(text_emb, p=2, dim=-1)
image_emb = torch.nn.functional.normalize(image_emb, p=2, dim=-1)
similarity = (text_emb @ image_emb.T).item()
print(f"图文相似度: {similarity:.4f}")
2.3 批量检索示例(图文互搜)
python
假设有一个图片库,用文本查询最匹配的图片
image_paths = ["img1.jpg", "img2.jpg", "img3.jpg"]
images = [Image.open(p) for p in image_paths]
image_inputs = processor(images=images, return_tensors="pt")
with torch.no_grad():
image_embs = model.encode_image(**image_inputs)
image_embs = torch.nn.functional.normalize(image_embs, p=2, dim=-1)
query = "一个红色的跑车"
query_input = tokenizer(query, return_tensors="pt", padding=True, truncation=True)
with torch.no_grad():
query_emb = model.encode_text(**query_input)
query_emb = torch.nn.functional.normalize(query_emb, p=2, dim=-1)
scores = (query_emb @ image_embs.T).squeeze(0)
best_idx = scores.argmax().item()
print(f"最匹配的图片: {image_paths[best_idx]}, 得分: {scores[best_idx]:.4f}")
2.4 模型家族与规模
WeMM-Embedding提供了多个规格,适应不同场景:
| 模型名称 | 参数量 | 嵌入维度 | 适用场景 |
|---|---|---|---|
| WeMM-Embedding-Small | ~100M | 768 | 移动端、实时检索 |
| WeMM-Embedding-Base | ~300M | 1024 | 通用服务端检索 |
| WeMM-Embedding-Large | ~600M | 1280 | 高精度离线索引 |
所有模型均支持文本-图像双向编码,并且可以通过model.encode_text()和model.encode_image()分别调用,也可以使用model.encode()统一处理多模态输入。
三、核心亮点深度解析
3.1 真正的统一多模态对齐
不同于CLIP只做对比学习,WeMM-Embedding在训练中融合了多种任务:
- 图文对比学习(ITC):拉近匹配图文对,推远不匹配对。
- 图文匹配任务(ITM):判断图文是否匹配,增强细粒度理解。
- 掩码语言建模(MLM):在图文上下文中预测被掩码的文本,提升语义理解。
这种多任务联合训练使得模型不仅知道“图中有猫”,还理解“猫在沙发上”这种空间关系,以及“橘猫”和“黑猫”的视觉差异。
3.2 强领域泛化能力
微信团队在训练数据上做了大量工作,覆盖电商、社交、新闻、医疗、工业等数十个领域。官方评测显示,在零样本情况下,WeMM-Embedding在Flickr30K、MSCOCO、Fashion200K、CIRR(组合图像检索)等基准上均达到SOTA或接近SOTA水平。尤其在跨域检索(例如用医学文字描述检索X光片)上,明显优于同规模CLIP变体。
3.3 高效推理与工程友好
- 支持动态分辨率:图像输入不需要固定尺寸,模型内部会自适应处理,避免裁剪导致的信息丢失。
- 量化友好:官方提供了int8量化示例,在保持95%以上性能的同时,推理速度提升3倍。
- 兼容HuggingFace生态:可以无缝接入
datasets、faiss、milvus等向量数据库,快速搭建生产级检索系统。
3.4 长文本与多图理解
WeMM-Embedding支持最长512 token的文本输入,并且可以同时编码多张图片(通过拼接token序列),这在多图对比、视频帧聚合等场景非常实用。例如,可以用它做“用一组参考图检索目标图”的任务。
四、适用场景详解
4.1 多模态RAG(检索增强生成)
传统RAG只能检索文本,WeMM-Embedding将知识库扩展到图片、截图、图表。例如:
- 用户问“去年Q3的销售柱状图是什么趋势”,系统直接检索到相关图表图片,并交给多模态大模型生成回答。
- 企业文档中大量包含流程图、架构图,这些都可以作为检索对象。
4.2 电商搜索与推荐
- 用户上传一张衣服照片,搜索同款或相似款。
- 用户输入“蓝色碎花连衣裙”,返回视觉上匹配的商品图片,而不是仅靠标签匹配。
- 跨模态推荐:基于用户浏览过的图片,推荐文字描述相似的商品。
4.3 内容安全与审核
通过嵌入向量计算,可以快速找出与已知违规图片相似的变体(如盗版图、敏感图),即使图片经过裁剪、调色、加滤镜等修改,依然能有效命中。
4.4 智能相册与媒体管理
个人或企业相册中,支持“找一张去年冬天在北海道拍的照片”这类语义搜索,或者“找出所有包含红色气球照片”的视觉搜索。
4.5 工业质检与医疗辅助
- 工业场景:用正常品图片作为查询,检索出所有缺陷品图片的相似度排序。
- 医疗场景:用文字描述“肺部有磨玻璃影”,检索CT影像库中的相关病例。
五、与其他同类项目的对比
5.1 对比 OpenAI CLIP
| 维度 | WeMM-Embedding | OpenAI CLIP |
|---|---|---|
| 训练数据 | 微信生态+多领域精选数据 | WebImageText(4亿图文对) |
| 文本长度 | 最长512 token | 最长77 token |
| 多任务 | ITC+ITM+MLM | 仅ITC |
| 领域泛化 | 强,尤其中文场景 | 英文为主,中文较弱 |
| 工程支持 | 动态分辨率、量化 | 固定分辨率,量化支持差 |
结论:CLIP是通用特征提取的标杆,但WeMM-Embedding在中文场景、长文本、细粒度理解上明显胜出,且工程化更完善。
5.2 对比 Chinese-CLIP
Chinese-CLIP是CLIP的中文适配版,但本质还是单任务对比学习。WeMM-Embedding在训练策略上更丰富,且在微信实际业务中经过了大规模验证,鲁棒性更好。
5.3 对比 BLIP-2 / InstructBLIP
这些是生成式多模态模型,擅长生成描述或回答问题,但不适合直接作为嵌入模型用于大规模检索,因为它们的推理成本高、输出不是固定维度向量。WeMM-Embedding专注于嵌入表示,更适合构建索引和向量检索系统。
5.4 对比 SigLIP / EVA-CLIP
这些是视觉编码器的改进版,但只做视觉特征提取,不提供文本编码器。WeMM-Embedding是完整的双塔结构,开箱即用。
六、技术细节与训练策略(进阶)
6.1 模型架构
WeMM-Embedding采用双塔架构:
- 视觉塔:基于ViT(Vision Transformer),使用动态patch embedding,支持任意分辨率输入。
- 文本塔:基于BERT架构,但经过领域自适应预训练,对中文分词和电商术语有更好的处理。
两个塔的输出通过一个共享的投影层映射到同一向量空间。
6.2 训练数据
微信团队构建了约10亿规模的图文对数据集,包括:
- 微信生态内的公众号文章配图、朋友圈图片与文字描述。
- 电商平台的商品图与标题/详情。
- 公开数据集(CC3M、CC12M、LAION-5B的子集)。
- 合成数据:使用大模型生成的图文对,用于覆盖长尾场景。
6.3 损失函数
- 对比损失(InfoNCE):用于全局对齐。
- 硬负样本挖掘:在batch内在线挖掘难负样本,提升判别力。
- 辅助损失:ITM + MLM,增强细粒度语义。
6.4 评估指标
官方在多个基准上进行了评测,例如:
- Flickr30K:Recall@1达到78.5(文本检索图像),图像检索文本为88.2。
- MSCOCO:图文双向Recall@5均超过95%。
- CIRR(组合图像检索):在“用参考图+修改文本”场景下,Recall@1比CLIP高12个百分点。
七、局限性与未来展望
任何模型都有边界,WeMM-Embedding也存在一些不足:
- 视频支持有限:目前主要针对静态图像,视频需要抽帧处理,无法直接编码时空特征。
- 多语言支持:虽然中文表现优秀,但英文和其他语言的支持不如专门的国际模型(如OpenCLIP)。
- 模型体积:Large版本有600M参数,在边缘设备上部署仍有压力。
但微信团队表示将持续迭代,未来可能推出:
- 视频嵌入模型(WeMM-Video)。
- 轻量级移动端版本(预计<50M参数)。
- 支持语音-文本-图像三模态对齐。
八、总结与推荐
WeMM-Embedding是一个成熟、实用、开箱即用的多模态嵌入模型,尤其适合中文场景和国内业务环境。它的最大价值在于:
- 解决了图文检索的工程痛点,无需再走“图转文”的间接链路。
- 在微信生态中经过大规模业务验证,稳定性有保障。
- 支持HuggingFace生态,集成成本极低。
如果你是以下角色,强烈推荐尝试:
- 后端工程师:需要为搜索或推荐系统增加多模态能力。
- AI应用开发者:正在构建多模态RAG或智能相册。
- 算法研究员:需要一个强大的多模态嵌入baseline进行对比实验。
项目已开源,遵循MIT协议,可以免费商用。建议从Base版本开始体验,再根据业务规模选择Small或Large。