Перейти к основному содержимому

Embeddings

Embeddings — это численные представления текстовых строк, измеряющие их взаимосвязь. Текстовые эмбеддинги измеряют степень схожести текстовых строк и часто используются для следующих задач:

  • Поиск (результаты сортируются по релевантности запросу)
  • Кластеризация (группировка текстовых строк по схожести)
  • Рекомендации (рекомендация элементов с похожими текстовыми строками)
  • Обнаружение аномалий (поиск элементов, значительно отличающихся от других)
  • Измерение разнообразия (анализ распределения схожести)
  • Классификация (классификация текстовых строк на основе их схожести с метками)

Эмбеддинг представляет собой вектор (список) чисел. Расстояние между двумя векторами измеряет степень их схожести: небольшое расстояние указывает на высокую степень схожести, а большое расстояние — на низкую.

Создание эмбеддингов для одного и нескольких текстовых объектов

#pip install langchain-compressa - если у вас еще нет этого пакета

from langchain_compressa import CompressaEmbeddings

embeddings = CompressaEmbeddings(
model="Compressa-Embedding",
base_url="https://compressa-api.mil-team.ru/v1", # при локальном запуске замените на ваш url, например http://localhost:8080/api/v1
api_key="Ваш_API_ключ_Compressa", # при локальном запуске вы можете не требовать ключ или создать свой
model_kwargs={"encoding_format": 'float'},
tiktoken_enabled=False,
tiktoken_model_name="Salesforce/SFR-Embedding-Mistral",
)

# Создание embedding для одного запроса
query_embedding = embeddings.embed_query("Как приготовить борщ?")

# Создание embeddings для нескольких документов
docs_embeddings = embeddings.embed_documents([
"Борщ - это традиционный славянский суп",
"Для приготовления борща нужна свекла",
"Борщ обычно подают со сметаной",
"В борщ часто добавляют мясо",
"Борщ имеет характерный красный цвет"
])

Также в Python библиотеке Compressa доступно асинхронное создание embeddings

#pip install langchain-compressa - если у вас еще нет этого пакета

import os
from langchain_compressa import CompressaEmbeddings

embeddings = CompressaEmbeddings(
model="Compressa-Embedding",
base_url="https://compressa-api.mil-team.ru/v1", # при локальном запуске замените на ваш url, например http://localhost:8080/api/v1
api_key="Ваш_API_ключ_Compressa", # при локальном запуске вы можете не требовать ключ или создать свой
model_kwargs={"encoding_format": 'float'},
tiktoken_enabled=False,
tiktoken_model_name="Salesforce/SFR-Embedding-Mistral",
)

# Создание embedding для одного запроса
await embeddings.aembed_query("Как приготовить борщ?")

# Создание embeddings для нескольких документов
await embeddings.aembed_documents([
"Борщ - это традиционный славянский суп",
"Для приготовления борща нужна свекла",
"Борщ обычно подают со сметаной",
"В борщ часто добавляют мясо",
"Борщ имеет характерный красный цвет"
])

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