DEV Community

Cover image for text-embedding-3-large — для чего нужен embeddings-модель и как он работает в RAG
Jenny Met
Jenny Met

Posted on

text-embedding-3-large — для чего нужен embeddings-модель и как он работает в RAG

text-embedding-3-large — для чего нужен embeddings-модель и как он работает в RAG

Когда вы используете GPT, Claude, Gemini, чаще всего вы “генерируете ответы”. Но такие модели, как text-embedding-3-large, не предназначены для чата и не пишут тексты напрямую.

Их основная задача — преобразовывать текст в числовой вектор.

Звучит абстрактно, но именно это лежит в основе RAG-решений, семантического поиска, рекомендаций похожих статей, чат-ботов поддержки, поиска по документам и других подобных задач.

text-embedding-3-large semantic search pipeline

Если вы хотите, чтобы ИИ находил ответы в ваших документах, а не просто “угадывал” из своей памяти, без 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) — это “генерация с усилением за счёт поиска”.

Типовой процесс:

  1. Разбиваем документы на небольшие фрагменты
  2. Преобразуем каждый фрагмент в вектор через embedding-модель
  3. Сохраняем в векторную базу данных
  4. При вопросе пользователя тоже получаем вектор
  5. Находим наиболее релевантные фрагменты
  6. Передаём их генеративной модели для ответа

Без embeddings система может только искать по ключевым словам.

Например, пользователь спрашивает:

“Почему баланс быстро уменьшается?”

А в документации написано:

“Модели с большим контекстом используют больше tokens, стоимость считается по количеству входных и выходных tokens.”

Ключевые слова не совпадают, но смысл связан. Embedding решает именно такие задачи.

RAG workflow with embeddings and vector database

Чем отличается 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])
Enter fullscreen mode Exit fullscreen mode

Если вы уже используете 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)
Enter fullscreen mode Exit fullscreen mode

Этот пример прост, но отражает суть семантического поиска: текст → вектор → сортировка по схожести.

Когда стоит использовать 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)