<?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 Database</title><link>https://deploy-preview-2138--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/</link><description>Recent content in Search Engineering on Qdrant - Vector Database</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-2138--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/index.xml" rel="self" type="application/rss+xml"/><item><title>Hybrid Search with Reranking</title><link>https://deploy-preview-2138--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/reranking-hybrid-search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://deploy-preview-2138--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/reranking-hybrid-search/</guid><description>&lt;h1 id="qdrant-hybrid-search-with-reranking">Qdrant Hybrid Search with Reranking&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 40 min&lt;/th>
 &lt;th>Level: Intermediate&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;/tbody>
&lt;/table>
&lt;p>Hybrid search combines dense and sparse retrieval to deliver precise and comprehensive results. By adding reranking with ColBERT, you can further refine search outputs for maximum relevance.&lt;/p>
&lt;p>In this guide, we’ll show you how to implement hybrid search with reranking in Qdrant, leveraging dense, sparse, and late interaction embeddings to create an efficient, high-accuracy search system. Let’s get started!&lt;/p>
&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>Let’s start by breaking down the architecture:&lt;/p></description></item><item><title>Multivectors and Late Interaction</title><link>https://deploy-preview-2138--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-2138--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/using-multivector-representations/</guid><description>&lt;h1 id="multivector-representations-for-reranking-in-qdrant">Multivector Representations for Reranking in Qdrant&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 30 min&lt;/th>
 &lt;th>Level: Intermediate&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;/tbody>
&lt;/table>
&lt;p>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>
&lt;p>In this tutorial, you&amp;rsquo;ll discover how to effectively use multivector representations in Qdrant.&lt;/p>
&lt;h2 id="what-are-multivector-representations">What are Multivector Representations?&lt;/h2>
&lt;p>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></description></item><item><title>Semantic Search Basics</title><link>https://deploy-preview-2138--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/neural-search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://deploy-preview-2138--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/neural-search/</guid><description>&lt;h1 id="semantic-search-basics-with-qdrant">Semantic Search Basics with Qdrant&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 30 min&lt;/th>
 &lt;th>Level: Beginner&lt;/th>
 &lt;th>Output: &lt;a href="https://github.com/qdrant/qdrant_demo/tree/sentense-transformers" target="_blank" rel="noopener nofollow">GitHub&lt;/a>&lt;/th>
 &lt;th>&lt;a href="https://colab.research.google.com/drive/1kPktoudAP8Tu8n8l-iVMOQhVmHkWV_L9?usp=sharing" target="_blank" rel="noopener nofollow">&lt;img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab">&lt;/a>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;/tbody>
&lt;/table>
&lt;p>This tutorial shows you how to build and deploy your own neural search service to look through descriptions of companies from &lt;a href="https://www.startups-list.com/" target="_blank" rel="noopener nofollow">startups-list.com&lt;/a> and pick the most similar ones to your query. The website contains the company names, descriptions, locations, and a picture for each entry.&lt;/p>
&lt;p>A neural search service uses artificial neural networks to improve the accuracy and relevance of search results. Besides offering simple keyword results, this system can retrieve results by meaning. It can understand and interpret complex search queries and provide more contextually relevant output, effectively enhancing the user&amp;rsquo;s search experience.&lt;/p></description></item><item><title>Semantic Search for Code</title><link>https://deploy-preview-2138--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/code-search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://deploy-preview-2138--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/code-search/</guid><description>&lt;h1 id="semantic-search-for-code-with-qdrant">Semantic Search for Code with Qdrant&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 45 min&lt;/th>
 &lt;th>Level: Intermediate&lt;/th>
 &lt;th>&lt;a href="https://colab.research.google.com/github/qdrant/examples/blob/master/code-search/code-search.ipynb" target="_blank" rel="noopener nofollow">&lt;img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab">&lt;/a>&lt;/th>
 &lt;th>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;/tbody>
&lt;/table>
&lt;p>You too can enrich your applications with Qdrant semantic search. In this
tutorial, we describe how you can use Qdrant to navigate a codebase, to help
you find relevant code snippets. As an example, we will use the &lt;a href="https://github.com/qdrant/qdrant" target="_blank" rel="noopener nofollow">Qdrant&lt;/a>
source code itself, which is mostly written in Rust.&lt;/p>
&lt;aside role="status">This tutorial might not work on code bases that are not disciplined or structured. For good code search, you may need to refactor the project first.&lt;/aside>
&lt;h2 id="the-approach">The approach&lt;/h2>
&lt;p>We want to search codebases using natural semantic queries, and searching for code based on similar logic. You can set up these tasks with embeddings:&lt;/p></description></item><item><title>Collaborative Filtering</title><link>https://deploy-preview-2138--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-2138--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">Build a Recommendation System with Collaborative Filtering using Qdrant&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 45 min&lt;/th>
 &lt;th>Level: Intermediate&lt;/th>
 &lt;th>&lt;a href="https://githubtocolab.com/qdrant/examples/blob/master/collaborative-filtering/collaborative-filtering.ipynb" target="_blank" rel="noopener nofollow">&lt;img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab">&lt;/a>&lt;/th>
 &lt;th>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;/tbody>
