awesome-everything EN
↑ Обратно к восхождению

Data engineering

Vector search: поймай тихий провал recall

Суть Практический проект — построй pgvector RAG-поиск, вскрой его тихий провал recall точным baseline, затем настрой ef_search, почини post-filtering и добавь hybrid search, доказывая каждый шаг числами recall.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на senior-высоте — в орбите
◷ 240 min

Читать про тихий recall — не то же, что поймать его. Построй небольшой pgvector-поиск, измерь его recall против точного baseline, затем смотри, как число двигается, пока крутишь ef_search, чинишь селективный фильтр и прикручиваешь hybrid search — с доказательством на каждом шаге.

Цель

Преврати ментальную модель юнита в воспроизводимый инженерный цикл: построй vector search, измерь recall@k против ground truth, вскрой тихие провалы и почини их верным рычагом, доказывая каждое изменение before/after recall.

Проект
0 из 7
Цель

Построй pgvector-семантический поиск по реальному корпусу документов, затем докажи измеренным recall@10, что умеешь обнаруживать и чинить тихие провалы — низкий ef_search, post-filtered селективные фильтры и отсутствие точного совпадения — ни разу не полагаясь на число строк или latency как сигнал о проблеме.

Требования
Критерии приёмки
  • Таблица before/after recall@10 и p99 latency при дефолтном ef_search vs настроенном значении, измеренная против точного baseline, не оценочная.
  • Свидетельство, что recall фильтрованного запроса обвалился под post-filtering и был восстановлен iterative scan, с зафиксированной ценой по latency.
  • Короткий список запросов с точными токенами, где hybrid RRF бьёт чистый vector search по recall@10, с числами.
  • Абзац-резюме, заявляющий recall-SLO, выбранный ef_search и почему recall@k против точного baseline — а не latency или число строк — это метрика, на которую вешаешь алерт.
Senior-стретч
  • Добавь on-call runbook: как обнаружить тихий провал recall, команда harness для recall@k, рычаги ef_search / probes / iterative_scan и чеклист верификации.
  • Сравни HNSW против IVFFlat на том же корпусе: измерь дрейф recall после вставки ещё 20% строк без reindex, показав, что центроиды IVF устаревают, пока HNSW держится.
  • Добавь IVF-PQ (или внешнее хранилище вроде Qdrant/Faiss) и измерь потерю recall от квантизации, затем восстанови её шагом rerank в полной точности на топ-кандидатах.
  • Подключи CI-гейт, который гоняет harness recall@10 на канарейке и валит сборку, если recall падает более чем на 2 пункта относительно main.
Итог

Это цикл, который запустишь в каждом реальном инциденте vector search: построй индекс с согласованной метрикой, измерь recall@k против точного baseline, вскрой тихие провалы (дефолтный ef_search, post-filtered селективные фильтры, отсутствие точного совпадения) и почини каждый верным рычагом — покрути ef_search, включи iterative scan, добавь hybrid RRF — проверяя каждое изменение измеренным recall, никогда числом строк или latency. Сделав это однажды на реальном корпусе, превращаешь production-версию в мышечную память.

Продолжить восхождение ↑Собираем вместе: система ломается на стыках, а не в хранилищах
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources2
expand
  1. 01
  2. 02

Trademarks belong to their respective owners. Editorial reference only.