text-embedding-004
モデルは、単語、フレーズ、文の最先端のエンベディングを生成します。生成されたエンベディングは、セマンティック検索、テキスト分類、クラスタリングなどのタスクに使用できます。エンベディングの詳細については、研究論文をご覧ください。
エンベディングとは
エンベディングは意味論的意味とコンテキストをキャプチャするため、意味が類似するテキストのエンベディングは「近い」エンベディングになります。たとえば、「犬を獣医に連れて行った」と「猫を獣医に連れて行った」という文は、どちらも類似したコンテキストを記述しているため、ベクトル空間内でエンベディングが互いに近くなります。
エンベディングを使用すると、さまざまなテキストを比較して、それらの関連性を把握できます。たとえば、テキスト「cat」と「dog」のエンベディングが近い場合、これらの単語は意味、コンテキスト、またはその両方で類似していると推測できます。これにより、さまざまな一般的な AI のユースケースが可能になります。
エンベディングを生成する
embedContent
メソッドを使用してテキスト エンベディングを生成します。
Python
import google.generativeai as genai
import os
genai.configure(api_key=os.environ["GEMINI_API_KEY"])
result = genai.embed_content(
model="models/text-embedding-004",
content="What is the meaning of life?")
print(str(result['embedding']))
Node.js
const { GoogleGenerativeAI } = require("@google/generative-ai");
const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY);
const model = genAI.getGenerativeModel({ model: "text-embedding-004"});
async function run() {
const result = await model.embedContent("What is the meaning of life?");
console.log(result.embedding.values);
}
run();
curl
curl "https://generativelanguage.googleapis.com/v1beta/models/text-embedding-004:embedContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model": "models/text-embedding-004",
"content": {
"parts":[{
"text": "What is the meaning of life?"}]}
}'
Go
ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("GEMINI_API_KEY")))
if err != nil {
log.Fatal(err)
}
defer client.Close()
em := client.EmbeddingModel("text-embedding-004")
res, err := em.EmbedContent(ctx, genai.Text("What is the meaning of life?"))
if err != nil {
panic(err)
}
fmt.Println(res.Embedding.Values)
ユースケース
テキスト エンベディングは、次のようなさまざまな一般的な AI ユースケースで使用されます。
情報検索: エンベディングを使用して、入力テキストの一部から意味的に類似したテキストを取得できます。
クラスタリング: エンベディングのグループを比較することで、隠れた傾向を特定できます。
ベクトル データベース: さまざまなエンベディングのユースケースを本番環境に導入する場合は、エンベディングをベクトル データベースに保存するのが一般的です。
分類: エンベディングを使用してモデルをトレーニングし、ドキュメントをカテゴリに分類できます。
Gemini エンベディング モデル
Gemini API には、テキスト エンベディングを生成する次の 2 つのモデルがあります。
Text Embeddings は、768 次元未満の弾性エンベディング サイズを提供するエンベディング モデルの更新版です。弾性エンベディングは、より小さい出力次元を生成し、パフォーマンスの損失を最小限に抑えながらコンピューティングとストレージの費用を節約できる可能性があります。
新しいプロジェクトやアプリケーションにはテキスト エンベディングを使用します。