Векторное представление текста
Эмбеддинг (англ. embedding) — это вектор, представленный в виде массива чисел, который получается в результате преобразования данных, например, текста. Комбинация этих чисел, составляющих вектор, действует как многомерная карта для измерения сходства.
Использование векторных представлений (эмбеддингов) позволяет:
уменьшить размерность данных — с помощью эмбеддингов вы можете представить текстовые запросы в виде числовых векторов, что позволяет снизить размерность данных и ускорить их обработку;
улучшить качество поиска — эмбеддинги позволяют оценивать сходство между текстовыми запросами на основе расстояния между соответствующими векторами. Это позволяет улучшить качество поиска и релевантность результатов;
обеспечить универсальность — эмбеддинги можно использовать для различных задач обработки естественного языка, таких как Retrieval Augmented Generation (RAG), классификация текстов, кластеризация и других.
Ознакомьтесь с примером реализации RAG в github-репозитории.
Для преобразования строк в эмбеддинги в GigaChat API есть метод POST /embeddings
.
Запрос выполняется к модели Embeddings ("model": "Embeddings"
) и авторизуется с помощью токена доступа.
Вы также можете создавать эмбеддинги с помощью GigaChain.
Создание эмбеддингов оплачивается отдельно от генерации текста.
Подробнее в разделе Тарифы и оплата.
- GigaChat API
- GigaChain
Пример запроса на создание эмбеддинга:
curl https://gigachat.devices.sberbank.ru/api/v1/embeddings \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <токен доступа>' \
--data '{
"model": "Embeddings",
"input": [
"Расскажи о современных технологиях",
"Какие новинки в мире IT?"
]
}'
Параметры запроса:
Пример ответа:
{
"object": "list",
"data": [
{
"object": "embedding",
"embedding": [
0.0023064255,
-0.009327292,
...
-0.0028842222
],
"index": 0
}
],
"model": "Embeddings"
}
Параметры ответа:
Для создания эмбеддингов с помощью SDK используйте функцию embed_documents()
, модуля GigaChatEmbeddings
, импортированного из langchain_community.embeddings.gigachat
:
from langchain_community.embeddings.gigachat import GigaChatEmbeddings
embeddings = GigaChatEmbeddings(credentials="<авторизационные_данные>", verify_ssl_certs=False)
result = embeddings.embed_documents(texts=["Привет!"])
print(result)
В ответ функция возвращает массив чисел, представляющих значения эмбеддинга для переданного текста:
[
[
0.72149658203125,
-0.18883895874023438,
0.013126373291015625,
-1.27783203125,
1.4967041015625,
-0.97698974609375,
-0.1722869873046875,
1.4625244140625,
...
-0.007974624633789062,
-0.77838134765625,
1.167236328125
]
]