Embeddings search (semantic search), или семантический поиск по эмбеддингам, — это способ искать тексты по близости смысла, а не по буквальному совпадению слов. В реализации OpenAI запрос и документы превращаются в численные представления текста — embeddings — и затем ранжируются по мере связанности.
Практически это означает, что запрос может находить полезный фрагмент даже при другой формулировке. Если коллекция большая и вам нужно быстро искать по многим векторам, OpenAI прямо рекомендует использовать векторную базу данных.
Английские термины: embeddings search, semantic search. Также рядом употребляются: embeddings, vector store, file_search. Ниже — трактовка по официальной документации OpenAI, актуальной на 2026-08-16.
Простыми словами
Грубо говоря, это не поиск «по словам», а поиск «по похожему смыслу». Можно представить библиотекаря, который не ищет точную фразу в каталоге, а старается понять, о чём ваш вопрос, и приносит книги с близкой темой.
Аналогия неполная, но полезная: система не рассуждает как человек, а сравнивает численные представления текстов. Чем ближе векторы запроса и документа, тем выше шанс, что фрагмент попадёт в выдачу.
Как это работает
OpenAI определяет embeddings как численные представления текста, которые удобно использовать для измерения связанности между фрагментами. На этом и строится семантический поиск: вы сравниваете не сами строки, а их векторы.
Базовая последовательность
- Вы делите документы на фрагменты.
- Для каждого фрагмента получаете embedding через endpoint
/v1/embeddings. - Сохраняете векторы в хранилище.
- Для нового запроса строите embedding той же моделью.
- Сравниваете вектор запроса с векторами фрагментов.
- Возвращаете самые близкие результаты.
Документы ↓ Фрагменты текста ↓ /v1/embeddings ↓ Векторы документов ↓ ↖ Хранилище Вектор запроса ← /v1/embeddings ← Запрос пользователя ↓ Сравнение по близости ↓ Топ релевантных фрагментов
Для embeddings OpenAI есть важная практическая деталь: они L2-нормализованы до длины 1. Поэтому cosine similarity можно считать через dot product, а ранжирование по cosine similarity и Euclidean distance будет одинаковым.
Если вы используете OpenAI Vector Stores, то OpenAI описывает их как коллекцию обработанных файлов, которую можно использовать с инструментом file_search. В API есть операции POST /v1/vector_stores и POST /v1/vector_stores/{vector_store_id}/search, а ответ поиска включает найденные content chunks и поле похожести score.
Для hosted-сценария важен и дефолтный способ разбиения: в Vector Stores по умолчанию используется chunking по 800 токенов с overlap 400 токенов. Это не универсальное правило для всех систем, а конкретная реализация OpenAI.
В текущей линейке OpenAI для этого сценария фигурируют модели text-embedding-3-small и text-embedding-3-large, выпущенные 2024-01-25. В launch post также указано, что text-embedding-3-large может выдавать до 3072 измерений и поддерживает параметр dimensions для сокращения embedding.
Где применяется
- Поиск по базе знаний и документации. Вы находите нужные фрагменты даже тогда, когда пользователь переформулирует вопрос.
- Поиск по загруженным файлам. В OpenAI Vector Stores обработанные файлы можно использовать через
file_searchи отдельный search endpoint. - Подбор контекста для RAG. Сначала достаются смыслово близкие куски текста, затем они передаются модели как контекст.
- Поиск похожих материалов и рекомендации. В официальной документации embeddings также упоминаются как полезные для рекомендаций, кластеризации, обнаружения аномалий и классификации.
Практический вывод: если вы делаете прототип или поиск по небольшому набору текстов, достаточно понять схему «embedding запроса → сравнение → top results». Если векторов много и нужна быстрая выборка, переходите к vector database или hosted vector store.
Практический пример
Представим поиск по внутренним инструкциям команды. Вам нужно, чтобы сотрудник находил релевантные фрагменты, даже если пишет вопрос не теми словами, что в документе.
- Вы создаёте vector store через
POST /v1/vector_stores. - Добавляете файлы; система обрабатывает их и режет на chunks. Для OpenAI Vector Stores по умолчанию это 800 токенов с overlap 400.
- Пользователь задаёт вопрос в свободной форме.
- Вы вызываете
POST /v1/vector_stores/{vector_store_id}/search. - В ответ получаете подходящие content chunks и поле
score, по которому можно сортировать или отбирать результаты.
1) vector store 2) processed files 3) default chunking: 800 / overlap 400 4) user query 5) search 6) matched chunks + score
Если вам нужен больший контроль над хранением, маршрутизацией и инфраструктурой, вместо hosted-хранилища можно строить свою схему на /v1/embeddings и внешней векторной БД. Как пример такого класса инструментов посмотрите Qdrant. Но это уже другая архитектура, и детали реализации нужно сверять отдельно.
Чем отличается от…
| Термин | Что это такое | Чем отличается от embeddings search |
|---|---|---|
| Embeddings | Численные представления текста для измерения связанности. | Это строительный блок. Сам поиск появляется только когда вы сравниваете embedding запроса с embedding документов. |
| Vector store | Коллекция обработанных файлов, по которой можно выполнять поиск. | Это хранилище и слой доступа. Оно не заменяет идею семантического поиска, а реализует её на практике. |
| file_search | Инструмент, который использует vector stores. | Это способ применить хранилище в продукте или пайплайне. Не синоним embeddings search, а один из путей его использования. |
Если нужно отдельно разобраться именно в векторах, начните со статьи Embeddings (векторные представления).
Ограничения и заблуждения
- Заблуждение: «семантический поиск понимает смысл как человек». Корректнее говорить так: система сравнивает численные представления текста и измеряет связанность между ними.
- Заблуждение: «достаточно просто включить embeddings». На практике важны разбиение на chunks, выбранная модель и способ хранения/поиска. В OpenAI Vector Stores дефолтный chunking уже задан, но это не делает его универсально лучшим для любого корпуса.
- Ограничение текущих моделей: упомянутые здесь embedding-модели OpenAI предназначены для текста; image, audio и video не поддерживаются.
- Ограничение по данным:
/v1/embeddingsне используется для обучения, имеет 30-дневное хранение для abuse monitoring, не хранит application state и подходит для zero data retention./v1/vector_storesтоже не используется для обучения и имеет 30-дневное abuse-monitoring retention, но хранит application state до удаления и не подходит для zero data retention. - Ограничение по доступности: API-сервисы поддерживаются только в перечисленных странах и территориях; использование вне поддерживаемых регионов может привести к блокировке или приостановке аккаунта.
- Практическая оговорка: цены, rate limits, поддерживаемые snapshots и региональные домены могут меняться. Перед запуском сверяйте актуальные страницы моделей, guide по данным и supported countries list.
Редакционное ограничение: эта статья опирается на официальные материалы OpenAI и описывает именно их реализацию embeddings и vector stores. Не переносите параметры chunking, правила хранения данных и детали API один в один на любого внешнего провайдера.
Связанные термины и инструменты
- Embeddings (векторные представления) — базовый термин, без которого семантический поиск непонятен.
- Qdrant — пример внешней векторной БД для similarity search и RAG.
- SearchGPT (OpenAI) — статус и текущий ChatGPT Search — если вы сравниваете API-поиск и пользовательский поисковый продукт.
- Perplexity Pro vs ChatGPT Search — полезно, когда нужно различать поисковый интерфейс и низкоуровневый retrieval-слой.
Источники
- Embeddings FAQ | OpenAI Help Center
- text-embedding-3-large Model | OpenAI API
- text-embedding-3-small Model | OpenAI API
- New embedding models and API updates | OpenAI
- Vector Stores | OpenAI API Reference
- Data controls in the OpenAI platform
- OpenAI API – Supported Countries and Territories | OpenAI Help Center
- openai/openai-cookbook | GitHub
- vector_databases README | openai-cookbook
Вопросы и ответы
Embeddings search и embeddings — это одно и то же?
Нет. Embeddings — это численные представления текста. Embeddings search — это способ использовать эти представления для поиска близких по смыслу фрагментов.
Когда уже нужен vector database?
Когда вам нужно быстро искать по многим векторам. Именно это OpenAI рекомендует в Embeddings FAQ для больших коллекций.
Почему cosine similarity можно считать через dot product?
Потому что embeddings OpenAI L2-нормализованы до длины 1. Для таких векторов cosine similarity можно считать через dot product, а ранжирование по cosine similarity и Euclidean distance совпадает.
Используются ли данные из /v1/embeddings и /v1/vector_stores для обучения?
Согласно guide по data controls, ни /v1/embeddings, ни /v1/vector_stores не используются для обучения. Но режим хранения данных у них разный: у vector stores application state хранится до удаления, а у embeddings такого хранения нет.
Можно ли использовать эти API из любой страны?
Нет. OpenAI поддерживает API только в перечисленных странах и территориях. Использование вне поддерживаемых регионов может привести к блокировке или приостановке аккаунта.