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

196. Похожие платежи: высокий риск или был чарджбэк

Сложная

Аналитик разбирает платёж на $1 240 и ищет похожие случаи. Интересны платежи с risk от 0.8 включительно **или** с чарджбэком — у таких есть поле chargeback_at (Unix-время), у остальных его нет вовсе.

Индекс: размерность 4, метрика dotproduct. Вектор платежа — [0.6, 0.1, 0.9, 0.4]. Нужны 3 ближайших.

В работе: Разбор инцидентов: поиск похожих случаев среди уже размеченных.

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

Индекс

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

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

idvaluesmetadata
tx-10.6, 0.1, 0.9, 0.4{"risk": 0.92, "amount_usd": 1199}
tx-20.5, 0.1, 0.9, 0.5{"risk": 0.35, "amount_usd": 980, "chargeback_at": 1760000000}
tx-30.7, 0.2, 0.8, 0.4{"risk": 0.4, "amount_usd": 1300}
tx-40.6, 0.0, 0.8, 0.3{"risk": 0.8, "amount_usd": 1500}
tx-50.2, 0.9, 0.1, 0.1{"risk": 0.99, "amount_usd": 40}
tx-60.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": { … }}
фильтр метаданных$or$existsdotproduct

Источник: на данных платёжного сервиса: эмбеддинги транзакций для разбора фрода. Условие пересказано своими словами.

Давали на собеседовании? Ответов пока мало — ваш поможет.