- 人工智能
- 多模态
- 计算机视觉
- RAG
- 检索/搜索引擎
【免费下载链接】EVIE-8B
EVIE-8B 是腾讯开源的视觉文档检索模型,凭借**晚交互(Late-Interaction)与多向量(Multi-Vector)**表示,在 ViDoRe 榜单上拿下 66.75 nDCG@10 的 SOTA 成绩。本文面向新手,用通俗语言讲清楚它为什么检索得这么准,并带你跑通仓库自带的 8 页文档 Demo。
上图来自仓库自带的 Demo 数据集(examples/demo/),模拟了真实场景:你手里有一堆图片格式的文档页——财报、发票、组织架构图、专利页——想用一句自然语言查询找到正确的那一页。EVIE-8B 要做的,就是"看图 + 读问题",然后给出最相关的页面。
为什么"一个向量"检索不准?
传统文本检索的经典做法是:把整个文档压成 1 个向量,查询也压成 1 个向量,算一下余弦相似度,最像的就是结果。
这种方式对短文本够用,但对一整页文档就很吃亏:
- 一页文档里既有标题、正文,又有表格、图表、数字,信息密度很高;
- 压缩成单向量时,细节被"平均"掉了——比如发票上的到期日和金额,压完之后很难和"哪张发票最贵"这类问题对上;
- 文档越长,丢失的信息越多。
EVIE-8B 的答案很直接:不压缩。它给文档里的每个 token(每个视觉/文本片段)都保留一个独立向量,整页文档 = 成百上千个向量的组合(README.md 中称其为 per-token multi-vector embeddings)。
晚交互(Late-Interaction):先各算各的,最后再比较
这里引出检索领域的关键分类——早交互 vs 晚交互:
| 方案 | 做法 | 类比 |
|---|---|---|
| 单向量(Bi-Encoder) | 查询和文档各自压成 1 个向量,再比较 | 两个人各写一句"自我介绍",比谁更像 |
| 晚交互(Late-Interaction) | 各自展开成多个向量,匹配阶段才逐点比较 | 翻开两本书逐段对照,找共同点 |
"晚交互"的"晚",指交互(比较)被推迟到匹配阶段:编码阶段查询和文档互不干扰(所以文档向量可以预先离线算好、建索引),只有在打分时才做细粒度对齐。这正是 ColBERT 系列开创、EVIE-8B 继承的路线。
MaxSim:晚交互的打分公式
EVIE-8B 使用MaxSim打分,公式并不复杂:
对查询里的每个向量 qᵢ,在文档的所有向量里找到与它最相似的那个 dⱼ,把每个 qᵢ 的"最佳匹配分"加起来,就是总分。
用一句话概括:查询的每个词都能"各找各的最佳落点"。比如问"发票 4412 的到期日是多少","发票"落在文档顶部的 INVOICE 4412 上,"到期日"落在 DUE DATE 那一行,各自都拿到高分,总分自然高。
这个打分过程的源码就在仓库里,核心只有一行 einsum(对每个查询向量取 max,再求和):
- MaxSim 实现:maxsim.py
- 模型主体(每 token 投影 + L2 归一化):modeling_colqwen3_5.py
多向量表示:4096 维为什么是"高配"?
有了晚交互思想,还有两个 EVIE-8B 的"放大器":
- 高维表示(4096D per-token):每个 token 向量有 4096 维,远高于同类模型常见的 128~640 维(见 config.json 中
"dim": 4096)。维度越高,能编码的版面、字体、表格结构等细节越细。 - 双向注意力(Bidirectional Attention):普通语言模型只能"往前看",而检索时需要上下文互相参照。EVIE-8B 把注意力层改成双向(
enable_bidirectional_attention(),实现见 modeling_colqwen3_5.py),视觉 patch 与文本上下文充分交叉,图表中的数字能和附近的标题"对话"。
再叠加 77 万+ 文档-查询对的训练数据和精心挖掘的难负样本,高维多向量 + 晚交互的组合拳就解释了它的准确率:ViDoRe V1 达 92.18 nDCG@5,V3 达 66.75 nDCG@10,全面领先(完整对比见 README.md 的 Leaderboard 部分)。
快速上手:跑一个 8 页文档检索 Demo
仓库自带一个开箱即用的 Demo:8 个文档页(财报、发票、专利页等,见 examples/demo/pages/)+ 检索脚本。
第一步,克隆仓库:
git clone https://gitcode.com/tencent_hunyuan/EVIE-8B第二步,运行 Demo(会自动加载本仓库的权重,对 8 个页面做多向量编码并排序):
bash examples/demo/run.sh第三步(可选),用 infer.py 单独给自己的图片打分,支持多查询、多图片:
python infer.py --query "What is the total quarterly revenue?" --image examples/demo/pages/q3_revenue.png💡 小贴士:Demo 的 1024 token 页面预算对应评测协议,日常推理默认预算更大(16384 视觉 token),文档越高清,多向量表达的细节越足。
新手 FAQ
Q1:晚交互不是要实时比较吗,速度慢吗?不会。文档多向量可以离线预先算好存成索引,在线时只需对查询向量与候选文档向量算 MaxSim,且仓库内置了加速后端(LIK kernels,见 maxsim.py 的 backend 说明)。
Q2:多向量会不会占很大存储?会比单向量大(每 token 4096 维),这是精度与存储的权衡。EVIE 家族的小模型 EVIE-4.5B 还支持 Matryoshka 多尺寸头(modeling_colqwen3_5.py),可以按需截断维度。
Q3:Sentence Transformers 用户怎么接入?仓库已按 MultiVectorEncoder 规范打包(modules.json 定义了 投影 → 归一化 → 多向量掩码 的模块链),MultiVectorEncoder("tencent/EVIE-8B")一行即可加载,详见 README.md 的 Sentence Transformers 部分。
总结:三个关键词记住 EVIE-8B
- 多向量:文档每个 token 保留独立向量,细节不丢失;
- 晚交互(MaxSim):打分时逐点找最佳匹配,对齐更精细;
- 高配底座:4096 维表示 + 双向注意力 + 大规模难负样本训练。
单向量像"一句话概括一本书",而 EVIE-8B 做的是"逐段对照两本书"——这就是它检索准确率高的底层逻辑。想动手验证?仓库里的 examples/demo/run.sh 就是最短路径。
- 人工智能
- 多模态
- 计算机视觉
- RAG
- 检索/搜索引擎
【免费下载链接】EVIE-8B
相关推荐
为什么RAG检索总不准?llama-nemotron-embed-1b-v2多语言嵌入模型5步搞定向量检索
为什么RAG检索总不准?llama nemotron embed 1b v2多语言嵌入模型5步搞定向量检索 RAG 检索不准、答案答非所问?根源往往出在 嵌入模
sentence-transformers MultiVectorEncoder 完全指南:基于 MaxSim 晚期交互的多向量检索模型
sentence transformers MultiVectorEncoder 完全指南:基于 MaxSim 晚期交互的多向量检索模型 本文是 sentenc
人工智能NLPEmbedding微调机器学习PageIndex革命性解析:为什么无向量检索是文档分析的终极答案?
PageIndex革命性解析:为什么无向量检索是文档分析的终极答案? 在传统向量检索技术频繁遭遇"相似性≠相关性"困境的今天,PageIndex以颠覆性的无向量
人工智能RAG
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考