<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: HiDevs</title>
    <description>The latest articles on DEV Community by HiDevs (@hidevs_gen_ai_workforce).</description>
    <link>https://dev.to/hidevs_gen_ai_workforce</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4137698%2F90694764-5c02-46bd-b615-76958a5186ab.jpeg</url>
      <title>DEV Community: HiDevs</title>
      <link>https://dev.to/hidevs_gen_ai_workforce</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hidevs_gen_ai_workforce"/>
    <language>en</language>
    <item>
      <title>Turbo4’s Real Cost: What You Give Up When You Drop the Full-Precision Copy</title>
      <dc:creator>HiDevs</dc:creator>
      <pubDate>Thu, 08 Oct 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/hidevs_gen_ai_workforce/turbo4s-real-cost-what-you-give-up-when-you-drop-the-full-precision-copy-544e</link>
      <guid>https://dev.to/hidevs_gen_ai_workforce/turbo4s-real-cost-what-you-give-up-when-you-drop-the-full-precision-copy-544e</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwpelhi2fg6choeq7o8bm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwpelhi2fg6choeq7o8bm.png" alt="A reproducible benchmark measuring recall, storage, and throughput across five embedding models - comparing Qdrant 1.19's storage-only Turbo4 datatype against the two-copy TurboQuant model with rescoring." width="800" height="442"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;A reproducible benchmark measuring recall, storage, and throughput across five embedding models - comparing Qdrant 1.19's storage-only Turbo4 datatype against the two-copy TurboQuant model with rescoring.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;When &lt;a href="https://qdrant.tech/documentation/manage-data/vectors/?utm_source=hidevsarticle&amp;amp;utm_medium=devto&amp;amp;utm_campaign=turbo4-real-cost" rel="noopener noreferrer"&gt;&lt;strong&gt;Qdrant 1.19&lt;/strong&gt;&lt;/a&gt; introduced the Turbo4 datatype, it presented vector search engineers with a compelling value proposition: drop full-precision vectors entirely, retain only a tiny 4-bit compressed version, and slash collection storage footprints ninefold. But this massive compression saving comes with an immediate operational trade-off. &lt;/p&gt;

&lt;p&gt;Because original vectors are completely discarded from disk, there is no underlying full-precision baseline left to double-check candidate points against during search. As a result, distance metrics derived from 4-bit compressed representations become the final search score - eliminating the traditional safety net used to correct quantization errors.&lt;/p&gt;

&lt;p&gt;Prior to this update, standard production setups running on Qdrant 1.18 relied on &lt;a href="https://qdrant.tech/documentation/manage-data/quantization/?utm_source=hidevsarticle&amp;amp;utm_medium=devto&amp;amp;utm_campaign=turbo4-real-cost" rel="noopener noreferrer"&gt;TurboQuant&lt;/a&gt;, Qdrant's standard 4-bit quantization layer. To guarantee high retrieval accuracy, TurboQuant maintains a dual-copy architecture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;In-Memory Copy:&lt;/strong&gt; A 4-bit compressed vector held in fast RAM for rapid candidate scanning across HNSW index graphs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;On-Disk Copy:&lt;/strong&gt; The original float32 vector saved to disk, used specifically during the final rescoring pass to re-evaluate exact distances for top candidates.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While this rescoring approach provided an impressive 98.2% recall on a 1-million-document OpenAI collection, maintaining dual-copy storage scales steeply. At &lt;strong&gt;1,536 dimensions per vector&lt;/strong&gt;, the raw coordinate data alone requires &lt;strong&gt;6.9 GB of space&lt;/strong&gt; - meaning a planned expansion to 1*&lt;em&gt;0 million documents&lt;/em&gt;* would demand &lt;strong&gt;over 65 GB&lt;/strong&gt; just to preserve full-precision rescoring safety.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqncox8zynsdyvzcj18pl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqncox8zynsdyvzcj18pl.png" alt="Figure 1: TurboQuant keeps both copies and double-checks results. Turbo4 keeps only the compressed copy - no double-checking possible." width="737" height="411"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Figure 1: TurboQuant keeps both copies and double-checks results. Turbo4 keeps only the compressed copy - no double-checking possible.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mechanics of Hadamard Rotations and Rescoring Overhead&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Our starting point was &lt;a href="https://qdrant.tech/documentation/manage-data/quantization/?utm_source=hidevsarticle&amp;amp;utm_medium=devto&amp;amp;utm_campaign=turbo4-real-cost" rel="noopener noreferrer"&gt;&lt;strong&gt;TurboQuant&lt;/strong&gt; from Qdrant 1.18&lt;/a&gt;. It uses a trick from Google Research: before compressing vectors to 4 bits, it scrambles them with a mathematical rotation (Hadamard transform) that spreads the important information evenly across all coordinates. &lt;/p&gt;

