TGViewer
Канал Доброго Вани | Data Science и Продуктики Канал Доброго Вани | Data Science и Продуктики @pleshakovsky · 1.7K subscribers
Post #749 1.15K
💻💻💻💻

Обещанный пост про векторные индексы

✨ Что за зверь такой ваш этот векторный индекс? Ну все просто: есть у вас, допустим, эмбеддинги товаров и вы хотите их где-нибудь хранить. А потом чтоб еще и пробежаться по ним можно было шустро и, например, найти наиболее похожие вектора (товары)

Для таких задач и существует так называемый векторный индекс и очень часто в этом контексте всплывает библиотечка FAISS. Какие же варианты структуры индекса предоставляет эта библиотека и какие еще там есть трюки? Обсудим самые популярные варианты

1⃣ PQ - Product Quantization (фото 1-2)
Позволяет сжать вектора. Метод заключается в том, что каждый вектор разбивается на подвектора, подвектора кластеризуются и формируется новый вектор, состоящий из номеров кластеров.

2⃣ IVF - Inverted File Index (фото 3)
Метод предлагает разбить векторное пространство на кластеры и к каждому кластеру вычислить его "центроиду". Далее сами кластеры будут храниться на диске, а маппинг центроид с кластерами в ОЗУ. Таким образом, когда вы будете искать ближайший вектор, вы сравните его с векторами центроид и для ближайшей центроиды возьмете ее кластер с векторами.

3⃣ NSW / HNSW - Hierarchical Navigable Small World graphs (фото 4)
Можно сказать, SOTA метод приближенного поиска ближайших соседей, основывающийся на жадном обходе графа (по сути, как правило 7 рукопожатий. Как до любого человека можно добраться через 7 рукопожатий, так и до похожего вектора можно добраться через N прыжков по графу, где каждый вектор - это узел)

✨ Прелесть FAISS'a в том, что он позволяет изящно комбинировать все эти подходы для создания оптимальной векторной базы и дальнейших манипуляций с ней (подробнее что происходит с памятью https://habr.com/ru/companies/avito/articles/488658/ )

Рекомендуемые базовые конфигурации:
1млн - 10млн векторов : IVF65535_HNSW32 (Т.е. 65535 центроид и 32 слоя графов)
10млн-100млн векторов : IVF262144_HNSW32

Самостоятельно также советую изучить подходы K-D Tree, LSH и ANNOY


Где это можно применять?
Например, мой коллега Андрей, админ канала @awesome_dl , выпустил свежий пост, где создал бота для Q&A по курсу диффузионных моделей. И чтобы улучшить его планирует добавить механизм памяти, как раз через векторный индекс более чем применим. Очень полезный кейс, обязательно к прочтению. Еще рекомендую два поста про то как разобраться с диффузионными моделями и диффузионными моделями в видеогенерации



😎 Надеюсь, этот пост был полезен и теперь все вектора будут храниться и обрабатываться эффективно

#Ботаем
  • ❤ 9
  • 🔥 4
More from @pleshakovsky
  1. Jul 24, 2026Стал синьором 😎
  2. May 18, 2026🇵🇪Перу. Наска. День 4: Пустыня, акведуки, Чаучила После перерыва на горную болезнь и пер…
  3. May 2, 2026🇵🇪Перу. Паракас. День 3: Исла Бальестас, Уакачина 🏝️ Вечером второго дня переехав южнее…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →