pgvector ломается не на поиске, а на подготовке данных и индексах
Если векторный поиск в Supabase ведёт себя странно, причина обычно не в самой pgvector, а в пайплайне: одинаковая ли длина эмбеддингов, нет ли NULL, не смешаны ли разные модели, не режется ли текст до пустых кусков. Один «грязный» столбец потом выглядит как проблема Postgres, хотя это просто плохая загрузка.
Перед индексом проверь базу: • тип столбца под векторы; • нормализацию текста; • фильтрацию дублей; • стабильный способ получения эмбеддингов; • приведение всех значений к одной размерности. Если размерность гуляет, INSERT ещё можно поймать раньше, а вот качество поиска падает уже незаметно.
Дальше важен запрос. Не тащи всё в ANN по умолчанию: сначала отсекай мусор через RLS, tenant_id, статус, язык или категорию, а потом ищи ближайших соседей. Так Postgres меньше сканирует, а pgvector не тратит усилия на заведомо лишние строки.
Индекс тоже надо выбирать под сценарий: если нужна быстpая навигация по большому корпусу — один подход, если важнее точность на меньшем наборе — другой. Но в любом случае без чистых данных и предфильтрации даже хороший индекс не спасёт. Проверь вход, потом query path, и только затем тюнинг index.
Compliance Brief — регуляторика рынка
@compliance_brief
pgvector ломается не на поиске, а на подготовке данных и индексах
Этот пост опубликован в Telegram-канале Compliance Brief — регуляторика рынка. Подписаться можно по ссылке: @compliance_brief.