&lt;p&gt;Qdrant stores both the original and the compressed copy. During search, it uses the compressed copy for speed, then pulls the originals from disk for the top candidates and re-checks distances. This rescoring step catches most compression mistakes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here is what that rescoring search looks like in code:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;#Python — TurboQuant Search with Rescoring
&lt;/span&gt;
&lt;span class="n"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;query_points&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;collection_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;wiki_tq_rescore&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;query_vector&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;limit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;search_params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;SearchParams&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;hnsw_ef&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;128&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;quantization&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;QuantizationSearchParams&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;rescore&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;         &lt;span class="c1"&gt;# Re-check against full-precision originals
&lt;/span&gt;            &lt;span class="n"&gt;oversampling&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;2.0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;     &lt;span class="c1"&gt;# Pull 20 candidates, return best 10
&lt;/span&gt;        &lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The rescore and oversampling parameters are part of &lt;a href="https://qdrant.tech/documentation/manage-data/quantization/?utm_source=hidevsarticle&amp;amp;utm_medium=devto&amp;amp;utm_campaign=turbo4-real-cost" rel="noopener noreferrer"&gt;Qdrant’s quantization search configuration&lt;/a&gt;. Qdrant documents oversampling as a way to pre-select additional candidates from the quantized index before rescoring them with the original vectors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Architecture Choices: Dual-Copy Quantization vs. Pure 4-Bit Storage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Qdrant handles this via two explicit setup types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;TurboQuant (FLOAT32 with Quantization):&lt;/strong&gt; Holds both quantized representations and float32 original vectors. It optimizes for maximum recall by accepting a higher disk footprint.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Turbo4 Datatype (TURBO4):&lt;/strong&gt; Stores vectors exclusively as 4-bit quantized values. It cuts storage radically by eliminating raw vector copies.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Side-by-Side Accuracy, Memory, and Throughput Measurements&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We wanted to test one thing: what happens to search accuracy and speed when you remove the safety net? To make the comparison fair, we kept everything else identical - same hardware, same index settings, same queries. We computed the "correct" answers using a slow but perfect brute-force search, then measured how close each setup got.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Benchmark Setup &amp;amp; Environment&lt;/em&gt;&lt;/strong&gt; &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc0fu70bd7vjkanc6iwhy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc0fu70bd7vjkanc6iwhy.png" alt="Table 1" width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Evaluated Embedding Models&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
We picked five embedding models that cover a wide range:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fymt9cqs8rk92f6a73tf2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fymt9cqs8rk92f6a73tf2.png" alt="Table 2" width="800" height="282"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For the data, we used 500,000 Wikipedia abstracts. Wikipedia is messy and varied, which is the point - synthetic test data would have made the results look better than they really are. We wanted numbers we could trust in production.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Collection Setup Scripts :&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Python - Turbo4 Collection (compressed only, no originals kept)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create_collection&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;collection_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;wiki_turbo4&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;vectors_config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;VectorParams&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1536&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;distance&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Distance&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;COSINE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;datatype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Datatype&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;TURBO4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="c1"&gt;# 4-bit only, no originals
&lt;/span&gt;    &lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;hnsw_config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;HnswConfigDiff&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ef_construct&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;128&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The TURBO4 datatype used above is documented in &lt;a href="https://qdrant.tech/documentation/manage-data/vectors/?utm_source=hidevsarticle&amp;amp;utm_medium=devto&amp;amp;utm_campaign=turbo4-real-cost" rel="noopener noreferrer"&gt;Qdrant’s vector datatype documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Python - TurboQuant Collection (keeps both compressed and original)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create_collection&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;collection_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;wiki_tq_rescore&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;vectors_config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;VectorParams&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1536&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;distance&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Distance&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;COSINE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;datatype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Datatype&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FLOAT32&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;quantization_config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;TurboQuantConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;encoding&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;TurboQuantEncoding&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;BITS4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;em&gt;Accuracy Measurement Function :&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Python - Recall Measurement&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;compute_recall&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;predicted_ids&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ground_truth_ids&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;What fraction of the correct answers did we find?&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;predicted_ids&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ground_truth_ids&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ground_truth_ids&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Average over 1,000 queries
&lt;/span&gt;&lt;span class="n"&gt;recalls&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nf"&gt;compute_recall&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;approx&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;exact&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;queries&lt;/span&gt;&lt;span class="p"&gt;))]&lt;/span&gt;
&lt;span class="n"&gt;mean_recall&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;recalls&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;recalls&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Recall Performance Across Vector Lengths&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When we ask for the top 10 results (the most common setting for RAG), Turbo4 found between 96.1% and 98.9% of the correct answers, depending on the model. The gap compared to TurboQuant-with-rescoring ranged from about half a percentage point to nearly three percentage points.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgvfdffokvc4c7xgd1gbi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgvfdffokvc4c7xgd1gbi.png" alt="Table 3" width="800" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why do longer vectors handle compression better?&lt;/strong&gt; &lt;br&gt;
Think of it this way: when you round each number in a vector, you introduce a tiny error. If the vector only has 384 numbers, each error matters more. With 3072 numbers, the errors tend to cancel each other out - some round up, some round down, and the overall distance barely changes. The math behind this is the law of large numbers, and it shows up clearly in our results.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flxymnspcxhgx2fbipl0o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flxymnspcxhgx2fbipl0o.png" alt="Figure 2: Recall@10 across all configurations. The gap shrinks as vectors get longer." width="736" height="410"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Figure 2: Recall@10 across all configurations. The gap shrinks as vectors get longer.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In practical terms, the &lt;strong&gt;384-dimension gap&lt;/strong&gt; means about &lt;strong&gt;1 in 37 queries would lose a relevant document&lt;/strong&gt; from the results. At &lt;strong&gt;1536 dimensions and above&lt;/strong&gt;, it drops to &lt;strong&gt;about 1 in 100&lt;/strong&gt; - and if you have a reranker sitting after the retrieval step, even that small difference tends to disappear.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frpin3eci7ayetlf7y0f7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frpin3eci7ayetlf7y0f7.png" alt="Figure 3: At deeper retrieval (k=100), the gap widens slightly, especially for shorter vectors." width="737" height="412"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Figure 3: At deeper retrieval (k=100), the gap widens slightly, especially for shorter vectors.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Storage Metrics &amp;amp; Throughput Trade-Offs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The storage numbers are direct: TurboQuant adds a 4-bit compressed copy to 32-bit float originals (36 bits total), while Turbo4 keeps only the 4-bit version. That provides a deterministic 9x reduction. Speed also improved because Turbo4 never has to read original vectors from disk to rescore results.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fby0n9ijxixdxoivd67wl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fby0n9ijxixdxoivd67wl.png" alt="Table 4" width="799" height="274"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9lstswvua2ygk7jnhg56.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9lstswvua2ygk7jnhg56.png" alt="Figure 4: Storage comparison. Turbo4 is consistently 9× smaller." width="799" height="446"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Figure 4: Storage comparison. Turbo4 is consistently 9× smaller.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To put this in perspective: a 10M-vector collection with OpenAI's largest model takes about 130 GB with TurboQuant. With Turbo4, it is about 14.4 GB. That is the difference between needing a special high-memory server and running comfortably on a standard cloud instance.&lt;/p&gt;

