Gemini API 生成最先進的文本嵌入。嵌入是一組浮點數,代表一個單詞、句子或段落的含義。您可以在許多下游應用中使用嵌入,例如文檔搜索。
此筆記本提供了一些快速的代碼示例,展示了如何開始生成嵌入。
!pip install -q -U google-generativeai
import google.generativeai as genai
要運行以下代碼單元,您的 API 密鑰必須存儲在名為 GOOGLE_API_KEY
的 Colab Secret 中。如果您尚未擁有 API 密鑰,或者不確定如何創建 Colab Secret,請參見 Authentication 示例。
from google.colab import userdata
GOOGLE_API_KEY=userdata.get('GOOGLE_API_KEY')
genai.configure(api_key=GOOGLE_API_KEY)
使用 models/text-embedding-004
模型調用 embed_content
方法來生成文本嵌入。
text = "Hello world"
result = genai.embed_content(model="models/text-embedding-004", content=text)
# 為了使輸出易於管理,只打印嵌入的一部分
print(str(result['embedding'])[:50], '... TRIMMED]')
print(len(result['embedding'])) # 嵌入的維度是 768
您可以用一次 API 調用嵌入多個提示,以提高效率。
result = genai.embed_content(
model="models/text-embedding-004",
content=[
'What is the meaning of life?',
'How much wood would a woodchuck chuck?',
'How does the brain work?'])
for embedding in result['embedding']:
print(str(embedding)[:50], '... TRIMMED]')
text-embedding-004
模型還支持更低的嵌入維度。指定 output_dimensionality
來截短輸出。
# 未截短
result1 = genai.embed_content(
model="models/text-embedding-004",
content="Hello world")
# 截短
result2 = genai.embed_content(
model="models/text-embedding-004",
content="Hello world",
output_dimensionality=10)
(len(result1['embedding']), len(result2['embedding']))
task_type
讓我們來看看 embed_content
方法所接受的所有參數。共有五個參數:
model
: 必填。必須是 models/text-embedding-004
或 models/embedding-001
。content
: 必填。您想嵌入的內容。task_type
: 可選。嵌入將用於的任務類型。title
: 可選。如果您的任務類型是 retrieval_document
(或 document
),則應僅設置此參數。output_dimensionality
: 可選。輸出嵌入的縮減維度。如果設置,將從結尾截短輸出嵌入中的多餘值。這由 models/text-embedding-004
支持,但不能在 models/embedding-001
中指定。task_type
是一個可選參數,向 API 提供您打算在應用中使用嵌入的提示。
以下是接受的 task_type
參數:
unspecified
: 如果您未設置值,默認為 retrieval_query
。retrieval_query
(或 query
):給定文本在搜索/檢索設置中是查詢。retrieval_document
(或 document
):給定文本是被檢索語料庫中的文檔。可選的,還設置文檔標題參數 title
。semantic_similarity
(或 similarity
):給定文本將用於語義文本相似性(STS)。classification
: 給定文本將被分類。clustering
: 嵌入將用於聚類。question_answering
: 給定文本將用於問答。fact_verification
: 給定文本將用於事實驗證。# 注意,API 根據 `task_type` 返回不同的嵌入
result1 = genai.embed_content(
model="models/text-embedding-004",
content="Hello world")
result2 = genai.embed_content(
model="models/text-embedding-004",
content="Hello world",
task_type="document")
print(str(result1['embedding'])[:50], '... TRIMMED]')
print(str(result2['embedding'])[:50], '... TRIMMED]')
查看這些 Cookbook 中的示例,以了解有關嵌入的更多信息:
您可以在 ai.google.dev 的 嵌入指南 中了解有關嵌入的一般信息。
參考:
https://ywctech.net/ml-ai/langchain-vs-llamaindex-naive-rag/
https://github.com/google-gemini/cookbook/blob/main/quickstarts/Embeddings.ipynb
我是 Wolke。我是一名專業程式開發者,專長是開發 AI 和程式解決方案。
我投入了不少時間在專業發展上。我是多本書的作者,其中包括《LINE聊天機器人+AI+雲端+開源+程式:輕鬆入門到完整學習》和《ChatGPT來襲,未來人人都需具備的運算思維!應用詠唱工程來釋放程式生產力—程式學習/開發篇》。也有出版線上課程,我熱衷於分享我的經驗和技術,幫助其他開發者更好地利用 AI 工具。
也在許多知名大學、論壇、社團擔任講者,如果貴方有需要也歡迎與我聯繫。
2023年 講座 紀錄
最後這篇文章若有切合你的需求,敬請訂閱按讚分享