<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Technical Articles on Qdrant - Vector Search Engine</title><link>https://qdrant.tech/articles/</link><description>Recent content in Technical Articles on Qdrant - Vector Search Engine</description><generator>Hugo</generator><language>en-us</language><managingEditor>info@qdrant.tech (Andrey Vasnetsov)</managingEditor><webMaster>info@qdrant.tech (Andrey Vasnetsov)</webMaster><atom:link href="https://qdrant.tech/articles/index.xml" rel="self" type="application/rss+xml"/><item><title>miniCOIL EN-ES: Sparse Neural Retrieval Across the Language Barrier</title><link>https://qdrant.tech/articles/minicoil-en-es/</link><pubDate>Thu, 08 Oct 2026 09:00:00 +0200</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/minicoil-en-es/</guid><description>&lt;p&gt;&lt;em&gt;Sparse neural retrieval finally started getting more and more attention (&lt;a href="https://www.linkup.so/blog/introducing-sparseup-by-linkup" target="_blank" rel="noopener nofollow"&gt;SPARSEUP&lt;/a&gt;, &lt;a href="https://arxiv.org/abs/2510.00671" target="_blank" rel="noopener nofollow"&gt;MILCO&lt;/a&gt;, &lt;a href="https://huggingface.co/blog/train-sparse-encoder" target="_blank" rel="noopener nofollow"&gt;sparse encoders in Sentence Transformers&lt;/a&gt;&amp;hellip;). Well, amazing, we like attention!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Our &lt;a href="https://qdrant.tech/articles/minicoil/" target="_blank" rel="noopener nofollow"&gt;miniCOIL v1&lt;/a&gt; sparse neural retriever article ended with a promise: to keep working on this sparse neural retriever in-depth, improving the model&amp;rsquo;s quality, and in-width, &lt;em&gt;&amp;ldquo;extending it to other dense encoders and to languages beyond English.&amp;rdquo;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Here is the next &amp;ldquo;in-width&amp;rdquo; step of the miniCOIL saga: to try and cross the language barrier, that is, make the model suitable for multilingual retrieval.&lt;br&gt;
It&amp;rsquo;s a fun challenge, as sparse retrievers are hard to adapt to this scenario: exact matching in cross-lingual text search usually means translation.&lt;/p&gt;</description></item><item><title>Why Hyperbolic Embeddings Matter for Hierarchical Data</title><link>https://qdrant.tech/articles/hyperbolic-embeddings-qdrant/</link><pubDate>Tue, 08 Sep 2026 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/hyperbolic-embeddings-qdrant/</guid><description>&lt;p&gt;We choose embedding models, dimensions, and indexes. The geometry usually comes with the package. But why use a flat space, and what else could we choose?&lt;/p&gt;
&lt;h2 id="what-is-a-manifold-and-where-do-our-vectors-live"&gt;What Is a Manifold, and Where Do Our Vectors Live?&lt;/h2&gt;
&lt;p&gt;A manifold is the space our embeddings live in. For embeddings, we care about the geometry we give that space. It determines how we measure distance, what the shortest path looks like, and how much room there is as we move outward.&lt;/p&gt;</description></item><item><title>Predicting Weak Retrieval Without an LLM</title><link>https://qdrant.tech/articles/predicting-weak-retrieval/</link><pubDate>Wed, 24 Jun 2026 00:00:00 +0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/predicting-weak-retrieval/</guid><description>&lt;p&gt;Most retrieval systems run one pipeline on every query, and it is the wrong default in both directions: a single pass under-serves the hard queries, while reranking or rewriting every query wastes compute on the easy ones. Worse, the single pass fails silently. When the relevant document never reaches the top, the system answers anyway from whatever it got, with no sign anything went wrong.&lt;/p&gt;
&lt;p&gt;The expensive fixes are well understood, &lt;a href="https://qdrant.tech/documentation/fastembed/fastembed-rerankers/"&gt;cross-encoders&lt;/a&gt;, &lt;a href="https://qdrant.tech/articles/late-interaction-models/"&gt;ColBERT late interaction&lt;/a&gt;, query rewriting, and &lt;a href="https://qdrant.tech/documentation/tutorials-search-engineering/query-decomposition/"&gt;decomposition&lt;/a&gt;, so the real question is when to spend them: ideally you catch a weak retrieval cheaply, before paying for any of them, and escalate only the queries that need it. But what tells you, cheaply, that a retrieval is weak? That depends on how your retrieval fails, and we measure it across three corpora.&lt;/p&gt;</description></item><item><title>Universal I/O in Qdrant</title><link>https://qdrant.tech/articles/universal-io/</link><pubDate>Mon, 12 Oct 2026 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/universal-io/</guid><description>&lt;p&gt;Most software is built on an unspoken assumption: data lives on disk, and is read from and written to it. The assumption usually holds, until a new way (or need) of storing data appears.&lt;/p&gt;
&lt;p&gt;For Qdrant, that happened with &lt;a href="https://qdrant.tech/serverless/" target="_blank" rel="noopener nofollow"&gt;serverless mode&lt;/a&gt;, where the data sits in object storage instead of on a disk next to the process. This blog tells the story of Universal I/O, the interface we built so that the same code could work in both worlds, and of the design choices that keep the local path cheap. This read is particularly relevant if you are a systems programmer, and some knowledge of Rust will help you follow the code, but the lessons should carry over to many other kinds of software.&lt;/p&gt;</description></item><item><title>Filtered Vector Search: What ACORN Fixes, and What Fixes ACORN</title><link>https://qdrant.tech/articles/filtered-vector-search-acorn/</link><pubDate>Fri, 07 Aug 2026 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/filtered-vector-search-acorn/</guid><description>&lt;p&gt;Filtered vector search breaks when metadata filters turn a healthy nearest-neighbor graph into scattered islands. HNSW&amp;rsquo;s &lt;code&gt;m&lt;/code&gt; parameter controls how many links each point gets. At Qdrant&amp;rsquo;s default &lt;code&gt;m=16&lt;/code&gt;, the one-million-point collection benchmarked in this article averaged about 21 links per node on layer 0. Filter out 96% of the points and fewer than one link per node survives on average, so traversal can get stranded before it reaches the true nearest matches.&lt;/p&gt;</description></item><item><title>TurboQuant in Qdrant</title><link>https://qdrant.tech/articles/turboquant-quantization/</link><pubDate>Wed, 13 May 2026 10:00:00 +0200</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/turboquant-quantization/</guid><description>&lt;p&gt;If you run production vector workloads, you already know the compression ladder in Qdrant: float32 is the baseline, &lt;strong&gt;Scalar Quantization (SQ)&lt;/strong&gt; compresses vectors by 4x with almost no recall hit, and &lt;strong&gt;Binary Quantization (BQ)&lt;/strong&gt; packs vectors at 16x or 32x.&lt;/p&gt;
&lt;p&gt;Qdrant 1.18 ships &lt;strong&gt;TurboQuant&lt;/strong&gt;, a new rotation-based vector quantization method from &lt;a href="https://research.google/blog/turboquant-redefining-ai-efficiency-with-extreme-compression/" target="_blank" rel="noopener nofollow"&gt;Google Research&lt;/a&gt;, with extensions that make it work on real production embeddings. Summarizing the results of benchmarks across public embedding datasets:&lt;/p&gt;</description></item><item><title>Relevance Feedback in Qdrant</title><link>https://qdrant.tech/articles/relevance-feedback/</link><pubDate>Fri, 20 Feb 2026 00:00:00 +0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/relevance-feedback/</guid><description>&lt;p&gt;In March 2025, we dropped a statement-bomb in the “&lt;a href="https://qdrant.tech/articles/search-feedback-loop/" target="_blank" rel="noopener nofollow"&gt;Relevance Feedback in Information Retrieval&lt;/a&gt;” article and then went silent.&lt;/p&gt;
&lt;p&gt;We claimed that even though the information retrieval research field has proposed many useful mechanisms for increasing the relevance of search results, none of them made it to the neural search industry, simply because these approaches are not scalable.&lt;/p&gt;
&lt;p&gt;Certainly, there are methods widely used to improve the relevance of retrieved results: query rewriting, for example. Yet none of the vector search solutions out there have tried to use the possibilities that come with full access to the vector search index: traversing it in the direction of relevance, instead of guessing where to shoot the query to the vector space.&lt;/p&gt;</description></item><item><title>miniCOIL: on the Road to Usable Sparse Neural Retrieval</title><link>https://qdrant.tech/articles/minicoil/</link><pubDate>Tue, 13 May 2025 00:00:00 +0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/minicoil/</guid><description>&lt;p&gt;Have you ever heard of sparse neural retrieval? If so, have you used it in production?&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s a field with excellent potential &amp;ndash; who wouldn&amp;rsquo;t want to use an approach that combines the strengths of dense and term-based text retrieval? Yet it&amp;rsquo;s not so popular. Is it due to the common curse of &lt;em&gt;“What looks good on paper is not going to work in practice”?&lt;/em&gt;?&lt;/p&gt;
&lt;p&gt;This article describes our path towards sparse neural retrieval &lt;em&gt;as it should be&lt;/em&gt; &amp;ndash; lightweight term-based retrievers capable of distinguishing word meanings.&lt;/p&gt;</description></item><item><title>Data Exploration with Qdrant's Distance Matrix API</title><link>https://qdrant.tech/articles/distance-based-exploration/</link><pubDate>Tue, 11 Mar 2025 12:00:00 +0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/distance-based-exploration/</guid><description>&lt;h2 id="hidden-structure"&gt;Hidden Structure&lt;/h2&gt;
&lt;p&gt;When working with large collections of documents, images, or other arrays of unstructured data, it often becomes useful to understand the big picture.
Examining data points individually is not always the best way to grasp the structure of the data.&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://qdrant.tech/articles_data/distance-based-exploration/no-context-data.png"
 alt="A table of data points with no visible structure"&gt;&lt;figcaption&gt;
 &lt;p&gt;Datapoints without context, pretty much useless&lt;/p&gt;
 &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;As numbers in a table obtain meaning when plotted on a graph, visualizing distances (similar/dissimilar) between unstructured data items can reveal hidden structures and patterns.&lt;/p&gt;</description></item><item><title>Introducing Gridstore: Qdrant's Custom Key-Value Store</title><link>https://qdrant.tech/articles/gridstore-key-value-storage/</link><pubDate>Wed, 05 Feb 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/gridstore-key-value-storage/</guid><description>&lt;h2 id="why-we-built-our-own-storage-engine"&gt;Why We Built Our Own Storage Engine&lt;/h2&gt;
