跳到主要內容
Open In ColabOpen on GitHub

Google 生成式 AI 嵌入

使用 langchain-google-genai 套件中的 GoogleGenerativeAIEmbeddings 類別,連接到 Google 的生成式 AI 嵌入服務。

安裝

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

憑證

import getpass
import os

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

使用方式

from langchain_google_genai import GoogleGenerativeAIEmbeddings

embeddings = GoogleGenerativeAIEmbeddings(model="models/text-embedding-004")
vector = embeddings.embed_query("hello, world!")
vector[:5]
API 參考文件:GoogleGenerativeAIEmbeddings
[0.05636945, 0.0048285457, -0.0762591, -0.023642512, 0.05329321]

批次

您也可以一次嵌入多個字串以加快處理速度

vectors = embeddings.embed_documents(
[
"Today is Monday",
"Today is Tuesday",
"Today is April Fools day",
]
)
len(vectors), len(vectors[0])
(3, 768)

任務類型

GoogleGenerativeAIEmbeddings 選擇性地支援 task_type,目前必須是以下其中之一

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

預設情況下,我們在 embed_documents 方法中使用 retrieval_document,在 embed_query 方法中使用 retrieval_query。如果您提供任務類型,我們將對所有方法使用該類型。

%pip install --upgrade --quiet  matplotlib scikit-learn
Note: you may need to restart the kernel to use updated packages.
query_embeddings = GoogleGenerativeAIEmbeddings(
model="models/embedding-001", task_type="retrieval_query"
)
doc_embeddings = GoogleGenerativeAIEmbeddings(
model="models/embedding-001", task_type="retrieval_document"
)

所有這些都將使用 'retrieval_query' 任務集嵌入

query_vecs = [query_embeddings.embed_query(q) for q in [query, query_2, answer_1]]

所有這些都將使用 'retrieval_document' 任務集嵌入

doc_vecs = [doc_embeddings.embed_query(q) for q in [query, query_2, answer_1]]

在檢索中,相對距離很重要。在上圖中,您可以看到「相關文件」和「相似文件」之間相似度分數的差異,在後一種情況下,相似查詢和相關文件之間的差異更強。

其他設定

您可以將以下參數傳遞給 ChatGoogleGenerativeAI 以自訂 SDK 的行為

  • client_options: Client Options 傳遞給 Google API Client 的用戶端選項,例如自訂 client_options["api_endpoint"]
  • transport: 要使用的傳輸方法,例如 restgrpcgrpc_asyncio

此頁面是否對您有幫助?