API Gemini поддерживает несколько моделей внедрения, которые генерируют внедрения для слов, фраз, кода и предложений. Полученные вложения затем можно использовать для таких задач, как семантический поиск, классификация текста и кластеризация, а также для многих других.
Что такое вложения?
Вложения — это числовые представления текста (или других медиаформатов), которые фиксируют отношения между входными данными. Встраивание текста работает путем преобразования текста в массивы чисел с плавающей запятой, называемые векторами . Эти векторы предназначены для передачи смысла текста. Длина массива внедрения называется размерностью вектора. Отрывок текста может быть представлен вектором, содержащим сотни измерений.
Вложения улавливают семантическое значение и контекст, в результате чего текст со схожим значением имеет «более близкие» вложения. Например, предложения «Я отвез свою собаку к ветеринару» и «Я отвез свою кошку к ветеринару» будут иметь вложения, близкие друг к другу в векторном пространстве.
Вы можете использовать встраивания, чтобы сравнивать разные тексты и понимать, как они связаны. Например, если вложения текста «кошка» и «собака» расположены близко друг к другу, вы можете сделать вывод, что эти слова схожи по значению, контексту или и тому, и другому. Это позволяет использовать различные распространенные варианты использования ИИ .
Генерация вложений
Используйте метод embedContent
для создания вложений текста:
from google import genai
client = genai.Client(api_key="GEMINI_API_KEY")
result = client.models.embed_content(
model="gemini-embedding-exp-03-07",
contents="What is the meaning of life?")
print(result.embeddings)
import { GoogleGenAI } from "@google/genai";
async function main() {
const ai = new GoogleGenAI({ apiKey: "GEMINI_API_KEY" });
const response = await ai.models.embedContent({
model: 'gemini-embedding-exp-03-07',
contents: 'What is the meaning of life?',
});
console.log(response.embeddings);
}
main();
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("gemini-embedding-exp-03-07")
res, err := em.EmbedContent(ctx, genai.Text("What is the meaning of life?"))
if err != nil {
panic(err)
}
fmt.Println(res.Embedding.Values)
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-exp-03-07:embedContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model": "models/gemini-embedding-exp-03-07",
"content": {
"parts":[{
"text": "What is the meaning of life?"}]}
}'
Вы также можете генерировать внедрения для нескольких фрагментов одновременно, передавая их в виде списка строк.
Типы задач
При создании систем расширенной генерации поиска (RAG) обычно используется встраивание текста для выполнения поиска по сходству. В некоторых случаях это может привести к ухудшению качества, поскольку вопросы и ответы на них семантически не похожи. Например, вопрос типа «Почему небо голубое?» и его ответ «Рассеяние солнечного света вызывает синий цвет» имеют совершенно разные значения как утверждения, а это означает, что система RAG не распознает автоматически их взаимосвязь.
Типы задач позволяют создавать оптимизированные внедрения для конкретных задач, экономя время и деньги, а также повышая производительность.
from google import genai
from google.genai import types
client = genai.Client(api_key="GEMINI_API_KEY")
result = client.models.embed_content(
model="gemini-embedding-exp-03-07",
contents="What is the meaning of life?",
config=types.EmbedContentConfig(task_type="SEMANTIC_SIMILARITY")
)
print(result.embeddings)
import { GoogleGenAI } from "@google/genai";
async function main() {
const ai = new GoogleGenAI({ apiKey: "GEMINI_API_KEY" });
const response = await ai.models.embedContent({
model: 'gemini-embedding-exp-03-07',
contents: 'What is the meaning of life?',
config: {
taskType: "SEMANTIC_SIMILARITY",
}
});
console.log(response.embeddings);
}
main();
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-embedding-exp-03-07:embedContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model": "models/gemini-embedding-exp-03-07",
"content": {
"parts":[{
"text": "What is the meaning of life?"}]},
"taskType": "SEMANTIC_SIMILARITY"
}'
Поддерживаемые типы задач
Тип задачи | Описание |
---|---|
SEMANTIC_SIMILARITY | Используется для создания вложений, оптимизированных для оценки сходства текста. |
CLASSIFICATION | Используется для создания внедрений, оптимизированных для классификации текстов в соответствии с заданными метками. |
CLUSTERING | Используется для создания вложений, оптимизированных для кластеризации текстов на основе их сходства. |
RETRIEVAL_DOCUMENT , RETRIEVAL_QUERY , QUESTION_ANSWERING и FACT_VERIFICATION | Используется для создания внедрений, оптимизированных для поиска документов или получения информации. |
CODE_RETRIEVAL_QUERY | Используется для извлечения блока кода на основе запроса на естественном языке, например для сортировки массива или обращения связанного списка. Внедрения блоков кода вычисляются с использованием RETRIEVAL_DOCUMENT . |
Варианты использования
Встраивание текста используется во множестве распространенных случаев использования ИИ, таких как:
Поиск информации. Вы можете использовать встраивания для извлечения семантически похожего текста по фрагменту входного текста.
Учебное по поиску документов
Кластеризация. Сравнение групп вложений может помочь выявить скрытые тенденции.
База данных векторов. Когда вы внедряете в производство различные варианты использования встраивания, обычно встраивания сохраняются в базе данных векторов.
Учебный по векторной базе данных
Классификация. Вы можете обучить модель, используя внедрения, для классификации документов по категориям.
Учебный классификации
Встраивание моделей
Gemini API предлагает три модели, генерирующие встраивание текста:
Что дальше
Ознакомьтесь с блокнотом быстрого запуска встраивания .