Войти Регистрация
Data base

271. Фрагменты базы знаний только из действующих версий

Средняя

Операторы поддержки Vanguard ищут ответы клиентам в базе знаний через Pinecone. По их кейсу, фильтр метаданных отделяет устаревшие документы от действующих, и для комплаенса это обязательное условие: оператор не должен процитировать правило, которое уже отменили. Гибридный поиск дал им прирост точности больше 12 % к одному dense.

В задаче размерность 4, метрика cosine. Метаданные фрагмента: status — current или outdated, product — продукт (ira, brokerage, 529), version — номер версии документа числом. У части старых фрагментов поля status нет вовсе — их загрузили до разметки.

Вопрос клиента про лимиты взносов на IRA, вектор [0.6, 0.3, 0.7, 0.2]. Нужны 3 ближайших фрагмента: status — current, продукт ira, версия 3 и выше.

В работе: Базы знаний поддержки, юридические и регуляторные документы, где старая версия опасна.

Pinecone · Pinecone (эмулятор: точный перебор)

Индекс

Размерность 4, метрика cosine.

Пример: векторы

idvaluesmetadata
kb-110.61, 0.29, 0.69, 0.21{"status": "current", "product": "ira", "version": 4}
kb-120.6, 0.3, 0.7, 0.2{"status": "outdated", "product": "ira", "version": 2}
kb-130.55, 0.35, 0.65, 0.25{"status": "current", "product": "ira", "version": 3}
kb-140.62, 0.28, 0.71, 0.19{"product": "ira", "version": 1}
kb-150.59, 0.31, 0.68, 0.22{"status": "current", "product": "brokerage", "version": 5}
kb-160.3, 0.6, 0.2, 0.7{"status": "current", "product": "ira", "version": 5}

Ожидаемый ответ

kb-11, kb-13, kb-16
Как проверяем Запрос — JSON, как тело index.query(): vector, topK и filter по метаданным. Ищем точным перебором по метрике индекса на 4 наборах векторов и сравниваем список id по порядку. Фильтр — по правилам Pinecone: $eq $ne $gt $gte $lt $lte $in $nin $exists $and $or.
{"vector": [ … ], "topK": 3, "filter": { … }}
фильтр метаданных$and$gteотсутствующее поле

Источник: кейс Vanguard на сайте Pinecone: поиск по базе знаний поддержки, 2024. Условие пересказано своими словами.