Что такое sparse embeddings, как объединять их с dense search, хранить индексы, настраивать fusion и оценивать точные и смысловые запросы.
Коротко о главном
Большинство координат равны нулю, а ненулевые веса связаны с токенами или learned vocabulary. Это сохраняет интерпретируемый lexical сигнал и умеет расширять термины. Сравните Recall@k, nDCG, zero-result, latency и размер индекса для BM25, sparse, dense и hybrid. Проверяйте multilingual и доменные термины.
Что представляет sparse vector
Большинство координат равны нулю, а ненулевые веса связаны с токенами или learned vocabulary. Это сохраняет интерпретируемый lexical сигнал и умеет расширять термины.
BM25, sparse и dense
BM25 силён на точных словах, learned sparse добавляет контекстные веса, dense ловит смысл. Победителя заранее нет: сравнивайте сегменты и hybrid combinations.
Индекс и schema
Sparse и dense vectors хранятся раздельно или как named representations. Версии vocabulary и модели обязательны; несовместимые vectors нельзя смешивать.
Fusion
RRF безопасно объединяет ranks без сравнения разных шкал. Weighted fusion настраивается только на eval-наборе и перепроверяется после смены корпуса.
Точные запросы
Артикулы, ошибки, имена и редкие аббревиатуры включайте отдельным сегментом. Character-level fallback может быть полезнее semantic expansion.
Оценка
Сравните Recall@k, nDCG, zero-result, latency и размер индекса для BM25, sparse, dense и hybrid. Проверяйте multilingual и доменные термины.
Какой первый шаг?
Зафиксировать корпус, реальные запросы и baseline; без версий сравнение невоспроизводимо.
Что измерять?
Retrieval relevance, grounded correctness, p95 latency, стоимость и ошибки по сегментам.
Можно ли доверить оценку одной LLM?
Нет. LLM judge полезен как сигнал, но критические выборки требуют детерминированных проверок и экспертной разметки.
Как обновлять систему?
Через новую версию, offline eval, shadow, canary и заранее подготовленный rollback.
Что делать с чувствительными данными?
Минимизировать, ограничивать доступ, применять ACL до retrieval и задавать retention для traces и eval-наборов.
Как избежать каннибализации экспериментов?
Менять один слой за раз и хранить control, candidate, corpus version и сегментированные результаты.
← Все статьи блога