<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Search Engineering on Qdrant - Vector Search Engine</title><link>https://deploy-preview-2452--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/</link><description>Recent content in Search Engineering 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://deploy-preview-2452--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/index.xml" rel="self" type="application/rss+xml"/><item><title>Multivectors and Late Interaction</title><link>https://deploy-preview-2452--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/using-multivector-representations/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://deploy-preview-2452--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/using-multivector-representations/</guid><description>&lt;h1 id="multivector-representations-for-reranking-in-qdrant"&gt;Multivector Representations for Reranking in Qdrant&lt;/h1&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Time: 30 min&lt;/th&gt;
 &lt;th&gt;Level: Intermediate&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Multivector Representations are one of the most powerful features of Qdrant. However, most people don&amp;rsquo;t use them effectively, resulting in massive RAM overhead, slow inserts, and wasted compute.&lt;/p&gt;
&lt;p&gt;In this tutorial, you&amp;rsquo;ll discover how to effectively use multivector representations in Qdrant.&lt;/p&gt;
&lt;h2 id="what-are-multivector-representations"&gt;What are Multivector Representations?&lt;/h2&gt;
&lt;p&gt;In most vector engines, each document is represented by a single vector - an approach that works well for short texts but often struggles with longer documents. Single vector representations perform pooling of the token-level embeddings, which obviously leads to losing some information.&lt;/p&gt;</description></item><item><title>Relevance Feedback Retrieval in Qdrant</title><link>https://deploy-preview-2452--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/using-relevance-feedback/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://deploy-preview-2452--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/using-relevance-feedback/</guid><description>&lt;h1 id="relevance-feedback-in-qdrant"&gt;Relevance Feedback in Qdrant&lt;/h1&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Time: 30 min&lt;/th&gt;
 &lt;th&gt;Level: Intermediate&lt;/th&gt;
 &lt;th&gt;Output: &lt;a href="https://github.com/qdrant/examples/blob/master/using-relevance-feedback/Customizing_Relevance_Feedback.ipynb" target="_blank" rel="noopener nofollow"&gt;GitHub&lt;/a&gt;&lt;/th&gt;
 &lt;th&gt;&lt;a href="https://githubtocolab.com/qdrant/examples/blob/master/using-relevance-feedback/Customizing_Relevance_Feedback.ipynb" target="_blank" rel="noopener nofollow"&gt;&lt;img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"&gt;&lt;/a&gt;&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;In Qdrant 1.17 we introduced a new &lt;a href="https://deploy-preview-2452--condescending-goldwasser-91acf0.netlify.app/documentation/search/search-relevance/#relevance-feedback"&gt;Relevance Feedback Query&lt;/a&gt;, our scalable, first ever vector index-native approach to &lt;a href="https://deploy-preview-2452--condescending-goldwasser-91acf0.netlify.app/articles/search-feedback-loop/"&gt;incorporating relevance feedback&lt;/a&gt; in retrieval.&lt;/p&gt;
