PRODСуверенная европейская платформа BaaSОткрыть панель управления →

Родной ИИ · 7 минута чтения

Размер встраивания: размеры 768, 1536 или 3072?

Affane Daylami · Fondateur · 3 апреля 2026 г.

Вернуться в блог

Выбор между размерами 768, 1536 и 3072 не является косметической корректировкой. Он устанавливает объем хранилища вашей векторной базы данных, тип индекса, который можно использовать, и цену, уплачиваемую за каждый вызов API. Сама OpenAI документирует разрыв в качестве между двумя своими текущими моделями: text-embedding-3-small в 1536 собственных измерениях достиг 62,3% в тесте MTEB по сравнению с 64,6% для text-embedding-3-large в 3072 собственных измерениях. Настоящая выгода, но за нее платят совсем не так, как вы думаете.

Этот текст на английском языке был создан автоматически на основе французского оригинала и еще не проверялся.
Эта страница была переведена автоматически. Английская версия является авторитетной.

Эта статья основана на официальной документации, опубликованной OpenAI, на отзывах команды, собранных в обсуждениях сообщества разработчиков OpenAI, а также на поведении, проверенном в коде Aurabase, который естественным образом направляет эти три класса измерений в три отдельных векторных столбца. Каждая внешняя цифра датирована и имеет источник; методологию, которую мы применяем к нашим собственным измерениям, см. в разделе методологии эталонного тестирования.

Самое необходимое
  • Размер 1536 остается наиболее сбалансированным выбором для большинства случаев: собственный text-embedding-3-small или усеченный text-embedding-3-large, не отступая от встроенной поддержки HNSW pgvector.
  • Размер 3072 (text-embedding-3-large) обеспечивает наивысший балл MTEB, опубликованный OpenAI (64,6% против 62,3%), но превышает предел измерения 2000 года для типа vector pgvector: индекс HNSW требует приведения к halfvec.
  • Усечение встраивания с помощью параметра OpenAI dimensions (метод Матрёшки) уменьшает объем памяти и ускоряет поиск, но не снижает цену: это зависит от запрашиваемой модели, а не от размера возвращаемого вектора.
  • Благодаря хранилищу halfvec (2 байта на измерение) 3072-мерный вектор занимает в Aurabase то же самое необработанное дисковое пространство, что и вектор 1536 в классическом vector (4 байта на измерение): примерно 6 КБ.
  • Aurabase изначально поддерживает ровно 3 класса измерений: 768, 1536 и 3072, каждый в своем столбце (проверено в aura-ai/src/embeddings/mod.rs): нет свободного поля измерения.
#
Обзор

768, 1536 или 3072: что на самом деле меняет каждый уровень

Очевидно, что выбор между text-embedding-3-small и text-embedding-3-large сначала означает выбор между 1536 и 3072 собственными размерами, еще до того, как говорить об усечении. В таблице ниже приведены поддающиеся проверке факты на трех уровнях, которые pgvector изначально распознает на стороне индексирования, и на этом маршруте Aurabase.

Критерий768 измерений1536 размеров3072 измерения
Сопутствующая модель(и)Усечение OpenAI или устаревшая модель/модель с открытым исходным кодом (собственная)text-embedding-3-small (родной) или усеченный 3-большойtext-embedding-3-large (родной)
Средний балл MTEBOpenAI изначально не выпускал такого размера62,3 %64,6 %
Ориентировочная цена OpenAI за 1 миллион токеновзависит от запрашиваемой модели, а не от размера0,02 доллара США (маленький) или 0,13 доллара США (большой усеченный)0,13 доллара США (встраивание текста-3-большое)
Общий хранимый вес/вектор3 КБ (float32)6 КБ (float32)12 КБ (векторный) или 6 КБ (половек, Aurabase)
Собственный индекс HNSW pgvectorдаданет: требуется каст Halfvec (>2000 димов)
Столбец Aurabase (проверенный код)вложение_768вложение_1536вложение_3072

Источники: OpenAI, официальный блог «Новые модели встраивания и обновления API», 25 января 2024 г. (оценки MTEB и цены запуска, перед использованием проверьте текущую страницу цен); aura-ai/src/embeddings/mod.rs, Aurabase (поддержка столбцов и индексов, проверено 24 августа 2026 г.).

#
Хранилище

Влияние на хранилище: расчет, который меняет все

