多模态RAG-ColPali:使用视觉语言模型实现高效的文档检索

文摘   2024-10-23 07:40   美国  

ColPali是一个新型的视觉检索模型,旨在通过视觉语言模型(VLM)实现高效的文档检索。该模型的核心在于利用ColBERT架构和PaliGemma模型,结合视觉信息和文本信息,以提高检索的准确性和效率。

演示demo:https://huggingface.co/spaces/manu/ColPali-demo

ColPali模型的特点

  1. 基于视觉语言模型

  • ColPali利用PaliGemma模型,这是一种能够同时处理图像和文本的多模态模型。它通过将文档的视觉特征与文本特征结合,增强了检索能力。

  • ColBERT架构

    • ColPali采用了ColBERT的架构,利用其独特的后期交互机制来提高检索的效率和准确性。该机制允许模型在查询和文档之间进行细粒度的相似性匹配,从而优化检索过程。

  • 高效的文档嵌入

    • 该模型通过将文档页面编码为多向量嵌入,能够有效地表示文档的视觉和文本信息。这种方法确保了在检索时能够快速匹配相关内容,提高了响应速度和准确性。


    通过我们的新模型 ColPali,我们建议利用 VLM 在视觉空间中构建高效的多向量嵌入以进行文档检索。通过将 PaliGemma-3B 的 ViT 输出补丁馈送到线性投影,我们创建了文档的多向量表示。我们遵循 ColBERT 方法训练模型,以最大限度地提高这些文档嵌入和查询嵌入之间的相似性。

    ColPali模型适用于多种需要高效文档检索的场景,包括:

    • PDF文档检索:能够处理复杂的PDF格式文档,提取其中的视觉和文本信息进行检索。

    • 多模态信息检索:在需要同时处理图像和文本的应用中,ColPali能够提供更为准确的检索结果。

    我们使用 Python 3.11.6 和 PyTorch 2.2.2 来训练和测试我们的模型,但代码库与 Python >=3.9 和最新的 PyTorch 版本兼容。要安装该软件包,请运行:

    pip install colpali-engine

    快速体验:

    import torchfrom PIL import Image
    from colpali_engine.models import ColPali, ColPaliProcessor
    model_name = "vidore/colpali-v1.2"
    model = ColPali.from_pretrained( model_name, torch_dtype=torch.bfloat16, device_map="cuda:0", # or "mps" if on Apple Silicon).eval()
    processor = ColPaliProcessor.from_pretrained(model_name)
    # Your inputsimages = [ Image.new("RGB", (32, 32), color="white"), Image.new("RGB", (16, 16), color="black"),]queries = [ "Is attention really all you need?", "Are Benjamin, Antoine, Merve, and Jo best friends?",]
    # Process the inputsbatch_images = processor.process_images(images).to(model.device)batch_queries = processor.process_queries(queries).to(model.device)
    # Forward passwith torch.no_grad(): image_embeddings = model(**batch_images) query_embeddings = model(**batch_queries)
    scores = processor.score_multi_vector(query_embeddings, image_embeddings)

    ColPali 仍然使用文本作为查询,文档则是图像类型。在视觉encoder,也是利用多模态的视觉大模型来生成图片端的向量,但不仅仅只生成单个向量。而是利用VIT的patch embedding,来生成多个向量。直觉上确实是会有收益,因为一整页的pdf,只压缩在一个固定维度的向量中,那肯定有信息损失,而且以patch为单位生成embedding。

    ColPali模型通过结合视觉语言模型和ColBERT架构,提供了一种高效的文档检索解决方案。其在多模态信息处理方面的优势,使其在实际应用中具有广泛的潜力。该存储库包含了用于训练ColPali模型的代码,便于研究人员和开发者进行进一步的探索和应用。

    参考项目:https://github.com/illuin-tech/colpali?tab=readme-ov-file

    AI技术研习社
    专注分享人工智能、大模型、算法、大数据开发、数据分析领域的技术干货和落地实践!
     最新文章