&lt;p&gt;In this tutorial, you&amp;rsquo;ll see how to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Customize Relevance Feedback Query for your Qdrant collection, retriever and feedback model.&lt;/li&gt;
&lt;li&gt;Add customized Relevance Feedback Query to your search pipeline.&lt;/li&gt;
&lt;li&gt;Evaluate the gains it brings to this pipeline.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="relevance-feedback"&gt;Relevance Feedback&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Relevance feedback distills signals about the relevance of current search results into the next retrieval iteration, surfacing better results over time.&lt;/p&gt;</description></item><item><title>Collaborative Filtering</title><link>https://deploy-preview-2452--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/collaborative-filtering/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://deploy-preview-2452--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/collaborative-filtering/</guid><description>&lt;h1 id="build-a-recommendation-system-with-collaborative-filtering-using-qdrant"&gt;Build a Recommendation System with Collaborative Filtering using Qdrant&lt;/h1&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Time: 45 min&lt;/th&gt;
 &lt;th&gt;Level: Intermediate&lt;/th&gt;
 &lt;th&gt;&lt;a href="https://githubtocolab.com/qdrant/examples/blob/master/collaborative-filtering/collaborative-filtering.ipynb" target="_blank" rel="noopener nofollow"&gt;&lt;img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"&gt;&lt;/a&gt;&lt;/th&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Every time Spotify recommends the next song from a band you&amp;rsquo;ve never heard of, it uses a recommendation algorithm based on other users&amp;rsquo; interactions with that song. This type of algorithm is known as &lt;strong&gt;collaborative filtering&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Unlike content-based recommendations, collaborative filtering excels when the objects&amp;rsquo; semantics are loosely or unrelated to users&amp;rsquo; preferences. This adaptability is what makes it so fascinating. Movie, music, or book recommendations are good examples of such use cases. After all, we rarely choose which book to read purely based on the plot twists.&lt;/p&gt;</description></item><item><title>Multivector Document Retrieval</title><link>https://deploy-preview-2452--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://deploy-preview-2452--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/</guid><description>&lt;h1 id="qdrant-multivector-document-retrieval-with-colpalicolqwen"&gt;Qdrant Multivector Document Retrieval with ColPali/ColQwen&lt;/h1&gt;
&lt;p&gt;&lt;img src="https://deploy-preview-2452--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials/pdf-retrieval-at-scale/image1.png" alt="scaling-pdf-retrieval-qdrant"&gt;&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Time: 30 min&lt;/th&gt;
 &lt;th&gt;Level: Intermediate&lt;/th&gt;
 &lt;th&gt;Output: &lt;a href="https://github.com/qdrant/examples/blob/master/pdf-retrieval-at-scale/ColPali_ColQwen2_Tutorial.ipynb" target="_blank" rel="noopener nofollow"&gt;GitHub&lt;/a&gt;&lt;/th&gt;
 &lt;th&gt;&lt;a href="https://githubtocolab.com/qdrant/examples/blob/master/pdf-retrieval-at-scale/ColPali_ColQwen2_Tutorial.ipynb" target="_blank" rel="noopener nofollow"&gt;&lt;img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"&gt;&lt;/a&gt;&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Efficient PDF documents retrieval is a common requirement in tasks like &lt;strong&gt;(agentic) retrieval-augmented generation (RAG)&lt;/strong&gt; and many other search-based applications. At the same time, setting up PDF documents retrieval is rarely possible without additional challenges.&lt;/p&gt;
&lt;p&gt;Many traditional PDF retrieval solutions rely on &lt;strong&gt;optical character recognition (OCR)&lt;/strong&gt; together with use case-specific heuristics to handle visually complex elements like tables, images and charts. These algorithms are often non-transferable &amp;ndash; even within the same domain &amp;ndash; with their task-customized parsing and chunking strategies, labor-intensive, prone to errors, and difficult to scale.&lt;/p&gt;</description></item><item><title>Measuring ANN Recall</title><link>https://deploy-preview-2452--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/ann-recall/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://deploy-preview-2452--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/ann-recall/</guid><description>&lt;h1 id="measuring-ann-recall"&gt;Measuring ANN Recall&lt;/h1&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Time: 15 min&lt;/th&gt;
 &lt;th&gt;Level: Beginner&lt;/th&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;This tutorial focuses on &lt;strong&gt;ANN recall&lt;/strong&gt;: how closely approximate nearest-neighbor (ANN) search matches exact kNN search, measured with &lt;code&gt;recall@k&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Prerequisites.&lt;/strong&gt; A Qdrant collection populated with your documents as points (vectors + optional payload).&lt;/p&gt;
