使用 ColPali 和 Qdrant 向量数据库进行高级检索
Sabrina Aquino
·2024 年 11 月 5 日

时长:30 分钟 | 级别:高级 | Notebook: GitHub |
---|
众所周知,即使是最先进的文档检索系统也很难处理视觉丰富的文档,例如包含表格、图片和复杂布局的 PDF 文件。
ColPali 引入了一种多模态检索方法,该方法使用 视觉语言模型 (VLM) 代替传统的 OCR 和基于文本的提取方法。
通过直接处理文档图像,它从视觉和文本内容中创建 多向量嵌入,更有效地捕获文档的结构和上下文。如 视觉文档检索基准 (ViDoRe) 所示,该方法优于传统技术。
在我们深入探讨之前,请观看我们的短视频
标准检索 vs ColPali
标准方法首先运行 光学字符识别 (OCR) 以从文档中提取文本。一旦提取了文本,布局检测模型会解析结构,然后将文本分块成更小的部分进行嵌入。对于文本内容是主要焦点的文档,这种方法足够有效。
想象一下,您有一个包含复杂布局、表格和图片的 PDF 文件,并且需要高效地提取有意义的信息。传统上,这会涉及几个步骤
- 文本提取:使用 OCR 从每一页中提取文字。
- 布局检测:识别页面元素,如表格、段落和标题。
- 分块:尝试不同的方法来确定最适合您的用例。
- 嵌入创建:最后生成和存储嵌入。
为什么 ColPali 更好?
整个过程可能需要太多步骤,特别是对于复杂文档,每页处理时间通常超过七秒。对于文本量大的文档,这种方法可能就足够了,但现实世界的数据往往丰富且复杂,这使得传统提取方法效率较低。
ColPali 在这里发挥作用。ColPali,即 Contextualized Late Interaction Over PaliGemma,使用视觉语言模型 (VLM) 来简化和增强文档检索过程。
ColPali 不依赖于纯文本方法,而是直接从文档页面的图像生成上下文化的 多向量嵌入。VLM 同时考虑视觉元素、结构和文本,创建了每一页的整体表示。
ColPali 的内部工作原理
ColPali 不依赖 OCR,而是使用视觉编码器将整个文档作为图像进行处理。它创建捕获文档文本内容和视觉结构的多向量嵌入,然后这些嵌入会经过大型语言模型 (LLM) 处理,LLM 将信息整合到保留文本和视觉特征的表示中。
以下是 ColPali 架构及其如何增强文档检索的分步介绍:
- 图像预处理:输入图像被分割成 32x32 的网格,产生 1,024 个块。
- 上下文转换:每个块都会经历转换以捕获局部和全局上下文,并由一个 128 维向量表示。
- 查询处理:当发送文本查询时,ColPali 为查询生成 token 级嵌入,使用相似性矩阵(特别是 MaxSim)将其与文档块进行比较。
- MaxSim 相似性:该相似性矩阵计算每个查询 token 在每个文档块中的相似性,选择最大相似性以有效检索相关页面。这种后期交互方法帮助 ColPali 捕获文档结构和文本中的复杂上下文。
ColPali 的后期交互策略受 ColBERT 启发,通过单次分析布局和文本内容来改进搜索。
使用二进制量化进行优化
二进制量化通过 减少存储和计算负载,进一步增强了 ColPali 管道,同时不损害搜索性能。与标量量化不同,二进制量化更积极地压缩向量,这可以加快搜索时间并减少内存使用。
在基于 Daniel Van Strien 的一篇博文 的实验中,使用 ColPali 和 Qdrant 搜索了一个 UFO 文档数据集,结果令人信服。通过结合二进制量化、重排序和过采样技术,我们看到搜索时间比标量量化减少了近一半,同时保持了相似的准确性。
将 ColPali 与 Qdrant 结合使用
现在是时候尝试代码了。
这是一个简化的 Notebook,供您亲自测试 ColPali
我们的目标是浏览一个多语言报纸文章数据集,就像下面的那些。我们将检测哪些图像包含有关 UFO 和 绝密 事件的文本。
完整数据集可在 Notebook 中访问。
步骤
- 设置 ColPali 和 Qdrant:导入必要的库,包括针对您的数据集(在本例中为 UFO 文档集)优化的微调模型。
- 数据集准备:将您的文档图像加载到 ColPali 中,预览复杂图像以了解传统检索方法的挑战。
- Qdrant 配置:定义您的 Qdrant 集合,将向量维度设置为 128。启用二进制量化以优化内存使用。
- 批量上传向量:使用重试检查点来处理索引过程中的任何异常。批量处理允许您根据可用的 GPU 资源调整批量大小。
- 查询处理和搜索:将查询编码为 Qdrant 的多向量。设置重排序和过采样以微调准确性,同时优化速度。
结果
成功!测试表明,搜索速度比使用标量量化快 2 倍。
这比使用标量量化快得多,而且我们仍然以显著的准确性检索到了最佳文档匹配项。
然而,请记住这只是一个快速实验。性能可能会有所不同,因此在您自己的数据集上测试二进制量化以了解其在特定用例中的表现非常重要。
话虽如此,很高兴看到二进制量化在保持搜索质量的同时,可能通过 ColPali 提供性能改进。
ColPali 的未来方向
ColPali 为文档检索提供了一种有前途、简化的方法,特别是对于视觉丰富、复杂的文档。它与 Qdrant 的集成实现了高效的大规模向量存储和检索,非常适合需要复杂文档理解的机器学习应用。
如果您有兴趣在自己的数据集上试用 ColPali,请加入我们在 Discord 上的向量搜索社区,以获取讨论、教程以及对高级文档检索方法的更多见解。请告诉我们您如何使用 ColPali 或您对其有哪些应用设想!
感谢您的阅读,并请继续关注更多关于向量搜索的见解!
参考文献
[1] Faysse, M., Sibille, H., Wu, T., Omrani, B., Viaud, G., Hudelot, C., Colombo, P. (2024). ColPali:使用视觉语言模型进行高效文档检索。 arXiv. https://doi.org/10.48550/arXiv.2407.01449
[2] van Strien, D. (2024). 将 ColPali 与 Qdrant 结合使用来索引和搜索 UFO 文档数据集。发布于 2024 年 10 月 2 日。博文:https://danielvanstrien.xyz/posts/post-with-code/colpali-qdrant/2024-10-02_using_colpali_with_qdrant.html
[3] Kacper Łukawski (2024). 任何嵌入模型都可以成为后期交互模型......如果你给它一个机会! Qdrant 博客,2024 年 8 月 14 日。可访问地址:https://qdrant.org.cn/articles/late-interaction-models/