&lt;p&gt;Databases need a place to store and retrieve data. That’s what Qdrant&amp;rsquo;s &lt;a href="https://en.wikipedia.org/wiki/Key%e2%80%93value_database" target="_blank" rel="noopener nofollow"&gt;&lt;strong&gt;key-value storage&lt;/strong&gt;&lt;/a&gt; does—it links keys to values.&lt;/p&gt;
&lt;p&gt;When we started building Qdrant, we needed to pick something ready for the task. So we chose &lt;a href="https://rocksdb.org" target="_blank" rel="noopener nofollow"&gt;&lt;strong&gt;RocksDB&lt;/strong&gt;&lt;/a&gt; as our embedded key-value store.&lt;/p&gt;
&lt;div style="text-align: center;"&gt;
 &lt;img src="https://qdrant.tech/articles_data/gridstore-key-value-storage/rocksdb.jpg" alt="RocksDB" style="width: 50%;"&gt;
 &lt;p&gt;It is mature, reliable, and well-documented.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Over time, we ran into issues. Its architecture required compaction (uses &lt;a href="https://en.wikipedia.org/wiki/Log-structured_merge-tree" target="_blank" rel="noopener nofollow"&gt;LSMT&lt;/a&gt;), which caused random latency spikes. It handles generic keys, while we only use it for sequential IDs. Having lots of configuration options makes it versatile, but accurately tuning it was a headache. Finally, interoperating with C++ slowed us down (although we will still support it for quite some time).&lt;/p&gt;</description></item><item><title>Relevance Feedback in Information Retrieval</title><link>https://qdrant.tech/articles/search-feedback-loop/</link><pubDate>Thu, 27 Mar 2025 00:00:00 +0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/search-feedback-loop/</guid><description>&lt;blockquote&gt;