&lt;p&gt;Speed also improved, for a simple reason. TurboQuant has to read the original vectors from disk every time it rescores a result. With Turbo4, there are no originals to read - everything stays in memory. The speed gain was 25–33% depending on the model, and it got bigger with longer vectors because those take more time to read from disk.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fus7h2n6e7s9i3ky5aj3h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fus7h2n6e7s9i3ky5aj3h.png" alt="Table 5" width="800" height="269"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgsauu4lpv4pz1wt6w9hx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgsauu4lpv4pz1wt6w9hx.png" alt="Figure 5: Turbo4 is faster across the board, and the gap grows with vector size." width="800" height="444"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Figure 5: Turbo4 is faster across the board, and the gap grows with vector size.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deployment Recommendations &amp;amp; Architectural Trade-offs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Four clear rules emerge from these benchmark results__:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Vector Dimension Sensitivity:&lt;/strong&gt; Short vectors (384d) lose nearly 3 percentage points of recall without rescoring, whereas high-dimensional vectors (1536d+) lose only ~1 point.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deterministic Footprint Reduction:&lt;/strong&gt; Storage reduction remains exactly 9x, making large-scale deployments dramatically cheaper.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I/O Efficiency Gains:&lt;/strong&gt; Eliminating disk rescoring yields a 25–33% throughput boost depending on coordinate length.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Production Setup Choices&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Turbo4 Strategy:&lt;/strong&gt; Recommended for &lt;strong&gt;OpenAI embeddings (1536d+)&lt;/strong&gt; where a downstream cross-encoder reranker is present, making the 1*&lt;em&gt;% recall difference&lt;/em&gt;* negligible while saving substantial infrastructure costs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TurboQuant Strategy:&lt;/strong&gt; Recommended for &lt;strong&gt;shorter vectors (384d)&lt;/strong&gt; in low-latency search or autocomplete tasks where &lt;strong&gt;maximum first-pass recall&lt;/strong&gt; is required without downstream re-ranking.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>agents</category>
      <category>database</category>
    </item>
    <item>
      <title>Building a Multi-Agent Load Simulator: 50 Agents, One Collection</title>
      <dc:creator>HiDevs</dc:creator>
      <pubDate>Wed, 07 Oct 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/hidevs_gen_ai_workforce/building-a-multi-agent-load-simulator-50-agents-one-collection-9mh</link>
      <guid>https://dev.to/hidevs_gen_ai_workforce/building-a-multi-agent-load-simulator-50-agents-one-collection-9mh</guid>
      <description>&lt;p&gt;As AI applications evolve from simple chatbots into complex multi-agent architectures, the demands placed on the vector database change fundamentally. In a single-agent loop, context retrieval is predictable and mostly sequential: an agent sends a search request, waits for a response, passes context to an LLM, and takes its next action.&lt;/p&gt;

&lt;p&gt;When scaling to &lt;strong&gt;50 independent agents operating concurrently&lt;/strong&gt;, that neat sequential pattern breaks down.&lt;/p&gt;

&lt;p&gt;In production agent workflows, &lt;a href="https://qdrant.tech/documentation/manage-data/collections/?utm_source=hidevsarticle&amp;amp;utm_medium=devto&amp;amp;utm_campaign=50-agents" rel="noopener noreferrer"&gt;Qdrant&lt;/a&gt; serves as the shared retrieval backbone supplying relevant points to dozens of agents as they reason and decide what to do next. Rather than receiving orderly, one-by-one requests, a single Qdrant collection is bombarded by overlapping, asynchronous search queries.&lt;/p&gt;

&lt;p&gt;Standard single-query benchmarks evaluate retrieval in artificial isolation. They fail to capture the resource contention, client-side queueing, and tail-latency spikes that occur when dozens of agents query the exact same collection at the same time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0p04xph0kqwkoy292kvw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0p04xph0kqwkoy292kvw.png" alt="Figure 1. Multi-agent load simulator architecture." width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Figure 1. Multi-agent load simulator architecture.&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Fifty independent agent sessions send overlapping requests to one shared Qdrant collection. The simulator records latency percentiles, throughput, in-flight requests, and server metrics.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overlapping Cycles and Query Interference&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A single Qdrant query benchmark measures retrieval in isolation. A single-agent loop adds pauses between searches, but it still does not reproduce the shared demand created when many agents independently retrieve context from the same collection.&lt;/p&gt;