Вложение хранится как массив чисел с плавающей запятой. В pgvector классический тип vector кодирует каждое измерение в 4 байта (float32): поэтому 768 измерений весят около 3 КБ необработанных данных на вектор, 1536 измерений - около 6 КБ, а 3072 измерения - около 12 КБ, даже без учета заголовка pgvector и служебных данных страницы Postgres.

Здесь на помощь приходит тип pgvector halfvec, который кодирует каждое измерение в 2 байтах (float16) вместо 4. 3072-мерный вектор, хранящийся в halfvec, весит около 6 КБ: ровно такой же вес 1536-мерного вектора, хранящегося в классическом vector.

3 КБ
768 солнце
вектор, float32 (4 байта/размер)
6 КБ
1536 Вс
вектор, float32: тот же вес, что и 3072 в полувекторном формате.
12 КБ
3072 солнце
классический вектор, float32 (перед приведением halfvec)

Прямое и неинтуитивное следствие: в Aurabase переход от измерений с 1536 до 3072 не удваивает фактическое пространство на диске, поскольку столбец embedding_3072 запрашивается посредством приведения halfvec. Таким образом, реальная дополнительная стоимость размеров 3072 связана в первую очередь не с диском: это цена соответствующей модели OpenAI и результат встроенной поддержки индексов типа vector, подробно описанный в следующем разделе.

#
pgvector / HNSW

Почему размеры 3072 меняют тип индекса в pgvector

Тип pgvector vector не позволяет строить индекс HNSW или IVFFlat размером более 2000. Таким образом, размерность 3072 превышает этот предел: ни один векторный поисковый запрос в столбце vector(3072) не может полагаться на приблизительный индекс, он опирается на полное последовательное сканирование, непригодное для использования в масштабе действующего корпуса RAG.

Код Aurabase обрабатывает этот случай явно: столбец embedding_3072 преобразуется в halfvec(3072) при каждом запросе на вставку и поиск, тип, который pgvector может индексировать до 4000 измерений. Столбцы 768 и 1536 остаются родными vector, не приведенными, поскольку они не приближаются к пределу.

embeddings/mod.rs (extrait simplifié)rust
// Для 3072 (>2000) HNSW не индексирует тип `vector` → приводит к halfvec
fn vec_query_parts(dims: usize) -> AuraResult<(&'static str, &'static str, &'static str)> {
    match dims {
        768  => Ok(("embedding_768",  "", "::vector")),
        1536 => Ok(("embedding_1536", "", "::vector")),
        3072 => Ok(("embedding_3072", "::halfvec(3072)", "::halfvec(3072)")),
        other => Err(...), // неподдерживаемое измерение
    }
}

Эта деталь также объясняет, почему измерение внедрения, не указанное в [768, 1536, 3072], явно терпит неудачу на стороне Aurabase, а не принимается и затем плохо индексируется: имя столбца всегда берется из фиксированного списка разрешений, а не из свободного значения, отправленного клиентом. Чтобы углубиться в создание индекса HNSW в Postgres за пределами этого конкретного случая, см. нашу статью Индекс HNSW и векторный поиск Postgres.

#
Стоимость API

Уменьшение размера без потери всего: усечение матрешки OpenAI

По состоянию на январь 2024 года API Embeddings API OpenAI принимает параметр dimensions, который сокращает возвращаемый вектор без повторного вызова другой модели. Этот метод называется «Обучение представлениям матрешки»: модель обучена концентрировать полезную информацию в первых измерениях вектора, так что усечение теряет точность постепенно, а не резко.

OpenAI иллюстрирует эффективность этого метода на конкретном примере в своем объявлении: text-embedding-3-large, усеченный всего до 256 измерений, по-прежнему превышает показатель MTEB старого text-embedding-ada-002, используемого в полном размере 1536 измерений (источник: OpenAI, официальный блог, 25 января 2024 г.). Вектор в 12 раз меньше, который работает лучше, чем полный вектор, в этом конкретном тесте.

