Что такое ColBERT и что такое late interaction?
Answer from AI
sobes.tech AI
Что хотят услышать интервьюеры:
ColBERT — это архитектура для семантического поиска и retrieval, которая хранит не один вектор на документ, а набор токеновых эмбеддингов. Late interaction означает, что запрос и документ сначала кодируются отдельно, а их сравнение делается уже на этапе ранжирования по токенам. Это даёт компромисс между качеством cross-encoder и скоростью bi-encoder.
Определение:
ColBERT — это подход к поиску, где и запрос, и документ представляются набором контекстных эмбеддингов по токенам, а итоговый score считается через последующее сравнение этих эмбеддингов. В отличие от bi-encoder, где у текста один вектор, и в отличие от cross-encoder, где всё сравнивается вместе в одной модели, ColBERT делает взаимодействие “поздно”, после отдельного кодирования.
Late interaction — это схема, при которой модель не смешивает запрос и документ на этапе энкодинга, а сначала извлекает их представления отдельно, затем выполняет лёгкое токен-уровневое сопоставление. Обычно это помогает сохранить больше информации, чем один embedding на весь текст, но без полной стоимости cross-encoder.
Пример использования:
ColBERT хорошо подходит для поисковой системы по внутренней документации. Например, запрос: “как сбросить пароль в личном кабинете” сначала кодируется в набор векторов по токенам, документы в базе тоже кодируются заранее, а затем система быстро находит документы, у которых токены запроса лучше всего матчятся с токенами документа.
# Упрощённая иллюстрация идеи late interaction
import numpy as np
def maxsim_score(query_tokens, doc_tokens):
# query_tokens: [Q, D], doc_tokens: [T, D]
score = 0.0
for q in query_tokens:
sims = doc_tokens @ q # similarity с каждым токеном документа
score += np.max(sims) # для каждого токена запроса берём лучший матч
return score
# Идея:
# 1) запрос и документ уже закодированы отдельно
# 2) на этапе ранжирования считаем token-level similarity
# 3) суммируем лучшие совпадения
Пояснение кода:
Код не обязателен для понимания концепта, но пример показывает механику late interaction по шагам. Сначала каждый токен запроса сравнивается со всеми токенами документа. Затем для каждого токена запроса выбирается максимальное сходство с токенами документа. После этого эти максимумы суммируются в общий score. Именно эта схема “max over document tokens, sum over query tokens” и является типичной интуицией ColBERT.
Ключевые моменты:
- ColBERT хранит не один embedding на текст, а набор token embeddings.
- Late interaction означает раздельное кодирование запроса и документа и последующее токенное сопоставление.
- По качеству обычно лучше простого bi-encoder, потому что сохраняет больше локальных совпадений.
- По скорости обычно быстрее cross-encoder, потому что не прогоняет пару query-document через одну большую модель.
- Основная идея — хороший баланс между качеством ранжирования и стоимостью поиска.
- Особенно полезен в semantic search, retrieval и RAG-пайплайнах, где важны и точность, и latency.