Ollama 更新:Llama 3.2 Vision 支持与视觉 RAG 系统搭建
在本文中,我将介绍 Ollama 最近对 Llama 3.2 Vision 的支持更新,并分享实测结果。同时,还将介绍一个视觉 RAG 系统,展示如何将 Llama 3.2 Vision 与该系统结合,完成基于视觉 RAG 检索的任务。
更新介绍
Ollama 现在正式支持 Llama 3.2 视觉模型(Llama 3.2 Vision)。
你可以像拖拽文件一样将图片发送给模型进行识别。

该模型有 11B 参数版和 90B 参数版。选择 90B 参数版时,文件大小约为 55GB。当然还有一些量化的版本。

Llama 3.2 Vision 11B 至少需要 8GB VRAM,而 90B 型号至少需要 64 GB VRAM。
为了安装它,你需要更新一下 ollama。这里以 Docker 安装的 Ollama 为例,没更新前拉取这个视觉模型不成功,我们需要删掉容器,再 pull 更新它。

更新完之后我们可以执行拉取操作。

如果你的是 Linux 版本 Ollama 由于网络问题下载不成功的话,可以参考相关社区资源解决。
你可以使用 ollama python 库这样运行它的测试。
import ollama
response = ollama.chat(
model='llama3.2-vision',
messages=[{
'role': 'user',
'content': '这张图片是什么?',
'images': ['path/to/image.jpg'],
}]
)
print(response['message']['content'])
通过本地图像路径向模型提问'这张图片是什么'。

模型返回了结果,描述图片中有'日落、袋鼠和一群鸟,太阳位于画面中央,但被云遮挡。'这正是图片内容。

'这是什么城市?',模型会给出答案:'我猜这是日本的城市,可能是东京或大阪。'
我们看看其他一些场景的情况:
手写内容识别

光学字符识别 (OCR)

图表和表格

图片问答

效果还是不错的。
视觉 RAG 系统 + Llama 3.2 Vision
LocalGPT-Vision 是一个基于视觉的检索增强生成 (RAG) 系统,它可以让你与文档进行对话,使用 Vision 语言模型实现端到端的 RAG 系统。

该项目使用 ColQwen 或 ColPali 模型进行基于视觉的页面信息检索,检索到的页面将传递到视觉语言模型 (VLM) 以生成响应。

安装项目
首先,你需要克隆代码仓库或拉取最新的更改;然后你需要创建一个新的虚拟环境来使用 conda;最后使用 pip install -r requirements.txt 安装所有需要的包。

为了启动主应用程序,我们将使用 python app.py,这会启动我们的 Flask 服务器,并在该 URL 上运行。只需在浏览器中访问即可。
这是本地 GPT Vision 的主界面。如果你进入模型列表,将看到检索模型。我将选择 ColQwen,它是最适合的模型之一。

对于生成模型,你有多个选项,我将选择 Ollama Llama Vision。

然后保存更改。
对于被 RAG 的对象,我们使用一篇名叫 Light RAG 论文,这是一种简单快速的检索增强生成方法,结合了知识库和基于密集向量的方式,特别适用于具有某种关系的实体。

开始使用
点击上传文档按钮,选择相应的 PDF 文件,然后点击'开始索引'。

此时,后台将使用 ColQwen 模型为 PDF 中的每一页创建多维向量表示,转换成图像并计算嵌入,所有这些操作都依赖于强大的 poppler 库。

如果遇到问题,请确保已安装 poppler 库,因为有些人在使用这个库时遇到过问题。索引完成后,点击'确定',然后开始与刚才创建的知识库进行交互。
首先,我们用一个简单的提示开始:'这篇论文的标题是什么?'
你可以看到,论文的标题是《Light RAG: Simple and Fast Retrieval Augmented Generation》。

它与标题完全一致。
接下来我们可以看看它是否能够解释该图像的详细信息。
我问:'你能详细解释图 1 吗?'

图 1 作为论文中的一个插图,讨论了索引过程和检索过程,并展示了提议的 Light RAG 框架的整体架构。该页面还包含了其他信息,特别是数学公式,它们本质上也解释了相同的概念。
原文是这样的

这里是这个视觉 RAG 系统回答的翻译版本:

生成的响应是:'该图像展示了 Light RAG 框架的全面概述,该框架旨在增强信息检索系统的性能和效率。'然后它讨论了不同的组件,包括数据索引器和数据检索器。
这些信息似乎来自图像本身或图像所在页面上的文本。描述可以做得更好一些,可能 90B 版本的模型会做得更好。
我在这里补充它回答后续的截图:

此外,这些视觉开源大模型往往也可以用于一些视频帧的分析的场景。