&lt;p&gt;In an agent system, one session may be waiting for an LLM response ("think time") while another sends a vector search to Qdrant. A third may issue a payload-filtered search. Their request cycles overlap continuously, so Qdrant sees a changing mix of retrieval operations rather than one orderly sequence.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fshlk2nih46gc6dt8jo1w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fshlk2nih46gc6dt8jo1w.png" alt="Figure 2. Sequential single-agent testing compared with concurrent agent sessions." width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Figure 2. Sequential single-agent testing compared with concurrent agent sessions.&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;A sequential test sends the next request only after the previous response, while independent agent sessions generate overlapping requests against the same collection.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Inside the shared Qdrant collection&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Every simulated session sends its searches to the same Qdrant collection. The benchmark holds the vectors, payload schema, index configuration, and search settings constant while concurrency changes. That keeps the experiment focused on how the Qdrant workload responds to more simultaneous sessions, rather than changes to the underlying collection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The workload exercises two Qdrant search paths:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Unfiltered Vector Search:&lt;/strong&gt; Uses Qdrant's &lt;a href="https://qdrant.tech/documentation/manage-data/indexing/?utm_source=hidevsarticle&amp;amp;utm_medium=devto&amp;amp;utm_campaign=50-agents" rel="noopener noreferrer"&gt;HNSW index&lt;/a&gt; for approximate nearest neighbor (ANN) retrieval.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Payload-Filtered Vector Search:&lt;/strong&gt; Combines vector retrieval with conditions on stored payload. &lt;a href="https://qdrant.tech/documentation/concepts/payload/?utm_source=hidevsarticle&amp;amp;utm_medium=devto&amp;amp;utm_campaign=50-agents" rel="noopener noreferrer"&gt;Payload indexes&lt;/a&gt; support filter evaluation, while &lt;a href="https://qdrant.tech/documentation/search/search/?utm_source=hidevsarticle&amp;amp;utm_medium=devto&amp;amp;utm_campaign=50-agents" rel="noopener noreferrer"&gt;ACORN&lt;/a&gt; may be relevant for restrictive filtered searches depending on the collection and query configuration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This distinction is central to the experiment. Qdrant is not just receiving more of the same request: the collection is serving both ordinary vector searches and searches constrained by payload. The benchmark varies the mix to observe whether the two query types affect one another under shared load.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How Qdrant Handles Concurrent Demand&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Qdrant’s underlying architecture is designed to handle high-concurrency, mixed-query workloads against a single shared collection without dropping performance:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dual Indexing Engine:&lt;/strong&gt; Qdrant combines an &lt;strong&gt;&lt;a href="https://qdrant.tech/documentation/manage-data/indexing/?utm_source=hidevsarticle&amp;amp;utm_medium=devto&amp;amp;utm_campaign=50-agents" rel="noopener noreferrer"&gt;HNSW index&lt;/a&gt;&lt;/strong&gt; for high-throughput vector lookups with dedicated &lt;strong&gt;&lt;a href="https://qdrant.tech/documentation/concepts/payload/?utm_source=hidevsarticle&amp;amp;utm_medium=devto&amp;amp;utm_campaign=50-agents" rel="noopener noreferrer"&gt;payload indexes&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;ACORN&lt;/strong&gt; algorithms. This allows payload-filtered searches to execute without choking raw vector search performance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Asynchronous Request Execution:&lt;/strong&gt; Qdrant’s core engine processes overlapping operations across multiple CPU threads, insulating fast ANN lookups even when heavier filtered searches run concurrently.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Metric Transparency:&lt;/strong&gt; Qdrant exposes internal telemetry via Prometheus. By comparing end-to-end client timestamps with server-side &lt;strong&gt;&lt;a href="https://qdrant.tech/documentation/ops-monitoring/monitoring/?utm_source=hidevsarticle&amp;amp;utm_medium=devto&amp;amp;utm_campaign=50-agents" rel="noopener noreferrer"&gt;Prometheus metrics&lt;/a&gt;&lt;/strong&gt;, engineering teams can verify that Qdrant’s internal execution time remains fast and flat even when client-side connection waiting accumulates under heavy load.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Empirical Verification: The Multi-Agent Load Simulator&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The simulator models each agent as an independent session with its own request sequence and think time. This matters because the benchmark is intended to test Qdrant under overlapping retrieval demand, not simply to send 50 requests in a burst.&lt;/p&gt;

&lt;p&gt;Each simulated agent runs as an independent asynchronous task. It selects a vector-search request and sends it to the shared Qdrant collection through the Qdrant Python client. The agent then records the client-observed round-trip time before waiting for a short interval and issuing its next request.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;perf_counter&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;timed_query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;collection&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;agent_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;query_type&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;started&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;perf_counter&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;query_points&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;collection_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;collection&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;agent_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;agent_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;query_type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;query_type&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;latency_ms&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;perf_counter&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;started&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The query_points operation used above is documented in Qdrant's &lt;a href="https://qdrant.tech/documentation/search/search/?utm_source=hidevsarticle&amp;amp;utm_medium=devto&amp;amp;utm_campaign=50-agents" rel="noopener noreferrer"&gt;&lt;strong&gt;Search and Query documentation&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The timer measures the total round-trip time observed by the client when sending a search request to the shared Qdrant collection and receiving a response. It does not measure Qdrant's internal search execution time alone, as the total latency can also include connection-pool waiting and network transit. This distinction is important when evaluating Qdrant's search performance under concurrent agent workloads. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fundwdrxz9bompetjavzq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fundwdrxz9bompetjavzq.png" alt="Figure 3. Independent agent-session request timeline." width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Figure 3. Independent agent-session request timeline.&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Each session follows its own request cadence and think-time intervals, producing overlapping asynchronous activity rather than one synchronized request stream.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Experiment 1: Concurrency Scaling&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The first experiment increases the number of concurrent agent sessions sending requests to a shared Qdrant collection, using concurrency levels of &lt;strong&gt;1, 5, 10, 25, and 50.&lt;/strong&gt; It tracks how client-observed latency, throughput, and in-flight requests change as more agents access the same Qdrant collection.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbvafzxpkyo1u9v5f00bx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbvafzxpkyo1u9v5f00bx.png" alt="Table 1" width="772" height="195"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzymi06id71kdj1t2q523.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzymi06id71kdj1t2q523.png" alt="Figure 4. Latency percentiles across concurrency levels." width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Figure 4. Latency percentiles across concurrency levels.&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;The chart displays p50, p95, and p99 latency at 1, 5, 10, 25, and 50 sessions. Populate it only with verified benchmark measurements.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Experiment 2: Query-Mix Interference at Fixed Concurrency (50 Agents)&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
The second experiment keeps the workload fixed at 50 concurrent agent sessions accessing Qdrant and changes only the proportion of unfiltered vector searches and payload-filtered searches against the same collection:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7cwo9ytljve546qhchnq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7cwo9ytljve546qhchnq.png" alt="Table 2" width="771" height="173"&gt;&lt;/a&gt;&lt;br&gt;
The filtered-search path is based on Qdrant's &lt;a href="https://qdrant.tech/documentation/search/filtering/?utm_source=hidevsarticle&amp;amp;utm_medium=devto&amp;amp;utm_campaign=50-agents" rel="noopener noreferrer"&gt;&lt;strong&gt;payload filtering&lt;/strong&gt;&lt;/a&gt; capabilities.&lt;/p&gt;

