Аналитик разбирает платёж на $1 240 и ищет похожие случаи. Интересны платежи с risk от 0.8 включительно **или** с чарджбэком — у таких есть поле chargeback_at (Unix-время), у остальных его нет вовсе.
Индекс: размерность 4, метрика dotproduct. Вектор платежа — [0.6, 0.1, 0.9, 0.4]. Нужны 3 ближайших.
В работе: Разбор инцидентов: поиск похожих случаев среди уже размеченных.
Pinecone · Pinecone (эмулятор: точный перебор)
Индекс
Размерность 4, метрика dotproduct.
Пример: векторы
| id | values | metadata |
|---|---|---|
tx-1 | 0.6, 0.1, 0.9, 0.4 | {"risk": 0.92, "amount_usd": 1199} |
tx-2 | 0.5, 0.1, 0.9, 0.5 | {"risk": 0.35, "amount_usd": 980, "chargeback_at": 1760000000} |
tx-3 | 0.7, 0.2, 0.8, 0.4 | {"risk": 0.4, "amount_usd": 1300} |
tx-4 | 0.6, 0.0, 0.8, 0.3 | {"risk": 0.8, "amount_usd": 1500} |
tx-5 | 0.2, 0.9, 0.1, 0.1 | {"risk": 0.99, "amount_usd": 40} |
tx-6 | 0.9, 0.2, 1.0, 0.6 | {"risk": 0.1, "amount_usd": 5000} |
Ожидаемый ответ
tx-1, tx-2, tx-4
Как проверяем
Запрос — JSON, как тело
index.query(): vector, topK и filter по метаданным. Ищем точным перебором по метрике индекса на 4 наборах векторов и сравниваем список id по порядку. Фильтр — по правилам Pinecone: $eq $ne $gt $gte $lt $lte $in $nin $exists $and $or.
{"vector": [ … ], "topK": 3, "filter": { … }}
Источник: на данных платёжного сервиса: эмбеддинги транзакций для разбора фрода. Условие пересказано своими словами.
Давали на собеседовании?
Ответов пока мало — ваш поможет.
Стр. 1Ctrl+Enter — запуск · Ctrl+Shift+Enter — отправка
Посмотреть данные, проверить часть фильтра. На зачёт не влияет.
Здесь появится результат отправки.