Type something to search...
使用 Gemini Pro 和 LangChain 的多模式 RAG

使用 Gemini Pro 和 LangChain 的多模式 RAG

介绍

在本教程中,我们将探索将 Gemini Pro 和 Gemini Pro Vision 与 LangChain 框架集成,以实现多模态(在这种情况下为图像)检索增强生成(RAG)。这个简短的教程适合初学者和经验丰富的从业者,不仅以 Google AI Studio 作为主要环境奠定基础,还无缝过渡到演示如何使用 Google Cloud’s Vertex AI 适应和进一步增强这些实现。

设置环境

首先,我们需要设置我们的环境,以确保我们拥有所有必要的工具和库。

为此,我们需要 Langchain、Langchain Google Gen AI 包以及用于 RAG 的向量存储包,如下所示:

pip install — upgrade langchain langchain-google-genai “langchain[docarray]” faiss-cpu

然后,您还需要提供 Google AI Studio API 密钥,以便模型进行交互:

if "GOOGLE_API_KEY" not in os.environ:
  os.environ[“GOOGLE_API_KEY”] = getpass.getpass(“Provide your Google API Key”)

为了方便使用,我还写了一个简单的函数,显示我正在使用的图像。这个函数简单地从提供的 URL 下载图像并显示预览:

def get_image(url, filename):
  content = requests.get(url).content
  with open(f'/content/{filename}.png', 'wb') as f:
  f.write(content)
  image = Image.open(f"/content/{filename}.png")
  image.show()
  return image

简单的 LLM 交互

让我们从一个非常简单的 LLM 交互开始。为此,我们可以简单地调用 ChatGoogleGenerativeAI 的 Gemini Pro 模型,并调用,如下所示:

llm = ChatGoogleGenerativeAI(model=”gemini-pro”)
result = llm.invoke("Write a ballad about Gemini Pro in around 3 sentences.")
print(result.content)

结果你会得到类似这样的内容:

在星辰的领域,Gemini Pro 闪耀, 一道天体的灯塔,划定了界限, 指引着观星者穿越宇宙的设计。

同样,你也可以在聊天界面中使用它,采用系统、人类消息/对话格式,如下所示:

model = ChatGoogleGenerativeAI(model=”gemini-pro”, convert_system_message_to_human=True)
print(model([
  SystemMessage(content="Answer only yes or no."),
  HumanMessage(content="Is apple a fruit?"),
  ]).content)

多模态 LLM

在本教程中,我将使用一个非常简单的用例,假设我是一名运动鞋爱好者,基本上想要找到在附近的本地商店购买特定运动鞋型号的方法。为此,我准备了一个虚拟知识库,里面包含了一些关于本地商店的虚假信息,以及某些流行运动鞋品牌的规格。有趣的是,这个知识库也是通过 Gemini Pro 使用 Google Gemini 聊天界面生成的。

让我们从一张示例图片开始:

image = get_image(<image_url>, “nike3”)
plt.imshow(image)
plt.show()

作为示例,我考虑这张 Nike 运动鞋的图片。

现在,让我们调用 Gemini Pro Vision 模型,询问它关于这张特定图片的一些信息。为此,您只需将模型名称更改为 “gemini-pro-vision”

llm = ChatGoogleGenerativeAI(model=”gemini-pro-vision”)
message = HumanMessage(
content=[
  {
    "type": "text",
    "text": "What's in this image? provide full detail as possible.",
  }, # You can optionally provide text parts
  {"type": "image_url", "image_url": image},
])
print(
llm.invoke([message]).content
)

您将得到如下输出:

这是一个 Nike Air Max 95 运动鞋的产品图片,颜色为棕色小麦色。鞋面由网布和麂皮制成,带有皮革泥挡。中底由泡沫材料制成,后跟有可见的气垫单元。外底由橡胶制成,具有华夫格图案以增强抓地力。

免责声明:所提供的描述可能不准确,反映的是模型对图像的解读,而非与之相关的事实信息。

使用多模态的RAG

现在,让我们深入了解如何使用这种多模态方法执行RAG。首先,让我们为这个RAG创建一个信息源。为此,我写了一些关于几款Nike运动鞋的段落信息,以及一些虚构的尼泊尔本地商店位置。

store_information = “Nike Air Max Plus sneakers. They feature a brown upper with a black Nike Swoosh logo on the side and a visible Air Max unit in the heel. The sole is white.
Here are some more details about the Nike Air Max Plus:
Style: TN
Release date: January 1, 2017
Style code: 852630300
Original retail price: $150 USD
The Air Max Plus, also known as the TN, is a popular Nike running shoe that was first released in 1998. It is known for its unique design, which includes a gradient upper, visible Air Max units, and a wavy outsole. The TN has been a popular shoe among sneakerheads and casual wearers alike for over two decades.
It features a brown upper with a black Swoosh logo and a white sole. The shoe is currently available for resale on the StockX marketplace for an average price of around $150 USD.
Nike Air Max Plus Store Location: "Kings Way, Kathmandu, Nepal

...

"

然后,让我们创建一个Langchain链,它基本上根据我们知识库中提供的图像描述获取关于Nike模型的信息以及可以在哪里购买它。

llm_text = ChatGoogleGenerativeAI(model=”gemini-pro”)
template = """

{context}

{information}
Provide brief information and store location.
"""
prompt = ChatPromptTemplate.from_template(template)
rag_chain = (
  {"context": retriever, "information": RunnablePassthrough()}
  | prompt
  | llm_text
  | StrOutputParser()
)

这里需要注意的是Gemini-ProGemini-Pro-Vision是两个不同的模型,您需要以不同的方式调用它们。在上面的代码中,我们调用了Gemini Pro文本模型,该模型根据由gemini-pro-vision模型生成的图像描述执行RAG。