&lt;/table>
&lt;p>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>collaborative filtering&lt;/strong>.&lt;/p>
&lt;p>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></description></item><item><title>Hybrid Search with FastEmbed</title><link>https://deploy-preview-2138--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/hybrid-search-fastembed/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://deploy-preview-2138--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/hybrid-search-fastembed/</guid><description>&lt;h1 id="hybrid-search-with-qdrants-fastembed">Hybrid Search with Qdrant&amp;rsquo;s FastEmbed&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 20 min&lt;/th>
 &lt;th>Level: Beginner&lt;/th>
 &lt;th>Output: &lt;a href="https://github.com/qdrant/qdrant_demo/" target="_blank" rel="noopener nofollow">GitHub&lt;/a>&lt;/th>
 &lt;th>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;/tbody>
&lt;/table>
&lt;p>This tutorial shows you how to build and deploy your own hybrid search service to look through descriptions of companies from &lt;a href="https://www.startups-list.com/" target="_blank" rel="noopener nofollow">startups-list.com&lt;/a> and pick the most similar ones to your query.
The website contains the company names, descriptions, locations, and a picture for each entry.&lt;/p>
&lt;p>As we have already written on our &lt;a href="https://deploy-preview-2138--condescending-goldwasser-91acf0.netlify.app/articles/hybrid-search/">blog&lt;/a>, there is no single definition of hybrid search.
In this tutorial we are covering the case with a combination of dense and &lt;a href="https://deploy-preview-2138--condescending-goldwasser-91acf0.netlify.app/articles/sparse-vectors/">sparse embeddings&lt;/a>.
The former ones refer to the embeddings generated by such well-known neural networks as BERT, while the latter ones are more related to a traditional full-text search approach.&lt;/p></description></item><item><title>Multivector Document Retrieval</title><link>https://deploy-preview-2138--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-2138--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/</guid><description>&lt;h1 id="qdrant-multivector-document-retrieval-with-colpalicolqwen">Qdrant Multivector Document Retrieval with ColPali/ColQwen&lt;/h1>
&lt;p>&lt;img src="https://deploy-preview-2138--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials/pdf-retrieval-at-scale/image1.png" alt="scaling-pdf-retrieval-qdrant">&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 30 min&lt;/th>
 &lt;th>Level: Intermediate&lt;/th>
 &lt;th>Output: &lt;a href="https://github.com/qdrant/examples/blob/master/pdf-retrieval-at-scale/ColPali_ColQwen2_Tutorial.ipynb" target="_blank" rel="noopener nofollow">GitHub&lt;/a>&lt;/th>
 &lt;th>&lt;a href="https://githubtocolab.com/qdrant/examples/blob/master/pdf-retrieval-at-scale/ColPali_ColQwen2_Tutorial.ipynb" target="_blank" rel="noopener nofollow">&lt;img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab">&lt;/a>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;/tbody>
&lt;/table>
&lt;p>Efficient PDF documents retrieval is a common requirement in tasks like &lt;strong>(agentic) retrieval-augmented generation (RAG)&lt;/strong> and many other search-based applications. At the same time, setting up PDF documents retrieval is rarely possible without additional challenges.&lt;/p>
&lt;p>Many traditional PDF retrieval solutions rely on &lt;strong>optical character recognition (OCR)&lt;/strong> 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></description></item><item><title>Retrieval Quality Evaluation</title><link>https://deploy-preview-2138--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/retrieval-quality/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://deploy-preview-2138--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/retrieval-quality/</guid><description>&lt;h1 id="evaluate-retrieval-quality-with-qdrant">Evaluate Retrieval Quality with Qdrant&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 30 min&lt;/th>
 &lt;th>Level: Intermediate&lt;/th>
 &lt;th>&lt;/th>
 &lt;th>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;/tbody>
&lt;/table>
&lt;p>Semantic search pipelines are as good as the embeddings they use. If your model cannot properly represent input data, similar objects might
be far away from each other in the vector space. No surprise, that the search results will be poor in this case. There is, however, another
component of the process which can also degrade the quality of the search results. It is the ANN algorithm itself.&lt;/p></description></item><item><title>Static Embeddings</title><link>https://deploy-preview-2138--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-2138--condescending-goldwasser-91acf0.netlify.app/documentation/tutorials-search-engineering/static-embeddings/</guid><description>&lt;h1 id="static-embeddings-in-practice">Static Embeddings in Practice&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 20 min&lt;/th>
 &lt;th>Level: Intermediate&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;/tbody>
&lt;/table>
&lt;p>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>We evaluated how Qdrant users can benefit
from this renaissance, and the results are promising&lt;/strong>.&lt;/p>
&lt;h2 id="what-makes-static-embeddings-different">What makes static embeddings different?&lt;/h2>
&lt;p>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></description></item></channel></rss>