0

使用 ColPali 和 Qdrant 向量数据库进行高级检索

Sabrina Aquino

·

2024 年 11 月 5 日

Advanced Retrieval with ColPali & Qdrant Vector Database
时间:30分钟难度:高级笔记本: GitHub

众所周知,即使是最现代的文档检索系统也难以处理视觉丰富的文档,例如包含表格、图像和复杂布局的 PDF。

ColPali 引入了一种多模态检索方法,使用视觉语言模型 (VLM) 代替传统的 OCR 和基于文本的提取。

通过直接处理文档图像,它从视觉和文本内容中创建多向量嵌入,更有效地捕获文档的结构和上下文。这种方法优于传统技术,如视觉文档检索基准 (ViDoRe) 所示。

在我们深入探讨之前,请观看我们的短视频

标准检索 vs ColPali

标准方法首先运行光学字符识别 (OCR) 来从文档中提取文本。一旦提取了文本,布局检测模型会解释其结构,然后将文本分块成更小的部分进行嵌入。这种方法对于主要关注文本内容的文档来说效果很好。

想象一下您有一个包含复杂布局、表格和图像的 PDF,并且需要有效地提取有意义的信息。传统上,这会涉及几个步骤

  1. 文本提取: 使用 OCR 从每个页面提取单词。
  2. 布局检测: 识别页面元素,如表格、段落和标题。
  3. 分块: 试验各种方法,以确定最适合您用例的方法。
  4. 嵌入创建: 最后生成并存储嵌入。

为什么 ColPali 更胜一筹?

整个过程可能需要太多步骤,特别是对于复杂文档,每个页面通常需要七秒以上才能处理。对于文本量大的文档,这种方法可能就足够了,但实际数据通常丰富且复杂,这使得传统提取方法效果不佳。

ColPali 应运而生。 ColPali,即基于 PaliGemma 的情境化后期交互,使用视觉语言模型 (VLM) 来简化和增强文档检索过程。

ColPali 不依赖于纯文本方法,而是直接从文档页面的图像生成情境化多向量嵌入。VLM 同时考虑视觉元素、结构和文本,从而创建每个页面的整体表示。

ColPali 的内部工作原理

Qdrant and Colpali

ColPali 不依赖于 OCR,而是使用视觉编码器将整个文档作为图像进行处理。它创建多向量嵌入,捕获文档的文本内容和视觉结构,然后将其传递给大型语言模型 (LLM),LLM 将信息整合到保留文本和视觉特征的表示中。

以下是 ColPali 架构及其如何增强文档检索的分步说明

  1. 图像预处理: 输入图像被分割成 32x32 网格,产生 1,024 个补丁。
  2. 情境化转换: 每个补丁都经过转换以捕获局部和全局上下文,并由一个 128 维向量表示。
  3. 查询处理: 当发送文本查询时,ColPali 为查询生成令牌级嵌入,并使用相似度矩阵(特别是 MaxSim)将其与文档补丁进行比较。
  4. MaxSim 相似度: 此相似度矩阵计算每个查询令牌在每个文档补丁中的相似度,选择最大相似度以高效检索相关页面。这种后期交互方法有助于 ColPali 捕获文档结构和文本中的复杂上下文。

ColPali 的后期交互策略受 ColBERT 启发,通过单次分析布局和文本内容来改进搜索。

使用二进制量化进行优化

Qdrant and Colpali

二进制量化通过降低存储和计算负载,进一步增强了 ColPali 管道,同时不损害搜索性能。与标量量化不同,二进制量化更积极地压缩向量,这可以加快搜索时间并减少内存使用。

在一项基于 Daniel Van Strien 博客文章的实验中,ColPali 和 Qdrant 被用于搜索 UFO 文档数据集,结果令人信服。通过使用二进制量化以及重评分和过采样技术,我们看到搜索时间比标量量化减少了近一半,同时保持了相似的准确性。

将 ColPali 与 Qdrant 结合使用

现在是时候尝试代码了。
这是一个简化的笔记本,供您亲自测试 ColPali

Open In Colab

我们的目标是浏览下面的多语言报纸文章数据集。我们将检测哪些图像包含有关 UFO绝密事件的文本。

Qdrant and Colpali

完整的数据集可从笔记本中访问。

步骤

  1. 设置 ColPali 和 Qdrant: 导入必要的库,包括针对您的数据集(在本例中为 UFO 文档集)优化的微调模型。
  2. 数据集准备: 将文档图像加载到 ColPali 中,预览复杂图像以体会传统检索方法的挑战。
  3. Qdrant 配置: 定义您的 Qdrant 集合,将向量维度设置为 128。启用二进制量化以优化内存使用。
  4. 批量上传向量: 使用重试检查点来处理索引期间的任何异常。批量处理允许您根据可用的 GPU 资源调整批量大小。
  5. 查询处理和搜索: 将查询编码为 Qdrant 的多向量。设置重评分和过采样以在优化速度的同时微调准确性。

成果

成功!测试表明搜索时间比使用标量量化快 2 倍。

这比使用标量量化快得多,而且我们仍然以惊人的准确性检索到了最匹配的文档。

但是,请记住这只是一个快速实验。性能可能会有所不同,因此在您自己的数据集上测试二进制量化以查看它对您的特定用例的性能非常重要。

尽管如此,看到二进制量化在保持搜索质量的同时有可能通过 ColPali 提高性能,这令人鼓舞。

ColPali 的未来发展方向

Qdrant and 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/

免费开始使用 Qdrant

开始使用