AI
January 19, 2024
YandexGPT API. Часть 2. Embeddings
Embeddings (векторные представления текста) обычно используют для измерения связанности текстовых строк и применяются в таких задачах, как:
- Поиск (где результаты ранжируются по релевантности строке запроса)
- Кластеризация (когда текстовые строки группируются по сходству)
- Рекомендации (где рекомендуются элементы со связанными текстовыми смыслами)
- Измерение разнообразия (когда анализируется распределение сходства)
- Классификация (где текстовые строки классифицируются по наиболее похожей метке)
Обычно embedding
это массив чисел, представляющий вектор определённого текста. Посмотрим на примерах кода, как это генерируется и как это выглядит в результате.
Прежде всего, предлагаю ознакомиться с первой частью статьи. Где я показал, как получить api-ключ для запросов.
Пример кода на TypeScript
Нам понадобится библиотека для http-запросов. Я возьму axios
npm i --save axios
yarn add axios
bun add axios
import axios from 'axios'; const yandexgpt_key = '<секретный api-ключ выше>'; async function main() { try { const data = { modelUri: `emb://<идентификатор_каталога>/text-search-doc/latest`, text: `Любой текст для генерации embedding` }; const response = await axios.post( `https://llm.api.cloud.yandex.net/foundationModels/v1/textEmbedding`, data, { headers: { 'Authorization': `Api-Key ${yandexgpt_key}` }, } ); console.log(response.status); console.log(JSON.stringify(response.data, null, 2)); } catch (err) { console.error('error:', err) } } main();
Параметры запроса и пример ответа разберу ниже после примера кода на Python.
Пример кода на Python
import requests gpt_api_key = '<секретный api-ключ выше>' def yandex_gpt_embedding(text: str): response = requests.post( "https://llm.api.cloud.yandex.net/foundationModels/v1/textEmbedding", headers={ "Authorization": f"Api-Key {gpt_api_key}" }, json={ "modelUri": "emb://<идентификатор_каталога>/text-search-doc/latest", "text": text }, ) return response.json() print(yandex_gpt_embedding("Любой текст для генерации embedding"))
Разбор параметров и ответа
Согласно документации в body принимается следующая структура JSON:
{ "modelUri": "string", "text": "string" }
В ответ нам возвращается структура следующего вида:
{ "embedding": [ -0.019805908203125, 0.059234619140625, -0.07427978515625, 0.0361328125, ... 0.0200042724609375, 0.04119873046875, -0.01357269287109375 ], "numTokens": "8", "modelVersion": "06.12.2023" }
embedding
— вектор значений (длина получается 256)numTokens
— число токенов, которое входящего текста. Как правило это не всегда число слов и знаков препинания. Модель определяет это сама.modelVersion
— модель версии, используемой для генерацииembedding
.
- https://cloud.yandex.ru/ru/docs/yandexgpt/api-ref/authentication
- https://yandex.cloud/en/docs/foundation-models/embeddings/api-ref/Embeddings/textEmbedding
- https://yandex.cloud/ru/docs/foundation-models/concepts/embeddings
- https://cloud.yandex.ru/ru/docs/yandexgpt/pricing#pricing-embedding
January 19, 2024, 09:54
0 views
1 reaction
0 replies
0 reposts