Недавно обсуждали дизайн рекламной системы (реальной), и разговор зашёл о том, где и ка... — 28 декабря 2025 г. в 16:02:58.859
Недавно обсуждали дизайн рекламной системы (реальной), и разговор зашёл о том, где и как хранить векторы для айтемов и пользователей. На моё утверждение, что можно всё хранить на одной машине, возразили, что будет примерно 100-200 млн векторов, которые нужно хранить постоянно (пользователей можно считать на лету). К счастью, я как раз недавно прочитал ScaNN (Scalable Nearest Neighbors) (https://research.google/blog/announcing-scann-efficient-vector-similarity-search/)от Google Research. У ScaNN два плюса: 1) Эффективная квантизация через кодовые книги (ну это у многих). 2) Сжатие не просто ради сжатия, а минимизация ошибки в первую очередь в направлении вектора; ошибка, уводящая вбок, менее страшна. The innovation of ScaNN is Anisotropic Vector Quantization. It recognizes that not all geometric errors are created equal. An error "sideways" (orthogonal) hurts your search accuracy much less than an error "lengthwise" (parallel). Если взять эмбеддинг OpenAI (Ada-002) размерностью 1536, он будет весить 6 КБ. 100 млн таких эмбеддингов будут весить 600 ГБ — многовато. Если его сжать через CodeBook — стандартно в 64 субпространства code book — он будет весить 64 байта. 100 млн таких эмбеддингов будут весить 6 ГБ. Задача решена. #SystemDesign https://research.google/blog/announcing-scann-efficient-vector-similarity-search/