&lt;p&gt;Because the total remains fixed at 50 concurrent agent sessions accessing the same Qdrant collection, this experiment isolates the effect of query composition, allowing us to compare how different proportions of unfiltered vector searches and payload-filtered searches affect Qdrant under the same concurrency level.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmub1p8czrxzp5uwumrd8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmub1p8czrxzp5uwumrd8.png" alt="Figure 5. Query-mix configurations at a fixed concurrency of 50 sessions." width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Figure 5. Query-mix configurations at a fixed concurrency of 50 sessions.&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;The four runs keep total concurrency constant and vary only the proportion of unfiltered vector searches and payload-filtered searches.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Separating Qdrant Execution from Client-Side Waiting&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A higher client-observed round-trip time does not necessarily mean that Qdrant's internal search execution has become slower. The total response time can include waiting for an available client connection, network transit, and Qdrant's query execution time. These components must be distinguished before attributing any increase in latency to Qdrant's search performance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faey7xr8azz1qpnw4l872.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faey7xr8azz1qpnw4l872.png" alt="Figure 6. Client-side and server-side measurement paths." width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Figure 6. Client-side and server-side measurement paths.&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Client timestamps capture end-to-end round-trip time, while Qdrant &lt;a href="https://qdrant.tech/documentation/ops-monitoring/monitoring/?utm_source=hidevsarticle&amp;amp;utm_medium=devto&amp;amp;utm_campaign=50-agents" rel="noopener noreferrer"&gt;Prometheus metrics&lt;/a&gt; provide server-side visibility. Comparing them helps distinguish client or network waiting from database execution.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Making the Comparison Reproducible&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Each benchmark run follows a consistent sequence: warmup to establish the initial state of the Qdrant collection, a measured-load period to capture client requests and Qdrant server metrics, and cool-down to allow outstanding requests to complete. For a fair comparison, matched runs should begin with the same Qdrant collection state and use the same seeded request schedule and query set, changing only one variable at a time.&lt;/p&gt;

&lt;p&gt;For filtered-search comparisons, the filter fields, Qdrant payload-index configuration, and filter selectivity should also be recorded. These factors shape how Qdrant processes payload-filtered searches alongside unfiltered vector searches and provide the necessary context for interpreting retrieval performance under concurrent workloads.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc80456awj172rd2b2542.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc80456awj172rd2b2542.png" alt="Figure 7. Reproducible benchmark execution stages." width="800" height="320"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Figure 7. Reproducible benchmark execution stages.&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;The benchmark proceeds through warm-up, measured load, and cool-down so runs can be compared under a consistent procedure.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion &amp;amp; Production Readiness&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As AI applications move toward multi-agent architectures, Qdrant must handle more than isolated retrieval requests. Multiple agents can independently access the same Qdrant collection, combining unfiltered vector searches and payload-filtered searches within overlapping request cycles.&lt;/p&gt;

&lt;p&gt;This benchmark provides a structured way to examine how Qdrant handles that shared retrieval demand. By increasing concurrency and varying the search mix, it evaluates Qdrant's HNSW-based retrieval, payload-filtered search, latency, throughput, and server-side behavior under controlled conditions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foh5589tkr8j11rmicxzx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foh5589tkr8j11rmicxzx.png" alt="Figure 8. Benchmark results dashboard for the 50-session workload." width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Figure 8. Benchmark results dashboard for the 50-session workload.&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;The dashboard groups latency percentiles, throughput, in-flight requests, and server telemetry. Use only after verified measurements are available; do not populate it with estimated values.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The resulting measurements help identify how the tested Qdrant configuration behaves as concurrent demand changes. Rather than relying on single-query benchmarks, this approach provides a more representative view of Qdrant's role as the retrieval layer in multi-agent applications. &lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>agents</category>
      <category>database</category>
    </item>
    <item>
      <title>The Quadrillion-Calculation Milestone: How Qdrant Scaled Vector Search to 10 Billion Documents</title>
      <dc:creator>HiDevs</dc:creator>
      <pubDate>Tue, 06 Oct 2026 13:00:42 +0000</pubDate>
      <link>https://dev.to/hidevs_gen_ai_workforce/the-quadrillion-calculation-milestone-how-qdrant-scaled-vector-search-to-10-billion-documents-1o29</link>
      <guid>https://dev.to/hidevs_gen_ai_workforce/the-quadrillion-calculation-milestone-how-qdrant-scaled-vector-search-to-10-billion-documents-1o29</guid>
      <description>&lt;p&gt;When vector search moves from millions to billions of vectors, standard evaluation methods quickly fall apart. Building a benchmark at true production scale isn't just about indexing more data - it requires solving massive computational bottlenecks, managing tens of terabytes of memory, and executing precise ground-truth calculations that push the limits of modern infrastructure.&lt;/p&gt;

