COMRAD404 / GLOSSARY

Embeddings search (семантический поиск)

embeddings search / semantic search

Embeddings search, или семантический поиск, ищет тексты по смыслу: запрос и документы переводятся в векторы, сравниваются по близости, а результатом становятся наиболее релевантные фрагменты.

TL;DR

Способ поиска, при котором запрос и документы переводятся в векторы и сравниваются по смысловой близости.

Embeddings search (semantic search), или семантический поиск по эмбеддингам, — это способ искать тексты по близости смысла, а не по буквальному совпадению слов. В реализации OpenAI запрос и документы превращаются в численные представления текста — embeddings — и затем ранжируются по мере связанности.

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

Английские термины: embeddings search, semantic search. Также рядом употребляются: embeddings, vector store, file_search. Ниже — трактовка по официальной документации OpenAI, актуальной на 2026-08-16.

Простыми словами

Грубо говоря, это не поиск «по словам», а поиск «по похожему смыслу». Можно представить библиотекаря, который не ищет точную фразу в каталоге, а старается понять, о чём ваш вопрос, и приносит книги с близкой темой.

Аналогия неполная, но полезная: система не рассуждает как человек, а сравнивает численные представления текстов. Чем ближе векторы запроса и документа, тем выше шанс, что фрагмент попадёт в выдачу.

Как это работает

OpenAI определяет embeddings как численные представления текста, которые удобно использовать для измерения связанности между фрагментами. На этом и строится семантический поиск: вы сравниваете не сами строки, а их векторы.

Базовая последовательность

  1. Вы делите документы на фрагменты.
  2. Для каждого фрагмента получаете embedding через endpoint /v1/embeddings.
  3. Сохраняете векторы в хранилище.
  4. Для нового запроса строите embedding той же моделью.
  5. Сравниваете вектор запроса с векторами фрагментов.
  6. Возвращаете самые близкие результаты.
Документы
  ↓
Фрагменты текста
  ↓
/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.

Практический пример

Представим поиск по внутренним инструкциям команды. Вам нужно, чтобы сотрудник находил релевантные фрагменты, даже если пишет вопрос не теми словами, что в документе.

  1. Вы создаёте vector store через POST /v1/vector_stores.
  2. Добавляете файлы; система обрабатывает их и режет на chunks. Для OpenAI Vector Stores по умолчанию это 800 токенов с overlap 400.
  3. Пользователь задаёт вопрос в свободной форме.
  4. Вы вызываете POST /v1/vector_stores/{vector_store_id}/search.
  5. В ответ получаете подходящие 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 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 только в перечисленных странах и территориях. Использование вне поддерживаемых регионов может привести к блокировке или приостановке аккаунта.

Источники

SOURCES

Вопросы и ответы

FAQ
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 только в перечисленных странах и территориях. Использование вне поддерживаемых регионов может привести к блокировке или приостановке аккаунта.

Читайте также

LINKS