Google生成式AI嵌入(AI Studio和Gemini API)
使用GoogleGenerativeAIEmbeddings类,位于 langchain-google-genai 软件包中。
这将帮助您开始使用使用 LangChain 的 Google 生成式 AI 嵌入模型(如 Gemini)。有关GoogleGenerativeAIEmbeddings功能和配置选项,请参考 API 参考。
概述
集成详细信息
| 提供商 | 包 |
|---|---|
| Google Gemini | langchain-google-genai |
设置
要访问 Google Generative AI 嵌入模型,您需要创建一个 Google Cloud 项目,启用 Generative Language API,获取 API 密钥,然后安装langchain-google-genai集成包。
凭据
要使用 Google 生成式 AI 模型,您必须拥有 API 密钥。您可以在 Google AI Studio 中创建一个。有关说明,请参阅 Google 文档。
获得密钥后,将其设置为环境变量GOOGLE_API_KEY:
import getpass
import os
if not os.getenv("GOOGLE_API_KEY"):
os.environ["GOOGLE_API_KEY"] = getpass.getpass("Enter your Google API key: ")
要启用模型调用的自动跟踪,请设置您的 LangSmith API 密钥:
# os.environ["LANGSMITH_TRACING"] = "true"
# os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
安装
%pip install --upgrade --quiet langchain-google-genai
用法
from langchain_google_genai import GoogleGenerativeAIEmbeddings
embeddings = GoogleGenerativeAIEmbeddings(model="models/gemini-embedding-exp-03-07")
vector = embeddings.embed_query("hello, world!")
vector[:5]
[-0.024917153641581535,
0.012005362659692764,
-0.003886754624545574,
-0.05774897709488869,
0.0020742062479257584]
批
您还可以一次嵌入多个字符串以加快处理速度:
vectors = embeddings.embed_documents(
[
"Today is Monday",
"Today is Tuesday",
"Today is April Fools day",
]
)
len(vectors), len(vectors[0])
(3, 3072)
索引和检索
嵌入模型通常用于检索增强生成 (RAG) 流程中,既可以作为索引数据的一部分,也可以作为以后检索数据的一部分。有关更详细的说明,请参阅我们的 RAG 教程。
下面,了解如何使用embeddings对象。在此示例中,我们将在InMemoryVectorStore.
# Create a vector store with a sample text
from langchain_core.vectorstores import InMemoryVectorStore
text = "LangChain is the framework for building context-aware reasoning applications"
vectorstore = InMemoryVectorStore.from_texts(
[text],
embedding=embeddings,
)
# Use the vectorstore as a retriever
retriever = vectorstore.as_retriever()
# Retrieve the most similar text
retrieved_documents = retriever.invoke("What is LangChain?")
# show the retrieved document's content
retrieved_documents[0].page_content
'LangChain is the framework for building context-aware reasoning applications'
任务类型
GoogleGenerativeAIEmbeddings(可选)支持task_type,该字段当前必须是以下之一:
SEMANTIC_SIMILARITY:用于生成经过优化的嵌入向量以评估文本相似性。CLASSIFICATION:用于生成经过优化的嵌入,以根据预设标签对文本进行分类。CLUSTERING:用于生成嵌入,这些嵌入经过优化,可根据文本的相似性对文本进行聚类。RETRIEVAL_DOCUMENT,RETRIEVAL_QUERY,QUESTION_ANSWERING和FACT_VERIFICATION:用于生成针对文档搜索或信息检索优化的嵌入。CODE_RETRIEVAL_QUERY:用于检索基于自然语言查询的代码块,例如对数组进行排序或反转链表。代码块的嵌入是使用RETRIEVAL_DOCUMENT.
默认情况下,我们使用RETRIEVAL_DOCUMENT在embed_documentsmethod 和RETRIEVAL_QUERY在embed_query方法。如果您提供任务类型,我们将对所有方法使用该类型。
%pip install --upgrade --quiet matplotlib scikit-learn
from langchain_google_genai import GoogleGenerativeAIEmbeddings
from sklearn.metrics.pairwise import cosine_similarity
query_embeddings = GoogleGenerativeAIEmbeddings(
model="models/gemini-embedding-exp-03-07", task_type="RETRIEVAL_QUERY"
)
doc_embeddings = GoogleGenerativeAIEmbeddings(
model="models/gemini-embedding-exp-03-07", task_type="RETRIEVAL_DOCUMENT"
)
q_embed = query_embeddings.embed_query("What is the capital of France?")
d_embed = doc_embeddings.embed_documents(
["The capital of France is Paris.", "Philipp is likes to eat pizza."]
)
for i, d in enumerate(d_embed):
print(f"Document {i+1}:")
print(f"Cosine similarity with query: {cosine_similarity([q_embed], [d])[0][0]}")
print("---")
Document 1
Cosine similarity with query: 0.7892893360164779
---
Document 2
Cosine similarity with query: 0.5438283285204146
---
API 参考
有关GoogleGenerativeAIEmbeddings功能和配置选项,请参考 API 参考。
其他配置
您可以将以下参数传递给 ChatGoogleGenerativeAI 以自定义 SDK 的行为:
client_options:要传递给 Google API 客户端的客户端选项,例如自定义client_options["api_endpoint"]transport:要使用的传输方法,例如rest,grpc或grpc_asyncio.