Qdrant: найти похожие точки по ID сохранённой записи
На странице · 3 разделов
Если запись уже сохранена в Qdrant, её ID можно передать в Query API вместо нового вектора. Сервер возьмёт вектор записи и найдёт близкие точки в той же коллекции. Ниже — инженерный пример по документации v1.19.x на искусственных данных; редакция не запускала Qdrant или модель.
Технический уровень. Понадобятся собственный Qdrant v1.19.x и терминал Linux/macOS с
curl; это не домашний рецепт установки AI-модели. Шаги сверены с официальной документацией 19 октября 2026 года. Редакция проверила команды только на учебной HTTP-фикстуре, но не запускала Qdrant и модель. Работайте только на127.0.0.1в отдельной учебной коллекции; пример без ключа не подходит защищённому серверу и не предназначен для открытой сети. s2 s3
Когда искать по ID, а не читать запись?
Допустим, у вас в базе есть фрагмент документа с ID 1, и вы хотите найти похожие фрагменты. Точка — сохранённая запись; её вектор — набор чисел для сравнения. Qdrant Query API принимает существующий ID в поле query и использует сохранённый вектор для поиска: повторно превращать данные в вектор для этого запроса не нужно. Это не то же самое, что прочитать одну точку по ID: там результатом будет сама запись, здесь — список похожих точек с оценками. s1 s2 s5
Как выполнить учебный запрос?
Сначала подготовьте локальный Qdrant. Убедитесь, что имя demo_by_id_20261019 свободно: команды создадут коллекцию и запишут три точки. Не запускайте их в рабочей коллекции. Все три вектора искусственные, размерность 2 выбрана только для опыта; это не векторы текстовой AI-модели и не её требования к компьютеру. Если меняете имя коллекции, замените его в каждой команде. s3 s4
- Создайте коллекцию с мерой близости Cosine:
curl -fsS -X PUT 'http://127.0.0.1:6333/collections/demo_by_id_20261019' -H 'Content-Type: application/json' -d '{"vectors":{"size":2,"distance":"Cosine"}}'. Ожидаютсяstatus: okиresult: true; если имя занято, остановитесь, а не меняйте данные существующей коллекции. s3 - Запишите точки:
curl -fsS -X PUT 'http://127.0.0.1:6333/collections/demo_by_id_20261019/points?wait=true' -H 'Content-Type: application/json' -d '{"points":[{"id":1,"vector":[1,0],"payload":{"label":"образец"}},{"id":2,"vector":[0.8,0.6],"payload":{"label":"похожа"}},{"id":3,"vector":[0,1],"payload":{"label":"другая"}}]}'. Ожидаютсяstatus: okиresult.status: completed. Повторная запись того же ID может изменить прежнюю точку, поэтому здесь нужна новая учебная коллекция. s4 - Найдите соседей точки
1:curl -fsS -X POST 'http://127.0.0.1:6333/collections/demo_by_id_20261019/points/query' -H 'Content-Type: application/json' -d '{"query":1,"limit":3,"with_payload":true,"params":{"exact":true}}'. Вresult.pointsищите ID,scoreиpayload.label: у искусственных векторов точка2ближе к образцу1, чем точка3. Образец1также может встретиться в выдаче — запрос не является командой «исключить себя».exact: trueотключает приближённый поиск для этого маленького теста; на больших коллекциях он может быть медленным. Это ожидаемое свойство учебных векторов, не измеренный редакцией ответ Qdrant. s1 s2
Если ответ пуст или порядок удивил
Проверьте, что первые две команды вернули успешный статус и в query указан числовой ID 1 существующей точки, а не текст метки. Коллекция должна содержать вектор образца; для нескольких именованных векторов необходимо отдельно задать using с нужным именем. Если получить список не удаётся, сначала прочитайте запись по ID. Не переносите учебные оценки похожести на реальные тексты: там векторы создаёт выбранная вами модель, а полезность соседей проверяют по исходным документам. Параметр with_payload: true добавляет метки к найденным точкам; сам поиск не проверяет права доступа к документам. s2
Источники
- Qdrant — Similarity Search: Search By Id. Получено 19.10.2026.
- Qdrant API v1.19.x — Query points. Получено 19.10.2026.
- Qdrant API v1.19.x — Create a collection. Получено 19.10.2026.
- Qdrant API v1.19.x — Upsert points. Получено 19.10.2026.
- Qdrant — Query points by existing ID: official snippet. Получено 19.10.2026.