Использовали ли полный текстовой поиск
Что проверяют
Интервьюер хочет понять, работали ли вы с поиском как с инженерной задачей, а не только вызывали готовый эндпоинт. Для data/ML-позиции следом почти всегда спрашивают, как вы оценивали качество выдачи и сравнивали лексический поиск с векторным.
Как отвечать
Опишите свой случай по схеме: задача, инструмент, устройство индекса, как мерили, что получилось. Темы, которые показывают понимание:
- механизм: обратный индекс, токенизация, нормализация. Для русского важна морфология: стемминг или лемматизация, иначе «вакансии» и «вакансий» не найдут друг друга;
- инструменты: в PostgreSQL это
tsvector,websearch_to_tsquery, GIN-индекс иts_rank, для опечатокpg_trgm. В Elasticsearch и OpenSearch это анализаторы, маппинги и ранжирование BM25, которое там по умолчанию; - ранжирование: BM25 учитывает частоту термина, его редкость в корпусе и длину документа. Это сильный бейзлайн, который эмбеддинги обгоняют не всегда, особенно на артикулах, кодах и редких терминах;
- гибридный поиск: BM25 плюс векторный поиск (pgvector, FAISS), слияние списков через Reciprocal Rank Fusion, затем переранжирование кросс-энкодером. Сейчас это типовой ретривер для RAG;
- оценка: размеченный набор запросов, офлайн-метрики nDCG@k, MRR, Recall@k, затем A/B по кликам или доле успешных сессий.
Цифры приводите свои: объём корпуса, задержка, изменение метрик. Если не мерили, скажите, как измерили бы сейчас.
Если опыта нет, так и скажите, но покажите, что понимаете задачу: «В проде не настраивал, но в учебном проекте сравнивал BM25 из rank_bm25 с эмбеддингами, гибрид дал лучший Recall@10». Говорите такое, только если это правда.
Где спотыкаются
Называют полнотекстовым поиском LIKE '%слово%'. Он не использует обычный B-tree индекс, не знает морфологии и не ранжирует результаты.
Говорят «использовали Elasticsearch», но не могут объяснить, какой анализатор стоял на поле и почему поиск не находил слово в другой форме.
Подают векторный поиск как безусловную замену. Без сравнения с BM25 на своих данных такой выбор ничем не обоснован.