现在,让我们设置一个完整的链,它首先生成图像描述,然后使用上述链进行RAG。

llm_vision = ChatGoogleGenerativeAI(model=”gemini-pro-vision”, temperature=0.0)
full_chain = (
  RunnablePassthrough() | llm_vision | StrOutputParser() | rag_chain
)

执行 RAG

现在,让我们对刚刚设置的内容进行一些测试。首先,获取另一张图像作为样本

image = get_image(url_3, “nike3”)
plt.imshow(image)
plt.show()

然后,让我们调用我们的 RAG:

message = HumanMessage(
  content=[
    {
      "type": "text",
      "text": "提供有关给定运动鞋的品牌和型号的信息。",
    }, # 您可以选择性地提供文本部分
    {"type": "image_url", "image_url": image},
  ])

现在让我们看看我们得到了什么:

result = full_chain.invoke([message])
display(Markdown(result))

作为输出,我们将得到类似于以下内容的结果,这基于我们的虚构信息来源:

Nike Offcourt Slide软质一体式鞋面舒适的泡沫中底耐用的橡胶外底提供多种颜色选择

商店位置: 尼泊尔,巴克塔布尔

使用 Vertex AI 模型

除了使用 Google AI Studio 模型外,您还可以使用 Google Cloud 的 Vertex AI Gemini Pro 模型。为此,您首先需要为您的云环境安装与 Vertex AI 相关的包和 Langchain,如下所示:

pip install — upgrade google-cloud-aiplatform langchain-google-vertexai

然后,使用以下命令设置与您的云项目相关的必要配置:

gcloud init

接下来,您可以将 Vertex AI 模型用于多模态用例,如下所示:

from langchain_google_vertexai import VertexAI
from langchain_google_vertexai import VertexAIEmbeddings

model_vision = VertexAI(model_name="gemini-1.0-pro-vision-001")
model_text = VertexAI(model_name="gemini-1.0-pro-001")

结论

在这个简短的教程中,我们探讨了如何将 Gemini Pro 和 Gemini Pro vision 与 LangChain 结合使用,以实现多模态 RAG 应用程序。

Related Posts

使用 ChatGPT 搜索网络功能的 10 种创意方法

使用 ChatGPT 搜索网络功能的 10 种创意方法

例如,提示和输出 你知道可以使用 ChatGPT 的“搜索网络”功能来完成许多任务,而不仅仅是基本的网络搜索吗? 对于那些不知道的人,ChatGPT 新的“搜索网络”功能提供实时信息。 截至撰写此帖时,该功能仅对使用 ChatGPT 4o 和 4o-mini 的付费会员开放。 ![](https://images.weserv.nl/?url=https://cdn-im

阅读更多
在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和科技这样一个动态的行业中,保持领先意味着不断提升你的技能。无论你是希望深入了解人工智能模型性能、掌握数据分析,还是希望通过人工智能转变传统领域如法律,这些课程都是你成功的捷径。以下是一个精心策划的高价值课程列表,可以助力你的职业发展,并让你始终处于创新的前沿。 1. 生成性人工智能简介课程: [生成性人工智能简介](https://genai.works

阅读更多
10 个强大的 Perplexity AI 提示,让您的营销任务自动化

10 个强大的 Perplexity AI 提示,让您的营销任务自动化

在当今快速变化的数字世界中,营销人员总是在寻找更智能的方法来简化他们的工作。想象一下,有一个个人助理可以为您创建受众档案,建议营销策略,甚至为您撰写广告文案。这听起来像是一个梦想? 多亏了像 Perplexity 这样的 AI 工具,这个梦想现在成为现实。通过正确的提示,您可以将 AI 转变为您的 个人营销助理。在本文中,我将分享 10 个强大的提示,帮助您自动

阅读更多
10+ 面向 UI/UX 设计师的顶级 ChatGPT 提示

10+ 面向 UI/UX 设计师的顶级 ChatGPT 提示

人工智能技术,如机器学习、自然语言处理和数据分析,正在重新定义传统设计方法。从自动化重复任务到实现个性化用户体验,人工智能使设计师能够更加专注于战略思维和创造力。随着这一趋势的不断增长,UI/UX 设计师越来越多地采用 AI 驱动的工具来促进他们的工作。利用人工智能不仅能提供基于数据的洞察,还为满足多样化用户需求的创新设计解决方案开辟了机会。 1. 用户角色开发 目的

阅读更多
在几分钟内完成数月工作的 100 种人工智能工具

在几分钟内完成数月工作的 100 种人工智能工具

人工智能(AI)的快速发展改变了企业的运作方式,使人们能够在短短几分钟内完成曾经需要几周或几个月的任务。从内容创作到网站设计,AI工具帮助专业人士节省时间,提高生产力,专注于创造力。以下是按功能分类的100个AI工具的全面列表,以及它们在现实世界中的使用实例。 1. 研究工具 研究可能耗时,但人工智能工具使查找、分析和组织数据变得更加容易。**ChatGPT, Cop

阅读更多
你从未知道的 17 个令人惊叹的 GitHub 仓库

你从未知道的 17 个令人惊叹的 GitHub 仓库

Github 隐藏的宝石!! 立即收藏的代码库 学习编程相对简单,但掌握编写更好代码的艺术要困难得多。GitHub 是开发者的宝藏,那里“金子”是其他人分享的精心编写的代码。通过探索 GitHub,您可以发现如何编写更清晰的代码,理解高质量代码的样子,并学习成为更熟练开发者的基本步骤。 1. notwaldorf/emoji-translate *谁需

阅读更多