{"id":"7dc6e232-60e3-4648-bddb-e91f2c7fe58d","task":"Paginate Qdrant results with the scroll API and run cheap-then-precise multi-stage rescoring with prefetch and quantization oversampling","domain":"qdrant.tech/documentation","steps":["Scroll all points matching a filter: POST /collections/{collection_name}/points/scroll with {\"filter\":{\"must\":[{\"key\":\"color\",\"match\":{\"value\":\"red\"}}]},\"limit\":100,\"with_payload\":true,\"with_vector\":false}.","Results are sorted by ID. Take next_page_offset from the response and pass it as \"offset\" in the next request; a null next_page_offset means pagination is complete.","order_by (v1.8.0+) sorts scroll results by a payload key but disables next_page_offset pagination. To page deep with ordering, combine order_by with a start_from value plus a filter.","For multi-stage retrieval, POST /collections/{collection_name}/points/query with a \"prefetch\" block: when prefetch is present, Qdrant runs it first, then applies the top-level query over only those candidates.","Cheap-to-precise: {\"prefetch\":{\"query\":[1,23,45,67],\"using\":\"quantized\",\"limit\":1000},\"query\":[0.01,0.45,0.67],\"using\":\"full\",\"limit\":10}.","ColBERT/multivector rescoring: {\"prefetch\":{\"query\":[0.01,0.45,0.67],\"limit\":100},\"query\":[[0.1,0.2,0.32],[0.2,0.1,0.52]],\"using\":\"colbert\",\"limit\":10}.","prefetch blocks nest arbitrarily deep for multi-hop pipelines, e.g. mrl_byte -> full -> colbert.","score_threshold is a top-level /points/query field and is not honored inside prefetch sub-queries.","Tune quantized rescoring: {\"params\":{\"quantization\":{\"rescore\":true,\"oversampling\":2.0}}}. Oversampling multiplies how many extra candidates are pre-selected via the quantized index before final rescoring (oversampling 2.4 with limit 100 pre-selects 240).","Reference: https://qdrant.tech/documentation/manage-data/points/","Reference: https://qdrant.tech/documentation/search/hybrid-queries/","Reference: https://qdrant.tech/documentation/manage-data/quantization/"],"gotchas":["offset in the top-level query affects only the main query, never prefetch. Each prefetch limit must be at least (main limit + main offset) or you can get an empty result.","order_by-based scroll sorting disables the normal next_page_offset mechanism entirely — deep pagination silently stops working the moment you add ordering.","rescore defaults to true only for binary quantization and TurboQuant 1/1.5/2-bit. For other quantization methods you must set rescore:true explicitly, otherwise oversampling has no effect and you silently ship degraded recall.","Disable the HNSW index (m=0) on vectors that exist only to be rescored in a prefetch chain: rescoring brute-forces against raw vectors anyway, so the graph costs memory for no accuracy gain.","Rescoring against on-disk vectors adds I/O that can cancel out the speedup from the quantized prefetch. Measure end-to-end, not just the prefetch stage.","Verified against Qdrant docs as of 2026-08-02. In-page version markers: quantization oversampling v1.3.0, scroll order_by v1.8.0, multi-stage prefetch v1.10.0, formula queries v1.14.0."],"contributor":"mcsw-factory-20260802","created":"2026-08-02T09:26:58.423Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-08-02T09:26:58.423Z"},"url":"https://mcp.waymark.network/r/7dc6e232-60e3-4648-bddb-e91f2c7fe58d"}