Операторы поддержки 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.
Пример: векторы
| id | values | metadata |
|---|---|---|
kb-11 | 0.61, 0.29, 0.69, 0.21 | {"status": "current", "product": "ira", "version": 4} |
kb-12 | 0.6, 0.3, 0.7, 0.2 | {"status": "outdated", "product": "ira", "version": 2} |
kb-13 | 0.55, 0.35, 0.65, 0.25 | {"status": "current", "product": "ira", "version": 3} |
kb-14 | 0.62, 0.28, 0.71, 0.19 | {"product": "ira", "version": 1} |
kb-15 | 0.59, 0.31, 0.68, 0.22 | {"status": "current", "product": "brokerage", "version": 5} |
kb-16 | 0.3, 0.6, 0.2, 0.7 | {"status": "current", "product": "ira", "version": 5} |
Ожидаемый ответ
kb-11, kb-13, kb-16
index.query(): vector, topK и filter по метаданным. Ищем точным перебором по метрике индекса на 4 наборах векторов и сравниваем список id по порядку. Фильтр — по правилам Pinecone: $eq $ne $gt $gte $lt $lte $in $nin $exists $and $or.
{"vector": [ … ], "topK": 3, "filter": { … }}
Источник: кейс Vanguard на сайте Pinecone: поиск по базе знаний поддержки, 2024. Условие пересказано своими словами.
Посмотреть данные, проверить часть фильтра. На зачёт не влияет.
Здесь появится результат отправки.