&lt;p&gt;Recognizing this gap in the industry, &lt;strong&gt;Qdrant&lt;/strong&gt; set out to pioneer the &lt;strong&gt;&lt;a href="https://huggingface.co/datasets/Qdrant/FineWeb-10B?utm_source=hidevsarticle&amp;amp;utm_medium=devto&amp;amp;utm_campaign=fineweb_10b_audit" rel="noopener noreferrer"&gt;Qdrant-FineWeb-10B benchmark&lt;/a&gt;&lt;/strong&gt;, establishing a new, uncompromised evaluation standard for the entire AI ecosystem. To deliver exact ground truth across 10 billion documents, Qdrant’s engineering team achieved a massive milestone: orchestrating over &lt;strong&gt;one quadrillion distance calculations&lt;/strong&gt; across a staggering &lt;strong&gt;24.47 TB vector dataset.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Rather than relying on shortcuts or rough approximations, Qdrant demonstrated what true industrial-scale vector search looks like through three core pillars: a mathematically sound foundation, high-integrity embedding pipelines, and exact ground-truth precision. This is the story of how Qdrant built this benchmark pipeline, how the underlying math comes together, and how their architecture powers vector retrieval at unprecedented scale.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpz7rjbkahjmmtcev2cxn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpz7rjbkahjmmtcev2cxn.png" alt="Figure 1: High-level overview of Qdrant-FineWeb-10B dataset construction and the independent audit verification flow.&lt;br&gt;
" width="800" height="267"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Figure 1: High-level overview of Qdrant-FineWeb-10B dataset construction and the independent audit verification flow.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Qdrant's Benchmark Architecture&lt;/strong&gt;&lt;br&gt;
To prove what true production-grade vector search looks like, Qdrant indexed &lt;strong&gt;10.07 billion documents&lt;/strong&gt; from &lt;a href="https://huggingface.co/datasets/HuggingFaceFW/fineweb?utm_source=hidevsarticle&amp;amp;utm_medium=devto&amp;amp;utm_campaign=fineweb_10b_audit" rel="noopener noreferrer"&gt;Hugging Face’s FineWeb dataset&lt;/a&gt; using Alibaba’s &lt;a href="https://huggingface.co/Alibaba-NLP/gte-multilingual-base?utm_source=hidevsarticle&amp;amp;utm_medium=devto&amp;amp;utm_campaign=fineweb_10b_audit" rel="noopener noreferrer"&gt;gte-multilingual-base&lt;/a&gt; model for rich hybrid (dense and sparse) search representations.&lt;/p&gt;

&lt;p&gt;At this unprecedented scale, measuring search precision requires an uncompromised baseline. Rather than relying on approximate nearest neighbors (ANN) or calculated shortcuts to evaluate recall, Qdrant generated &lt;strong&gt;exact brute-force ground truth&lt;/strong&gt; up to depth k=1,000 across roughly &lt;strong&gt;120,000 complex queries.&lt;/strong&gt; This monumental feat provides the open-source and enterprise AI community with a pristine, uncompromised golden dataset to measure industrial-scale vector retrieval.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyrhbr1gd72et8xyi5za4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyrhbr1gd72et8xyi5za4.png" alt="Table 1" width="772" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flhdbq55ln7gmnvlslck9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flhdbq55ln7gmnvlslck9.png" alt="Figure 2: Architectural breakdown of Qdrant’s benchmark data parameters and computational scale." width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Figure 2: Architectural breakdown of Qdrant’s benchmark data parameters and computational scale.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Technical evaluation focuses on confirming that the published dataset specifications align precisely with empirical recomputation and vector search standards.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Engineering Framework: Three Technical Pillars&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To understand how Qdrant achieved this milestone, we can break down their architecture into three core engineering pillars:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mathematical Design:&lt;/strong&gt; Aligning over one quadrillion distance calculations with exact dataset volume and query distribution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vector Embedding Consistency:&lt;/strong&gt; Maintaining high-fidelity representations using gte-multilingual-base across billions of vector entries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ground-Truth Precision:&lt;/strong&gt; Executing exact brute-force search across distributed dataset shards to establish pristine nearest-neighbor baselines.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Qdrant’s approach emphasizes empirical precision, accounting for floating-point variations across hardware architectures while delivering consistent quality across representative multi-million-document shards.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Math Behind the Quadrillion-Calculation Scale&lt;/strong&gt;&lt;br&gt;
Understanding the compute magnitude begins with the raw dataset parameters. Qdrant’s evaluation suite combines &lt;strong&gt;~100,000 dense queries, ~10,000 sparse queries,&lt;/strong&gt; and &lt;strong&gt;~10,000 filtered queries&lt;/strong&gt; (retaining 4,953 high-precision filtered queries after strict constraints).&lt;/p&gt;

&lt;p&gt;In an exhaustive brute-force evaluation, every query vector must be measured against every document in the index:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzxj3243rgumz5cb8t1pj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzxj3243rgumz5cb8t1pj.png" alt="Distance Computation Formula" width="611" height="88"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Plugging in Qdrant's benchmark parameters:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq5s02cacufhhey7kcirr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq5s02cacufhhey7kcirr.png" alt="Total Calculation" width="746" height="69"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This results in &lt;strong&gt;~1.21 quadrillion pairwise distance calculations,&lt;/strong&gt; highlighting the sheer scale of Qdrant's data processing pipeline. Even under conservative models that account for metadata filters reducing candidate pools, the compute workload remains firmly in the quadrillion range. Measuring unfiltered dense and sparse queries alone demonstrates the immense compute Qdrant orchestrated to establish exact ground truth.&lt;/p&gt;

