Sobes.tech
Назад к вопросам
Middle — Senior
10

Как использовать metadata filters в векторной базе?

Компании, где спрашивали
ВектраЛабс
AstonAston

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

Метаданные используют для сужения поиска до релевантного подмножества векторов: по источнику, языку, дате, tenant’у, типу документа и т.д. Обычно фильтр применяется до или вместе с nearest neighbor search, чтобы снизить шум и улучшить качество retrieval. Важно понимать, что фильтрация по метаданным — это не замена semantic search, а способ ограничить область поиска.

Определение:

Metadata filters в векторной базе — это условия по атрибутам записи, которые позволяют искать не по всему индексу, а только среди документов с подходящими свойствами. Метаданные обычно хранятся вместе с embedding’ом: например, source, category, lang, created_at, tenant_id. Фильтр можно комбинировать с векторным запросом, чтобы получать результаты, соответствующие и смыслу, и бизнес-условиям.

Пример использования:

Например, в RAG-системе нужно искать ответы только по документам конкретного клиента и только на русском языке. Тогда запрос ищет семантически похожие фрагменты, но отбирает их лишь из записей, где tenant_id = "acme" и lang = "ru".

query_text = "Как настроить доступ к API?"
query_embedding = embed(query_text)

results = vector_db.search(
    vector=query_embedding,
    top_k=5,
    filter={
        "tenant_id": "acme",
        "lang": "ru",
        "doc_type": "manual"
    }
)

Пояснение кода:

Код не требует сложной логики: сначала текст запроса преобразуется в embedding, затем векторная база ищет ближайшие векторы, но только среди записей, удовлетворяющих фильтру. В примере поиск ограничен документами клиента acme, русскоязычными и относящимися к типу manual. Это уменьшает вероятность вернуть нерелевантный контент из других клиентов, языков или типов документов.

Ключевые моменты:

  • Metadata filters ограничивают область поиска, но не заменяют семантическое сравнение embeddings.
  • Их используют для мультитенантности, ACL/доступов, языков, временных окон, типов документов и других бизнес-ограничений.
  • Фильтр может повышать качество retrieval и снижать latency за счет меньшего числа кандидатов.
  • Важно, как векторная БД реализует фильтрацию: до ANN-поиска, после него или в гибридном режиме — это влияет на производительность и recall.
  • Слишком строгий фильтр может “обрезать” хорошие результаты, поэтому условия нужно подбирать аккуратно.
  • Для продакшена полезно хранить метаданные в нормализованном виде и заранее продумывать индексы под частые фильтры.