使用 Cohere Embed 5 与 Qdrant 非对称量化实现可扩展的 PDF 检索

使用 Cohere Embed 5 与 Qdrant 非对称量化实现可扩展的 PDF 检索

💡 原文英文,约2100词,阅读约需8分钟。
📝

内容提要

文章介绍如何用Cohere Embed 5 Pro与Qdrant实现可扩展的PDF检索。Embed 5 Pro以单个稠密向量表示整页图像,无需OCR,在5个ViDoRe V3英文语料上优于多个晚交互模型。结合Matryoshka降维、非对称量化(页面1比特、查询8比特)与全向量重打分,512维方案每页仅占64字节内存,并保留99.2%的检索质量,适合大规模生产部署。

🔎

延伸解读

单向量方案为何值得关注

文章指出,传统PDF检索依赖OCR提取文本,容易丢失图表、表格中的视觉信息;晚交互视觉模型虽能保留版面,但每页产生约一千个向量,且MaxSim相似度无法直接使用HNSW索引,大规模扩展困难。Embed 5 Pro用单个稠密向量表示整页图像,可直接接入常规HNSW搜索,在五个公开英文ViDoRe V3语料上得分65.8,高于多个晚交互模型,为生产部署提供了更简洁的路径。

非对称量化的取舍逻辑

文章测试了页面向量1比特、查询8比特的非对称量化。若查询也压到1比特,每个维度只比较符号,微弱信号与强信号权重相同;保留查询8比特可让强维度发挥更大作用。实测显示,存储向量越短,高精度查询带来的增益越明显。512维、1比特页面加8比特查询,配合全向量重打分前20候选,保留99.2%的检索质量,每页仅占64字节内存。

内存与磁盘的分层设计

该方案利用Qdrant 1.19的内存分层:压缩后的二进制向量固定在RAM中用于快速初筛,完整向量留在磁盘上,仅对候选页进行重打分。文章估算,1000万页PDF的搜索向量约占610MB内存,完整向量约95GB在磁盘。重打分读取会经过系统页缓存,随时间占用空闲内存,但系统需要时可回收。文章提醒,这些数字仅计向量字节,不含索引和负载。

适用边界与额外选项

文章明确,Embed 5 Pro的训练数据未公开,测试可能存在意外接触训练集的风险,结论需谨慎看待。压缩方案在五个英文语料上验证,其他语言或文档类型的效果未覆盖。此外,Cohere Rerank 5仅接受文本,若已有OCR流程,可用其对前20页重排,文章实测平均nDCG@10从66.8升至73.2;纯图像检索流程则无法直接使用。

❓

Q&A

Cohere Embed 5 Pro 在 PDF 检索中相比传统 OCR 方法有什么优势?

Embed 5 Pro 可以直接用单个稠密向量表示整页 PDF 图像,无需 OCR 文本提取,避免了 OCR 在复杂图表、表格等视觉布局中丢失信息的问题。在 5 个公开英文 ViDoRe V3 语料上,其检索性能甚至超过了多个晚交互模型。

如何用 Qdrant 的非对称量化压缩 PDF 页面向量以节省内存?

Qdrant 支持非对称量化:页面向量存储为 1 比特(仅保留符号),而查询向量保持 8 比特精度。结合 Matryoshka 降维(如 512 维),每页仅占 64 字节内存,同时用全精度向量对候选结果重打分,可保留 99.2% 的检索质量。

Embed 5 Pro 在 ViDoRe V3 基准上的表现如何?

在 5 个公开英文 ViDoRe V3 语料(共 12,969 页图像和 1,489 个问题)上,Embed 5 Pro 使用单向量每页取得了平均 nDCG@10 为 65.8 的成绩,高于 ColQwen2.5(61.2)、ColPali(54.8)等晚交互模型,仅次于 ColEmbed-3B-v2(67.5)。

大规模 PDF 检索中,如何平衡内存占用和检索质量?

可以采用分层存储策略:将压缩后的二进制向量(如 512 维、1 比特)常驻内存用于快速初筛,而全精度向量保存在磁盘上仅用于对 Top 20 候选重打分。这样 1000 万页 PDF 的搜索向量仅需约 610 MB 内存,同时保留 99.2% 的检索质量。

Cohere Rerank 5 如何提升基于 OCR 的 PDF 检索流程?

对于已有的 OCR 文本检索流程,可以用 Rerank 5 对 Top 20 结果进行重排序。在 ViDoRe V3 的 OCR 文本上,使用 Rerank 5 Pro 后平均 nDCG@10 从 66.8 提升到 73.2;即使结合 64 字节压缩方案,也能从 66.2 提升到 71.7。

使用 Qdrant Cloud Inference 处理 PDF 页面图像有什么便利?

Qdrant Cloud Inference 允许直接将页面图像以 base64 data URI 形式发送给 Qdrant,Qdrant 会调用 Cohere 生成向量并在同一请求中存储,客户端无需单独调用嵌入接口,节省了应用与 Cohere 之间的往返通信。

🏷️

标签

➡️

继续阅读