Qdrant Scroll: как прочитать все точки коллекции по страницам
На странице · 3 разделов
Чтобы получить записи Qdrant без заранее известных ID, используйте Scroll: запросите первую страницу, затем подставляйте возвращённый next_page_offset в следующий запрос. Не останавливайтесь после первой порции. Ниже — учебный пример на собственной новой коллекции; реальный сервер редакция не запускала.
Технический уровень. Нужны собственный запущенный Qdrant и терминал: это не домашняя установка AI-модели. Инструкция основана на документации API v1.19.x, сверенной 17 октября 2026 года. Редакция не запускала Qdrant; ожидаемые ответы ниже — условия самостоятельной проверки, а не результат нашего запуска. Пример обращается только к
127.0.0.1и новой учебной коллекции. Если ваш сервер требует ключ, настройте доступ по его инструкции, не вставляйте секрет в публичный пример. s1 s2
Почему одной страницы недостаточно?
Точка Qdrant — запись с ID, вектором и дополнительными полями (payload). Допустим, нужно просмотреть три учебных документа с ID 1, 2 и 3. Операция Scroll читает точки коллекции порциями; она не удаляет их и не выполняет поиск похожего текста. При limit: 2 первая порция не может сама показать все три записи. Ответ содержит result.next_page_offset — значение для поля offset следующего запроса. По умолчанию обход упорядочен по ID. s1 s4
Для рабочих данных не принимайте число точек на первом экране за полный объём: повторяйте запрос, пока ответ не перестанет давать следующий offset. При одновременных записях и удалениях такая последовательность не является зафиксированным снимком коллекции; согласуйте отдельную процедуру, если нужна точная копия изменяемой базы. Это редакционный вывод из нескольких независимых запросов, а не обещание транзакционной гарантии. s1
Как получить две страницы в учебном примере?
Если у вас ещё нет тестового Qdrant, начните с инструкции локального запуска. На своём компьютере откройте терминал и создайте новую коллекцию: curl -fsS -X PUT 'http://127.0.0.1:6333/collections/docs_scroll_sandbox_20261017' -H 'Content-Type: application/json' -d '{"vectors":{"size":2,"distance":"Cosine"}}'. Ожидайте status: ok и result: true. Если имя уже занято, остановитесь: выберите другое новое имя и одинаково замените его во всех командах ниже. Двухчисловой вектор здесь только учебные данные, не настройка настоящей модели. s2
Поместите в пустую коллекцию три записи: curl -fsS -X PUT 'http://127.0.0.1:6333/collections/docs_scroll_sandbox_20261017/points?wait=true' -H 'Content-Type: application/json' -d '{"points":[{"id":1,"vector":[1,0],"payload":{"name":"Альфа"}},{"id":2,"vector":[0,1],"payload":{"name":"Бета"}},{"id":3,"vector":[1,1],"payload":{"name":"Гамма"}}]}'. Ожидайте status: ok и result.status: completed. Повторный Upsert с тем же ID заменяет точку — никогда не подставляйте рабочую коллекцию вместо новой учебной. s3
Запросите не более двух записей: curl -fsS -X POST 'http://127.0.0.1:6333/collections/docs_scroll_sandbox_20261017/points/scroll' -H 'Content-Type: application/json' -d '{"limit":2,"with_payload":true,"with_vector":false}'. В result.points ожидаются ID 1 и 2 с именами «Альфа» и «Бета». Скопируйте из своего ответа result.next_page_offset: в таком неизменённом примере ожидается 3. Если ответ отличается, не угадывайте offset — сначала проверьте записи и настройки коллекции. s1
Передайте возвращённое значение следующей странице: curl -fsS -X POST 'http://127.0.0.1:6333/collections/docs_scroll_sandbox_20261017/points/scroll' -H 'Content-Type: application/json' -d '{"limit":2,"offset":3,"with_payload":true,"with_vector":false}'. Число 3 годится только для этого неизменённого примера: в своей коллекции подставьте именно next_page_offset из предыдущего ответа. В result.points ожидается ID 3 с именем «Гамма»; при отсутствии следующего offset обход завершён. Если offset снова возвращён, сделайте ещё один запрос с новым значением. s1 s4
Как проверить результат и что делать при ошибке?
В учебном наборе соберите ID из обеих порций: ожидаются 1, 2, 3 без повторов. Если видите только два ID, не была запрошена следующая страница; если новая страница повторяет прежнюю, проверьте, что в offset отправлено возвращённое значение, а не старое. Отсутствие payload проверьте по with_payload: true; вектор здесь скрыт параметром with_vector: false, но хранится в точке. s1
Если сервер отвечает ошибкой доступа, не публикуйте API-ключ и не открывайте сервер наружу ради примера; выполните инструкции своего администратора. Если ответ имеет другой формат, сверьте версию собственного Qdrant с приведённой документацией. Не используйте Scroll как доказательство полноты меняющейся в этот момент базы или как резервную копию: отдельный материал о snapshots посвящён резервированию. Здесь не запускалась AI-модель, не выполнялся поиск и не измерялась скорость. s1 s4
Следующий шаг: проверьте отбор точек по полю на отдельной учебной коллекции: постраничный обход и фильтр решают разные задачи. s1
Источники
- Qdrant — Scroll points, API v1.19.x — Снимок scroll.md и SHA-256 в manifest.json; версия документации, не проверенного сервера. Получено 17.10.2026.
- Qdrant — Create collection, API v1.19.x — Снимок create.md и SHA-256 в manifest.json. Получено 17.10.2026.
- Qdrant — Upsert points, API v1.19.x — Снимок upsert.md и SHA-256 в manifest.json. Получено 17.10.2026.
- Qdrant — Manage data: Points — Снимок points.html и SHA-256 в manifest.json; раздел Scroll Points. Получено 17.10.2026.