llm/openai.rs (extrait, requête d'embedding)rust
let body = json!({
    "model": self.embed_model,       // например "встраивание текста-3-большой"
    "input": text,
    "dimensions": self.embed_dimensions, // усекает 3072 → настроенное значение
});

Важный момент, который часто неправильно понимают: сокращение не снижает взимаемую цену. OpenAI взимает плату на основе запрошенной модели, а не размера возвращаемого вектора, поскольку фактическая стоимость представляет собой расчет, выполненный на основе входного текста. Таким образом, запрос 1536 размеров из text-embedding-3-large стоит той же цены, что и его 3072 собственных измерения (источник: OpenAI, официальный блог, 25 января 2024 г.); изменяются только скорость хранения и поиска.

Это именно выбор Aurabase по умолчанию, проверенный в config/mod.rs: модель, настроенная по умолчанию, — text-embedding-3-large, но выходное измерение, настроенное по умолчанию, — 1536, а не 3072. Таким образом, служба платит за представление широкой модели, усеченной, чтобы оставаться в индексируемом столбце vector в собственном HNSW, без приведения halfvec, необходимого к 3072.

#
Решение

Какой размер выбрать в зависимости от вашего варианта использования

Размерность 1536 остается разумной отправной точкой для большинства проектов RAG или семантического поиска: показатель MTEB для встраивания текста-3-маленький (62,3%) остается близким к показателю большой модели, хранилище остается легким, а классический тип индексов pgvector vector в HNSW без какой-либо конкретной конфигурации.

3072 измерения оправданы, когда корпус неоднозначный или технический, где разрыв в качестве между 62,3% и 64,6% приводит к заметно лучшим результатам поиска по вашим собственным запросам, а не по общему тесту OpenAI. Несколько отзывов команд, зафиксированных в дискуссиях сообщества разработчиков OpenAI, указывают на это: выигрыш в 3072 измерения измеряется в каждом конкретном случае, его нельзя предполагать.

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

Простое правило перед принятием решения

Не устанавливайте это измерение, пока не измерите качество поиска на репрезентативной выборке вашего собственного корпуса, а не только на общей оценке MTEB, опубликованной OpenAI. MTEB обрабатывает десятки разнородных задач; ваш корпус RAG всего один.

Этот выбор измерения является частью более крупного стека RAG, вложений, индекса HNSW и гибридного поиска, которые документированы на нашей странице Native AI.

#
Часто задаваемые вопросы

Что нас спрашивают чаще всего

Можем ли мы изменить размер уже проиндексированного корпуса, не переиндексируя все?+
Нет. Aurabase фильтрует каждый семантический поиск по точной модели И измерению (столбецembedding_model + столбец, посвященный измерению). Корпус, проиндексированный в 1536 измерениях, становится невидимым для поиска, выполняемого в 3072, и наоборот: изменение измерения требует переиндексации корпуса по новому классу.
Позволяют ли Близнецы выйти за пределы 3072 измерений?+
Нет. Клиент Gemini Aurabase явно ограничивает размер 3072 (outputDimensionality). 3072 — это общий потолок для трех классов, поддерживаемых Aurabase, всеми поставщиками вместе взятыми.
Стоит ли всегда выбирать размер 3072 для достижения наилучших результатов?+
Не обязательно. Разница в баллах MTEB между 1536 и 3072 (62,3% против 64,6% по данным OpenAI) остается скромной перед лицом архитектурных изменений, подразумеваемых 3072: выпуск встроенной поддержки HNSW типа vector, обязательное приведение halfvec и цена широкой модели. Выигрыш должен быть проверен на вашем корпусе, прежде чем обосновывать эти затраты.
text-embedding-3-small или text-embedding-3-large для проекта RAG в производстве?+
Это зависит от бюджета и характера корпуса, а не является универсальным правилом. Text-embedding-3-small (1536 собственных размеров) охватывает большинство случаев с меньшими затратами; text-embedding-3-large оправдан в неоднозначном корпусе, где прирост точности измеряется конкретно по вашим собственным тестовым запросам, а не только по общему баллу MTEB.
#
В итоге

Правильный выбор – это не самый великий, а лучший измеримый

Размеры 768, 1536 и 3072 не разделены по одной оси. 3072 выигрывает в рейтинге MTEB, опубликованном OpenAI, но оставляет встроенную поддержку HNSW pgvector и платит цену большой модели, независимо от того, какой размер в конечном итоге запрошен. 1536 остается наиболее распространенным балансом по умолчанию, в том числе в Aurabase. 768 служит для случаев, когда громкость имеет приоритет над нюансами.

Параметр dimensions OpenAI меняет вопрос: это больше не «какую модель выбрать», а «какое усечение принять, для какого выигрыша измерено на моем корпусе». Прежде чем окончательно определиться с выбором в производстве, протестируйте качество поиска на реальной выборке, а не только на общем эталоне. В нашем руководстве RAG-конвейер с pgvector подробно описана полная настройка, от приема до гибридного поиска.

ГОТОВЫ К РАЗВЕРТЫВАНИЮ?

Ваш бэкэнд за пять минут.

Кредитная карта не требуется · 500 МБ бесплатно · 50 000 MAU