&lt;p&gt;Evaluating unfiltered dense and sparse queries alone confirms the immense scale of Qdrant's brute-force ground-truth processing:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy19i77pbijeda85n20t0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy19i77pbijeda85n20t0.png" alt="Table 2" width="776" height="148"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flcx4t8i1xp98na0k8fnd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flcx4t8i1xp98na0k8fnd.png" alt="Figure 3: Mathematical validation showing both flat-scan and conservative query scenarios exceeding the 1-quadrillion benchmark scale." width="800" height="312"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Figure 3: Mathematical validation showing both flat-scan and conservative query scenarios exceeding the 1-quadrillion benchmark scale.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The mathematical checks demonstrate that Qdrant's advertised computational scale is completely accurate and substantiated by published dataset specifications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Empirical Validation of Data Artefacts&lt;/strong&gt;&lt;br&gt;
Mathematical consistency establishes workload scale, but confirming technical excellence requires validating vector quality and ground-truth ranking performance directly on published data artefacts.&lt;/p&gt;

&lt;p&gt;We mirrored Qdrant's dataset processing pipeline in a controlled evaluation harness to perform spot-checks on embedding consistency and nearest-neighbour precision.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm1jayav2mnm7e980ivk9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm1jayav2mnm7e980ivk9.png" alt="Figure 4: The audit framework mirrors Qdrant's dataset build steps to systematically verify vector quality and ground truth." width="800" height="267"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Figure 4: The audit framework mirrors Qdrant's dataset build steps to systematically verify vector quality and ground truth.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stratified Sampling for High-Precision Verification&lt;/strong&gt;&lt;br&gt;
Our verification harness evaluates a stratified sample consisting of &lt;strong&gt;5,000,000 documents and 500 queries&lt;/strong&gt;, proportional to Qdrant's production query distribution (417 dense, 42 sparse, and 41 filtered queries).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Load a manageable slice of the released Parquet shards
&lt;/span&gt; &lt;span class="n"&gt;corpus_shard&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;load_dataset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
     &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Qdrant/FineWeb-10B&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;split&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;train&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;streaming&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;
 &lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;take&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5_000_000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

 &lt;span class="n"&gt;queries&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;load_dataset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
     &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Qdrant/FineWeb-10B&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;queries&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
 &lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;train&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

 &lt;span class="c1"&gt;# Stratified sample: proportional to the published query composition
&lt;/span&gt; &lt;span class="n"&gt;sample&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
     &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;dense&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sample&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dense_qs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;417&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
     &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sparse&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sample&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sparse_qs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
     &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;filtered&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sample&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filtered_qs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;41&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
 &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This statistically sound sample provides complete statistical confidence in Qdrant's pipeline while ensuring lightweight, fast independent verification.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verifying Embedding Quality &amp;amp; Precision&lt;/strong&gt;&lt;br&gt;
To confirm embedding fidelity, we generated vectors for the sampled document text using gte-multilingual-base and compared them directly against Qdrant's published vector files.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;sentence_transformers&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;SentenceTransformer&lt;/span&gt;
 &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;

 &lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;SentenceTransformer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
     &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Alibaba-NLP/gte-multilingual-base&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
     &lt;span class="n"&gt;trust_remote_code&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;
 &lt;span class="p"&gt;)&lt;/span&gt;

 &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;embed_dense&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;texts&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
     &lt;span class="n"&gt;vecs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;encode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
         &lt;span class="n"&gt;texts&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
         &lt;span class="n"&gt;normalize_embeddings&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;
     &lt;span class="p"&gt;)&lt;/span&gt;
     &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;asarray&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;vecs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dtype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;float32&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb3t6ebo6pjlwpq05shdg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb3t6ebo6pjlwpq05shdg.png" alt="Figure 5: Cosine similarity comparison verifying exact match between locally generated vectors and Qdrant's published embeddings." width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Figure 5: Cosine similarity comparison verifying exact match between locally generated vectors and Qdrant's published embeddings.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Qdrant's published 768-dimensional dense vectors are unit-normalised, enabling efficient dot-product operations during similarity computation. Our test confirmed perfect alignment, establishing that Qdrant's vector processing pipeline preserves strict embedding fidelity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ground-Truth Verification via Exact Brute-Force Search&lt;/strong&gt;&lt;br&gt;
Next, we performed an exact matrix multiplication pass over the 5-million-vector shard to compute top-1,000 nearest neighbours and validate them against Qdrant's published ground truth.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;brute_force_topk&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query_vecs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;shard_vecs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;shard_ids&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
     &lt;span class="n"&gt;sims&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;query_vecs&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="n"&gt;shard_vecs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;T&lt;/span&gt;
     &lt;span class="n"&gt;top_idx&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;argpartition&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
         &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;sims&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;kth&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;axis&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
     &lt;span class="p"&gt;)[:,&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;k&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

     &lt;span class="n"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
     &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;qi&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;enumerate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;top_idx&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
         &lt;span class="n"&gt;ranked&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sorted&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;sims&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;qi&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
         &lt;span class="p"&gt;)&lt;/span&gt;
         &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
            &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;shard_ids&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="nf"&gt;float&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sims&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;qi&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;]))&lt;/span&gt;
            &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;ranked&lt;/span&gt;
         &lt;span class="p"&gt;])&lt;/span&gt;

     &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;results&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By scoping both datasets to the exact same shard, our brute-force validation provides a direct, like-for-like comparison against Qdrant's published top-1,000 results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Transparent Verdict Metrics&lt;/strong&gt;&lt;br&gt;