&lt;p&gt;A problem well stated is a problem half solved.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This quote applies as much to life as it does to information retrieval.&lt;/p&gt;
&lt;p&gt;With a well-formulated query, retrieving the relevant document becomes trivial.
In reality, however, most users struggle to precisely define what they are searching for.&lt;/p&gt;
&lt;p&gt;While users may struggle to formulate a perfect request — especially in unfamiliar topics — they can easily judge whether a retrieved answer is relevant or not.&lt;/p&gt;</description></item><item><title>Why Vector Search Needs a Dedicated Database</title><link>https://qdrant.tech/articles/dedicated-vector-search/</link><pubDate>Mon, 17 Feb 2025 10:00:00 +0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/dedicated-vector-search/</guid><description>&lt;p&gt;Any problem with even a bit of complexity requires a specialized solution. You can use a Swiss Army knife to open a bottle or poke a hole in a cardboard box, but you will need an axe to chop wood — the same goes for software.&lt;/p&gt;
&lt;p&gt;In this article, we will describe the unique challenges vector search poses and why a dedicated solution is the best way to tackle them.&lt;/p&gt;</description></item><item><title>What is Agentic RAG? Building Agents with Qdrant</title><link>https://qdrant.tech/articles/agentic-rag/</link><pubDate>Fri, 22 Nov 2024 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/agentic-rag/</guid><description>&lt;p&gt;Standard &lt;a href="https://qdrant.tech/articles/what-is-rag-in-ai/"&gt;Retrieval Augmented Generation&lt;/a&gt; follows a predictable, linear path: receive
a query, retrieve relevant documents, and generate a response. In many cases that might be enough to solve a particular
problem. In the worst case scenario, your LLM will just decide to not answer the question, because the context does not
provide enough information.&lt;/p&gt;
&lt;figure
 class="island"
 data-island="content/articles/headless/agentic-rag/linear"
 data-island-src="https://qdrant.tech/islands/agentic-rag/linear/index.142ec6d4.55fc0ae4d6c1bfd14cfd60bcb1dffa933b1275c704df6da1b588bdec0cab322ff70a2b3b9c68d57045833233051f4b0971abe1d6450d82a7415627b51198328b.js"
 data-island-css="/islands/agentic-rag/linear/index.5c884940.min.63bebdda08ed99f6a77212708fad9d0807ff65d8f55978b3a57dcea61c230b8052f31e545ed2ea0e2f8082c4864b2fa0230ed7f54d1fd6eb92cb405b0ed59086.css"
&gt;
 &lt;div class="island__stage" style="aspect-ratio: 76 / 42"&gt;
 &lt;div class="island__fallback"&gt;&lt;img src="https://qdrant.tech/articles_data/agentic-rag/linear-rag.png" alt="Standard, linear RAG pipeline"&gt;&lt;/div&gt;
 &lt;div class="island__spinner" aria-hidden="true"&gt;
 &lt;span class="island__spinner-dot"&gt;&lt;/span&gt;
 &lt;span class="island__spinner-dot"&gt;&lt;/span&gt;
 &lt;span class="island__spinner-dot"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="island__mount"&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;figcaption class="island__caption"&gt;A standard RAG pipeline is a fixed path. Step through it from the query to the answer.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;On the other hand, we have agents. These systems are given more freedom to act, and can take multiple non-linear steps