&lt;h2 id="the-retrieval-evaluation-stack"&gt;The Retrieval Evaluation Stack&lt;/h2&gt;
&lt;p&gt;ANN recall measures how closely approximate search matches exact kNN. It&amp;rsquo;s the first of four evaluation layers; each higher layer measures a different property of the retrieval system, with different tools.&lt;/p&gt;</description></item><item><title>Multi-Representation Search</title><link>https://deploy-preview-2452--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/multi-representation-search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://deploy-preview-2452--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/multi-representation-search/</guid><description>&lt;h1 id="multi-representation-search-across-titles-abstracts-and-chunks"&gt;Multi-Representation Search Across Titles, Abstracts, and Chunks&lt;/h1&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Time: 45 min&lt;/th&gt;
 &lt;th&gt;Level: Intermediate&lt;/th&gt;
 &lt;th&gt;Output: &lt;a href="https://github.com/qdrant/examples/blob/master/multi-representation-search/multi-representation-search.ipynb" target="_blank" rel="noopener nofollow"&gt;GitHub&lt;/a&gt;&lt;/th&gt;
 &lt;th&gt;&lt;a href="https://githubtocolab.com/qdrant/examples/blob/master/multi-representation-search/multi-representation-search.ipynb" target="_blank" rel="noopener nofollow"&gt;&lt;img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"&gt;&lt;/a&gt;&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;A document is rarely well-represented by a single embedding. A paper has a title, an abstract, body chunks, and category tags, each carrying a different signal. Treat all four as one dense vector and the title gets averaged out; chunk-level grounding for downstream reasoning disappears.&lt;/p&gt;
&lt;p&gt;This tutorial builds retrieval that uses each representation deliberately: named vectors per representation, fused via the Query API and grouped back to the document level for presentation.&lt;/p&gt;</description></item><item><title>Branch-Aware Search</title><link>https://deploy-preview-2452--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/branch-aware-search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://deploy-preview-2452--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/branch-aware-search/</guid><description>&lt;h1 id="branch-aware-search-over-versioned-documents"&gt;Branch-Aware Search Over Versioned Documents&lt;/h1&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Time: 25 min&lt;/th&gt;
 &lt;th&gt;Level: Intermediate&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;When a document corpus is versioned with git-style branches, an ordinary search leaks across them, returning content from another branch or a version the current branch already replaced. This tutorial indexes such a corpus in Qdrant and scopes each query to a single branch&amp;rsquo;s live view: its own commits plus what it inherited from its ancestors, and nothing a later commit replaced. The pattern fits a documentation site with draft and published branches, a policy repository with regional forks, or a codebase where each feature branch needs its own view.&lt;/p&gt;</description></item><item><title>Static Embeddings</title><link>https://deploy-preview-2452--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/static-embeddings/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://deploy-preview-2452--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/static-embeddings/</guid><description>&lt;h1 id="static-embeddings-in-practice"&gt;Static Embeddings in Practice&lt;/h1&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Time: 20 min&lt;/th&gt;
 &lt;th&gt;Level: Intermediate&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;In the world of resource-constrained computing, a quiet revolution is taking place. While transformers dominate
leaderboards with their impressive capabilities, static embeddings are making an unexpected comeback, offering
remarkable speed improvements with surprisingly small quality trade-offs. &lt;strong&gt;We evaluated how Qdrant users can benefit
from this renaissance, and the results are promising&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id="what-makes-static-embeddings-different"&gt;What makes static embeddings different?&lt;/h2&gt;
&lt;p&gt;Transformers are often seen as the only way to go when it comes to embeddings. The use of attention mechanisms helps to
capture the relationships between the input tokens, so each token gets a vector representation that is context-aware
and defined not only by the token itself but also by the surrounding tokens. Transformer-based models easily beat the
quality of the older methods, such as word2vec or GloVe, which could only create a single vector embedding per each
word. As a result, the word &amp;ldquo;bank&amp;rdquo; would have identical representation in the context of &amp;ldquo;river bank&amp;rdquo; and &amp;ldquo;financial
institution&amp;rdquo;.&lt;/p&gt;</description></item></channel></rss>