Встраивания в Gemini API

Служба встраивания в Gemini API генерирует современные встраивания для слов, фраз и предложений. Полученные вложения затем можно использовать для задач обработки естественного языка (NLP), таких как семантический поиск, классификация текста и кластеризация, а также многих других.

На этой странице кратко объясняются внедрения и освещаются некоторые ключевые варианты использования службы внедрения, которые помогут вам начать работу.

Что такое вложения?

Встраивание текста — это метод обработки естественного языка (NLP), который преобразует текст в числовые координаты (называемые векторами ), которые можно отобразить в n-мерном пространстве. Этот подход позволяет рассматривать фрагменты текста как фрагменты реляционных данных, на которых мы затем можем обучать модели.

Вложения улавливают семантическое значение и контекст, в результате чего текст со схожим значением имеет более близкие вложения. Например, предложения «Я отвез свою собаку к ветеринару» и «Я отвез свою кошку к ветеринару» будут иметь вложения, близкие друг к другу в векторном пространстве, поскольку оба они описывают схожий контекст.

Вы можете использовать встраивания, чтобы сравнивать разные тексты и понимать, как они связаны. Например, если вложения текста «кошка» и «собака» расположены близко друг к другу, вы можете сделать вывод, что эти слова схожи по значению или контексту, или и то, и другое. Эта возможность позволяет использовать различные варианты использования, описанные в следующем разделе.

Варианты использования

Встраивание текста используется в различных случаях НЛП, таких как:

  • Поиск информации. Вы можете использовать встраивания для извлечения семантически похожего текста по фрагменту входного текста. Система поиска информации может поддерживать различные приложения, такие как семантический поиск, ответы на вопросы или обобщение.
  • Классификация. Вы можете обучить модель, используя внедрения, для классификации документов по категориям. Например, если вы хотите классифицировать комментарии пользователей как отрицательные или положительные, вы можете использовать службу внедрения, чтобы получить векторное представление каждого комментария для обучения классификатора.
  • Кластеризация: сравнение векторов текста может показать, насколько они похожи или различны. Эту функцию можно использовать для обучения модели кластеризации, которая группирует похожий текст или документы вместе, а также для обнаружения аномалий в ваших данных.
  • База данных векторов. Вы можете хранить сгенерированные внедрения в базе данных векторов, чтобы повысить точность и эффективность вашего приложения НЛП. Обратитесь к следующему руководству, чтобы узнать, как использовать базу данных векторов для перевода текстовых подсказок в числовые векторы.

Модели вложений Gemini

API Gemini предлагает две модели, генерирующие встраивание текста: встраивание текста и встраивание текста . Text Embeddings — это обновленная версия модели Embedding, которая предлагает эластичные размеры внедрения до 768 измерений. Эластичные встраивания создают меньшие размеры выходных данных и потенциально позволяют сэкономить затраты на вычисления и хранение при незначительной потере производительности.

Используйте встраивание текста для новых проектов или приложений. Ваше приложение должно использовать модель внедрения только в том случае, если вы не можете перенести его на использование внедрения текста.

Создание вложений с помощью Gemini API

Используйте метод embedContent для создания вложений текста:

Питон

result = genai.embed_content(
    model="models/text-embedding-004",
    content="What is the meaning of life?",
    task_type="retrieval_document",
    title="Embedding of single string")

# 1 input > 1 vector output
print(str(result['embedding'])[:50], '... TRIMMED]')

Посетите наше руководство по началу работы, чтобы увидеть полный работоспособный пример.

Идти

ctx := context.Background()
// Access your API key as an environment variable (see our Getting Started tutorial)
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("API_KEY")))
if err != nil {
    log.Fatal(err)
}
defer client.Close()
// For embeddings, use the Text Embeddings model
em := client.EmbeddingModel("text-embedding-004")
res, err := em.EmbedContent(ctx, genai.Text("The quick brown fox jumps over the lazy dog."))

if err != nil {
    panic(err)
}
fmt.Println(res.Embedding.Values)

Посетите наше руководство по началу работы, чтобы увидеть полный работоспособный пример.

Node.js

const { GoogleGenerativeAI } = require("@google/generative-ai");

// Access your API key as an environment variable (see our Getting Started tutorial)
const genAI = new GoogleGenerativeAI(process.env.API_KEY);

async function run() {
// For embeddings, use the Text Embeddings model
const model = genAI.getGenerativeModel({ model: "text-embedding-004"});

const text = "The quick brown fox jumps over the lazy dog."

const result = await model.embedContent(text);
const embedding = result.embedding;
console.log(embedding.values);
}

run();

Посетите наше руководство по началу работы, чтобы увидеть полный работоспособный пример.

Дарт (Флаттер)

final model = GenerativeModel(model: 'text-embedding-004', apiKey: apiKey);
final content = Content.text('The quick brown fox jumps over the lazy dog.');
final result = await model.embedContent(content);
print(result.embedding.values);

Посетите наше руководство по началу работы, чтобы увидеть полный работоспособный пример.

завиток

curl "https://generativelanguage.googleapis.com/v1beta/models/text-embedding-004:embedContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model": "models/text-embedding-004",
     "content": {
     "parts":[{
     "text": "Hello world"}]}, }' 2> /dev/null | head

Полный работоспособный пример можно найти в нашей кулинарной книге «Краткое руководство по внедрению с помощью REST» на GitHub .

Что дальше