# Qdrant Recommend: поиск по примерам «похоже» и «не похоже»

Источник: https://modelium.tech/zhurnal/qdrant-recommend-positive-negative/

Qdrant Recommend принимает ID похожей и непохожей записи в `positive` и `negative` запроса к `/points/query`. Сервер строит поисковый вектор из этих примеров и возвращает найденные точки с оценками. Ниже — проверяемый учебный пример на отдельной коллекции; это инструкция по документации v1.19.x, а не запуск Qdrant или модели редакцией.

**Технический уровень.** Нужны работающий Qdrant v1.19.x на своём компьютере и терминал Linux/macOS с `curl`; это не домашний рецепт установки AI-модели. Инструкция сверена с документацией 19 октября 2026 года. Редакция проверила команды на имитации HTTP-ответов, но не запускала Qdrant и модель. Пример без ключа обращается к `127.0.0.1`; не открывайте незащищённый сервер в сеть. [s1](#src-s1) [s5](#src-s5)

## Когда полезны два примера вместо одного?

Представьте каталог: один сохранённый объект вам нравится, другой не подходит. Qdrant позволяет передать их ID как **положительный** (`positive`) и **отрицательный** (`negative`) примеры, чтобы упорядочить похожие записи. Для этого нужна коллекция с уже записанными числовыми векторами — представлениями объектов в виде списков чисел. Метод `average_vector` строит поисковый вектор из примеров; это ранжирование по близости, **не запрет** показывать неподходящую категорию и не гарантия качества рекомендаций. Строгие ограничения задаются фильтром, а качество проверяется на своих данных. [s1](#src-s1) [s2](#src-s2)

## Как проверить порядок на четырёх искусственных точках?

Сначала [подготовьте локальный сервер](/zhurnal/qdrant-lokalno/). В терминале Linux/macOS используйте отдельное свободное имя `demo_recommend_20261019`; **не вводите эти команды для рабочей коллекции**. Четыре коротких вектора ниже выдуманы для сравнения чисел: они не описывают настоящие товары и не созданы моделью. Если имя уже занято, придумайте новое и замените его во всех командах. [s3](#src-s3) [s4](#src-s4)

- Создайте коллекцию: `curl -fsS -X PUT 'http://127.0.0.1:6333/collections/demo_recommend_20261019' -H 'Content-Type: application/json' -d '{"vectors":{"size":2,"distance":"Cosine"}}'`. Дождитесь `status: ok` и `result: true`; если коллекция уже существует, остановитесь и возьмите другое имя. [s3](#src-s3)

- Сохраните четыре точки: `curl -fsS -X PUT 'http://127.0.0.1:6333/collections/demo_recommend_20261019/points?wait=true' -H 'Content-Type: application/json' -d '{"points":[{"id":1,"vector":[1,0]},{"id":2,"vector":[0,1]},{"id":3,"vector":[0.8,0.2]},{"id":4,"vector":[0.2,0.8]}]}'`. Дождитесь `result.status: completed`; повторная запись тех же ID меняет точки, поэтому работайте только с учебной коллекцией. [s4](#src-s4)

- Запросите рекомендации: `curl -fsS -X POST 'http://127.0.0.1:6333/collections/demo_recommend_20261019/points/query' -H 'Content-Type: application/json' -d '{"query":{"recommend":{"positive":[1],"negative":[2],"strategy":"average_vector"}},"limit":4,"params":{"exact":true}}'`. Найдите массив `result.points` с ID и `score`; если видны обе учебные точки-кандидаты, ID `3` ожидается выше ID `4`. Это **расчётный** ориентир: по формуле документации поисковый вектор `[2,-1]` ближе к `[0.8,0.2]`, чем к `[0.2,0.8]` при Cosine; живой ответ Qdrant редакция не измеряла. [s1](#src-s1) [s2](#src-s2)

## Что проверить, если ответ отличается?

Если ответ пуст, проверьте имя коллекции и подтверждение записи четырёх точек. Если пришла ошибка, сверяйте размерность `size: 2`, существование ID `1` и `2` и форму `query.recommend`, а не одиночное `query: 1`. На защищённом сервере используйте его предусмотренный ключ и не публикуйте его в примере; тестовый адрес клиента не доказывает, что сам сервер закрыт от других устройств. Даже удачный учебный порядок не заменяет проверки релевантности на настоящих объектах. Сравните этот подход с [поиском по одному ID](/zhurnal/qdrant-poisk-po-id-pohozhey-tochki/) и используйте [фильтр метаданных](/zhurnal/qdrant-filtry-metadannyh/), если нужно строго исключать категории. [s1](#src-s1) [s2](#src-s2) [s5](#src-s5)

## Источники

1. [Qdrant API v1.19.x — Query points](https://api.qdrant.tech/v-1-19-x/api-reference/search/query-points.md) — получено 2026-10-19
2. [Qdrant — Explore: Recommendation API](https://qdrant.tech/documentation/search/explore/index.md) — получено 2026-10-19
3. [Qdrant API v1.19.x — Create a collection](https://api.qdrant.tech/v-1-19-x/api-reference/collections/create-collection.md) — получено 2026-10-19
4. [Qdrant API v1.19.x — Upsert points](https://api.qdrant.tech/v-1-19-x/api-reference/points/upsert-points.md) — получено 2026-10-19
5. [Qdrant — Local Quickstart](https://qdrant.tech/documentation/quickstart/index.md) — получено 2026-10-19
