text-embedding-3-large — для чего нужен embeddings-модель и как он работает в RAG
Когда вы используете GPT, Claude, Gemini, чаще всего вы “генерируете ответы”. Но такие модели, как text-embedding-3-large, не предназначены для чата и не пишут тексты напрямую.
Их основная задача — преобразовывать текст в числовой вектор.
Звучит абстрактно, но именно это лежит в основе RAG-решений, семантического поиска, рекомендаций похожих статей, чат-ботов поддержки, поиска по документам и других подобных задач.
Если вы хотите, чтобы ИИ находил ответы в ваших документах, а не просто “угадывал” из своей памяти, без embeddings не обойтись.
Для чего нужен text-embedding-3-large?
text-embedding-3-large — это мощная модель для получения текстовых векторов от OpenAI. Она читает текст и возвращает вектор большой размерности.
Вектор — это “семантические координаты” текста.
Например, возьмём такие фразы:
- “Как снизить стоимость AI API?”
- “Как сэкономить на GPT?”
- “Что делать, если вызовы AI моделей слишком дорогие?”
Ключевые слова разные, но смысл близок. Embedding-модель спроецирует их в близкие точки пространства.
Это позволяет делать то, что не под силу обычному поиску по ключевым словам: искать по смыслу.
Типичные применения:
| Сценарий | Роль embeddings |
|---|---|
| Семантический поиск | Преобразует вопросы и документы в векторы, ищет наиболее похожие |
| RAG (знаниевая база) | Сначала ищет релевантные документы, затем передаёт их генеративной модели |
| Рекомендации | Рекомендует контент по смысловой близости описаний |
| Кластеризация | Автоматически группирует похожие документы |
| Классификация | Определяет принадлежность текста к категории по схожести |
| Детектирование аномалий | Находит “выбивающиеся” по смыслу данные |
В официальной документации OpenAI embeddings используются для поиска, кластеризации, рекомендаций, обнаружения аномалий, оценки разнообразия и классификации.
Почему RAG особенно нуждается в text-embedding-3-large?
RAG (Retrieval-Augmented Generation) — это “генерация с усилением за счёт поиска”.
Типовой процесс:
- Разбиваем документы на небольшие фрагменты
- Преобразуем каждый фрагмент в вектор через embedding-модель
- Сохраняем в векторную базу данных
- При вопросе пользователя тоже получаем вектор
- Находим наиболее релевантные фрагменты
- Передаём их генеративной модели для ответа
Без embeddings система может только искать по ключевым словам.
Например, пользователь спрашивает:
“Почему баланс быстро уменьшается?”
А в документации написано:
“Модели с большим контекстом используют больше tokens, стоимость считается по количеству входных и выходных tokens.”
Ключевые слова не совпадают, но смысл связан. Embedding решает именно такие задачи.
Чем отличается text-embedding-3-large от чат-моделей?
Многие разработчики поначалу думают, что embedding — это тоже “модель для вопросов-ответов”. Это не так.
| Возможности | Чат-модель | Embedding-модель |
|---|---|---|
| Входные данные | Вопросы, контекст | Текстовые фрагменты |
| Выходные данные | Ответ на естественном языке | Числовой вектор |
| Основные задачи | Генерация, суммирование, рассуждение, диалог | Поиск, схожесть, кластеризация, классификация |
| Отвечает ли напрямую на вопросы | Да | Нет |
| Роль в RAG | Генерирует финальный ответ | Находит релевантные данные |
Можно представить их так:
- embedding-модель — библиотекарь, ищет нужные материалы
- чат-модель — автор, формулирует ответ
В полноценной системе поиска по знаниям нужны обе.
Ключевые параметры text-embedding-3-large
Согласно документации OpenAI, text-embedding-3-large по умолчанию выдаёт вектор размером 3072, максимальный размер входа — 8192 токенов.
Поддерживается параметр dimensions — можно уменьшить размерность вектора, сохранив основную смысловую нагрузку.
Это важно, потому что размерность влияет на:
- стоимость хранения в векторной базе
- скорость поиска
- размер индекса
- использование памяти
Для небольших FAQ или базы поддержки не всегда нужен полный вектор на 3072 измерения. Можно попробовать 1024 или 1536 и сравнить качество поиска.
Как вызвать text-embedding-3-large через OpenAI-совместимый API?
Пример на Python. В API-адресе не добавляйте UTM-параметры.
from openai import OpenAI
client = OpenAI(
api_key="your-api-key",
base_url="https://crazyrouter.com/v1"
)
response = client.embeddings.create(
model="text-embedding-3-large",
input="AI API gateway helps developers connect to many models with one key.",
encoding_format="float"
)
vector = response.data[0].embedding
print(len(vector))
print(vector[:5])
Если вы уже используете OpenAI SDK, просто поменяйте base_url на адрес совместимого шлюза.
Подробнее о подключении через OpenAI-совместимый API читайте в документации Crazyrouter, а сравнить стоимость разных моделей можно на странице цен.
Минимальный пример семантического поиска
Ниже — простейшая реализация cosine similarity для embeddings. В продакшене используйте векторные базы данных: Qdrant, Milvus, Pinecone, pgvector и др.
from openai import OpenAI
import numpy as np
client = OpenAI(
api_key="your-api-key",
base_url="https://crazyrouter.com/v1"
)
def embed(text: str):
res = client.embeddings.create(
model="text-embedding-3-large",
input=text,
encoding_format="float"
)
return np.array(res.data[0].embedding)
def cosine(a, b):
return float(np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b)))
docs = [
"AI API costs are calculated by input and output tokens.",
"RAG systems retrieve relevant documents before generating answers.",
"Vector databases store embeddings for semantic search."
]
query = "How does retrieval augmented generation find context?"
query_vec = embed(query)
doc_vecs = [embed(doc) for doc in docs]
scores = [(doc, cosine(query_vec, vec)) for doc, vec in zip(docs, doc_vecs)]
scores.sort(key=lambda x: x[1], reverse=True)
for doc, score in scores:
print(round(score, 4), doc)
Этот пример прост, но отражает суть семантического поиска: текст → вектор → сортировка по схожести.
Когда стоит использовать text-embedding-3-large?
Рекомендации по выбору:
| Задача | Совет |
|---|---|
| Качественный RAG, мультиязычный поиск, большие базы | Сначала пробуйте text-embedding-3-large |
| FAQ, небольшой поиск, чувствительность к цене | Можно начать с text-embedding-3-small |
| Мультиязычный поиск | large предпочтительнее |
| Только фильтрация по ключевым словам | Embedding не обязателен |
| Очень большой объём данных, ограниченный бюджет | Оцените уменьшение размерности и многоуровневый поиск |
Если качество поиска критично для пользователей — text-embedding-3-large стоит тестировать в первую очередь.
Для внутренних инструментов или MVP можно начать с более дешёвых моделей.
Лучшие практики для RAG-проектов
1. Не делайте слишком крупные чанки
Не загружайте целиком большие документы. Лучше разбивать по смысловым абзацам.
Рекомендации:
- 300–800 токенов на один чанк
- 50–100 токенов overlap между чанками
- Метаданные (заголовок, путь, дата) хранить отдельно
2. Предобработка запросов
Вопросы пользователей часто короткие и разговорные. Можно сначала переформулировать их через чат-модель, а потом делать embedding.
3. Не ограничивайтесь только top 1
Обычно в RAG берут top 3–10 фрагментов, затем передают их генеративной модели.
4. Используйте rerank для точности
Embedding — это грубый отбор, rerank — точная сортировка. Для поддержки, юридических, финансовых и технических документов rerank заметно снижает число нерелевантных ответов.
5. Анализируйте реальные запросы
Не ограничивайтесь тестовыми данными. Анонимизируйте и анализируйте настоящие вопросы пользователей — только так можно оценить качество поиска.
Частые заблуждения
Миф 1: чем выше размерность embedding, тем лучше
Не всегда. Большая размерность — выше выразительность, но и выше затраты на хранение и вычисления. Важно балансировать качество, задержку и стоимость.
Миф 2: если есть embedding, RAG не будет “галлюцинировать”
Это не так. Embedding только ищет материалы. Надёжность ответа зависит от prompt'а, качества контекста, возможностей модели и ограничений на цитирование.
Миф 3: любой документ можно просто векторизовать
Таблицы, код, логи, сканы PDF требуют особой обработки. Для таблиц лучше сохранять структуру.
Вывод: text-embedding-3-large — “поисковый фундамент” AI-приложений
text-embedding-3-large — это не чат-модель, а инструмент для оценки смысловой близости текстов.
Он идеально подходит для:
- RAG-знаниевых баз
- семантического поиска
- мультиязычного поиска
- рекомендательных систем
- кластеризации документов
- классификации текстов
Если вы делаете AI-поддержку, корпоративную базу знаний, поиск по документам, коду или рекомендации — embedding-модель будет основой системы.
Подключиться к embeddings API можно через OpenAI-совместимый интерфейс. Если вы уже используете OpenAI SDK, переход прост: поменяйте base_url, используйте новый API-ключ — и всё работает по-прежнему.
FAQ
Может ли text-embedding-3-large напрямую отвечать на вопросы?
Нет. Она возвращает только вектор, а не текстовый ответ. Для генерации ответа нужен GPT, Claude, Gemini или другая чат-модель.
Подходит ли text-embedding-3-large для RAG?
Да. Обычно её используют на этапе поиска: вопрос и документы преобразуются в векторы, затем ищутся наиболее релевантные.
Какая размерность по умолчанию у text-embedding-3-large?
В официальной документации — 3072. Можно уменьшить через параметр dimensions.
Как выбрать между text-embedding-3-large и text-embedding-3-small?
Если важны качество поиска, мультиязычность или продакшн-RAG — пробуйте large. Если важна цена или объём данных огромный — small подойдёт для базовой версии.
Обязательна ли векторная база данных?
Для небольших демо можно обойтись массивами и cosine similarity. В продакшене лучше использовать специализированные базы: pgvector, Qdrant, Milvus, Pinecone.


Top comments (0)