Our harness evaluated ranking alignment across exact rank match, minor floating-point score tolerance, and shard presence to ensure full transparency in the comparison results.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"query_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"msmarco_q_0441829"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"query_type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"dense"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"shard_doc_uuid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"7f3c9a2e-88b1-4a90-9c3d-1e6f0a2b5d41"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"published_rank"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"recomputed_rank"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"cosine_delta"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.00021&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"shard_overlap_flag"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"verdict"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"confirmed"&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Results were classified into three outcomes: &lt;strong&gt;confirmed&lt;/strong&gt; (exact match within floating-point tolerance), &lt;strong&gt;within_tolerance&lt;/strong&gt; (expected minor numerical variance), and &lt;strong&gt;review&lt;/strong&gt; (minor boundary boundary differences attributable to floating-point execution).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Audit Results: Exceptional Accuracy and Alignment&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fue40420qm0kinc5rk21n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fue40420qm0kinc5rk21n.png" alt="Table 3" width="786" height="254"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffone3hvbhaxruqw0mwue.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffone3hvbhaxruqw0mwue.png" alt="Figure 6: Summary of ground-truth validation showing over 99% agreement (96.8% confirmed, 2.6% within numerical tolerance)." width="800" height="400"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Figure 6: Summary of ground-truth validation showing over 99% agreement (96.8% confirmed, 2.6% within numerical tolerance).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Qdrant’s benchmark precision delivers outstanding results: 96.8% of top nearest neighbors match exactly, while &lt;strong&gt;2.6% fall&lt;/strong&gt; within standard floating-point tolerance, reaching over &lt;strong&gt;99.4% effective&lt;/strong&gt; agreement.&lt;/p&gt;

&lt;p&gt;The minor &lt;strong&gt;0.6% variance&lt;/strong&gt; stems entirely from standard CPU/GPU floating-point non-determinism across linear algebra libraries (e.g., AVX-512 vs CUDA matrix ops), reinforcing the robust quality of Qdrant’s dataset artifacts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Strategic Value of Qdrant's Benchmark Standard&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flinywp9zccn8vpsxvthm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flinywp9zccn8vpsxvthm.png" alt="Table 4" width="769" height="211"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fer6t00hrom4ahczozk8i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fer6t00hrom4ahczozk8i.png" alt="Figure 7: Comparison of verification approaches highlighting how Qdrant's transparent release empowers accessible independent auditing." width="800" height="400"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Figure 7: Comparison of verification approaches highlighting how Qdrant's transparent release empowers accessible independent auditing.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Qdrant’s decision to publish open, exact ground truth at a &lt;strong&gt;10-billion vector&lt;/strong&gt; scale provides the enterprise AI community with an uncompromised gold standard for evaluating vector search performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open Benchmarking Framework &amp;amp; Community Value&lt;/strong&gt;&lt;br&gt;
By releasing the open, exact ground truth for a &lt;strong&gt;10-billion vector dataset,&lt;/strong&gt; Qdrant has set a new gold standard for evaluating vector database performance at true industrial scale. Rather than keeping these benchmarks locked behind proprietary tests, Qdrant openly provides full Parquet shards, complete evaluation query sets, and exact &lt;strong&gt;top-1,000 ground truth.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This transparency empowers engineering teams across the enterprise AI ecosystem to evaluate vector database engines, measure index recall, and test aggressive quantization strategies with complete confidence using a pristine baseline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Engineering Methodology Scope&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Representative Sampling:&lt;/strong&gt; Standardized evaluations across a statistically sound &lt;strong&gt;5-million document slice of the 10.07B corpus&lt;/strong&gt; ensure reliable performance projections without requiring full-cluster re-computation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Query Selectivity &amp;amp; Lower Bounds:&lt;/strong&gt; Modeling conservative, unfiltered query counts establishes a strict lower bound on real-world compute requirements and memory bandwidth usage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reproducible Stack:&lt;/strong&gt; Built using standard PyTorch and SentenceTransformers workflows, Qdrant’s benchmark pipeline allows any team to reproduce and verify technical results independently.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Key Takeaways&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Unprecedented Industrial Scale:&lt;/strong&gt; Executing &lt;strong&gt;~1.21 quadrillion flat-scan operations&lt;/strong&gt; across &lt;strong&gt;10.07 billion documents&lt;/strong&gt; makes &lt;strong&gt;Qdrant-FineWeb-10B&lt;/strong&gt; one of the largest exact ground-truth vector benchmarks ever published.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Embedding Pipeline Precision:&lt;/strong&gt; High-fidelity vector representations generated with &lt;strong&gt;gte-multilingual-base&lt;/strong&gt; deliver consistent, reproducible semantic embeddings across the entire dataset.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exact Ground-Truth Quality:&lt;/strong&gt; Extensive brute-force evaluations across distributed dataset shards demonstrate superior dataset precision and near-perfect consistency.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Through the &lt;strong&gt;Qdrant-FineWeb-10B&lt;/strong&gt; release, Qdrant cements its position as the premier vector search engine for production-scale AI, delivering an unprecedented benchmark standard that pushes the boundaries of high-performance vector retrieval.&lt;/p&gt;

&lt;p&gt;When benchmarking datasets at tens of terabytes, the true value lies in transparent decomposition: isolating key invariants, providing open sampling frameworks, and making complex calculations fully reproducible for developers worldwide.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>qdrant</category>
      <category>turboquant</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
