Data engineering
Vector search: тест с выбором ответа
Шесть вопросов поперёк всего юнита. Каждый отражает решение, которое ты принимаешь, глядя на RAG-пайплайн, возвращающий десять ранжированных строк, быстро, без ошибок — и не те десять.
Убедись, что связываешь embedding, выбор ANN-индекса, треугольник recall–latency–memory, метрики расстояния и production-ловушки — тот синтез, к которому вёл урок.
RAG-поиск возвращает десять ранжированных строк за 2 мс без ошибок, но поддержка сообщает, что бот 'не находит' документы, которые явно есть. Самая вероятная причина и как её подтвердить?
RAG-сервис на ~5M чанков с непрерывным приёмом данных, высокими требованиями к recall и запасом RAM. Какой индекс выбрать по умолчанию и почему?
Поднятие hnsw.ef_search со 100 до 500 двигает recall с ~85% до ~98%, но latency с ~1 мс до ~5 мс. Как это читать senior-инженеру?
Команда хранит нормализованные embedding и спорит про cosine similarity vs внутреннее (dot) произведение. Что верно?
Поиск с областью видимости тенанта добавляет WHERE tenant_id = ? поверх HNSW-запроса, и для маленьких тенантов recall резко падает. Почему и как чинить?
Пользователи ищут точную строку ошибки 'ECONNREFUSED', а чистый vector search хоронит нужный документ под смутно-связанными абзацами. Лучший фикс?
Сквозная линия — один треугольник recall, latency, memory — и одна привычка: провалы recall тихие. Пул кандидатов (ef_search / probes) задаёт recall vs latency, семейство индекса задаёт память и дрейф (HNSW для изменяющихся данных, IVFFlat для статики, IVF-PQ когда не влезает в RAM), метрика должна совпадать с тем, как обучались embedding, post-filtering ломает селективные фильтры (используй iterative scan), а потребность в точных токенах требует hybrid BM25 + vector с rank fusion. Прежде всего — измеряй recall@k против точного baseline, иначе летишь вслепую.