Llama.cpp 和 GGUF 中的多模态嵌入

Llama.cpp 和 GGUF 中的多模态嵌入

💡 原文英文,约2600词,阅读约需10分钟。
📝

内容提要

jina-embeddings-v4推出了先进的多模态嵌入,支持文本、图像和复杂文档的向量搜索。通过修改llama.cpp,实现了多模态嵌入的生成,解决了图像处理和注意力机制的问题。调试后,llama.cpp模型的嵌入结果与参考模型相近,未来可优化视觉编码器和支持多向量嵌入。

🎯

关键要点

  • jina-embeddings-v4推出了先进的多模态嵌入,支持文本、图像和复杂文档的向量搜索。
  • 通过修改llama.cpp,实现了多模态嵌入的生成,解决了图像处理和注意力机制的问题。
  • llama.cpp支持图像输入,但不支持多模态输入,因此进行了相应的修改。
  • 在处理多模态输入时,llama.cpp使用了特定的标记和编码方式。
  • 注意力机制的不同类型(因果注意力和非因果注意力)影响了模型的处理方式。
  • 调试过程中发现llama.cpp的ViT实现与参考模型存在显著差异。
  • 通过修复注意力掩码和图像处理步骤,llama.cpp的嵌入结果与参考模型相近。
  • 在ViDoRe任务的基准测试中,llama.cpp模型的表现与参考模型相似。
  • 未来的改进方向包括量化视觉编码器、将视觉编码器分离为独立服务,以及支持多向量嵌入。
  • 尽管存在初始的错误和问题,现有的多模态嵌入集成结果已接近参考模型,且量化版本在资源使用上更为高效。
➡️

继续阅读