利用GPT4-V及Langchain实现多模态RAG
liuian 2025-06-03 23:29 16 浏览
多模态RAG将是2024年AI应用架构发展的一个重要趋势,在前面的一篇文章里提到llama-index在这方面的尝试《利用GPT4-V及llama-index构建多模态RAG应用》,本文[1]中将以另一主流框架langchain为例介绍多模态RAG的实现。
大体流程:
1)使用多模态embedding(如 CLIP)处理图像和文本
2)对于图像和文本均使用向量检索
3)将原始图像和文本块传递给多模态 LLM(GPT4-V)进行答案合成
具体实现:
- 安装依赖。
! pip install pdf2image
! pip install pytesseract
! apt install poppler-utils
! apt install tesseract-ocr
#
! pip install -U langchain openai chromadb langchain-experimental # (newest versions required for multi-modal)
#
# lock to 0.10.19 due to a persistent bug in more recent versions
! pip install "unstructured[all-docs]==0.10.19" pillow pydantic lxml pillow matplotlib tiktoken open_clip_torch torch
2.下载数据(测试文档点阅读原文查看)。
import os
import shutil
#os.mkdir("Data")
! wget "https://www.getty.edu/publications/resources/virtuallibrary/0892360224.pdf"
3.提取图像并保存在所需路径中
path = "/content/Data/"
#
file_name = os.listdir(path)
4.使用 Unstructured 中的 partition_pdf 方法提取文本和图像。
# Extract images, tables, and chunk text
from unstructured.partition.pdf import partition_pdf
raw_pdf_elements = partition_pdf(
filename=path + file_name[0],
extract_images_in_pdf=True,
infer_table_structure=True,
chunking_strategy="by_title",
max_characters=4000,
new_after_n_chars=3800,
combine_text_under_n_chars=2000,
image_output_dir_path=path,
5.按类型对文本元素进行分类
tables = []
texts = []
for element in raw_pdf_elements:
if "unstructured.documents.elements.Table" in str(type(element)):
tables.append(str(element))
elif "unstructured.documents.elements.CompositeElement" in str(type(element)):
texts.append(str(element))
#
print(len(tables)
print(len(texts))
#### Response
2
194
6.图像存储在文件路径
from PIL import Image
Image.open("/content/data/figure-26-1.jpg")
7.对文档进行多模态embedding入库(图片及文字)。
在这里,使用了 OpenClip 多模态embedding。为了获得更好的性能,使用了更大的模型(在
langchain_experimental.open_clip.py 中设置)。
model_name = "ViT-g-14" checkpoint = "laion2b_s34b_b88k"
import os
import uuid
import chromadb
import numpy as np
from langchain.vectorstores import Chroma
from langchain_experimental.open_clip import OpenCLIPEmbeddings
from PIL import Image as _PILImage
# Create chroma
vectorstore = Chroma(
collection_name="mm_rag_clip_photos", embedding_function=OpenCLIPEmbeddings()
)
# Get image URIs with .jpg extension only
image_uris = sorted(
[
os.path.join(path, image_name)
for image_name in os.listdir(path)
if image_name.endswith(".jpg")
]
)
# Add images
vectorstore.add_images(uris=image_uris)
# Add documents
vectorstore.add_texts(texts=texts)
# Make retriever
retriever = vectorstore.as_retriever()
8.检索增强生成
上面的vectorstore.add_images 方法将以 base64 编码字符串的形式存储/检索图像,然后将这些信息传递给 GPT-4V。
import base64
import io
from io import BytesIO
import numpy as np
from PIL import Image
def resize_base64_image(base64_string, size=(128, 128)):
"""
Resize an image encoded as a Base64 string.
Args:
base64_string (str): Base64 string of the original image.
size (tuple): Desired size of the image as (width, height).
Returns:
str: Base64 string of the resized image.
"""
# Decode the Base64 string
img_data = base64.b64decode(base64_string)
img = Image.open(io.BytesIO(img_data))
# Resize the image
resized_img = img.resize(size, Image.LANCZOS)
# Save the resized image to a bytes buffer
buffered = io.BytesIO()
resized_img.save(buffered, format=img.format)
# Encode the resized image to Base64
return base64.b64encode(buffered.getvalue()).decode("utf-8")
def is_base64(s):
"""Check if a string is Base64 encoded"""
try:
return base64.b64encode(base64.b64decode(s)) == s.encode()
except Exception:
return False
def split_image_text_types(docs):
"""Split numpy array images and texts"""
images = []
text = []
for doc in docs:
doc = doc.page_content # Extract Document contents
if is_base64(doc):
# Resize image to avoid OAI server error
images.append(
resize_base64_image(doc, size=(250, 250))
) # base64 encoded str
else:
text.append(doc)
return {"images": images, "texts": text}
使用 RunnableParallel 对输入进行格式化,同时为 ChatPromptTemplates 添加图像支持。
from operator import itemgetter
from langchain.chat_models import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnableLambda, RunnablePassthrough,RunnableParallel
def prompt_func(data_dict):
# Joining the context texts into a single string
formatted_texts = "\n".join(data_dict["context"]["texts"])
messages = []
# Adding image(s) to the messages if present
if data_dict["context"]["images"]:
image_message = {
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{data_dict['context']['images'][0]}"
},
}
messages.append(image_message)
# Adding the text message for analysis
text_message = {
"type": "text",
"text": (
"As an expert art critic and historian, your task is to analyze and interpret images, "
"considering their historical and cultural significance. Alongside the images, you will be "
"provided with related text to offer context. Both will be retrieved from a vectorstore based "
"on user-input keywords. Please use your extensive knowledge and analytical skills to provide a "
"comprehensive summary that includes:\n"
"- A detailed description of the visual elements in the image.\n"
"- The historical and cultural context of the image.\n"
"- An interpretation of the image's symbolism and meaning.\n"
"- Connections between the image and the related text.\n\n"
f"User-provided keywords: {data_dict['question']}\n\n"
"Text and / or tables:\n"
f"{formatted_texts}"
),
}
messages.append(text_message)
return [HumanMessage(content=messages)]
利用LCEL 构造RAG chain
from google.colab import userdata
openai_api_key = userdata.get('OPENAI_API_KEY')
model = ChatOpenAI(temperature=0,
openai_api_key=openai_api_key,
model="gpt-4-vision-preview",
max_tokens=1024)
# RAG pipeline
chain = (
{
"context": retriever | RunnableLambda(split_image_text_types),
"question": RunnablePassthrough(),
}
| RunnableParallel({"response":prompt_func| model| StrOutputParser(),
"context": itemgetter("context"),})
)
测试验证:
q1:
response = chain.invoke("hunting on the lagoon")
#
print(response['response'])
print(response['context'])
############# RESPONSE ###############
The image depicts a serene scene of a lagoon with several groups of people engaged in bird hunting. The visual elements include calm waters, boats with hunters wearing red and white clothing, and birds both in flight and used as decoys. The hunters appear to be using long poles, possibly to navigate through the shallow waters or to assist in the hunting process. In the background, there are simple straw huts, suggesting temporary shelters for the hunters. The sky is painted with soft clouds, and the overall color palette is muted, with the reds of the hunters' clothing standing out against the blues and greens of the landscape.
The historical and cultural context of this image is rooted in the Italian Renaissance, specifically in Venice during the late 15th to early 16th century. Vittore Carpaccio, the artist, was known for his genre paintings, which depicted scenes from everyday life with great detail and realism. This painting, "Hunting on the Lagoon," is a testament to Carpaccio'
s keen observation of his environment and the activities of his contemporaries. The inclusion of diverse figures, such as some black individuals, reflects the cosmopolitan nature of Venetian society at the time.
Interpreting the symbolism and meaning of the image, one might consider the lagoon as a symbol of Venice itself—a city intertwined with water, where the boundary between land and sea is often blurred. The act of hunting could represent the human endeavor to harness and interact with nature, a common theme during the Renaissance as people sought to understand and depict the natural world with increasing accuracy. The presence of decoys suggests themes of illusion and reality, which were also explored in Renaissance art.
The connection between the image and the related text is clear. The text provides valuable insights into the painting's background, such as its use as a window cover, which adds a layer of functionality and interactivity to the artwork. The trompe l'oeil on the back with the illusionistic cornice and the real hinge further emphasizes the artist's interest in creating a sense of depth and reality. The mention of the lily blossom at the bottom indicates that the painting may have been altered from its original form, which could have included more symbolic elements or been part of a larger composition.
The text also notes that Carpaccio was famous as a landscape painter, which aligns with the detailed and atmospheric depiction of the lagoon setting. The discovery of the painting only a few years ago suggests that there is still much to learn about Carpaccio'
s work and the nuances of this particular piece. The lack of complete understanding of the subject matter invites further research and interpretation, allowing viewers to ponder the daily life and environment of Renaissance Venice.
{'images': ['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'],
'texts': ["VITTORE CARPACCIO Venetian, 1455/56-1525/26 Hunting on the Lagoon oil on panel, 75.9x63.7cm 6 Carpaccio is considered to be the first great genre painter of the Italian Renaissance, and it is ob- vious that he was a careful observer of his surroundings. The subject of this unusual painting is not yet completely understood, but it apparently depicts groups of Venetians, including some blacks, hunting for birds on the Venetian lagoon. Some birds standing upright in the boats must be decoys. In the background are huts built of straw, which the hunters must have used as temporary lodging. The back of the painting shows an illusionistic cornice with some letters and memoranda—still legible—fastened to the wall. The presence of a real hinge on the back indicates the painting was used as a door to a cupboard or more probably a window cover. It is therefore possible that one had the illusion of looking into the lagoon when the window was shuttered. The presence of a lily blossom at the bottom implies that the painting has been cut down; originally it may have shown the lily in a vase or it may have been cut from a still larger painting in which our fragment was only the background. Reperse: Trompe l'Oeil ",
'3\n\nThis painting was discovered only a few years ago. Unfortunately very little is known about its',
'18\n\npersonality and artistic interests, but he was most famous as a landscape painter.']}
print(response['context']['images'])
####### RESPONSE ##################
['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
辅助函数,用于显示检索到的图像,作为生成响应的源上下文的一部分。
from IPython.display import HTML, display
def plt_img_base64(img_base64):
# Create an HTML img tag with the base64 string as the source
image_html = f'<img src="data:image/jpeg;base64,{img_base64}" />'
# Display the image by rendering the HTML
display(HTML(image_html))
显示与检索文本相关的图片
plt_img_base64(response['context']['images'][0])
q2:
response = chain.invoke("Woman with children")
print(response['response'])
print(response['context'])
########### RESPONSE ######################
The image in question appears to be a portrait of a woman with children, painted in oil on canvas and measuring 94.4x114.2 cm. The woman is likely the central figure in the painting, and the children are probably depicted around her, possibly playing with various instruments as suggested by the text. The woman's age is given as 21, and the painting is dated 1632, which places it in the early 17th century.
The historical and cultural context of this image is significant. The early 17th century was a time of great change and upheaval in Europe, with the Thirty Years' War raging and the rise of absolutist monarchies. In the art world, this was the era of the Baroque, characterized by dramatic, emotional, and often theatrical compositions. The fact that the woman is identified by her age suggests that this is a portrait of a specific individual, possibly a member of the nobility or upper class, as such portraits were often commissioned to commemorate important life events or to display wealth and status.
The symbolism and meaning of the image could be interpreted in several ways. The presence of children suggests themes of motherhood, family, and domesticity. The fact that they are playing instruments could symbolize harmony, creativity, and the importance of music and the arts in the family's life. The woman's age, 21, could also be significant, as it is often considered the age of adulthood and independence.
The related text mentions that the painting was discovered only a few years ago and that very little is known about it. This adds an element of mystery to the image and suggests that there may be more to uncover about its history and significance. The text also mentions a French artist, born in 1702 and died in 1766, which could indicate that the painting is French in origin, although the date of the painting does not align with the artist's lifetime. The mention of Marc de Villiers, born in 1671 and the subject of a painting dated 1747, suggests that the image may be part of a larger collection of portraits of notable individuals from this period.
Overall, this image of a woman with children is a rich and complex work that offers insights into the cultural and historical context of the early 17th century. Its symbolism and meaning are open to interpretation, and the connections between the image and the related text suggest that there is still much to learn about this painting and its place in art history.
{'images': [],
'texts': ['31\n\nThis portrait is dated 1632 and gives the age of the sitter, 21. To our eyes she would appear to be',
'3\n\nThis painting was discovered only a few years ago. Unfortunately very little is known about its',
'oil on canvas, 94.4x114.2 cm\n\n4l\n\nat which they want to play their various instruments.',
'French, 1702-1766\n\n46\n\nThe sitter, Marc de Villiers, was born in 1671, and since this painting is signed and dated in 1747,']}
注意:该查询没有相关图像,因此图像召回为空列表。
q3:
response = chain.invoke("Moses and the Messengers from Canaan")
print(response['response'])
print(response['context'])
########### RESPONSE #############
The image you've provided appears to be a classical painting depicting a group of figures in a pastoral landscape. Unfortunately, the image does not directly correspond to the provided keywords "Moses and the Messengers from Canaan," nor does it seem to relate to the text snippets you've included. However, I will do my best to analyze the image based on its visual elements and provide a general interpretation that might align with the themes of historical and cultural significance.
Visual Elements:
- The painting shows a group of people gathered in a natural setting, which seems to be a forest clearing or the edge of a wooded area.
- The figures are dressed in what appears to be classical or ancient attire, suggesting a historical or mythological scene.
- The color palette is composed of earthy tones, with a contrast between the light and shadow that gives depth to the scene.
- The composition is balanced, with trees framing the scene on the left and the background opening up to a brighter, possibly sunlit area.
Historical and Cultural Context:
- The painting style and attire of the figures suggest it could be from the Renaissance or Baroque period, which were times of great interest in classical antiquity and biblical themes.
- The reference to "Arcadian shepherds discovering a tomb" and "Poussin" in the text indicates a connection to Nicolas Poussin, a French painter of the Baroque era known for his classical landscapes and historical scenes.
Interpretation and Symbolism:
- Without a direct connection to the story of Moses and the messengers from Canaan, it's challenging to provide a precise interpretation. However, the painting could be depicting a scene of discovery or revelation, common themes in Poussin's work.
- The pastoral setting might symbolize an idyllic, peaceful world, often associated with the concept of Arcadia in classical literature and art.
- The gathering of figures could represent a moment of communal storytelling or the sharing of important news, which could loosely tie into the idea of messengers or a significant event.
Connections to Related Text:
- The text mentions the theme of "Arcadian shepherds discovering a tomb," which is a motif Poussin famously depicted in his painting "Et in Arcadia ego." While the image does not show a tomb, the pastoral setting and classical attire could suggest a similar thematic exploration.
- The reference to Flemish art and the interaction with Italian Renaissance artists might imply a fusion of Northern European and Italian artistic styles, which could be reflected in the painting's technique and composition.
In conclusion, while the image does not directly depict the story of Moses and the messengers from Canaan, it does evoke the classical and pastoral themes prevalent in the work of artists like Poussin during the Baroque period. The painting may represent a general scene of classical antiquity or a mythological event, characterized by a serene landscape and a gathering of figures engaged in a significant moment. The historical and cultural significance of such a painting would lie in its representation of the values and aesthetics of the time, as well as its potential to blend different artistic traditions.
{'images': ['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'],
'texts': ['16\n\nThe theme of Arcadian shepherds discovering a tomb originated in painting with Poussin in the',
'Flemish, 1488-1541\n\n20\n\nWhen Italian artists of the Renaissance came into contact with paintings from the north, they']}
显示检索到的图像
for images in response['context']['images']:
plt_img_base64(images)
以上,利用多模态 LLM 和 Langchain 以及unstructured,成功地从非结构化数据中实现了 RAG。不仅利用了文档中嵌入的图像信息,还利用了文本信息。
参考原文:
[1] Plaban Nayak:Multimodal RAG using Langchain Expression Language And GPT4-Vision
相关推荐
- 总结下SpringData JPA 的常用语法
-
SpringDataJPA常用有两种写法,一个是用Jpa自带方法进行CRUD,适合简单查询场景、例如查询全部数据、根据某个字段查询,根据某字段排序等等。另一种是使用注解方式,@Query、@Modi...
- 解决JPA在多线程中事务无法生效的问题
-
在使用SpringBoot2.x和JPA的过程中,如果在多线程环境下发现查询方法(如@Query或findAll)以及事务(如@Transactional)无法生效,通常是由于S...
- PostgreSQL系列(一):数据类型和基本类型转换
-
自从厂子里出来后,数据库的主力就从Oracle变成MySQL了。有一说一哈,贵确实是有贵的道理,不是开源能比的。后面的工作里面基本上就是主MySQL,辅MongoDB、ES等NoSQL。最近想写一点跟...
- 基于MCP实现text2sql
-
目的:基于MCP实现text2sql能力参考:https://blog.csdn.net/hacker_Lees/article/details/146426392服务端#选用开源的MySQLMCP...
- ORACLE 错误代码及解决办法
-
ORA-00001:违反唯一约束条件(.)错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。ORA-00017:请求会话以设置跟踪事件ORA-00018:超出最大会话数ORA-00...
- 从 SQLite 到 DuckDB:查询快 5 倍,存储减少 80%
-
作者丨Trace译者丨明知山策划丨李冬梅Trace从一开始就使用SQLite将所有数据存储在用户设备上。这是一个非常不错的选择——SQLite高度可靠,并且多种编程语言都提供了广泛支持...
- 010:通过 MCP PostgreSQL 安全访问数据
-
项目简介提供对PostgreSQL数据库的只读访问功能。该服务器允许大型语言模型(LLMs)检查数据库的模式结构,并执行只读查询操作。核心功能提供对PostgreSQL数据库的只读访问允许L...
- 发现了一个好用且免费的SQL数据库工具(DBeaver)
-
缘起最近Ai不是大火么,想着自己也弄一些开源的框架来捣腾一下。手上用着Mac,但Mac都没有显卡的,对于学习Ai训练模型不方便,所以最近新购入了一台4090的拯救者,打算用来好好学习一下Ai(呸,以上...
- 微软发布.NET 10首个预览版:JIT编译器再进化、跨平台开发更流畅
-
IT之家2月26日消息,微软.NET团队昨日(2月25日)发布博文,宣布推出.NET10首个预览版更新,重点改进.NETRuntime、SDK、libraries、C#、AS...
- 数据库管理工具Navicat Premium最新版发布啦
-
管理多个数据库要么需要使用多个客户端应用程序,要么找到一个可以容纳你使用的所有数据库的应用程序。其中一个工具是NavicatPremium。它不仅支持大多数主要的数据库管理系统(DBMS),而且它...
- 50+AI新品齐发,微软Build放大招:拥抱Agent胜算几何?
-
北京时间5月20日凌晨,如果你打开微软Build2025开发者大会的直播,最先吸引你的可能不是一场原本属于AI和开发者的技术盛会,而是开场不久后的尴尬一幕:一边是几位微软员工在台下大...
- 揭秘:一条SQL语句的执行过程是怎么样的?
-
数据库系统能够接受SQL语句,并返回数据查询的结果,或者对数据库中的数据进行修改,可以说几乎每个程序员都使用过它。而MySQL又是目前使用最广泛的数据库。所以,解析一下MySQL编译并执行...
- 各家sql工具,都闹过哪些乐子?
-
相信这些sql工具,大家都不陌生吧,它们在业内绝对算得上第一梯队的产品了,但是你知道,他们都闹过什么乐子吗?首先登场的是Navicat,这款强大的数据库管理工具,曾经让一位程序员朋友“火”了一把。Na...
- 详解PG数据库管理工具--pgadmin工具、安装部署及相关功能
-
概述今天主要介绍一下PG数据库管理工具--pgadmin,一起来看看吧~一、介绍pgAdmin4是一款为PostgreSQL设计的可靠和全面的数据库设计和管理软件,它允许连接到特定的数据库,创建表和...
- Enpass for Mac(跨平台密码管理软件)
-
还在寻找密码管理软件吗?密码管理软件有很多,但是综合素质相当优秀且完全免费的密码管理软件却并不常见,EnpassMac版是一款免费跨平台密码管理软件,可以通过这款软件高效安全的保护密码文件,而且可以...
- 一周热门
-
-
Python实现人事自动打卡,再也不会被批评
-
【验证码逆向专栏】vaptcha 手势验证码逆向分析
-
Psutil + Flask + Pyecharts + Bootstrap 开发动态可视化系统监控
-
一个解决支持HTML/CSS/JS网页转PDF(高质量)的终极解决方案
-
再见Swagger UI 国人开源了一款超好用的 API 文档生成框架,真香
-
网页转成pdf文件的经验分享 网页转成pdf文件的经验分享怎么弄
-
C++ std::vector 简介
-
飞牛OS入门安装遇到问题,如何解决?
-
系统C盘清理:微信PC端文件清理,扩大C盘可用空间步骤
-
10款高性能NAS丨双十一必看,轻松搞定虚拟机、Docker、软路由
-
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)
- mysql刷新权限 (34)