У карточек в метаданных — массив строк tags, например ["зима", "детское"]. Подборка «К зиме» в Новосибирске показывает 3 похожих товара с тегом зима и без тега уценка.
Индекс: размерность 4, метрика dotproduct. Вектор запроса — [0.3, 0.7, 0.2, 0.6].
В работе: Подборки и витрины по тегам поверх векторного поиска.
Pinecone · Pinecone (эмулятор: точный перебор)
Индекс
Размерность 4, метрика dotproduct.
Пример: векторы
| id | values | metadata |
|---|---|---|
sku-1 | 0.3, 0.7, 0.2, 0.6 | {"tags": ["зима", "детское"]} |
sku-2 | 0.3, 0.8, 0.2, 0.6 | {"tags": ["зима", "уценка"]} |
sku-3 | 0.2, 0.6, 0.3, 0.5 | {"tags": ["зима"]} |
sku-4 | 0.4, 0.7, 0.1, 0.6 | {"tags": ["лето"]} |
sku-5 | 0.1, 0.3, 0.1, 0.2 | {"tags": ["зима", "спорт"]} |
sku-6 | 0.3, 0.6, 0.2, 0.7 | {"tags": ["спорт", "зима"]} |
Ожидаемый ответ
sku-1, sku-6, sku-3
Как проверяем
Запрос — 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 — отправка
Посмотреть данные, проверить часть фильтра. На зачёт не влияет.
Здесь появится результат отправки.