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-o3-mini与perplexity Deep Research的3步提示:提升论文写作质量的终极指南

结合chatgpt-o3-mini与perplexity Deep Research的3步提示:提升论文写作质量的终极指南

AI 研究报告和论文写作 合并两个系统指令以获得两个模型的最佳效果 Perplexity AI 的 Deep Research 工具提供专家级的研究报告,而 OpenAI 的 ChatGPT-o3-mini-high 擅长推理。我发现你可以将它们结合起来生成令人难以置信的论文,这些论文比任何一个模型单独撰写的都要好。你只需要将这个一次性提示复制到 **

阅读更多
让 Excel 过时的 10 种 Ai 工具:实现数据分析自动化,节省手工作业时间

让 Excel 过时的 10 种 Ai 工具:实现数据分析自动化,节省手工作业时间

Non members click here作为一名软件开发人员,多年来的一个发现总是让我感到惊讶,那就是人们还在 Excel

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

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

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

阅读更多
掌握Ai代理:解密Google革命性白皮书的10个关键问题解答

掌握Ai代理:解密Google革命性白皮书的10个关键问题解答

10 个常见问题解答 本文是我推出的一个名为“10 个常见问题解答”的新系列的一部分。在本系列中,我旨在通过回答关于该主题的十个最常见问题来分解复杂的概念。我的目标是使用简单的语言和相关的类比,使这些想法易于理解。 图片来自 [Solen Feyissa](https://unsplash.com/@solenfeyissa?utm_source=medium&utm_medi

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

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

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

阅读更多
揭开真相!深度探悉DeepSeek AI的十大误区,您被误导了吗?

揭开真相!深度探悉DeepSeek AI的十大误区,您被误导了吗?

在AI军备竞赛中分辨事实与虚构 DeepSeek AI真的是它所宣传的游戏规则改变者,还是仅仅聪明的营销和战略炒作?👀 虽然一些人将其视为AI效率的革命性飞跃,但另一些人则认为它的成功建立在借用(甚至窃取的)创新和可疑的做法之上。传言称,DeepSeek的首席执行官在疫情期间像囤积卫生纸一样囤积Nvidia芯片——这只是冰山一角。 从其声称的550万美元培训预算到使用Open

阅读更多
Type something to search...