to achieve a certain goal. There isn&amp;rsquo;t a single definition of what an agent is, but in general, it is an application
that uses LLM and usually some tools to communicate with the outside world. LLMs are used as decision-makers which
decide what action to take next. Actions can be anything, but they are usually well-defined and limited to a certain
set of possibilities. One of these actions might be to query a vector database, like Qdrant, to retrieve relevant
documents, if the context is not enough to make a decision. However, RAG is just a single tool in the agent&amp;rsquo;s arsenal.&lt;/p&gt;</description></item><item><title>Modern Sparse Neural Retrieval: From DeepCT to SPLADE++</title><link>https://qdrant.tech/articles/modern-sparse-neural-retrieval/</link><pubDate>Wed, 23 Oct 2024 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/modern-sparse-neural-retrieval/</guid><description>&lt;link rel="stylesheet" href="https://qdrant.tech/articles_data/modern-sparse-neural-retrieval/figures.css"&gt;
&lt;p&gt;Finding enough time to study all the modern solutions while keeping your production running is rarely feasible.
Dense retrievers, hybrid retrievers, late interaction… How do they work, and where do they fit best?
If only we could compare retrievers as easily as products on Amazon!&lt;/p&gt;
&lt;p&gt;We explored the most popular modern sparse neural retrieval models and broke them down for you.
By the end of this article, you’ll have a clear understanding of the current landscape in sparse neural retrieval and how to navigate through complex, math-heavy research papers with sky-high NDCG scores without getting overwhelmed.&lt;/p&gt;</description></item><item><title>Immutable Data Structures in Qdrant</title><link>https://qdrant.tech/articles/immutable-data-structures/</link><pubDate>Tue, 20 Aug 2024 10:45:00 +0200</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/immutable-data-structures/</guid><description>&lt;h2 id="data-structures-101"&gt;Data Structures 101&lt;/h2&gt;
&lt;p&gt;Those who took programming courses might remember that there is no such thing as a universal data structure.
Some structures are good at accessing elements by index (like arrays), while others shine in terms of insertion efficiency (like linked lists).&lt;/p&gt;
&lt;figure
 class="island"
 data-island="content/articles/headless/immutable-data-structures/layout"
 data-island-src="https://qdrant.tech/islands/immutable-data-structures/layout/index.f1a119c0.46cd66e30854d46fbb5eab2bcbfdc6535c2f1d4ade92d6580a78899f4595dc4e61a04335343fe3c1a1ecda06ed1c1bb82d62f8a4ca2625b31b644c190a7dd187.js"
 data-island-css="/islands/immutable-data-structures/layout/index.8544985b.min.e99c733bbe39e9dac080c0c6ca26e2949de2d82f335a930b5304a8ec97a03525b7559b1ad8bd28ac50d4d18c21a19afd4cde1e5fd429a75787f73690c0a864a6.css"
&gt;
 &lt;div class="island__stage" style="aspect-ratio: 380 / 146"&gt;
 &lt;div class="island__fallback"&gt;&lt;img src="https://qdrant.tech/articles_data/immutable-data-structures/hardware-optimized.png" alt="Hardware-optimized data structure"&gt;&lt;/div&gt;
 &lt;div class="island__spinner" aria-hidden="true"&gt;
 &lt;span class="island__spinner-dot"&gt;&lt;/span&gt;
 &lt;span class="island__spinner-dot"&gt;&lt;/span&gt;
 &lt;span class="island__spinner-dot"&gt;&lt;/span&gt;
 &lt;/div&gt;
 &lt;div class="island__mount"&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;figcaption class="island__caption"&gt;The same twelve cells read in order, scattered and linked by pointers or contiguous in an array. Positions are illustrative.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;However, when we move from theoretical data structures to real-world systems, and particularly in performance-critical areas such as &lt;a href="https://qdrant.tech/use-cases/"&gt;vector search&lt;/a&gt;, things become more complex. &lt;a href="https://en.wikipedia.org/wiki/Big_O_notation" target="_blank" rel="noopener nofollow"&gt;Big-O notation&lt;/a&gt; provides a good abstraction, but it doesn’t account for the realities of modern hardware: cache misses, memory layout, disk I/O, and other low-level considerations that influence actual performance.&lt;/p&gt;</description></item><item><title>Discovery Search in Qdrant</title><link>https://qdrant.tech/articles/discovery-search/</link><pubDate>Wed, 31 Jan 2024 08:00:00 -0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/discovery-search/</guid><description>&lt;h1 id="discovery-needs-context"&gt;Discovery needs context&lt;/h1&gt;
&lt;p&gt;When Christopher Columbus and his crew sailed to cross the Atlantic Ocean, they were not looking for the Americas. They were looking for a new route to India because they believed the Earth was small enough to reach India by sailing west. They didn&amp;rsquo;t know anything about a new continent, but since they were going west, they stumbled upon it.&lt;/p&gt;
&lt;p&gt;They couldn&amp;rsquo;t reach their &lt;em&gt;target&lt;/em&gt;, because the geography didn&amp;rsquo;t let them, but once they realized it wasn&amp;rsquo;t India, they claimed it a new &amp;ldquo;discovery&amp;rdquo; for their crown. If we consider that sailors need water to sail, then we can establish a &lt;em&gt;context&lt;/em&gt; which is positive in the water, and negative on land. Once the sailor&amp;rsquo;s search was stopped by the land, they could not go any further, and a new route was found. Let&amp;rsquo;s keep these concepts of &lt;em&gt;target&lt;/em&gt; and &lt;em&gt;context&lt;/em&gt; in mind as we explore the new functionality of Qdrant: &lt;strong&gt;Discovery search&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>What is a Vector Database?</title><link>https://qdrant.tech/articles/what-is-a-vector-database/</link><pubDate>Wed, 09 Oct 2024 09:29:33 -0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/what-is-a-vector-database/</guid><description>&lt;h2 id="an-introduction-to-vector-databases"&gt;An Introduction to Vector Databases&lt;/h2&gt;
&lt;p&gt;Most of the millions of terabytes of data we generate each day is &lt;strong&gt;unstructured&lt;/strong&gt;. Think of the meal photos you snap, the PDFs shared at work, or the podcasts you save but may never listen to. None of it fits neatly into rows and columns.&lt;/p&gt;
&lt;p&gt;Unstructured data lacks a strict format or schema, making it challenging for conventional databases to manage. Yet, this unstructured data holds immense potential for &lt;strong&gt;AI&lt;/strong&gt;, &lt;strong&gt;machine learning&lt;/strong&gt;, and &lt;strong&gt;modern search engines&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Late Interaction Retrieval with Dense Token Embeddings</title><link>https://qdrant.tech/articles/late-interaction-models/</link><pubDate>Wed, 14 Aug 2024 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/late-interaction-models/</guid><description>&lt;h2 id="you-can-adapt-dense-embedding-models-for-late-interaction"&gt;You Can Adapt Dense Embedding Models for Late Interaction&lt;/h2&gt;
&lt;p&gt;Qdrant 1.10 introduced support for multi-vector representations, with late interaction being a prominent example of this model. In essence, both documents and queries are represented by multiple vectors, and identifying the most relevant documents involves calculating a score based on the similarity between the corresponding query and document embeddings. If you&amp;rsquo;re not familiar with this paradigm, the &lt;a href="https://qdrant.tech/course/multi-vector-search/module-1/late-interaction-basics/"&gt;Late Interaction Basics&lt;/a&gt; lesson of our Multi-Vector Search course explains why late interaction can retrieve better results than single-vector search.&lt;/p&gt;</description></item><item><title>Faster Disk I/O for Vector Search Using io_uring</title><link>https://qdrant.tech/articles/io_uring/</link><pubDate>Wed, 21 Jun 2023 09:45:00 +0200</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/io_uring/</guid><description>&lt;p&gt;With Qdrant &lt;a href="https://github.com/qdrant/qdrant/releases/tag/v1.3.0" target="_blank" rel="noopener nofollow"&gt;version 1.3.0&lt;/a&gt; we
introduce the alternative io_uring based &lt;em&gt;async uring&lt;/em&gt; storage backend on
Linux-based systems. Since its introduction, io_uring has been known to improve
async throughput wherever the OS syscall overhead gets too high, which tends to
occur in situations where software becomes &lt;em&gt;IO bound&lt;/em&gt; (that is, mostly waiting
on disk).&lt;/p&gt;
&lt;h2 id="inputoutput"&gt;Input+Output&lt;/h2&gt;
&lt;p&gt;Around the mid-90s, the internet took off. The first servers used a process-
per-request setup, which was good for serving hundreds if not thousands of
concurrent request. The POSIX Input + Output (IO) was modeled in a strictly
synchronous way. The overhead of starting a new process for each request made
this model unsustainable. So servers started forgoing process separation, opting
for the thread-per-request model. But even that ran into limitations.&lt;/p&gt;</description></item><item><title>What is Vector Quantization?</title><link>https://qdrant.tech/articles/what-is-vector-quantization/</link><pubDate>Wed, 25 Sep 2024 09:29:33 -0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/what-is-vector-quantization/</guid><description>&lt;p&gt;Vector quantization is a data compression technique used to reduce the size of high-dimensional data. Compressing vectors reduces memory usage while maintaining nearly all of the essential information. This method allows for more efficient storage and faster search operations, particularly in large datasets.&lt;/p&gt;
&lt;p&gt;When working with high-dimensional vectors, such as embeddings from providers like OpenAI, a single 1536-dimensional vector requires &lt;strong&gt;6 KB of memory&lt;/strong&gt;.&lt;/p&gt;
&lt;img src="https://qdrant.tech/articles_data/what-is-vector-quantization/vector-size.png" alt="1536-dimensional vector size is 6 KB" width="700"&gt;
&lt;p&gt;With 1 million vectors needing around 6 GB of memory, as your dataset grows to multiple &lt;strong&gt;millions of vectors&lt;/strong&gt;, the memory and processing demands increase significantly.&lt;/p&gt;</description></item><item><title>BM42: Attention-Based Sparse Embeddings for Hybrid Search</title><link>https://qdrant.tech/articles/bm42/</link><pubDate>Mon, 01 Jul 2024 12:00:00 +0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/bm42/</guid><description>&lt;aside role="status"&gt;
Please note that the benchmark section of this article was updated after the publication due to a mistake in the evaluation script.
BM42 does not outperform BM25 implementation of other vendors.
Please consider BM42 as an experimental approach, which requires further research and development before it can be used in production.
Our next step in sparse neural retrieval is &lt;a href="https://qdrant.tech/articles/minicoil/"&gt;miniCOIL&lt;/a&gt;.
&lt;/aside&gt;
&lt;p&gt;For the last 40 years, BM25 has served as the standard for search engines.
It is a simple yet powerful algorithm that has been used by many search engines, including Google, Bing, and Yahoo.&lt;/p&gt;</description></item><item><title>Vector Similarity: Going Beyond Full-Text Search</title><link>https://qdrant.tech/articles/vector-similarity-beyond-search/</link><pubDate>Tue, 08 Aug 2023 08:00:00 +0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/vector-similarity-beyond-search/</guid><description>&lt;p&gt;When making use of unstructured data, there are traditional go-to solutions that are well-known for developers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Full-text search&lt;/strong&gt; when you need to find documents that contain a particular word or phrase.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://qdrant.tech/documentation/overview/vector-search/"&gt;Vector search&lt;/a&gt;&lt;/strong&gt; when you need to find documents that are semantically similar to a given query.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Today, the two usually run together: &lt;a href="https://qdrant.tech/documentation/search-tuning/hybrid-search/"&gt;hybrid search&lt;/a&gt; fuses keyword and vector results into one ranking. That makes it easy to see vector similarity as just an extension of full-text search.&lt;/p&gt;</description></item><item><title>Filterable HNSW Without Recall Loss</title><link>https://qdrant.tech/articles/filterable-hnsw/</link><pubDate>Sun, 24 Nov 2019 22:44:08 +0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/filterable-hnsw/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This article describes the original design for filterable HNSW, proposed in 2019. It is not a complete description of how Qdrant performs filtered vector search today. For learning more, see our Qdrant Beginners course: &lt;a href="https://qdrant.tech/course/beginners/module-2/hnsw/"&gt;Fast Approximate Search: HNSW&lt;/a&gt;. For the cases this page does not explain, see &lt;a href="https://qdrant.tech/articles/filtered-vector-search-acorn/"&gt;Filtered Vector Search: What ACORN Fixes, and What Fixes ACORN&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you need to find some similar objects in vector space, provided e.g. by embeddings or matching NN, you can choose among a variety of libraries: Annoy, FAISS or NMSLib.
All of them will give you a fast approximate neighbors search within almost any space.&lt;/p&gt;</description></item><item><title>Understanding Retrieval-Augmented Generation (RAG)</title><link>https://qdrant.tech/articles/what-is-rag-in-ai/</link><pubDate>Tue, 19 Mar 2024 09:29:33 -0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/what-is-rag-in-ai/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Retrieval-augmented generation (RAG) integrates external information retrieval into the process of generating responses by Large Language Models (LLMs). It searches a database for information beyond its pre-trained knowledge base, significantly improving the accuracy and relevance of the generated responses.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Language models have exploded on the internet ever since ChatGPT came out, and rightfully so. They can write essays, code entire programs, and even make memes (though we’re still deciding on whether that&amp;rsquo;s a good thing).&lt;/p&gt;</description></item><item><title>Detecting Dataset Errors with Similarity Search</title><link>https://qdrant.tech/articles/dataset-quality/</link><pubDate>Mon, 18 Jul 2022 10:18:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/dataset-quality/</guid><description>&lt;p&gt;Nowadays, people create a huge number of applications of various types and solve problems in different areas.
Despite such diversity, they have something in common - they need to process data.
Real-world data is a living structure, it grows day by day, changes a lot and becomes harder to work with.&lt;/p&gt;
&lt;p&gt;In some cases, you need to categorize or label your data, which can be a tough problem given its scale.
The process of splitting or labelling is error-prone and these errors can be very costly.
Imagine that you failed to achieve the desired quality of the model due to inaccurate labels.
Worse, your users are faced with a lot of irrelevant items, unable to find what they need and getting annoyed by it.
Thus, you get poor retention, and it directly impacts company revenue.
It is really important to avoid such errors in your data.&lt;/p&gt;</description></item><item><title>Is RAG Dead? Why Long Context Windows Don't Replace RAG</title><link>https://qdrant.tech/articles/rag-is-dead/</link><pubDate>Tue, 04 Aug 2026 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/rag-is-dead/</guid><description>&lt;h1 id="is-rag-dead-long-context-windows-versus-retrieval"&gt;Is RAG Dead? Long Context Windows versus Retrieval&lt;/h1&gt;
&lt;p&gt;Every time a model ships a larger context window, someone declares that &lt;a href="https://qdrant.tech/articles/what-is-rag-in-ai/"&gt;retrieval augmented generation (RAG)&lt;/a&gt; is obsolete. If a model can read a million tokens, why build a retrieval pipeline?&lt;/p&gt;
&lt;p&gt;A larger window changes the trade-off, but it does not remove it. This article reviews what published measurements say about quality, cost, and latency, and explains when each approach fits. Where a number comes from a paper, a vendor page, or our own calculation, the text says so. The sources are listed at the end.&lt;/p&gt;</description></item><item><title>MUVERA: Making Multivectors More Performant</title><link>https://qdrant.tech/articles/muvera-embeddings/</link><pubDate>Fri, 05 Sep 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/muvera-embeddings/</guid><description>&lt;h2 id="what-are-muvera-embeddings"&gt;What are MUVERA Embeddings?&lt;/h2&gt;
&lt;p&gt;Multi-vector representations are superior to single-vector embeddings in many benchmarks. It might be tempting to use
them right away, but there is a catch: they are slower to search. Traditional vector search structures like
&lt;a href="https://qdrant.tech/documentation/manage-data/indexing/#vector-index"&gt;HNSW&lt;/a&gt; are optimized for retrieving the nearest neighbors of a single
query vector using simple metrics such as cosine similarity. These indexes are not suitable for multi-vector retrieval
strategies, such as MaxSim, where a query and document are each represented by multiple vectors and the final score is
computed as the maximum similarity over all cross-pairings. MaxSim is inherently asymmetric and non-metric, so HNSW
could potentially help us find the closest document token to a given query token, but that does not mean the whole
document is the best hit for the query.&lt;/p&gt;</description></item><item><title>Vector Embeddings Explained: How They Work in ML &amp; Search</title><link>https://qdrant.tech/articles/what-are-embeddings/</link><pubDate>Tue, 06 Feb 2024 15:29:33 -0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/what-are-embeddings/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Embeddings&lt;/strong&gt; are numerical machine learning representations of the semantics of the input data. They capture the meaning of complex, high-dimensional data, like text, images, or audio, into vectors. Enabling algorithms to process and analyze the data more efficiently.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You know when you’re scrolling through your social media feeds and the content just feels incredibly tailored to you? There&amp;rsquo;s the news you care about, followed by a perfect tutorial with your favorite tech stack, and then a meme that makes you laugh so hard you snort.&lt;/p&gt;</description></item><item><title>Neural Search 101: A Complete Guide and Step-by-Step Tutorial</title><link>https://qdrant.tech/articles/neural-search-tutorial/</link><pubDate>Thu, 10 Jun 2021 10:18:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/neural-search-tutorial/</guid><description>&lt;h1 id="neural-search-101-a-comprehensive-guide-and-step-by-step-tutorial"&gt;Neural Search 101: A Comprehensive Guide and Step-by-Step Tutorial&lt;/h1&gt;
&lt;p&gt;Information retrieval technology is one of the main technologies that enabled the modern Internet to exist.
These days, search technology is the heart of a variety of applications.
From web-pages search to product recommendations.
For many years, this technology didn&amp;rsquo;t get much change until neural networks came into play.&lt;/p&gt;
&lt;p&gt;In this guide we are going to find answers to these questions:&lt;/p&gt;</description></item><item><title>Understanding SPLADE and Sparse Vectors</title><link>https://qdrant.tech/articles/sparse-vectors/</link><pubDate>Sat, 09 Dec 2023 13:00:00 +0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/sparse-vectors/</guid><description>&lt;p&gt;Think of a library with a vast index card system. Each index card only has a few keywords marked out (sparse vector) of a large possible set for each book (document). This is what sparse vectors enable for text.&lt;/p&gt;
&lt;h2 id="what-are-sparse-and-dense-vectors"&gt;What are sparse and dense vectors?&lt;/h2&gt;
&lt;p&gt;Sparse vectors are like the Marie Kondo of data: they keep only what sparks joy (or relevance, in this case).&lt;/p&gt;
&lt;p&gt;Consider a simplified example of 2 documents, each with 200 words. A dense vector would have several hundred non-zero values, whereas a sparse vector could have, much fewer, say only 20 non-zero values.&lt;/p&gt;</description></item><item><title>Product Quantization for Vector Search</title><link>https://qdrant.tech/articles/product-quantization/</link><pubDate>Tue, 30 May 2023 09:45:00 +0200</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/product-quantization/</guid><description>&lt;h1 id="product-quantization-demystified-streamlining-efficiency-in-data-management"&gt;Product Quantization Demystified: Streamlining Efficiency in Data Management&lt;/h1&gt;
&lt;p&gt;Qdrant 1.1.0 brought the support of &lt;a href="https://qdrant.tech/articles/scalar-quantization/"&gt;Scalar Quantization&lt;/a&gt;,
a technique of reducing the memory footprint by even four times, by using &lt;code&gt;int8&lt;/code&gt; to represent
the values that would be normally represented by &lt;code&gt;float32&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The memory usage in &lt;a href="https://qdrant.tech/solutions/" target="_blank" rel="noopener nofollow"&gt;vector search&lt;/a&gt; can be reduced even further with &lt;strong&gt;Product
Quantization&lt;/strong&gt;, available since Qdrant 1.2.0.&lt;/p&gt;
&lt;aside role="status"&gt;
Since Qdrant 1.18, &lt;a href="https://qdrant.tech/articles/turboquant-quantization/"&gt;TurboQuant&lt;/a&gt; is the recommended method for most compression levels up to 32x. Product Quantization remains the option for compression beyond 32x, up to 64x. See &lt;a href="#choosing-a-quantization-method"&gt;Choosing a quantization method&lt;/a&gt;.
&lt;/aside&gt;
&lt;h2 id="what-is-product-quantization"&gt;What is Product Quantization?&lt;/h2&gt;
&lt;p&gt;Product Quantization converts floating-point numbers into integers like every other quantization
method. However, the process is slightly more complicated than &lt;a href="https://qdrant.tech/articles/scalar-quantization/" target="_blank" rel="noopener nofollow"&gt;Scalar Quantization&lt;/a&gt; and is more customizable, so you can find the sweet spot between memory usage and search precision. This article
covers all the steps required to perform Product Quantization and the way it&amp;rsquo;s implemented in Qdrant.&lt;/p&gt;</description></item><item><title>Advanced Introduction to Triplet Loss</title><link>https://qdrant.tech/articles/triplet-loss/</link><pubDate>Thu, 24 Mar 2022 15:12:00 +0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/triplet-loss/</guid><description>&lt;h2 id="what-is-triplet-loss"&gt;What is Triplet Loss?&lt;/h2&gt;
&lt;p&gt;Triplet Loss was first introduced in &lt;a href="https://arxiv.org/abs/1503.03832" target="_blank" rel="noopener nofollow"&gt;FaceNet: A Unified Embedding for Face Recognition and Clustering&lt;/a&gt; in 2015,
and it has been one of the most popular loss functions for supervised similarity or metric learning ever since.
In its simplest explanation, Triplet Loss encourages that dissimilar pairs be distant from any similar pairs by at least a certain margin value.
Mathematically, the loss value can be calculated as
$L=max(d(a,p) - d(a,n) + m, 0)$, where:&lt;/p&gt;</description></item><item><title>Scalar Quantization for Vector Search</title><link>https://qdrant.tech/articles/scalar-quantization/</link><pubDate>Mon, 27 Mar 2023 10:45:00 +0100</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/scalar-quantization/</guid><description>&lt;h1 id="efficiency-unleashed-the-power-of-scalar-quantization"&gt;Efficiency Unleashed: The Power of Scalar Quantization&lt;/h1&gt;
&lt;p&gt;High-dimensional vector embeddings can be memory-intensive, especially when working with
large datasets consisting of millions of vectors. Memory footprint really starts being
a concern when we scale things up. A simple choice of the data type used to store a single
number impacts even billions of numbers and can drive the memory requirements crazy. The
higher the precision of your type, the more accurately you can represent the numbers.
The more accurate your vectors, the more precise is the distance calculation. But the
advantages stop paying off when you need to order more and more memory.&lt;/p&gt;</description></item><item><title>Metric Learning Tips &amp; Tricks</title><link>https://qdrant.tech/articles/metric-learning-tips/</link><pubDate>Sat, 15 May 2021 10:18:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/metric-learning-tips/</guid><description>&lt;h2 id="how-to-train-object-matching-model-with-no-labeled-data-and-use-it-in-production"&gt;How to train object matching model with no labeled data and use it in production&lt;/h2&gt;
&lt;p&gt;In 2021, most machine-learning-related business cases were solved as classification problems.
Classification algorithms are so well studied in practice that even if the original problem is not directly a classification task, it is usually decomposed or approximately converted into one.&lt;/p&gt;
&lt;p&gt;However, despite its simplicity, the classification task has requirements that could complicate its production integration and scaling.
E.g. it requires a fixed number of classes, where each class should have a sufficient number of training samples.&lt;/p&gt;</description></item><item><title>Minimal RAM to Serve 1M Vectors</title><link>https://qdrant.tech/articles/memory-consumption/</link><pubDate>Wed, 07 Dec 2022 10:18:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/memory-consumption/</guid><description>&lt;!--
1. How people usually measure memory and why it might be misleading
2. How to properly measure memory
3. Try different configurations of Qdrant and see how they affect the memory consumption and search speed
4. Conclusion
--&gt;
&lt;!--
Introduction:

1. We are used to measure memory consumption by looking into `htop`. But it could be misleading.
2. There are multiple reasons why it is wrong:
 1. Process may allocate memory, but not use it.
 2. Process may not free deallocated memory.
 3. Process might be forked and memory is shared between processes.
 3. Process may use disk cache.
3. As a result, if you see `10GB` memory consumption in `htop`, it doesn't mean that your process actually needs `10GB` of RAM to work.
--&gt;
&lt;p&gt;When it comes to measuring the memory consumption of our processes, we often rely on tools such as &lt;code&gt;htop&lt;/code&gt; to give us an indication of how much RAM is being used. However, this method can be misleading and doesn&amp;rsquo;t always accurately reflect the true memory usage of a process.&lt;/p&gt;</description></item></channel></rss>