Bi-encoder — архитектура retrieval-моделей, в которой запрос и документ кодируются независимо в плотные векторы, а поиск выполняется по их семантической близости.
Определение
Bi-encoder — это архитектурный паттерн в задачах информационного поиска и семантического сопоставления, при котором используются два независимых энкодера: один для запроса, другой для документа (или объекта поиска). Каждый энкодер преобразует вход в вектор фиксированной размерности, после чего релевантность оценивается через метрику близости (косинусное сходство или dot-product). Bi-encoder является базовой архитектурой для dense retrieval, semantic search и большинства RAG-систем.
Как работает
1. Раздельное кодирование
Ключевая особенность bi-encoder — отсутствие прямого взаимодействия между запросом и документом на этапе кодирования:
- Query encoder получает только текст запроса.
- Document encoder получает только текст документа или его фрагмента.
Оба энкодера могут быть:
- идентичными по архитектуре (siamese setup);
- или разными, если запрос и документы имеют разную природу.
2. Формирование embedding space
Цель обучения — создать общее векторное пространство, где:
- релевантные пары (запрос–документ) расположены близко;
- нерелевантные пары — далеко.
Для этого используются:
- contrastive loss (InfoNCE);
- in-batch negatives;
- hard negatives (из BM25, sparse retrieval или предыдущих моделей).
3. Поиск и масштабирование
После обучения:
- все документы кодируются заранее;
- векторы сохраняются в ANN-индексе (HNSW, IVF, PQ);
- запрос кодируется в реальном времени;
- поиск выполняется как nearest neighbor search.
Именно независимость кодирования делает bi-encoder масштабируемым до миллионов и миллиардов документов.
Где применяется
- Dense retrieval и semantic search.
- Retrieval-augmented generation (RAG).
- Поиск по документации, FAQ, knowledge base.
- Мультимодальный retrieval (текст–изображение, текст–видео).
- Candidate generation в многоступенчатых поисковых системах.
Практические примеры использования
Классический пример — DPR (Dense Passage Retrieval), где bi-encoder обучается находить релевантные абзацы для вопросов. Современные модели E5, BGE, Contriever, GTR используют bi-encoder архитектуру как основу. В RAG-системах bi-encoder отвечает за быстрый отбор кандидатов, которые затем переранжируются cross-encoder или LLM.
В мультимодальных системах bi-encoder применяется для cross-modal retrieval: текст и изображение кодируются разными энкодерами, но проецируются в общее embedding-пространство (CLIP-подобная схема).
Ключевые свойства
- Независимое кодирование запросов и документов.
- Высокая скорость и масштабируемость.
- Совместимость с ANN-индексами.
- Подходит для предварительного отбора кандидатов.
- Простота деплоя и обновления индекса.
Проблемы и ограничения
- Отсутствие взаимодействия запроса и документа на уровне токенов.
- Более низкая точность по сравнению с cross-encoder.
- Трудности с длинными и сложными запросами.
- Потеря тонких контекстных соответствий.
- Зависимость качества от negative sampling.
Преимущества и ограничения
- Плюс: высокая производительность и масштабируемость.
- Минус: ограниченная точность без дополнительного re-ranking.
Связанные термины
- Cross-encoder
- Dense retrieval
- ANN search
- Hybrid search
- RAG