Embedding API превращает текст в вектор — числовое представление, которое используется для семантического поиска, RAG, кластеризации, дедупликации и рекомендаций. Модель не генерирует текст, но это базовая способность почти любого приложения с базой знаний.
В этой статье разобрано, как вызывать Embedding API, как выбирать модель и как оценивать затраты и качество.
Примечание: у разных поставщиков интерфейсы и размерность эмбеддингов различаются. Примеры основаны на интерфейсе, совместимом с OpenAI; конкретные условия — в официальной документации и документации шлюза.
1. Что умеет Embedding
- Семантический поиск: находит содержимое по смыслу, а не по совпадению ключевых слов.
- RAG: документы разбиваются на фрагменты, векторизуются, а затем найденные фрагменты передаются большой модели для ответа.
- Кластеризация и классификация: группировка похожих текстов.
- Дедупликация: поиск повторов и близких по смыслу материалов.
- Рекомендации: поиск похожих статей или товаров.
Эмбеддинги полезны и для внутренних задач: поиска по документации, группировки обращений поддержки и поиска дублей в каталоге. В каждом случае качество зависит от того, насколько хорошо фрагменты отражают смысл, который вы хотите находить.
2. Способ вызова
Совместимый с OpenAI интерфейс обычно выглядит так:
POST /v1/embeddings
Запрос:
{
"model": "text-embedding-3-small",
"input": ["Первый фрагмент текста", "Второй фрагмент текста"]
}
Ответ содержит вектор для каждого текста. Название модели и размерность указаны на странице цены на модели.
3. Пример на Python
from openai import OpenAI
client = OpenAI(
api_key="sk-ваш-ключ",
base_url="https://ai.zhongshangqihang.com/v1",
)
resp = client.embeddings.create(
model="text-embedding-3-small",
input=["Что такое API-шлюз", "Что такое API Gateway"],
)
print(len(resp.data[0].embedding))
4. Базовый процесс RAG
- Очистите документы и разбейте их на фрагменты по абзацам или заголовкам.
- Вызовите Embedding для каждого фрагмента.
- Сохраните векторы в векторной базе данных (pgvector, Milvus, Qdrant и другие).
- При вопросе пользователя векторизуйте сам вопрос.
- Найдите наиболее похожие фрагменты.
- Передайте найденные фрагменты и вопрос большой модели.
Обратите внимание: размер фрагмента, перекрытие и метаданные (источник, права доступа) напрямую влияют на качество. Слишком крупные фрагменты ухудшают точность поиска, слишком мелкие теряют контекст.
Для базы знаний полезно хранить не только вектор, но и исходный текст, идентификатор документа и версию. Тогда при обновлении документа можно точечно пересчитать векторы, а при смене модели — понять, какие записи устарели.
5. Как выбрать модель
| Критерий | Что проверить |
|---|---|
| Размерность | Больше не всегда лучше: растут затраты на хранение и вычисления |
| Язык | Качество на китайском и мультиязычных данных |
| Максимальный ввод | Длина одного фрагмента |
| Цена | Тарификация по токенам |
| Совместимость | После смены модели старые векторы нельзя смешивать с новыми |
| Развёртывание | Поддержка приватного развёртывания и требований к данным |
Сравнивайте модели на собственном наборе запросов: оценивайте, находит ли поиск нужный фрагмент в топ-5 и как ведёт себя на синонимах, опечатках и смешанных языках. Средняя оценка по чужим примерам мало что говорит о вашем домене.
6. Как считать затраты
Месячная стоимость =
токены документов × ставка
+ токены запросов × ставка
+ хранение векторов и трафик
Векторизация документов обычно разовая затрата, а запросы — постоянная. При смене модели всю базу придётся векторизовать заново, поэтому стоимость нужно рассчитать заранее.
7. Типичные ошибки
- После смены embedding-модели старые и новые векторы смешиваются, и поиск начинает работать неправильно.
- Фрагменты слишком большие — поиск неточный; слишком маленькие — теряется контекст.
- Не сохраняются источник и права доступа, поэтому ответ невозможно проследить.
- Используется только векторный поиск без гибридного с ключевыми словами, из-за чего полнота нестабильна.
- Не учитывается качество на разных языках.
Ещё одна частая проблема — отсутствие версии модели в записи вектора. Если не сохранить, какой моделью он получен, после экспериментального переключения трудно понять, почему часть результатов ухудшилась.
Частые вопросы
Чем Embedding отличается от большой модели?
Embedding выдаёт вектор для поиска и кластеризации; большая модель выдаёт текст для генерации и рассуждений.
Можно ли развернуть локально?
Да, открытые embedding-модели можно развернуть приватно, но потребуются GPU и эксплуатация.
Можно ли одним ключом вызывать embedding и чат?
В шлюзе обычно да, модель указывается в параметрах запроса.
Что дальше
Если нужна единая точка входа, оплата по факту использования и несколько моделей, начните с регистрации в ZSQH AI Gateway и небольшого теста embedding и чат-модели. Модели и цены указаны на странице цены на модели.
Читайте также:
