<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Module 6: Beyond Similarity (Bonus) on Qdrant - Vector Search Engine</title><link>https://qdrant.tech/course/beginners/module-6/</link><description>Recent content in Module 6: Beyond Similarity (Bonus) 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/course/beginners/module-6/index.xml" rel="self" type="application/rss+xml"/><item><title>Module Overview</title><link>https://qdrant.tech/course/beginners/module-6/module-overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/beginners/module-6/module-overview/</guid><description>&lt;div class="date"&gt;
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /&gt; Module 6 
&lt;/div&gt;

&lt;h1 id="beyond-similarity"&gt;Beyond Similarity&lt;/h1&gt;
&lt;p&gt;Modules 1 through 5 showed you how to design and build a complete retrieval pipeline. This bonus module covers the next layer: measuring and improving its results.&lt;/p&gt;
&lt;h4 id="overview"&gt;Overview&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;You&amp;rsquo;ll match common search problems to Qdrant features: score boosting and reranking for order, Maximal Marginal Relevance (MMR) for variety, grouping for one slot per document, and the Recommendation and Discovery APIs for searches from examples instead of text. You&amp;rsquo;ll set up a way to measure relevance first, and pick up the trap that comes with each feature along the way.&lt;/p&gt;</description></item><item><title>Find Your Problem</title><link>https://qdrant.tech/course/beginners/module-6/find-your-problem/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/beginners/module-6/find-your-problem/</guid><description>&lt;div class="date"&gt;
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /&gt; Module 6 
&lt;/div&gt;

&lt;h1 id="find-your-problem"&gt;Find Your Problem&lt;/h1&gt;
&lt;p&gt;Each row pairs a problem with the feature that addresses it, and names the stage of a query where it runs.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Problem&lt;/th&gt;
 &lt;th&gt;Feature&lt;/th&gt;
 &lt;th&gt;Stage&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;The right documents come back in the wrong order&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://qdrant.tech/documentation/search/search-relevance/#score-boosting"&gt;Score boosting&lt;/a&gt; with a formula query&lt;/td&gt;
 &lt;td&gt;Rescore&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;The order should account for recency or distance&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://qdrant.tech/documentation/search/search-relevance/#decay-functions"&gt;Decay functions&lt;/a&gt; inside the formula&lt;/td&gt;
 &lt;td&gt;Rescore&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;The accurate model is too slow to run over the whole collection&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://qdrant.tech/documentation/search/hybrid-queries/#multi-stage-queries"&gt;Multi-stage query&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Rescore&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;The top results are near-identical&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://qdrant.tech/documentation/search/search-relevance/#maximal-marginal-relevance-mmr"&gt;Maximal Marginal Relevance&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Select&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;One document fills the page with its own chunks&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://qdrant.tech/documentation/search/search/#grouping-api"&gt;Grouping&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Select&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;A better model, or user clicks, disagree with retrieval&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://qdrant.tech/documentation/search/search-relevance/#relevance-feedback"&gt;Relevance feedback&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Next query&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;There is no query text, only examples of good and bad&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://qdrant.tech/documentation/search/explore/#recommendation-api"&gt;Recommendation and Discovery APIs&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Replaces the query&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img src="https://qdrant.tech/courses/beginners/module-6/pipeline.png" alt="One query drawn as three stages left to right. Retrieve, which is wide and cheap, holds prefetch, hybrid, and filters. Rescore, which runs over the candidates, holds score boosting, decay, and reranking. Select, which decides what fills the page, holds MMR and grouping."&gt;&lt;/p&gt;</description></item><item><title>Measure First</title><link>https://qdrant.tech/course/beginners/module-6/measure-first/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/beginners/module-6/measure-first/</guid><description>&lt;div class="date"&gt;
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /&gt; Module 6 
&lt;/div&gt;

&lt;h1 id="measure-first"&gt;Measure First&lt;/h1&gt;
&lt;p&gt;Ranking changes are hard to judge by eye, because a worse results page still looks like a list of plausible documents. Measure what you have before you change anything.&lt;/p&gt;
&lt;p&gt;A golden set pairs queries with the documents that should come back for them. It turns a ranking change into a number.&lt;/p&gt;
&lt;p&gt;Sample query and click pairs from your logs, or have someone who knows the domain write 20 or 30 queries with the answers they expect. &lt;a href="https://qdrant.tech/documentation/improve-search/retrieval-relevance/"&gt;Measuring Retrieval Relevance&lt;/a&gt; covers both and computes the metrics with the Python library &lt;a href="https://amenra.github.io/ranx/" target="_blank" rel="noopener nofollow"&gt;&lt;code&gt;ranx&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Ranking: Score Boosting and Reranking</title><link>https://qdrant.tech/course/beginners/module-6/ranking-and-reranking/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/beginners/module-6/ranking-and-reranking/</guid><description>&lt;div class="date"&gt;
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /&gt; Module 6 
&lt;/div&gt;

&lt;h1 id="ranking-score-boosting-and-reranking"&gt;Ranking: Score Boosting and Reranking&lt;/h1&gt;
&lt;p&gt;Two ways to change the order when the right documents are already coming back.&lt;/p&gt;
&lt;h3 id="score-boosting"&gt;Score Boosting&lt;/h3&gt;
&lt;p&gt;Similarity is not always the final ranking signal. A result may be relevant, but you may still want to prefer an exact title match, a nearby store, or a recent article. A &lt;a href="https://qdrant.tech/documentation/search/search-relevance/#score-boosting"&gt;formula query&lt;/a&gt; lets you rescore the candidates returned by retrieval, combining their similarity score with payload values and conditions you define.&lt;/p&gt;</description></item><item><title>Diversity: Maximal Marginal Relevance</title><link>https://qdrant.tech/course/beginners/module-6/diversity-mmr/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/beginners/module-6/diversity-mmr/</guid><description>&lt;div class="date"&gt;
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /&gt; Module 6 
&lt;/div&gt;

&lt;h1 id="diversity-maximal-marginal-relevance"&gt;Diversity: Maximal Marginal Relevance&lt;/h1&gt;
&lt;p&gt;Maximal Marginal Relevance (MMR) picks results one at a time, preferring candidates that match the query and differ from what it has already picked. In Qdrant it is a parameter on a nearest neighbors query, and &lt;code&gt;diversity&lt;/code&gt; sets how much relevance it trades for variety.&lt;/p&gt;
&lt;p&gt;The trap is &lt;code&gt;candidates_limit&lt;/code&gt;. It defaults to the query&amp;rsquo;s &lt;code&gt;limit&lt;/code&gt;, which leaves MMR nothing spare to choose from, so all it can do is reorder the results it was already given. This is the most common reason MMR looks like it did nothing.&lt;/p&gt;</description></item><item><title>Grouping: One Slot per Document</title><link>https://qdrant.tech/course/beginners/module-6/grouping/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/beginners/module-6/grouping/</guid><description>&lt;div class="date"&gt;
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /&gt; Module 6 
&lt;/div&gt;

&lt;h1 id="grouping-one-slot-per-document"&gt;Grouping: One Slot per Document&lt;/h1&gt;
&lt;p&gt;Chunking creates the neighbor problem: one long document becomes many points, and a strong match on it can fill the whole first page with its own chunks. &lt;a href="https://qdrant.tech/documentation/search/search/#grouping-api"&gt;&lt;code&gt;query_points_groups&lt;/code&gt;&lt;/a&gt; groups results by a payload field and returns a set number of groups, so one document takes one slot.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;group_size&lt;/code&gt; caps how many chunks come back inside each group, and &lt;code&gt;with_lookup&lt;/code&gt; attaches a parent record from another collection.&lt;/p&gt;</description></item><item><title>Searching From Examples and Feedback</title><link>https://qdrant.tech/course/beginners/module-6/search-from-examples/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/beginners/module-6/search-from-examples/</guid><description>&lt;div class="date"&gt;
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /&gt; Module 6 
&lt;/div&gt;

&lt;h1 id="searching-from-examples-and-feedback"&gt;Searching From Examples and Feedback&lt;/h1&gt;
&lt;p&gt;Some searches have no query text. A reader clicks &amp;ldquo;more like this&amp;rdquo;, or an analyst has three documents that are right and two that are wrong and no words for what separates them.&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://qdrant.tech/documentation/search/explore/#recommendation-api"&gt;Recommendation API&lt;/a&gt; searches from positive and negative examples. The &lt;a href="https://qdrant.tech/documentation/search/explore/#discovery-api"&gt;Discovery API&lt;/a&gt; takes context pairs, where each pair names one region of the vector space to move toward and one to move away from.&lt;/p&gt;</description></item><item><title>Inspecting a Collection</title><link>https://qdrant.tech/course/beginners/module-6/inspecting-a-collection/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/beginners/module-6/inspecting-a-collection/</guid><description>&lt;div class="date"&gt;
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /&gt; Module 6 
&lt;/div&gt;

&lt;h1 id="inspecting-a-collection"&gt;Inspecting a Collection&lt;/h1&gt;
&lt;p&gt;Two features for checking what you actually ingested.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Feature&lt;/th&gt;
 &lt;th&gt;What it does&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://qdrant.tech/documentation/manage-data/payload/#facet-counts"&gt;Facet counts&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Counts how many points hold each value of a payload field, which also shows how selective a filter would be.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="https://qdrant.tech/documentation/search/search/#random-sampling"&gt;Random sampling&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Returns a random subset of a collection, for spot-checking ingested data. For a subset that repeats across queries, such as an evaluation set, use the &lt;a href="https://qdrant.tech/documentation/search/filtering/#slice"&gt;slice&lt;/a&gt; filter condition instead.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>Knowledge Check</title><link>https://qdrant.tech/course/beginners/module-6/knowledge-check/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/beginners/module-6/knowledge-check/</guid><description>&lt;div class="date"&gt;
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /&gt; Module 6 
&lt;/div&gt;

&lt;h1 id="knowledge-check"&gt;Knowledge Check&lt;/h1&gt;
&lt;details&gt;
&lt;summary&gt;You turn MMR on and your Recall@10 drops. Is MMR broken?&lt;/summary&gt;
&lt;p&gt;No. MMR spends result slots on documents further from the query, so a measure that only counts relevance goes down while the page stops repeating itself. Check what those slots held before: if they were eight versions of one story, the drop bought something your metric cannot see. If they were eight distinct relevant documents, lower &lt;code&gt;diversity&lt;/code&gt;.&lt;/p&gt;</description></item></channel></rss>