Вложения

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 предлагает три модели, генерирующие встраивание текста:

Что дальше

Ознакомьтесь с блокнотом быстрого запуска встраивания .