<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Qdrant - Vector Search Engine</title><link>https://qdrant.tech/</link><description>Recent content 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><lastBuildDate>Wed, 08 Apr 2026 00:52:18 +0300</lastBuildDate><atom:link href="https://qdrant.tech/index.xml" rel="self" type="application/rss+xml"/><item><title>Distance-based data exploration</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">Hidden Structure&lt;/h2>
&lt;p>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>
&lt;figure>&lt;img src="https://qdrant.tech/articles_data/distance-based-exploration/no-context-data.png"
 alt="Data visualization">&lt;figcaption>
 &lt;p>Datapoints without context, pretty much useless&lt;/p>
 &lt;/figcaption>
&lt;/figure>

&lt;p>As numbers in a table obtain meaning when plotted on a graph, visualising distances (similar/dissimilar) between unstructured data items can reveal hidden structures and patterns.&lt;/p></description></item><item><title>Modern Sparse Neural Retrieval: From Theory to Practice</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;p>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>
&lt;p>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></description></item><item><title>Qdrant Summer of Code 2024 - ONNX Cross Encoders in Python</title><link>https://qdrant.tech/articles/cross-encoder-integration-gsoc/</link><pubDate>Mon, 14 Oct 2024 08:00:00 +0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/cross-encoder-integration-gsoc/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Hi everyone! I’m Huong (Celine) Hoang, and I’m thrilled to share my experience working at Qdrant this summer as part of their Summer of Code 2024 program. During my internship, I worked on integrating cross-encoders into the FastEmbed library for re-ranking tasks. This enhancement widened the capabilities of the Qdrant ecosystem, enabling developers to build more context-aware search applications, such as question-answering systems, using Qdrant&amp;rsquo;s suite of libraries.&lt;/p>
&lt;p>This project was both technically challenging and rewarding, pushing me to grow my skills in handling large-scale ONNX (Open Neural Network Exchange) model integrations, tokenization, and more. Let me take you through the journey, the lessons learned, and where things are headed next.&lt;/p></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">An Introduction to Vector Databases&lt;/h2>
&lt;p>&lt;img src="https://qdrant.tech/articles_data/what-is-a-vector-database/vector-database-1.jpeg" alt="vector-database-architecture">&lt;/p>
&lt;p>Most of the millions of terabytes of data we generate each day is &lt;strong>unstructured&lt;/strong>. 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>
&lt;p>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>AI&lt;/strong>, &lt;strong>machine learning&lt;/strong>, and &lt;strong>modern search engines&lt;/strong>.&lt;/p></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>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>
&lt;p>When working with high-dimensional vectors, such as embeddings from providers like OpenAI, a single 1536-dimensional vector requires &lt;strong>6 KB of memory&lt;/strong>.&lt;/p>
&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">
&lt;p>With 1 million vectors needing around 6 GB of memory, as your dataset grows to multiple &lt;strong>millions of vectors&lt;/strong>, the memory and processing demands increase significantly.&lt;/p></description></item><item><title>Fine-Tuning Sparse Embeddings for E-Commerce Search | Part 1: Why Sparse Embeddings Beat BM25</title><link>https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-1/</link><pubDate>Mon, 09 Mar 2026 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-1/</guid><description>&lt;p>&lt;em>This is Part 1 of a 5-part series on fine-tuning sparse embeddings for e-commerce search. We&amp;rsquo;ll go from &amp;ldquo;why bother?&amp;rdquo; to a production system that beats BM25 by 29%.&lt;/em>&lt;/p>
&lt;p>&lt;strong>Series:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Part 1: Why Sparse Embeddings Beat BM25 (here)&lt;/li>
&lt;li>&lt;a href="https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-2/">Part 2: Training on Modal&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-3/">Part 3: Evaluation &amp;amp; Hard Negatives&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-4/">Part 4: Specialization vs Generalization&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-5/">Part 5: From Research to Product&lt;/a>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>Search &amp;ldquo;iPhone 15 Pro Max 256GB&amp;rdquo; on a dense embedding system and it happily returns the 128GB model. The semantic similarity is high - it&amp;rsquo;s the same phone! But the customer specified 256GB for a reason. In e-commerce, the details aren&amp;rsquo;t noise. They&amp;rsquo;re the whole point.&lt;/p></description></item><item><title>Vector Search Resource Optimization Guide</title><link>https://qdrant.tech/articles/vector-search-resource-optimization/</link><pubDate>Sun, 09 Feb 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/vector-search-resource-optimization/</guid><description>&lt;h2 id="whats-in-this-guide">What’s in This Guide?&lt;/h2>
&lt;p>&lt;a href="#storage-disk-vs-ram">&lt;strong>Resource Management Strategies:&lt;/strong>&lt;/a> If you are trying to scale your app on a budget - this is the guide for you. We will show you how to avoid wasting compute resources and get the maximum return on your investment.&lt;/p>
&lt;p>&lt;a href="#configure-indexing-for-faster-searches">&lt;strong>Performance Improvement Tricks:&lt;/strong>&lt;/a> We’ll dive into advanced techniques like indexing, compression, and partitioning. Our tips will help you get better results at scale, while reducing total resource expenditure.&lt;/p></description></item><item><title>A Complete Guide to Filtering in Vector Search</title><link>https://qdrant.tech/articles/vector-search-filtering/</link><pubDate>Tue, 10 Sep 2024 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/vector-search-filtering/</guid><description>&lt;p>Imagine you sell computer hardware. To help shoppers easily find products on your website, you need to have a &lt;strong>user-friendly &lt;a href="https://qdrant.tech" target="_blank" rel="noopener nofollow">search engine&lt;/a>&lt;/strong>.&lt;/p>
&lt;p>&lt;img src="https://qdrant.tech/articles_data/vector-search-filtering/vector-search-ecommerce.png" alt="vector-search-ecommerce">&lt;/p>
&lt;p>If you’re selling computers and have extensive data on laptops, desktops, and accessories, your search feature should guide customers to the exact device they want - or at least a &lt;strong>very similar&lt;/strong> match.&lt;/p>
&lt;p>When storing data in Qdrant, each product is a point, consisting of an &lt;code>id&lt;/code>, a &lt;code>vector&lt;/code> and &lt;code>payload&lt;/code>:&lt;/p></description></item><item><title>Qdrant Internals: Immutable Data Structures</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">Data Structures 101&lt;/h2>
&lt;p>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>
&lt;figure>&lt;img src="https://qdrant.tech/articles_data/immutable-data-structures/hardware-optimized.png"
 alt="Hardware-optimized data structure" width="80%">&lt;figcaption>
 &lt;p>Hardware-optimized data structure&lt;/p>
 &lt;/figcaption>
&lt;/figure>

&lt;p>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/">vector search&lt;/a>, things become more complex. &lt;a href="https://en.wikipedia.org/wiki/Big_O_notation" target="_blank" rel="noopener nofollow">Big-O notation&lt;/a> 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></description></item><item><title>Fine-Tuning Sparse Embeddings for E-Commerce Search | Part 2: Training SPLADE on Modal</title><link>https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-2/</link><pubDate>Mon, 09 Mar 2026 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-2/</guid><description>&lt;p>&lt;em>This is Part 2 of a 5-part series on fine-tuning sparse embeddings for e-commerce search. In &lt;a href="https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-1/">Part 1&lt;/a>, we covered why sparse embeddings beat BM25 for e-commerce. Now we build the training pipeline.&lt;/em>&lt;/p>
&lt;p>&lt;strong>Series:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-1/">Part 1: Why Sparse Embeddings Beat BM25&lt;/a>&lt;/li>
&lt;li>Part 2: Training SPLADE on Modal (here)&lt;/li>
&lt;li>&lt;a href="https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-3/">Part 3: Evaluation &amp;amp; Hard Negatives&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-4/">Part 4: Specialization vs Generalization&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-5/">Part 5: From Research to Product&lt;/a>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>In the last article we made the case for sparse embeddings in e-commerce search. Now we write the code. All source code is available in the &lt;a href="https://github.com/thierrypdamiba/finetune-ecommerce-search" target="_blank" rel="noopener nofollow">GitHub repo&lt;/a>, and you can try the &lt;a href="https://huggingface.co/thierrydamiba/splade-ecommerce-esci" target="_blank" rel="noopener nofollow">fine-tuned models on HuggingFace&lt;/a>. Want to skip straight to fine-tuning on your own data? See the &lt;a href="https://github.com/qdrant/sparse-finetune" target="_blank" rel="noopener nofollow">&lt;code>sparse-finetune&lt;/code>&lt;/a> CLI. By the end of this piece, you&amp;rsquo;ll have a SPLADE model trained on Amazon&amp;rsquo;s ESCI dataset, running on Modal&amp;rsquo;s serverless GPUs, with checkpoints saved to persistent storage.&lt;/p></description></item><item><title>Fine-Tuning Sparse Embeddings for E-Commerce Search | Part 3: Evaluation and Hard Negatives</title><link>https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-3/</link><pubDate>Mon, 09 Mar 2026 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-3/</guid><description>&lt;p>&lt;em>This is Part 3 of a 5-part series on fine-tuning sparse embeddings for e-commerce search. In &lt;a href="https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-2/">Part 2&lt;/a>, we trained a SPLADE model on Modal. Now we evaluate it and push further with hard negative mining.&lt;/em>&lt;/p>
&lt;p>&lt;strong>Series:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-1/">Part 1: Why Sparse Embeddings Beat BM25&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-2/">Part 2: Training SPLADE on Modal&lt;/a>&lt;/li>
&lt;li>Part 3: Evaluation &amp;amp; Hard Negatives (here)&lt;/li>
&lt;li>&lt;a href="https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-4/">Part 4: Specialization vs Generalization&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-5/">Part 5: From Research to Product&lt;/a>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>We have a trained SPLADE model sitting on a Modal volume (or grab it from &lt;a href="https://huggingface.co/thierrydamiba/splade-ecommerce-esci" target="_blank" rel="noopener nofollow">HuggingFace&lt;/a>). Now comes the question that matters: is it actually better? In this article, we&amp;rsquo;ll index products into Qdrant, run retrieval benchmarks, implement hard negative mining, and dig into what the model learned. Full evaluation code is in the &lt;a href="https://github.com/thierrypdamiba/finetune-ecommerce-search" target="_blank" rel="noopener nofollow">GitHub repo&lt;/a>. To run this entire pipeline on your own data, see the &lt;a href="https://github.com/qdrant/sparse-finetune" target="_blank" rel="noopener nofollow">&lt;code>sparse-finetune&lt;/code>&lt;/a> CLI.&lt;/p></description></item><item><title>Fine-Tuning Sparse Embeddings for E-Commerce Search | Part 4: Specialization vs Generalization</title><link>https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-4/</link><pubDate>Mon, 09 Mar 2026 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-4/</guid><description>&lt;p>&lt;em>This is Part 4 of a 5-part series on fine-tuning sparse embeddings for e-commerce search. In &lt;a href="https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-3/">Part 3&lt;/a>, we evaluated our model and implemented hard negative mining. Now we test how well it generalizes.&lt;/em>&lt;/p>
&lt;p>&lt;strong>Series:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-1/">Part 1: Why Sparse Embeddings Beat BM25&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-2/">Part 2: Training SPLADE on Modal&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-3/">Part 3: Evaluation &amp;amp; Hard Negatives&lt;/a>&lt;/li>
&lt;li>Part 4: Specialization vs Generalization (here)&lt;/li>
&lt;li>&lt;a href="https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-5/">Part 5: From Research to Product&lt;/a>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>We&amp;rsquo;ve built a SPLADE model that beats BM25 by 28% on Amazon ESCI. But here&amp;rsquo;s the question that determines whether this is a lab result or a production strategy: does it work on data it wasn&amp;rsquo;t trained on? Full code is on &lt;a href="https://github.com/thierrypdamiba/finetune-ecommerce-search" target="_blank" rel="noopener nofollow">GitHub&lt;/a>, you can try the &lt;a href="https://huggingface.co/thierrydamiba/splade-ecommerce-esci" target="_blank" rel="noopener nofollow">fine-tuned models on HuggingFace&lt;/a>, or fine-tune on your own catalog with the &lt;a href="https://github.com/qdrant/sparse-finetune" target="_blank" rel="noopener nofollow">&lt;code>sparse-finetune&lt;/code>&lt;/a> CLI.&lt;/p></description></item><item><title>Fine-Tuning Sparse Embeddings for E-Commerce Search | Part 5: From Research to Product</title><link>https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-5/</link><pubDate>Mon, 09 Mar 2026 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-5/</guid><description>&lt;p>&lt;em>This is Part 5 of a series on fine-tuning sparse embeddings for e-commerce search. Parts &lt;a href="https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-1/">1&lt;/a>–&lt;a href="https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-4/">4&lt;/a> built the pipeline from scratch. This article packages it into a tool anyone can use.&lt;/em>&lt;/p>
&lt;p>&lt;strong>Series:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-1/">Part 1: Why Sparse Embeddings Beat BM25&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-2/">Part 2: Training SPLADE on Modal&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-3/">Part 3: Evaluation &amp;amp; Hard Negatives&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://qdrant.tech/articles/sparse-embeddings-ecommerce-part-4/">Part 4: Specialization vs Generalization&lt;/a>&lt;/li>
&lt;li>Part 5: From Research to Product (here)&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>In Parts 1 through 4, we built a SPLADE fine-tuning pipeline piece by piece: data loading, Modal GPU training, Qdrant evaluation, ANCE hard negative mining, cross-domain experiments. The code worked. The results were strong: 28% over BM25 on Amazon ESCI.&lt;/p></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>Have you ever heard of sparse neural retrieval? If so, have you used it in production?&lt;/p>
&lt;p>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>“What looks good on paper is not going to work in practice”?&lt;/em>?&lt;/p>
&lt;p>This article describes our path towards sparse neural retrieval &lt;em>as it should be&lt;/em> &amp;ndash; lightweight term-based retrievers capable of distinguishing word meanings.&lt;/p></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>A year ago, we dropped a statement-bomb in the “&lt;a href="https://qdrant.tech/articles/search-feedback-loop/" target="_blank" rel="noopener nofollow">Relevance Feedback in Information Retrieval&lt;/a>” article and then went silent.&lt;/p>
&lt;p>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>
&lt;p>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></description></item><item><title>Relevance Feedback in Informational 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>
&lt;p>A problem well stated is a problem half solved.&lt;/p>
&lt;/blockquote>
&lt;p>This quote applies as much to life as it does to information retrieval.&lt;/p>
&lt;p>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>
&lt;p>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></description></item><item><title>Built for Vector Search</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>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>
&lt;p>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></description></item><item><title>Any* Embedding Model Can Become a Late Interaction Model... If You Give It a Chance!</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;p>* At least any open-source model, since you need access to its internals.&lt;/p>
&lt;h2 id="you-can-adapt-dense-embedding-models-for-late-interaction">You Can Adapt Dense Embedding Models for Late Interaction&lt;/h2>
&lt;p>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, our updated &lt;a href="https://qdrant.tech/articles/hybrid-search/">Hybrid Search&lt;/a> article explains how multi-vector representations can enhance retrieval quality.&lt;/p></description></item><item><title>Optimizing Memory for Bulk Uploads</title><link>https://qdrant.tech/articles/indexing-optimization/</link><pubDate>Thu, 13 Feb 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/indexing-optimization/</guid><description>&lt;h1 id="optimizing-memory-consumption-during-bulk-uploads">Optimizing Memory Consumption During Bulk Uploads&lt;/h1>
&lt;p>Efficient memory management is a constant challenge when you’re dealing with &lt;strong>large-scale vector data&lt;/strong>. In high-volume ingestion scenarios, even seemingly minor configuration choices can significantly impact stability and performance.&lt;/p>
&lt;p>Let’s take a look at the best practices and recommendations to help you optimize memory usage during bulk uploads in Qdrant. We&amp;rsquo;ll cover scenarios with both &lt;strong>dense&lt;/strong> and &lt;strong>sparse&lt;/strong> vectors, helping your deployments remain performant even under high load and avoiding out-of-memory errors.&lt;/p></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">Why We Built Our Own Storage Engine&lt;/h2>
&lt;p>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">&lt;strong>key-value storage&lt;/strong>&lt;/a> does—it links keys to values.&lt;/p>
&lt;p>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">&lt;strong>RocksDB&lt;/strong>&lt;/a> as our embedded key-value store.&lt;/p>
&lt;div style="text-align: center;">
 &lt;img src="https://qdrant.tech/articles_data/gridstore-key-value-storage/rocksdb.jpg" alt="RocksDB" style="width: 50%;">
 &lt;p>It is mature, reliable, and well-documented.&lt;/p>
&lt;/div>
&lt;p>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">LSMT&lt;/a>), 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></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>Standard &lt;a href="https://qdrant.tech/articles/what-is-rag-in-ai/">Retrieval Augmented Generation&lt;/a> 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>
&lt;p>&lt;img src="https://qdrant.tech/articles_data/agentic-rag/linear-rag.png" alt="Standard, linear RAG pipeline">&lt;/p>
&lt;p>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></description></item><item><title>Hybrid Search Revamped - Building with Qdrant's Query API</title><link>https://qdrant.tech/articles/hybrid-search/</link><pubDate>Thu, 25 Jul 2024 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/hybrid-search/</guid><description>&lt;p>It&amp;rsquo;s been over a year since we published the original article on how to build a hybrid
search system with Qdrant. The idea was straightforward: combine the results from different search methods to improve
retrieval quality. Back in 2023, you still needed to use an additional service to bring lexical search
capabilities and combine all the intermediate results. Things have changed since then. Once we introduced support for
sparse vectors, &lt;a href="https://qdrant.tech/articles/sparse-vectors/">the additional search service became obsolete&lt;/a>, but you were still
required to combine the results from different methods on your end.&lt;/p></description></item><item><title>What is RAG: Understanding Retrieval-Augmented Generation</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>
&lt;p>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>
&lt;/blockquote>
&lt;p>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></description></item><item><title>BM42: New Baseline 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">
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.
&lt;/aside>
&lt;p>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></description></item><item><title>Qdrant 1.8.0: Enhanced Search Capabilities for Better Results</title><link>https://qdrant.tech/articles/qdrant-1.8.x/</link><pubDate>Wed, 06 Mar 2024 00:00:00 -0800</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/qdrant-1.8.x/</guid><description>&lt;h1 id="unlocking-next-level-search-exploring-qdrant-180s-advanced-search-capabilities">Unlocking Next-Level Search: Exploring Qdrant 1.8.0&amp;rsquo;s Advanced Search Capabilities&lt;/h1>
&lt;p>&lt;a href="https://github.com/qdrant/qdrant/releases/tag/v1.8.0" target="_blank" rel="noopener nofollow">Qdrant 1.8.0 is out!&lt;/a>.
This time around, we have focused on Qdrant&amp;rsquo;s internals. Our goal was to optimize performance so that your existing setup can run faster and save on compute. Here is what we&amp;rsquo;ve been up to:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Faster &lt;a href="https://qdrant.tech/articles/sparse-vectors/" target="_blank" rel="noopener nofollow">sparse vectors&lt;/a>:&lt;/strong> &lt;a href="https://qdrant.tech/articles/hybrid-search/" target="_blank" rel="noopener nofollow">Hybrid search&lt;/a> is up to 16x faster now!&lt;/li>
&lt;li>&lt;strong>CPU resource management:&lt;/strong> You can allocate CPU threads for faster indexing.&lt;/li>
&lt;li>&lt;strong>Better indexing performance:&lt;/strong> We optimized text &lt;a href="https://qdrant.tech/documentation/manage-data/indexing/" target="_blank" rel="noopener nofollow">indexing&lt;/a> on the backend.&lt;/li>
&lt;/ul>
&lt;h2 id="faster-search-with-sparse-vectors">Faster search with sparse vectors&lt;/h2>
&lt;p>Search throughput is now up to 16 times faster for sparse vectors. If you are &lt;a href="https://qdrant.tech/articles/sparse-vectors/">using Qdrant for hybrid search&lt;/a>, this means that you can now handle up to sixteen times as many queries. This improvement comes from extensive backend optimizations aimed at increasing efficiency and capacity.&lt;/p></description></item><item><title>Optimizing RAG Through an Evaluation-Based Methodology</title><link>https://qdrant.tech/articles/rapid-rag-optimization-with-qdrant-and-quotient/</link><pubDate>Wed, 12 Jun 2024 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/rapid-rag-optimization-with-qdrant-and-quotient/</guid><description>&lt;p>In today&amp;rsquo;s fast-paced, information-rich world, AI is revolutionizing knowledge management. The systematic process of capturing, distributing, and effectively using knowledge within an organization is one of the fields in which AI provides exceptional value today.&lt;/p>
&lt;blockquote>
&lt;p>The potential for AI-powered knowledge management increases when leveraging &lt;a href="https://qdrant.tech/rag/rag-evaluation-guide/" target="_blank" rel="noopener nofollow">Retrieval Augmented Generation (RAG)&lt;/a>, a methodology that enables LLMs to access a vast, diverse repository of factual information from knowledge stores, such as vector databases.&lt;/p>
&lt;/blockquote>
&lt;p>This process enhances the accuracy, relevance, and reliability of generated text, thereby mitigating the risk of faulty, incorrect, or nonsensical results sometimes associated with traditional LLMs. This method not only ensures that the answers are contextually relevant but also up-to-date, reflecting the latest insights and data available.&lt;/p></description></item><item><title>Is RAG Dead? The Role of Vector Databases in Vector Search | Qdrant</title><link>https://qdrant.tech/articles/rag-is-dead/</link><pubDate>Tue, 27 Feb 2024 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-the-role-of-vector-databases-in-ai-efficiency-and-vector-search">Is RAG Dead? The Role of Vector Databases in AI Efficiency and Vector Search&lt;/h1>
&lt;p>When Anthropic came out with a context window of 100K tokens, they said: “&lt;em>&lt;a href="https://qdrant.tech/solutions/" target="_blank" rel="noopener nofollow">Vector search&lt;/a> is dead. LLMs are getting more accurate and won’t need RAG anymore.&lt;/em>”&lt;/p>
&lt;p>Google’s Gemini 1.5 now offers a context window of 10 million tokens. &lt;a href="https://storage.googleapis.com/deepmind-media/gemini/gemini_v1_5_report.pdf" target="_blank" rel="noopener nofollow">Their supporting paper&lt;/a> claims victory over accuracy issues, even when applying Greg Kamradt’s &lt;a href="https://twitter.com/GregKamradt/status/1722386725635580292" target="_blank" rel="noopener nofollow">NIAH methodology&lt;/a>.&lt;/p>
&lt;p>&lt;em>It’s over. &lt;a href="https://qdrant.tech/articles/what-is-rag-in-ai/" target="_blank" rel="noopener nofollow">RAG&lt;/a> (Retrieval Augmented Generation) must be completely obsolete now. Right?&lt;/em>&lt;/p></description></item><item><title>Optimizing OpenAI Embeddings: Enhance Efficiency with Qdrant's Binary Quantization</title><link>https://qdrant.tech/articles/binary-quantization-openai/</link><pubDate>Wed, 21 Feb 2024 13:12:08 -0800</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/binary-quantization-openai/</guid><description>&lt;p>OpenAI Ada-003 embeddings are a powerful tool for natural language processing (NLP). However, the size of the embeddings are a challenge, especially with real-time search and retrieval. In this article, we explore how you can use Qdrant&amp;rsquo;s Binary Quantization to enhance the performance and efficiency of OpenAI embeddings.&lt;/p>
&lt;p>In this post, we discuss:&lt;/p>
&lt;ul>
&lt;li>The significance of OpenAI embeddings and real-world challenges.&lt;/li>
&lt;li>Qdrant&amp;rsquo;s Binary Quantization, and how it can improve the performance of OpenAI embeddings&lt;/li>
&lt;li>Results of an experiment that highlights improvements in search efficiency and accuracy&lt;/li>
&lt;li>Implications of these findings for real-world applications&lt;/li>
&lt;li>Best practices for leveraging Binary Quantization to enhance OpenAI embeddings&lt;/li>
&lt;/ul>
&lt;p>If you&amp;rsquo;re new to Binary Quantization, consider reading our article which walks you through the concept and &lt;a href="https://qdrant.tech/articles/binary-quantization/">how to use it with Qdrant&lt;/a>&lt;/p></description></item><item><title>How to Implement Multitenancy and Custom Sharding in Qdrant</title><link>https://qdrant.tech/articles/multitenancy/</link><pubDate>Tue, 06 Feb 2024 13:21:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/multitenancy/</guid><description>&lt;h1 id="scaling-your-machine-learning-setup-the-power-of-multitenancy-and-custom-sharding-in-qdrant">Scaling Your Machine Learning Setup: The Power of Multitenancy and Custom Sharding in Qdrant&lt;/h1>
&lt;p>We are seeing the topics of &lt;a href="https://qdrant.tech/documentation/manage-data/multitenancy/">multitenancy&lt;/a> and &lt;a href="https://qdrant.tech/documentation/operations/distributed_deployment/#sharding">distributed deployment&lt;/a> pop-up daily on our &lt;a href="https://qdrant.to/discord" target="_blank" rel="noopener nofollow">Discord support channel&lt;/a>. This tells us that many of you are looking to scale Qdrant along with the rest of your machine learning setup.&lt;/p>
&lt;p>Whether you are building a bank fraud-detection system, &lt;a href="https://qdrant.tech/articles/what-is-rag-in-ai/" target="_blank" rel="noopener nofollow">RAG&lt;/a> for e-commerce, or services for the federal government - you will need to leverage a multitenant architecture to scale your product.
In the world of SaaS and enterprise apps, this setup is the norm. It will considerably increase your application&amp;rsquo;s performance and lower your hosting costs.&lt;/p></description></item><item><title> Data Privacy with Qdrant: Implementing Role-Based Access Control (RBAC)</title><link>https://qdrant.tech/articles/data-privacy/</link><pubDate>Tue, 18 Jun 2024 08:00:00 -0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/data-privacy/</guid><description>&lt;p>Data stored in vector databases is often proprietary to the enterprise and may include sensitive information like customer records, legal contracts, electronic health records (EHR), financial data, and intellectual property. Moreover, strong security measures become critical to safeguarding this data. If the data stored in a vector database is not secured, it may open a vulnerability known as &amp;ldquo;&lt;a href="https://arxiv.org/abs/2004.00053" target="_blank" rel="noopener nofollow">embedding inversion attack&lt;/a>,&amp;rdquo; where malicious actors could potentially &lt;a href="https://arxiv.org/pdf/2305.03010" target="_blank" rel="noopener nofollow">reconstruct the original data from the embeddings&lt;/a> themselves.&lt;/p></description></item><item><title>Discovery needs context</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">Discovery needs context&lt;/h1>
&lt;p>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 were convinced that the Earth was round. They didn&amp;rsquo;t know anything about a new continent, but since they were going west, they stumbled upon it.&lt;/p>
&lt;p>They couldn&amp;rsquo;t reach their &lt;em>target&lt;/em>, 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>context&lt;/em> 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>target&lt;/em> and &lt;em>context&lt;/em> in mind as we explore the new functionality of Qdrant: &lt;strong>Discovery search&lt;/strong>.&lt;/p></description></item><item><title>What are Vector Embeddings? - Revolutionize Your Search Experience</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>
&lt;p>&lt;strong>Embeddings&lt;/strong> are numerical machine learning representations of the semantic 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>
&lt;/blockquote>
&lt;p>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></description></item><item><title>What is a Sparse Vector? How to Achieve Vector-based Hybrid Search</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>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>
&lt;h2 id="what-are-sparse-and-dense-vectors">What are sparse and dense vectors?&lt;/h2>
&lt;p>Sparse vectors are like the Marie Kondo of data—keeping only what sparks joy (or relevance, in this case).&lt;/p>
&lt;p>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></description></item><item><title>Qdrant 1.7.0 has just landed!</title><link>https://qdrant.tech/articles/qdrant-1.7.x/</link><pubDate>Sun, 10 Dec 2023 10:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/qdrant-1.7.x/</guid><description>&lt;p>Please welcome the long-awaited &lt;a href="https://github.com/qdrant/qdrant/releases/tag/v1.7.0" target="_blank" rel="noopener nofollow">Qdrant 1.7.0 release&lt;/a>. Except for a handful of minor fixes and improvements, this release brings some cool brand-new features that we are excited to share!
The latest version of your favorite vector search engine finally supports &lt;strong>sparse vectors&lt;/strong>. That&amp;rsquo;s the feature many of you requested, so why should we ignore it?
We also decided to continue our journey with &lt;a href="https://qdrant.tech/articles/vector-similarity-beyond-search/">vector similarity beyond search&lt;/a>. The new Discovery API covers some utterly new use cases. We&amp;rsquo;re more than excited to see what you will build with it!
But there is more to it! Check out what&amp;rsquo;s new in &lt;strong>Qdrant 1.7.0&lt;/strong>!&lt;/p></description></item><item><title>Deliver Better Recommendations with Qdrant’s new API</title><link>https://qdrant.tech/articles/new-recommendation-api/</link><pubDate>Wed, 25 Oct 2023 09:46:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/new-recommendation-api/</guid><description>&lt;p>The most popular use case for vector search engines, such as Qdrant, is Semantic search with a single query vector. Given the
query, we can vectorize (embed) it and find the closest points in the index. But &lt;a href="https://qdrant.tech/articles/vector-similarity-beyond-search/">Vector Similarity beyond Search&lt;/a>
does exist, and recommendation systems are a great example. Recommendations might be seen as a multi-aim search, where we want
to find items close to positive and far from negative examples. This use of vector databases has many applications, including
recommendation systems for e-commerce, content, or even dating apps.&lt;/p></description></item><item><title>Vector Search as a dedicated service</title><link>https://qdrant.tech/articles/dedicated-service/</link><pubDate>Thu, 30 Nov 2023 10:00:00 +0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/dedicated-service/</guid><description>&lt;p>Ever since the data science community discovered that vector search significantly improves LLM answers,
various vendors and enthusiasts have been arguing over the proper solutions to store embeddings.&lt;/p>
&lt;p>Some say storing them in a specialized engine (aka vector database) is better. Others say that it&amp;rsquo;s enough to use plugins for existing databases.&lt;/p>
&lt;p>Here are &lt;a href="https://nextword.substack.com/p/vector-database-is-not-a-separate" target="_blank" rel="noopener nofollow">just&lt;/a> a &lt;a href="https://stackoverflow.blog/2023/09/20/do-you-need-a-specialized-vector-database-to-implement-vector-search-well/" target="_blank" rel="noopener nofollow">few&lt;/a> of &lt;a href="https://www.singlestore.com/blog/why-your-vector-database-should-not-be-a-vector-database/" target="_blank" rel="noopener nofollow">them&lt;/a>.&lt;/p>
&lt;p>This article presents our vision and arguments on the topic .
We will:&lt;/p></description></item><item><title>FastEmbed: Qdrant's Efficient Python Library for Embedding Generation</title><link>https://qdrant.tech/articles/fastembed/</link><pubDate>Wed, 18 Oct 2023 10:00:00 +0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/fastembed/</guid><description>&lt;p>Data Science and Machine Learning practitioners often find themselves navigating through a labyrinth of models, libraries, and frameworks. Which model to choose, what embedding size, and how to approach tokenizing, are just some questions you are faced with when starting your work. We understood how many data scientists wanted an easier and more intuitive means to do their embedding work. This is why we built FastEmbed, a Python library engineered for speed, efficiency, and usability. We have created easy to use default workflows, handling the 80% use cases in NLP embedding.&lt;/p></description></item><item><title>Google Summer of Code 2023 - Polygon Geo Filter for Qdrant Vector Database</title><link>https://qdrant.tech/articles/geo-polygon-filter-gsoc/</link><pubDate>Thu, 12 Oct 2023 08:00:00 +0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/geo-polygon-filter-gsoc/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Greetings, I&amp;rsquo;m Zein Wen, and I was a Google Summer of Code 2023 participant at Qdrant. I got to work with an amazing mentor, Arnaud Gourlay, on enhancing the Qdrant Geo Polygon Filter. This new feature allows users to refine their query results using polygons. As the latest addition to the Geo Filter family of radius and rectangle filters, this enhancement promises greater flexibility in querying geo data, unlocking interesting new use cases.&lt;/p></description></item><item><title>Binary Quantization - Vector Search, 40x Faster</title><link>https://qdrant.tech/articles/binary-quantization/</link><pubDate>Mon, 18 Sep 2023 13:00:00 +0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/binary-quantization/</guid><description>&lt;h1 id="optimizing-high-dimensional-vectors-with-binary-quantization">Optimizing High-Dimensional Vectors with Binary Quantization&lt;/h1>
&lt;p>Qdrant is built to handle typical scaling challenges: high throughput, low latency and efficient indexing. &lt;strong>Binary quantization (BQ)&lt;/strong> is our latest attempt to give our customers the edge they need to scale efficiently. This feature is particularly excellent for collections with large vector lengths and a large number of points.&lt;/p>
&lt;p>Our results are dramatic: Using BQ will reduce your memory consumption and improve retrieval speeds by up to 40x.&lt;/p></description></item><item><title>Food Discovery Demo</title><link>https://qdrant.tech/articles/food-discovery-demo/</link><pubDate>Tue, 05 Sep 2023 11:32:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/food-discovery-demo/</guid><description>&lt;p>Not every search journey begins with a specific destination in mind. Sometimes, you just want to explore and see what’s out there and what you might like.
This is especially true when it comes to food. You might be craving something sweet, but you don’t know what. You might be also looking for a new dish to try,
and you just want to see the options available. In these cases, it&amp;rsquo;s impossible to express your needs in a textual query, as the thing you are looking for is not
yet defined. Qdrant&amp;rsquo;s semantic search for images is useful when you have a hard time expressing your tastes in words.&lt;/p></description></item><item><title>Google Summer of Code 2023 - Web UI for Visualization and Exploration</title><link>https://qdrant.tech/articles/web-ui-gsoc/</link><pubDate>Mon, 28 Aug 2023 08:00:00 +0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/web-ui-gsoc/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Hello everyone! My name is Kartik Gupta, and I am thrilled to share my coding journey as part of the Google Summer of Code 2023 program. This summer, I had the incredible opportunity to work on an exciting project titled &amp;ldquo;Web UI for Visualization and Exploration&amp;rdquo; for Qdrant, a vector search engine. In this article, I will take you through my experience, challenges, and achievements during this enriching coding journey.&lt;/p></description></item><item><title>Qdrant Summer of Code 2024 - WASM based Dimension Reduction</title><link>https://qdrant.tech/articles/dimension-reduction-qsoc/</link><pubDate>Sat, 31 Aug 2024 10:39:48 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/dimension-reduction-qsoc/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Hello, everyone! I&amp;rsquo;m Jishan Bhattacharya, and I had the incredible opportunity to intern at Qdrant this summer as part of the Qdrant Summer of Code 2024. Under the mentorship of &lt;a href="https://www.linkedin.com/in/andrey-vasnetsov-75268897/" target="_blank" rel="noopener nofollow">Andrey Vasnetsov&lt;/a>, I dived into the world of performance optimization, focusing on enhancing vector visualization using WebAssembly (WASM). In this article, I&amp;rsquo;ll share the insights, challenges, and accomplishments from my journey — one filled with learning, experimentation, and plenty of coding adventures.&lt;/p></description></item><item><title>Semantic Search As You Type</title><link>https://qdrant.tech/articles/search-as-you-type/</link><pubDate>Mon, 14 Aug 2023 00:00:00 +0100</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/search-as-you-type/</guid><description>&lt;p>Qdrant is one of the fastest vector search engines out there, so while looking for a demo to show off, we came upon the idea to do a search-as-you-type box with a fully semantic search backend. Now we already have a semantic/keyword hybrid search on our website. But that one is written in Python, which incurs some overhead for the interpreter. Naturally, I wanted to see how fast I could go using Rust.&lt;/p></description></item><item><title>Vector Similarity: Going Beyond Full-Text Search | Qdrant</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;h1 id="vector-similarity-unleashing-data-insights-beyond-traditional-search">Vector Similarity: Unleashing Data Insights Beyond Traditional Search&lt;/h1>
&lt;p>When making use of unstructured data, there are traditional go-to solutions that are well-known for developers:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Full-text search&lt;/strong> when you need to find documents that contain a particular word or phrase.&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://qdrant.tech/documentation/overview/vector-search/" target="_blank" rel="noopener nofollow">Vector search&lt;/a>&lt;/strong> when you need to find documents that are semantically similar to a given query.&lt;/li>
&lt;/ul>
&lt;p>Sometimes people mix those two approaches, so it might look like the vector similarity is just an extension of full-text search. However, in this article, we will explore some promising new techniques that can be used to expand the use-case of unstructured data and demonstrate that vector similarity creates its own stack of data exploration tools.&lt;/p></description></item><item><title>Serverless Semantic Search</title><link>https://qdrant.tech/articles/serverless/</link><pubDate>Wed, 12 Jul 2023 10:00:00 +0100</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/serverless/</guid><description>&lt;p>Do you want to insert a semantic search function into your website or online app? Now you can do so - without spending any money! In this example, you will learn how to create a free prototype search engine for your own non-commercial purposes.&lt;/p>
&lt;h2 id="ingredients">Ingredients&lt;/h2>
&lt;ul>
&lt;li>A &lt;a href="https://rust-lang.org" target="_blank" rel="noopener nofollow">Rust&lt;/a> toolchain&lt;/li>
&lt;li>&lt;a href="https://cargo-lambda.info" target="_blank" rel="noopener nofollow">cargo lambda&lt;/a> (install via package manager, &lt;a href="https://github.com/cargo-lambda/cargo-lambda/releases" target="_blank" rel="noopener nofollow">download&lt;/a> binary or &lt;code>cargo install cargo-lambda&lt;/code>)&lt;/li>
&lt;li>The &lt;a href="https://aws.amazon.com/cli" target="_blank" rel="noopener nofollow">AWS CLI&lt;/a>&lt;/li>
&lt;li>Qdrant instance (&lt;a href="https://cloud.qdrant.io" target="_blank" rel="noopener nofollow">free tier&lt;/a> available)&lt;/li>
&lt;li>An embedding provider service of your choice (see our &lt;a href="https://qdrant.tech/documentation/embeddings/">Embeddings docs&lt;/a>. You may be able to get credits from &lt;a href="https://aigrant.org" target="_blank" rel="noopener nofollow">AI Grant&lt;/a>, also Cohere has a &lt;a href="https://cohere.com/pricing" target="_blank" rel="noopener nofollow">rate-limited non-commercial free tier&lt;/a>)&lt;/li>
&lt;li>AWS Lambda account (12-month free tier available)&lt;/li>
&lt;/ul>
&lt;h2 id="what-youre-going-to-build">What you&amp;rsquo;re going to build&lt;/h2>
&lt;p>You&amp;rsquo;ll combine the embedding provider and the Qdrant instance to a neat semantic search, calling both services from a small Lambda function.&lt;/p></description></item><item><title>Bulk Operations</title><link>https://qdrant.tech/documentation/tutorials-develop/bulk-upload/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/tutorials-develop/bulk-upload/</guid><description>&lt;h1 id="bulk-upload-vectors-to-a-qdrant-collection">Bulk Upload Vectors to a Qdrant Collection&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>Uploading a large-scale dataset fast might be a challenge, but Qdrant has a few tricks to help you with that.&lt;/p>
&lt;p>The first important detail about data uploading is that the bottleneck is usually located on the client side, not on the server side.
This means that if you are uploading a large dataset, you should prefer a high-performance client library.&lt;/p></description></item><item><title>Getting Started</title><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid/><description/></item><item><title>How ColPali Models Work</title><link>https://qdrant.tech/course/multi-vector-search/module-2/how-colpali-works/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/multi-vector-search/module-2/how-colpali-works/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Module 2 
&lt;/div>

&lt;h1 id="how-colpali-models-work">How ColPali Models Work&lt;/h1>
&lt;p>ColPali extends the late interaction paradigm from text to visual documents. It can process PDFs, images, and scanned documents, generating multi-vector representations that capture both textual and visual information.&lt;/p>
&lt;p>Understanding ColPali&amp;rsquo;s architecture helps you leverage its full potential for multi-modal document retrieval.&lt;/p>
&lt;hr>
&lt;div class="video">
&lt;iframe
 src="https://www.youtube-nocookie.com/embed/Fai9aY1PMCA?rel=0"
 frameborder="0"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
 referrerpolicy="strict-origin-when-cross-origin"
 allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;hr>
&lt;p>&lt;strong>Follow along in Colab:&lt;/strong> &lt;a href="https://colab.research.google.com/github/qdrant/examples/blob/master/course-multi-vector-search/module-2/how-colpali-works.ipynb">
&lt;img src="https://colab.research.google.com/assets/colab-badge.svg" style="display:inline; margin:0;" alt="Open In Colab"/>
&lt;/a>&lt;/p>
&lt;hr>
&lt;h2 id="from-text-to-visual-documents">From Text to Visual Documents&lt;/h2>
&lt;p>&lt;strong>What about documents that aren&amp;rsquo;t just text?&lt;/strong> PDFs often contain diagrams, tables, charts, equations, and complex layouts where the visual presentation carries as much meaning as the text itself.&lt;/p></description></item><item><title>How vector search should be benchmarked?</title><link>https://qdrant.tech/benchmarks/benchmarks-intro/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/benchmarks/benchmarks-intro/</guid><description>&lt;h1 id="benchmarking-vector-search">Benchmarking Vector Search&lt;/h1>
&lt;p>At Qdrant, performance is the top-most priority. We always make sure that we use system resources efficiently so you get the &lt;strong>fastest and most accurate results at the cheapest cloud costs&lt;/strong>. So all of our decisions from &lt;a href="https://qdrant.tech/articles/why-rust/">choosing Rust&lt;/a>, &lt;a href="https://qdrant.tech/articles/io_uring/">io optimisations&lt;/a>, &lt;a href="https://qdrant.tech/articles/serverless/">serverless support&lt;/a>, &lt;a href="https://qdrant.tech/articles/binary-quantization/">binary quantization&lt;/a>, to our &lt;a href="https://qdrant.tech/articles/fastembed/">fastembed library&lt;/a> are all based on our principle. In this article, we will compare how Qdrant performs against the other vector search engines.&lt;/p>
&lt;p>Here are the principles we followed while designing these benchmarks:&lt;/p></description></item><item><title>Late Interaction Basics</title><link>https://qdrant.tech/course/multi-vector-search/module-1/late-interaction-basics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/multi-vector-search/module-1/late-interaction-basics/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Module 1 
&lt;/div>

&lt;h1 id="late-interaction-basics">Late Interaction Basics&lt;/h1>
&lt;p>When building a search system, one fundamental question emerges: &lt;strong>when should a query and document interact?&lt;/strong> The answer to this question may affect both the quality of search results and the system&amp;rsquo;s scalability.&lt;/p>
&lt;p>This lesson introduces the late interaction paradigm - the foundation of multi-vector search - and explores how it compares to other approaches.&lt;/p>
&lt;hr>
&lt;div class="video">
&lt;iframe
 src="https://www.youtube-nocookie.com/embed/8HrvD5o2w8M?rel=0"
 frameborder="0"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
 referrerpolicy="strict-origin-when-cross-origin"
 allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;hr>
&lt;p>&lt;strong>Follow along in Colab:&lt;/strong> &lt;a href="https://colab.research.google.com/github/qdrant/examples/blob/master/course-multi-vector-search/module-1/late-interaction-basics.ipynb">
&lt;img src="https://colab.research.google.com/assets/colab-badge.svg" style="display:inline; margin:0;" alt="Open In Colab"/>
&lt;/a>&lt;/p></description></item><item><title>Multi-Stage Retrieval with Universal Query API</title><link>https://qdrant.tech/course/multi-vector-search/module-3/multi-stage-retrieval/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/multi-vector-search/module-3/multi-stage-retrieval/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Module 3 
&lt;/div>

&lt;h1 id="multi-stage-retrieval-with-universal-query-api">Multi-Stage Retrieval with Universal Query API&lt;/h1>
&lt;p>The most effective production deployments combine multiple optimization techniques in multi-stage pipelines. Fast approximate methods retrieve candidates, which are then reranked with higher-quality methods.&lt;/p>
&lt;p>Qdrant&amp;rsquo;s Universal Query API makes it easy to build sophisticated multi-stage retrieval systems.&lt;/p>
&lt;hr>
&lt;div class="video">
&lt;iframe
 src="https://www.youtube-nocookie.com/embed/qIjPepsY35E?rel=0"
 frameborder="0"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
 referrerpolicy="strict-origin-when-cross-origin"
 allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;hr>
&lt;p>&lt;strong>Follow along in Colab:&lt;/strong> &lt;a href="https://colab.research.google.com/github/qdrant/examples/blob/master/course-multi-vector-search/module-3/multi-stage-retrieval.ipynb">
&lt;img src="https://colab.research.google.com/assets/colab-badge.svg" style="display:inline; margin:0;" alt="Open In Colab"/>
&lt;/a>&lt;/p>
&lt;hr>
&lt;h2 id="why-multi-stage-retrieval">Why Multi-Stage Retrieval?&lt;/h2>
&lt;p>You&amp;rsquo;ve learned that multi-vector representations like ColBERT provide superior search quality compared to single-vector embeddings. But there&amp;rsquo;s a challenge: &lt;strong>computing MaxSim for every document in a large collection is expensive&lt;/strong>.&lt;/p></description></item><item><title>Qdrant Fundamentals</title><link>https://qdrant.tech/documentation/faq/qdrant-fundamentals/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/faq/qdrant-fundamentals/</guid><description>&lt;h1 id="frequently-asked-questions-general-topics">Frequently Asked Questions: General Topics&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>&lt;/th>
 &lt;th>&lt;/th>
 &lt;th>&lt;/th>
 &lt;th>&lt;/th>
 &lt;th>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;a href="https://qdrant.tech/documentation/faq/qdrant-fundamentals/#vectors">Vectors&lt;/a>&lt;/td>
 &lt;td>&lt;a href="https://qdrant.tech/documentation/faq/qdrant-fundamentals/#search">Search&lt;/a>&lt;/td>
 &lt;td>&lt;a href="https://qdrant.tech/documentation/faq/qdrant-fundamentals/#collections">Collections&lt;/a>&lt;/td>
 &lt;td>&lt;a href="https://qdrant.tech/documentation/faq/qdrant-fundamentals/#compatibility">Compatibility&lt;/a>&lt;/td>
 &lt;td>&lt;a href="https://qdrant.tech/documentation/faq/qdrant-fundamentals/#cloud">Cloud&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="vectors">Vectors&lt;/h2>
&lt;h3 id="what-is-the-maximum-vector-dimension-supported-by-qdrant">What is the maximum vector dimension supported by Qdrant?&lt;/h3>
&lt;p>In dense vectors, Qdrant supports up to 65,535 dimensions.&lt;/p>
&lt;h3 id="what-is-the-maximum-size-of-vector-metadata-that-can-be-stored">What is the maximum size of vector metadata that can be stored?&lt;/h3>
&lt;p>There is no inherent limitation on metadata size, but it should be &lt;a href="https://qdrant.tech/documentation/operations/optimize/">optimized for performance and resource usage&lt;/a>. Users can set upper limits in the configuration.&lt;/p></description></item><item><title>Qdrant Setup</title><link>https://qdrant.tech/course/multi-vector-search/module-0/qdrant-setup/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/multi-vector-search/module-0/qdrant-setup/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Module 0 
&lt;/div>

&lt;h1 id="qdrant-setup">Qdrant Setup&lt;/h1>
&lt;p>Before diving into multi-vector search, you need a running Qdrant instance. Whether you choose Qdrant Cloud for a managed solution or a local deployment, this lesson will get you up and running.&lt;/p>
&lt;p>Multi-vector search requires specific collection configurations that differ from traditional single-vector setups. We&amp;rsquo;ll cover the essentials to prepare your environment.&lt;/p>
&lt;hr>
&lt;h2 id="qdrant-cloud-setup-recommended">Qdrant Cloud Setup (Recommended)&lt;/h2>
&lt;p>Qdrant Cloud is the fastest way to get started with multi-vector search. It provides a fully managed, production-ready vector database with automatic backups, high availability, and secure TLS connections. Both Qdrant Cloud and the open-source version provide the same feature set - Cloud simply handles the infrastructure for you.&lt;/p></description></item><item><title>Reranking for Better Search</title><link>https://qdrant.tech/documentation/search-precision/reranking-semantic-search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/search-precision/reranking-semantic-search/</guid><description>&lt;h1 id="improve-semantic-search-with-reranking-using-qdrant">Improve Semantic Search with Reranking using Qdrant&lt;/h1>
&lt;p>In Retrieval-Augmented Generation (RAG) systems, irrelevant or missing information can throw off your model&amp;rsquo;s ability to produce accurate, meaningful outputs. One of the best ways to ensure you&amp;rsquo;re feeding your language model the most relevant, context-rich documents is through reranking. It’s a game-changer.&lt;/p>
&lt;p>In this guide, we’ll dive into using reranking to boost the relevance of search results in Qdrant. We’ll start with an easy use case that leverages the Cohere Rerank model. Then, we’ll take it up a notch by exploring ColBERT for a more advanced approach. By the time you’re done, you’ll know how to implement &lt;a href="https://qdrant.tech/articles/hybrid-search/">hybrid search&lt;/a>, fine-tune reranking models, and significantly improve your accuracy.&lt;/p></description></item><item><title>Role Management</title><link>https://qdrant.tech/documentation/cloud-rbac/role-management/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/cloud-rbac/role-management/</guid><description>&lt;h1 id="role-management">Role Management&lt;/h1>
&lt;blockquote>
&lt;p>💡 You can access this in &lt;strong>Access Management &amp;gt; User &amp;amp; Role Management&lt;/strong> &lt;em>if available see &lt;a href="https://qdrant.tech/documentation/cloud-rbac/">this page for details&lt;/a>.&lt;/em>&lt;/p>
&lt;/blockquote>
&lt;p>A &lt;strong>Role&lt;/strong> contains a set of &lt;strong>permissions&lt;/strong> that define the ability to perform or control specific actions in Qdrant Cloud. Permissions are accessible through the Permissions tab in the Role Details page and offer fine-grained access control, logically grouped for easy identification.&lt;/p>
&lt;h2 id="built-in-roles">Built-In Roles&lt;/h2>
&lt;p>Qdrant Cloud includes some built-in roles for common use-cases. The permissions for these built-in roles cannot be changed.&lt;/p></description></item><item><title>Setup Hybrid Cloud</title><link>https://qdrant.tech/documentation/hybrid-cloud/hybrid-cloud-setup/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/hybrid-cloud/hybrid-cloud-setup/</guid><description>&lt;h1 id="creating-a-hybrid-cloud-environment">Creating a Hybrid Cloud Environment&lt;/h1>
&lt;p>The following instruction set will show you how to properly set up a &lt;strong>Qdrant cluster&lt;/strong> in your &lt;strong>Hybrid Cloud Environment&lt;/strong>.&lt;/p>
&lt;p>You can also watch a video demo on how to set up a Hybrid Cloud Environment:&lt;/p>
&lt;p align="center">&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/BF02jULGCfo?si=apU1uQOE8AMjq9hD" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen>&lt;/iframe>&lt;/p>
&lt;p>To learn how Hybrid Cloud works, &lt;a href="https://qdrant.tech/documentation/hybrid-cloud/">read the overview document&lt;/a>.&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;p>Qdrant Hybrid Cloud is available as part of our Enterprise plan. To get access to Qdrant Hybrid Cloud, please &lt;a href="https://qdrant.tech/contact-us/">contact us&lt;/a>.&lt;/p></description></item><item><title>Setup Private Cloud</title><link>https://qdrant.tech/documentation/private-cloud/private-cloud-setup/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/private-cloud/private-cloud-setup/</guid><description>&lt;h1 id="qdrant-private-cloud-setup">Qdrant Private Cloud Setup&lt;/h1>
&lt;h2 id="requirements">Requirements&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Kubernetes cluster:&lt;/strong> To install Qdrant Private Cloud, you need a &lt;a href="https://www.cncf.io/training/certification/software-conformance/" target="_blank" rel="noopener nofollow">standard compliant&lt;/a> Kubernetes cluster. You can run this cluster in any cloud, on-premise or edge environment, with distributions that range from AWS EKS to VMWare vSphere. See &lt;a href="https://qdrant.tech/documentation/hybrid-cloud/platform-deployment-options/">Deployment Platforms&lt;/a> for more information.&lt;/li>
&lt;li>&lt;strong>Storage:&lt;/strong> For storage, you need to set up the Kubernetes cluster with a Container Storage Interface (CSI) driver that provides block storage. For vertical scaling, the CSI driver needs to support volume expansion. For backups and restores, the driver needs to support CSI snapshots and restores.&lt;/li>
&lt;/ul>
&lt;aside role="status">Network storage systems like NFS or object storage systems such as S3 are not supported.&lt;/aside>
&lt;ul>
&lt;li>&lt;strong>Permissions:&lt;/strong> To install the Qdrant Kubernetes Operator you need to have &lt;code>cluster-admin&lt;/code> access in your Kubernetes cluster.&lt;/li>
&lt;li>&lt;strong>Locations:&lt;/strong> By default, the Qdrant Operator Helm charts and container images are served from &lt;code>registry.cloud.qdrant.io&lt;/code>.&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>&lt;strong>Note:&lt;/strong> You can also mirror these images and charts into your own registry and pull them from there.&lt;/p></description></item><item><title>Introducing Qdrant 1.3.0</title><link>https://qdrant.tech/articles/qdrant-1.3.x/</link><pubDate>Mon, 26 Jun 2023 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/qdrant-1.3.x/</guid><description>&lt;p>A brand-new &lt;a href="https://github.com/qdrant/qdrant/releases/tag/v1.3.0" target="_blank" rel="noopener nofollow">Qdrant 1.3.0 release&lt;/a> comes packed with a plethora of new features, performance improvements and bux fixes:&lt;/p>
&lt;ol>
&lt;li>Asynchronous I/O interface: Reduce overhead by managing I/O operations asynchronously, thus minimizing context switches.&lt;/li>
&lt;li>Oversampling for Quantization: Improve the accuracy and performance of your queries while using Scalar or Product Quantization.&lt;/li>
&lt;li>Grouping API lookup: Storage optimization method that lets you look for points in another collection using group ids.&lt;/li>
&lt;li>Qdrant Web UI: A convenient dashboard to help you manage data stored in Qdrant.&lt;/li>
&lt;li>Temp directory for Snapshots: Set a separate storage directory for temporary snapshots on a faster disk.&lt;/li>
&lt;li>Other important changes&lt;/li>
&lt;/ol>
&lt;p>Your feedback is valuable to us, and are always tying to include some of your feature requests into our roadmap. Join &lt;a href="https://qdrant.to/discord" target="_blank" rel="noopener nofollow">our Discord community&lt;/a> and help us build Qdrant!.&lt;/p></description></item><item><title>Single node benchmarks</title><link>https://qdrant.tech/benchmarks/single-node-speed-benchmark/</link><pubDate>Tue, 23 Aug 2022 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/benchmarks/single-node-speed-benchmark/</guid><description>&lt;h2 id="observations">Observations&lt;/h2>
&lt;p>Most of the engines have improved since &lt;a href="https://qdrant.tech/benchmarks/single-node-speed-benchmark-2022/">our last run&lt;/a>. Both life and software have trade-offs but some clearly do better:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;code>Qdrant&lt;/code> achieves highest RPS and lowest latencies in almost all the scenarios, no matter the precision threshold and the metric we choose.&lt;/strong> It has also shown 4x RPS gains on one of the datasets.&lt;/li>
&lt;li>&lt;code>Elasticsearch&lt;/code> has become considerably fast for many cases but it&amp;rsquo;s very slow in terms of indexing time. It can be 10x slower when storing 10M+ vectors of 96 dimensions! (32mins vs 5.5 hrs)&lt;/li>
&lt;li>&lt;code>Milvus&lt;/code> is the fastest when it comes to indexing time and maintains good precision. However, it&amp;rsquo;s not on-par with others when it comes to RPS or latency when you have higher dimension embeddings or more number of vectors.&lt;/li>
&lt;li>&lt;code>Redis&lt;/code> is able to achieve good RPS but mostly for lower precision. It also achieved low latency with single thread, however its latency goes up quickly with more parallel requests. Part of this speed gain comes from their custom protocol.&lt;/li>
&lt;li>&lt;code>Weaviate&lt;/code> has improved the least since our last run.&lt;/li>
&lt;/ul>
&lt;h2 id="how-to-read-the-results">How to read the results&lt;/h2>
&lt;ul>
&lt;li>Choose the dataset and the metric you want to check.&lt;/li>
&lt;li>Select a precision threshold that would be satisfactory for your usecase. This is important because ANN search is all about trading precision for speed. This means in any vector search benchmark, &lt;strong>two results must be compared only when you have similar precision&lt;/strong>. However most benchmarks miss this critical aspect.&lt;/li>
&lt;li>The table is sorted by the value of the selected metric (RPS / Latency / p95 latency / Index time), and the first entry is always the winner of the category 🏆&lt;/li>
&lt;/ul>
&lt;h3 id="latency-vs-rps">Latency vs RPS&lt;/h3>
&lt;p>In our benchmark we test two main search usage scenarios that arise in practice.&lt;/p></description></item><item><title>Single node benchmarks (2022)</title><link>https://qdrant.tech/benchmarks/single-node-speed-benchmark-2022/</link><pubDate>Tue, 23 Aug 2022 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/benchmarks/single-node-speed-benchmark-2022/</guid><description>&lt;p>This is an archived version of Single node benchmarks. Please refer to the new version &lt;a href="https://qdrant.tech/benchmarks/single-node-speed-benchmark/">here&lt;/a>.&lt;/p></description></item><item><title>ColPali Family Overview</title><link>https://qdrant.tech/course/multi-vector-search/module-2/colpali-family/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/multi-vector-search/module-2/colpali-family/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Module 2 
&lt;/div>

&lt;h1 id="colpali-family-overview">ColPali Family Overview&lt;/h1>
&lt;p>The ColPali is not only the name of a model. Still, it is also often used to refer to an entire family of models that convert images and text into multi-vector representations, based on Vision Language Models.&lt;/p>
&lt;p>Let&amp;rsquo;s explore what the options are and which model to choose depending on the data you work with.&lt;/p>
&lt;hr>
&lt;div class="video">
&lt;iframe
 src="https://www.youtube-nocookie.com/embed/5ypH0t_X-4k?rel=0"
 frameborder="0"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
 referrerpolicy="strict-origin-when-cross-origin"
 allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;hr>
&lt;p>The ColPali family includes several model variants. When selecting a model for your application, you&amp;rsquo;ll need to consider factors like model size, supported languages, computational requirements, and licensing constraints - each variant offers different trade-offs along these dimensions.&lt;/p></description></item><item><title>Configuration</title><link>https://qdrant.tech/documentation/private-cloud/configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/private-cloud/configuration/</guid><description>&lt;h1 id="private-cloud-configuration">Private Cloud Configuration&lt;/h1>
&lt;p>The Qdrant Private Cloud helm chart has several configuration options. The following YAML shows all configuration options with their default values:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">operator&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Amount of replicas for the Qdrant operator (v2)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">replicaCount&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">image&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Image repository for the qdrant operator&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">repository&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">registry.cloud.qdrant.io/qdrant/operator&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Image pullPolicy&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">pullPolicy&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">IfNotPresent&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Overrides the image tag whose default is the chart appVersion.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">tag&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">imagePullSecrets&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">qdrant-registry-creds&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">nameOverride&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">fullnameOverride&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;operator&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Service account configuration&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">serviceAccount&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">create&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">annotations&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">## Additional labels to add to all resources&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">customLabels&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> 
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Additional pod annotations&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">podAnnotations&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># pod security context&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">podSecurityContext&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">runAsNonRoot&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">runAsUser&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">10001&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">runAsGroup&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">20001&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">fsGroup&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">30001&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># container security context&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">securityContext&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">capabilities&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">drop&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">ALL&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">readOnlyRootFilesystem&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">runAsNonRoot&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">runAsUser&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">10001&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">runAsGroup&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">20001&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">allowPrivilegeEscalation&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">seccompProfile&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">RuntimeDefault&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Configuration for the Qdrant operator service to expose metrics&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">service&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enabled&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">ClusterIP&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">metricsPort&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">9290&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Configuration for the Qdrant operator service monitor to scrape metrics&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">serviceMonitor&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enabled&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Resource requests and limits for the Qdrant operator&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">resources&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Node selector for the Qdrant operator&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">nodeSelector&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Tolerations for the Qdrant operator&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">tolerations&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Affinity configuration for the Qdrant operator&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">affinity&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">watch&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># If true, watches only the namespace where the Qdrant operator is deployed, otherwise watches the namespaces in watch.namespaces&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">onlyReleaseNamespace&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># an empty list watches all namespaces.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">namespaces&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">limitRBAC&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Configuration for the Qdrant operator (v2)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">settings&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Does the operator run inside of a Kubernetes cluster (kubernetes) or outside (local)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">appEnvironment&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">kubernetes&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The log level for the operator&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Available options: DEBUG | INFO | WARN | ERROR&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">logLevel&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">INFO&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Metrics contains the operator config related the metrics&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">metrics&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The port used for metrics&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">port&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">9290&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Health contains the operator config related the health probe&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">healthz&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The port used for the health probe&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">port&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">8285&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Controller related settings&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">controller&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The period a forced recync is done by the controller (if watches are missed / nothing happened)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">forceResyncPeriod&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">10h&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># QPS indicates the maximum QPS to the master from this client.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is 200&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">qps&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">200&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Maximum burst for throttle.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is 500.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">burst&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">500&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Features contains the settings for enabling / disabling the individual features of the operator&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">features&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># ClusterManagement contains the settings for qdrant (database) cluster management&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">clusterManagement&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Whether or not the Qdrant cluster features are enabled.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># If disabled, all other properties in this struct are disregarded. Otherwise, the individual features will be inspected.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is true.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enable&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The StorageClass used to make database and snapshot PVCs.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is nil, meaning the default storage class of Kubernetes.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">storageClass&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The StorageClass used to make database PVCs.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is nil, meaning the default storage class of Kubernetes.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#database:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The StorageClass used to make snapshot PVCs.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is nil, meaning the default storage class of Kubernetes.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#snapshot:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#volumeAttributesClass:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># driverName: ebs.csi.aws.com&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># default:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># name: balanced&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># parameters:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># iops: 3000&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># throughput: 125&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># template:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># prefix: qdrant-vac&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># parameters: {}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Qdrant config contains settings specific for the database&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">qdrant&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The config where to find the image for qdrant&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">image&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The repository where to find the image for qdrant&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is &amp;#34;qdrant/qdrant&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">repository&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">registry.cloud.qdrant.io/qdrant/qdrant&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Docker image pull policy&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default &amp;#34;IfNotPresent&amp;#34;, unless the tag is dev, master or latest. Then &amp;#34;Always&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#pullPolicy:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Docker image pull secret name&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># This secret should be available in the namespace where the cluster is running&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default not set&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">pullSecretName&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">qdrant-registry-creds&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># storage contains the settings for the storage of the Qdrant cluster&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">storage&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">performance&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># CPU budget, how many CPUs (threads) to allocate for an optimization job.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># If 0 - auto selection, keep 1 or more CPUs unallocated depending on CPU size&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># If negative - subtract this number of CPUs from the available CPUs.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># If positive - use this exact number of CPUs.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">optimizerCpuBudget&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">0&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Enable async scorer which uses io_uring when rescoring.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Only supported on Linux, must be enabled in your kernel.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># See: &amp;lt;https://qdrant.tech/articles/io_uring/#and-what-about-qdrant&amp;gt;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">asyncScorer&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Qdrant DB log level&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Available options: DEBUG | INFO | WARN | ERROR&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is &amp;#34;INFO&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">logLevel&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">INFO&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default Qdrant security context configuration&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">securityContext&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Enable default security context&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enabled&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default user for qdrant container&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default not set&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#user: 1000&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default fsGroup for qdrant container&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default not set&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#fsUser: 2000&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default group for qdrant container&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default not set&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#group: 3000&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Network policies configuration for the Qdrant databases&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">networkPolicies&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Whether or not NetworkPolicy management is enabled.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># If set to false, no NetworkPolicies will be created.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is true.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enable&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">ingress&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">ports&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">protocol&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">TCP&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">port&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">6333&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">protocol&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">TCP&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">port&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">6334&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Allow DNS resolution from qdrant pods at Kubernetes internal DNS server&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">egress&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">ports&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">protocol&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">UDP&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">port&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">53&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># the settings for cloud inference proxy&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">inference&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># inference proxy endpoint&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># when set, the value is passed to Qdrant cluster config as `inference.address` config param&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># if QdrantCluster instance has `.spec.config.inference.enabled` field set&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">address&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">~&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Scheduling config contains the settings specific for scheduling&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">scheduling&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default topology spread constraints (list from type corev1.TopologySpreadConstraint)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is an empty list&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">topologySpreadConstraints&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default pod disruption budget (object from type policyv1.PodDisruptionBudgetSpec)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is not set&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">podDisruptionBudget&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># ClusterManager config contains the settings specific for cluster manager&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">clusterManager&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Whether or not the cluster manager (on operator level).&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># If disabled, all other properties in this struct are disregarded. Otherwise, the individual features will be inspected.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is false.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enable&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The endpoint address where the cluster manager can be reached&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">endpointAddress&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;http://qdrant-cluster-manager&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># InvocationInterval is the interval between calls (started after the previous call is retured)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is 10 seconds&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">invocationInterval&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">10s&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># SyncClustersInterval is the interval between sync-clusters calls (started after the previous call is retured)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is 10 seconds&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">syncClustersInterval&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">10s&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Timeout is the duration a single call to the cluster manager is allowed to take.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is 30 seconds&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">timeout&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">30s&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># syncClustersTimeout is the duration a single call to the cluster manager to sync clusters is allowed to take.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is 10 seconds&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">syncClustersTimeout&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">10s&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Specifies overrides for the manage rules&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">manageRulesOverrides&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#dry_run:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#max_transfers:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#max_transfers_per_collection:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#rebalance:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#replicate:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Specifies overrides for the manage rules&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">syncClustersRulesOverrides&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#dry_run:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#max_downtime_sec:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#sync_interval_sec:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Ingress config contains the settings specific for ingress&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">ingress&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Whether or not the Ingress feature is enabled.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is true.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enable&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Which specific ingress provider should be used&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is KubernetesIngress&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">provider&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">KubernetesIngress&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The specific settings when the Provider is QdrantCloudTraefik&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">qdrantCloudTraefik&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Enable tls&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">tls&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Secret with TLS certificate&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is None&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">secretName&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># List of Traefik middlewares to apply&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is an empty list&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">middlewares&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># IP Allowlist Strategy for Traefik&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is None&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">ipAllowlistStrategy&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Enable body validator plugin and matching ingressroute rules&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enableBodyValidatorPlugin&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># EntryPoints is the list of traefik entry points to use for the ingress route&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is [&amp;#34;web&amp;#34;] or [&amp;#34;websecure&amp;#34;] depending on the TLS setting&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">entryPoints&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The specific settings when the Provider is KubernetesIngress&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">kubernetesIngress&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Name of the ingress class&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is None&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#ingressClassName:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># TelemetryTimeout is the duration a single call to the cluster telemetry endpoint is allowed to take.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is 3 seconds&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">telemetryTimeout&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">3s&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># MaxConcurrentReconciles is the maximum number of concurrent Reconciles which can be run. Defaults to 20.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">maxConcurrentReconciles&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">20&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># VolumeExpansionMode specifies the expansion mode, which can be online or offline (e.g. in case of Azure).&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Available options: Online, Offline&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is Online&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">volumeExpansionMode&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Online&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># BackupManagementConfig contains the settings for backup management&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">backupManagement&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Whether or not the backup features are enabled.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># If disabled, all other properties in this struct are disregarded. Otherwise, the individual features will be inspected.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is true.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enable&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Snapshots contains the settings for snapshots as part of backup management.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">snapshots&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Whether or not the Snapshot feature is enabled.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is true.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enable&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The VolumeSnapshotClass used to make VolumeSnapshots.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is &amp;#34;csi-snapclass&amp;#34;.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">volumeSnapshotClass&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;csi-snapclass&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The duration a snapshot is retained when the phase becomes Failed or Skipped&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is 72h (3d).&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">retainUnsuccessful&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">72h&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># MaxConcurrentReconciles is the maximum number of concurrent Reconciles which can be run. Defaults to 1.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">maxConcurrentReconciles&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># ScheduledSnapshots contains the settings for scheduled snapshot as part of backup management.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">scheduledSnapshots&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Whether or not the ScheduledSnapshot feature is enabled.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is true.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enable&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># MaxConcurrentReconciles is the maximum number of concurrent Reconciles which can be run. Defaults to 1.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">maxConcurrentReconciles&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Restores contains the settings for restoring (a snapshot) as part of backup management.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">restores&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Whether or not the Restore feature is enabled.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is true.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enable&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># MaxConcurrentReconciles is the maximum number of concurrent Reconciles which can be run. Defaults to 1.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">maxConcurrentReconciles&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">qdrant-cluster-manager&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">replicaCount&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">image&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">repository&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">registry.cloud.qdrant.io/qdrant/cluster-manager&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">pullPolicy&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">IfNotPresent&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Overrides the image tag whose default is the chart appVersion.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">tag&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">imagePullSecrets&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">qdrant-registry-creds&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">nameOverride&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">fullnameOverride&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;qdrant-cluster-manager&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">serviceAccount&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Specifies whether a service account should be created&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">create&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Automatically mount a ServiceAccount&amp;#39;s API credentials?&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">automount&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Annotations to add to the service account&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">annotations&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The name of the service account to use.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># If not set and create is true, a name is generated using the fullname template&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">podAnnotations&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">podLabels&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">podSecurityContext&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">runAsNonRoot&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">runAsUser&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">10001&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">runAsGroup&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">20001&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">fsGroup&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">30001&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">securityContext&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">capabilities&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">drop&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="l">ALL&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">readOnlyRootFilesystem&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">runAsNonRoot&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">runAsUser&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">10001&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">runAsGroup&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">20001&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">allowPrivilegeEscalation&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">seccompProfile&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">RuntimeDefault&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">service&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">ClusterIP&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">networkPolicy&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">create&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">resources&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># We usually recommend not to specify default resources and to leave this as a conscious&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># choice for the user. This also increases chances charts run on environments with little&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># resources, such as Minikube. If you do want to specify resources, uncomment the following&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># lines, adjust them as necessary, and remove the curly braces after &amp;#39;resources:&amp;#39;.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># limits:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># cpu: 100m&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># memory: 128Mi&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># requests:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># cpu: 100m&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># memory: 128Mi&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">nodeSelector&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">tolerations&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">affinity&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">qdrant-cluster-exporter&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">image&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">repository&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">registry.cloud.qdrant.io/qdrant/qdrant-cluster-exporter&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">pullPolicy&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Always&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Overrides the image tag. Defaults to the chart appVersion.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">tag&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">imagePullSecrets&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">qdrant-registry-creds&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">nameOverride&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">fullnameOverride&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">serviceAccount&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Specifies whether a service account should be created&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">create&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Annotations to add to the service account&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">annotations&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The name of the service account to use.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># If not set and create is true, a name is generated using the fullname template&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">rbac&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">create&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">## Additional labels to add to all resources&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">customLabels&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> 
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">podAnnotations&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">podSecurityContext&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">runAsNonRoot&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">runAsUser&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">65534&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">runAsGroup&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">65534&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">fsGroup&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">65534&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">securityContext&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">readOnlyRootFilesystem&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">runAsNonRoot&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">runAsUser&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">65534&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">runAsGroup&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">65534&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">service&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enabled&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">ClusterIP&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">port&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">9090&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">portName&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">metrics&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">strategy&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Prevents double-scraping by terminating the old pod before creating a new one&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The pod scrapes a large volume of metrics with high cardinality&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">type&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Recreate&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">resources&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># We usually recommend not setting default resources and to leave this as a conscious&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># choice for the user. This allows charts to run on environments with fewer&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># resources, such as Minikube. If you do want to specify resources, uncomment the following&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># lines, adjust them as necessary, and remove the curly braces after &amp;#39;resources:&amp;#39;.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># limits:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># cpu: 100m&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># memory: 128Mi&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># requests:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># cpu: 100m&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># memory: 128Mi&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">nodeSelector&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">tolerations&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">affinity&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">serviceMonitor&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enabled&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">honorLabels&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">scrapeInterval&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">60s&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">scrapeTimeout&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">55s&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Limit RBAC to the release namespace&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">limitRBAC&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Watched Namespaces Configuration&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">watch&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># If true, only the namespace where the exporter is deployed is watched, otherwise it watches the namespaces defined in watch.namespaces&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">onlyReleaseNamespace&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># an empty list watches all namespaces&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">namespaces&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Configuration for the qdrant cluster exporter&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">config&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The log level for the cluster-exporter&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Available options: DEBUG | INFO | WARN | ERROR&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">logLevel&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">INFO&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Controller related settings&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">controller&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Schedule for the controller to do a forced resync (if watches are missed / nothing happened)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">forceResyncPeriod&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">10h&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Indicates the maximum QPS from this client to the master&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is 200&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">qps&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">200&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Maximum burst for throttle.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is 500.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">burst&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">500&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Maximum number of concurrent reconciliations&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">maxConcurrentReconciles&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">20&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Controller&amp;#39;s object requeueing interval&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">requeueInterval&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">30s&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Exporter Metrics Configuration&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">metrics&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The port on which the metrics are exposed&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">port&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">9090&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The path on which the metrics are exposed&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">path&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">/metrics&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Exporter Health Check Configuration&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">healthz&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The port used for the health probe&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">port&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">8085&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Qdrant Telemetry and Metrics Cache Configuration&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">cache&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The period after which the cache is invalidated&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">ttl&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">60s&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Qdrant Rest Client Configuration&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">qdrant&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">restAPI&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The qdrant rest api port&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">port&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">6333&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Qdrant API Request Timeout after which requests to Qdrant are canceled if not completed&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">timeout&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">20s&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Path where qdrant exposes metrics&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">metricsPath&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;metrics&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Qdrant Telemetry Configuration&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">telemetry&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Path where qdrant exposes telemetry&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">path&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;telemetry&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The level of details for telemetry&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">detailsLevel&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">6&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Whether to anonymize the telemetry data&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">anonymize&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Create a Cluster</title><link>https://qdrant.tech/documentation/hybrid-cloud/hybrid-cloud-cluster-creation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/hybrid-cloud/hybrid-cloud-cluster-creation/</guid><description>&lt;h1 id="creating-a-qdrant-cluster-in-hybrid-cloud">Creating a Qdrant Cluster in Hybrid Cloud&lt;/h1>
&lt;p>Once a Hybrid Cloud Environment has been created you can follow the normal process to &lt;a href="https://qdrant.tech/documentation/cloud/create-cluster/">create a Qdrant cluster&lt;/a> in that environment. This page also contains additional information on how to create a &lt;a href="https://qdrant.tech/documentation/cloud/create-cluster/#creating-a-production-ready-cluster">production-ready cluster&lt;/a>.&lt;/p>
&lt;p>Make sure to select your Hybrid Cloud Environment as the target.&lt;/p>
&lt;p>&lt;img src="https://qdrant.tech/documentation/cloud/hybrid_cloud_create_cluster.png" alt="Create Hybrid Cloud Cluster">&lt;/p>
&lt;p>Note that in the &amp;ldquo;Kubernetes Configuration&amp;rdquo; section you can additionally configure:&lt;/p>
&lt;ul>
&lt;li>NodeSelectors for the Qdrant database pods&lt;/li>
&lt;li>Toleration for the Qdrant database pods&lt;/li>
&lt;li>TopologySpreadConstraints for the Qdrant database pods&lt;/li>
&lt;li>Additional labels for the Qdrant database pods&lt;/li>
&lt;li>A service type and annotations for the Qdrant database service&lt;/li>
&lt;/ul>
&lt;p>These settings can also be changed after the cluster is created on the cluster detail page.&lt;/p></description></item><item><title>Database Optimization</title><link>https://qdrant.tech/documentation/faq/database-optimization/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/faq/database-optimization/</guid><description>&lt;h1 id="frequently-asked-questions-database-optimization">Frequently Asked Questions: Database Optimization&lt;/h1>
&lt;h3 id="how-do-i-reduce-memory-usage">How do I reduce memory usage?&lt;/h3>
&lt;p>The primary source of memory usage is vector data. There are several ways to address that:&lt;/p>
&lt;ul>
&lt;li>Configure &lt;a href="https://qdrant.tech/documentation/manage-data/quantization/">Quantization&lt;/a> to reduce the memory usage of vectors.&lt;/li>
&lt;li>Configure on-disk vector storage&lt;/li>
&lt;/ul>
&lt;p>The choice of the approach depends on your requirements.
Read more about &lt;a href="https://qdrant.tech/documentation/operations/optimize/">configuring the optimal&lt;/a> use of Qdrant.&lt;/p>
&lt;h3 id="how-do-you-choose-the-machine-configuration">How do you choose the machine configuration?&lt;/h3>
&lt;p>There are two main scenarios of Qdrant usage in terms of resource consumption:&lt;/p></description></item><item><title>Final Project: Production-Ready Documentation Search Engine</title><link>https://qdrant.tech/course/essentials/day-6/final-project/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-6/final-project/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 6 
&lt;/div>

&lt;h1 id="final-project-production-ready-documentation-search-engine">Final Project: Production-Ready Documentation Search Engine&lt;/h1>
&lt;div class="video">
&lt;iframe 
 src="https://www.youtube.com/embed/CllIGw1QwLg?si=ruv4y9tk_nQpaDvs"
 frameborder="0"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
 referrerpolicy="strict-origin-when-cross-origin"
 allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;br/>
&lt;h2 id="your-mission">Your Mission&lt;/h2>
&lt;p>It&amp;rsquo;s time to synthesize everything you&amp;rsquo;ve learned into a portfolio-ready application. You&amp;rsquo;ll build a sophisticated documentation search engine that shows hybrid retrieval, multivector reranking, and production-quality evaluation.&lt;/p>
&lt;p>Your search engine will understand both semantic meaning and exact keywords, then use fine-grained reranking to surface the most relevant documentation sections. When someone searches for &amp;ldquo;how to configure HNSW parameters,&amp;rdquo; your system should return the exact section with practical examples, not just a page that mentions &amp;ldquo;HNSW&amp;rdquo; somewhere.&lt;/p></description></item><item><title>HNSW Indexing Fundamentals</title><link>https://qdrant.tech/course/essentials/day-2/what-is-hnsw/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-2/what-is-hnsw/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 2 
&lt;/div>

&lt;h1 id="hnsw-indexing-fundamentals">HNSW Indexing Fundamentals&lt;/h1>
&lt;p>At this point, you&amp;rsquo;ve learned how vector search retrieves the nearest vectors to a query using cosine similarity, dot product, or Euclidean distance. How does this work at scale?&lt;/p>
&lt;div class="video">
&lt;iframe 
 src="https://www.youtube.com/embed/-q-pLgGDYr4?si=Ln0WYymciqPxQKJl"
 frameborder="0"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
 referrerpolicy="strict-origin-when-cross-origin"
 allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;h2 id="why-vector-search-needs-indexing">Why Vector Search Needs Indexing&lt;/h2>
&lt;h3 id="the-vector-search-challenge">The Vector Search Challenge&lt;/h3>
&lt;p>You might wonder if Qdrant calculates the distance to every single vector in your collection for each query. This method, known as brute force search, technically works but with millions or billions of vectors this is too slow per query.&lt;/p></description></item><item><title>Hybrid Search with Reranking</title><link>https://qdrant.tech/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://qdrant.tech/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>Installing Dependencies</title><link>https://qdrant.tech/course/multi-vector-search/module-0/installing-dependencies/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/multi-vector-search/module-0/installing-dependencies/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Module 0 
&lt;/div>

&lt;h1 id="installing-dependencies">Installing Dependencies&lt;/h1>
&lt;p>To work with multi-vector search in Qdrant, you&amp;rsquo;ll need several Python libraries: Qdrant client for search and FastEmbed for multi-vector embeddings.&lt;/p>
&lt;p>We&amp;rsquo;ll set up a clean Python environment and install everything you need to start experimenting with multi-vector representations.&lt;/p>
&lt;h2 id="python-environment-setup">Python Environment Setup&lt;/h2>
&lt;h3 id="using-uv-recommended">Using uv (Recommended)&lt;/h3>
&lt;p>For this course, we recommend using &lt;a href="https://docs.astral.sh/uv/" target="_blank" rel="noopener nofollow">uv&lt;/a>, a modern Python package manager that&amp;rsquo;s significantly faster and more reliable than traditional pip. It handles virtual environments and dependencies with better performance and dependency resolution.&lt;/p></description></item><item><title>Integrating with Haystack</title><link>https://qdrant.tech/course/essentials/day-7/haystack/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-7/haystack/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 7 
&lt;/div>

&lt;h1 id="integrating-with-haystack">Integrating with Haystack&lt;/h1>
&lt;p>Build end-to-end agentic pipelines with Qdrant.&lt;/p>

 &lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/lMinhPZufTc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div>

&lt;h2 id="what-youll-learn">What You&amp;rsquo;ll Learn&lt;/h2>
&lt;ul>
&lt;li>Haystack pipeline integration&lt;/li>
&lt;li>Document processing workflows&lt;/li>
&lt;li>Question answering systems&lt;/li>
&lt;li>Search and retrieval optimization&lt;/li>
&lt;li>Sparse vector search and metadata filtering&lt;/li>
&lt;li>LLM-based agent development&lt;/li>
&lt;li>Movie recommendation system architecture&lt;/li>
&lt;/ul>
&lt;h2 id="haystack-movie-recommendation-assistant">Haystack Movie Recommendation Assistant&lt;/h2>
&lt;p>Haystack provides a powerful framework for building sophisticated recommendation systems that combine multiple search strategies. The movie recommendation assistant demonstrates how to leverage sparse vector search, metadata filtering, and LLM-based agents to handle complex natural language queries like &amp;ldquo;find me a highly-rated action movie about car racing&amp;rdquo; or &amp;ldquo;recommend five Japanese thrillers.&amp;rdquo;&lt;/p></description></item><item><title>MaxSim Distance Metric</title><link>https://qdrant.tech/course/multi-vector-search/module-1/maxsim-distance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/multi-vector-search/module-1/maxsim-distance/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Module 1 
&lt;/div>

&lt;h1 id="maxsim-distance-metric">MaxSim Distance Metric&lt;/h1>
&lt;p>MaxSim (Maximum Similarity) is the core distance metric for late interaction models. Unlike traditional vector similarity metrics that operate on pairs of single vectors, MaxSim computes similarity between sequences of vectors.&lt;/p>
&lt;p>Understanding MaxSim is important for working with multi-vector search effectively and understanding its performance characteristics.&lt;/p>
&lt;hr>
&lt;div class="video">
&lt;iframe
 src="https://www.youtube-nocookie.com/embed/JvSvuK19m8A?rel=0"
 frameborder="0"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
 referrerpolicy="strict-origin-when-cross-origin"
 allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;hr>
&lt;p>&lt;strong>Follow along in Colab:&lt;/strong> &lt;a href="https://colab.research.google.com/github/qdrant/examples/blob/master/course-multi-vector-search/module-1/maxsim-distance.ipynb">
&lt;img src="https://colab.research.google.com/assets/colab-badge.svg" style="display:inline; margin:0;" alt="Open In Colab"/>
&lt;/a>&lt;/p>
&lt;hr>
&lt;h2 id="the-maxsim-formula">The MaxSim Formula&lt;/h2>
&lt;p>In late interaction, we represent documents and queries as sequences of token vectors. But how do we measure similarity between two sets of vectors?&lt;/p></description></item><item><title>Multivectors and Late Interaction</title><link>https://qdrant.tech/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://qdrant.tech/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>Multivectors for Late Interaction Models</title><link>https://qdrant.tech/course/essentials/day-5/colbert-multivectors/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-5/colbert-multivectors/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 5 
&lt;/div>

&lt;h1 id="multivectors-for-late-interaction-models">Multivectors for Late Interaction Models&lt;/h1>
&lt;div class="video">
&lt;iframe 
 src="https://www.youtube.com/embed/8ptlXSsSEPk?si=TzsWlastazBQPWWb"
 frameborder="0"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
 referrerpolicy="strict-origin-when-cross-origin"
 allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;br/>
&lt;p>Many embedding models represent data as a single vector. Transformer-based encoders achieve this by pooling the per-token vector matrix from the final layer into a single vector. That works great for most cases. But when your documents get more complex, cover multiple topics, or require context sensitivity, that one-size-fits-all compression starts to break down. You lose granularity and semantic alignment (though chunking and learned pooling mitigate this to an extent).&lt;/p></description></item><item><title>Points, Vectors and Payloads</title><link>https://qdrant.tech/course/essentials/day-1/embedding-models/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-1/embedding-models/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 1 
&lt;/div>

&lt;h1 id="points-vectors-and-payloads">Points, Vectors and Payloads&lt;/h1>
&lt;div class="video">
&lt;iframe 
 src="https://www.youtube.com/embed/Q6ZalzJ8dv8?si=TtxNB0PduStsOVGl"
 frameborder="0"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
 referrerpolicy="strict-origin-when-cross-origin"
 allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;br/>
&lt;p>Understanding Qdrant&amp;rsquo;s core data model is essential for building effective vector search applications. This lesson establishes the precise technical vocabulary and concepts you&amp;rsquo;ll use throughout the course.&lt;/p>
&lt;h2 id="points-the-core-entity">Points: The Core Entity&lt;/h2>
&lt;p>Points are the central entity that Qdrant operates with. A point is a record consisting of three components:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Unique ID&lt;/strong> (64-bit unsigned integer or UUID)&lt;/li>
&lt;li>&lt;strong>Vector&lt;/strong> (dense, sparse, or multivector)&lt;/li>
&lt;li>&lt;strong>Optional Payload&lt;/strong> (metadata)&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://qdrant.tech/courses/day1/point-2.png" alt="Creating an embedding">&lt;/p></description></item><item><title>Qdrant Setup</title><link>https://qdrant.tech/course/essentials/day-0/qdrant-cloud/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-0/qdrant-cloud/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 0 
&lt;/div>

&lt;h1 id="qdrant-setup">Qdrant Setup&lt;/h1>
&lt;div class="video">
&lt;iframe 
 src="https://www.youtube.com/embed/9JBlgNBQoOY?si=7t3LAvMsUUtlUMN7&amp;rel=0"
 frameborder="0"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
 referrerpolicy="strict-origin-when-cross-origin"
 allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;br/>
&lt;p>Spin up production-grade vector search in minutes. Qdrant Cloud gives you a managed endpoint with TLS, automatic backups, high-availability options, and a clean API.&lt;/p>
&lt;h2 id="create-your-cluster">Create your cluster&lt;/h2>
&lt;ol>
&lt;li>Sign up at &lt;a href="https://cloud.qdrant.io/signup" target="_blank" rel="noopener nofollow">cloud.qdrant.io&lt;/a> with email, Google, or GitHub.&lt;/li>
&lt;li>Open &lt;strong>Clusters&lt;/strong> → &lt;strong>Create a Free Cluster&lt;/strong>. The Free Tier is enough for this course.&lt;/li>
&lt;/ol>
&lt;p>&lt;img src="https://qdrant.tech/docs/gettingstarted/gui-quickstart/create-cluster.png" alt="Create cluster">&lt;/p>
&lt;ol start="3">
&lt;li>Pick a region close to your users or app.&lt;/li>
&lt;li>When the cluster is ready, copy the API key and store it securely. You can make new keys later from &lt;strong>API Keys&lt;/strong> on the cluster page.&lt;/li>
&lt;/ol>
&lt;p>&lt;img src="https://qdrant.tech/docs/gettingstarted/gui-quickstart/api-key.png" alt="Get API key">&lt;/p></description></item><item><title>Relevance Feedback Retrieval in Qdrant</title><link>https://qdrant.tech/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://qdrant.tech/documentation/tutorials-search-engineering/using-relevance-feedback/</guid><description>&lt;h1 id="relevance-feedback-in-qdrant">Relevance Feedback in Qdrant&lt;/h1>
&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/using-relevance-feedback/Customizing_Relevance_Feedback.ipynb" target="_blank" rel="noopener nofollow">GitHub&lt;/a>&lt;/th>
 &lt;th>&lt;a href="https://githubtocolab.com/qdrant/examples/blob/master/using-relevance-feedback/Customizing_Relevance_Feedback.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>In Qdrant 1.17 we introduced a new &lt;a href="https://qdrant.tech/documentation/search/search-relevance/#relevance-feedback">Relevance Feedback Query&lt;/a>, our scalable, first ever vector index-native approach to &lt;a href="https://qdrant.tech/articles/search-feedback-loop/">incorporating relevance feedback&lt;/a> in retrieval.&lt;/p>
&lt;p>In this tutorial, you&amp;rsquo;ll see how to:&lt;/p>
&lt;ol>
&lt;li>Customize Relevance Feedback Query for your Qdrant collection, retriever and feedback model.&lt;/li>
&lt;li>Add customized Relevance Feedback Query to your search pipeline.&lt;/li>
&lt;li>Evaluate the gains it brings to this pipeline.&lt;/li>
&lt;/ol>
&lt;h2 id="relevance-feedback">Relevance Feedback&lt;/h2>
&lt;blockquote>
&lt;p>Relevance feedback distills signals about the relevance of current search results into the next retrieval iteration, surfacing better results over time.&lt;/p></description></item><item><title>Semantic Search Basics</title><link>https://qdrant.tech/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://qdrant.tech/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://qdrant.tech/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://qdrant.tech/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>Sparse Vectors and Inverted Indexes</title><link>https://qdrant.tech/course/essentials/day-3/sparse-vectors/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-3/sparse-vectors/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 3 
&lt;/div>

&lt;h1 id="sparse-vectors-and-inverted-indexes">Sparse Vectors and Inverted Indexes&lt;/h1>
&lt;p>Create and index &lt;a href="https://qdrant.tech/documentation/manage-data/vectors/#sparse-vectors">sparse vector&lt;/a> representations for keywords-based search and recommendations.&lt;/p>
&lt;div class="video">
&lt;iframe
 src="https://www.youtube.com/embed/_v7ntnqsqY4" 
 frameborder="0"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
 referrerpolicy="strict-origin-when-cross-origin"
 allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;br/>
&lt;h2 id="what-youll-learn">What You&amp;rsquo;ll Learn&lt;/h2>
&lt;ul>
&lt;li>Understanding sparse vector representations&lt;/li>
&lt;li>Using sparse vectors in Qdrant&lt;/li>
&lt;/ul>
&lt;h2 id="sparse-vector-representations">Sparse Vector Representations&lt;/h2>
&lt;p>Sparse vectors are high dimensional vectors, filled up with zeroes except for a few dimensions. Each dimension of a sparse vector refers to a certain object, and its value – a role of this object in this sparse representation.&lt;/p></description></item><item><title>User Management</title><link>https://qdrant.tech/documentation/cloud-rbac/user-management/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/cloud-rbac/user-management/</guid><description>&lt;h1 id="user-management">User Management&lt;/h1>
&lt;blockquote>
&lt;p>💡 You can access this in &lt;strong>Access Management &amp;gt; User &amp;amp; Role Management&lt;/strong> &lt;em>if available see &lt;a href="https://qdrant.tech/documentation/cloud-rbac/">this page for details&lt;/a>.&lt;/em>&lt;/p>
&lt;/blockquote>
&lt;h2 id="inviting-users-to-an-account">Inviting Users to an Account&lt;/h2>
&lt;p>Account users can be managed via the &lt;strong>User Management&lt;/strong> section. Start by selecting a role from the dropdown and then type the name of the user you wish to manage. For users who are not in your account you will have the option to invite them. For users already in your account you can add them to the role, or see if the role has already been assigned to them.&lt;/p></description></item><item><title>Vector Quantization Methods</title><link>https://qdrant.tech/course/essentials/day-4/what-is-quantization/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-4/what-is-quantization/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 4 
&lt;/div>

&lt;h1 id="vector-quantization-methods">Vector Quantization Methods&lt;/h1>
&lt;div class="video">
&lt;iframe 
 src="https://www.youtube.com/embed/oExGyAEOpP4"
 frameborder="0"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
 referrerpolicy="strict-origin-when-cross-origin"
 allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;p>Production vector search engines face an inevitable scaling challenge: memory requirements grow with dataset size, while search latency demands vectors remain in fast storage. &lt;a href="https://qdrant.tech/documentation/manage-data/quantization/">Quantization&lt;/a> provides the solution by compressing vector representations while maintaining retrieval quality - but the method you choose fundamentally determines your system&amp;rsquo;s performance characteristics.&lt;/p>
&lt;h2 id="the-memory-economics">The Memory Economics&lt;/h2>
&lt;p>Consider the mathematics of scale. OpenAI&amp;rsquo;s &lt;code>text-embedding-3-small&lt;/code> produces 1536-dimensional vectors requiring 6 KB each (1536 × 4 bytes per float32). This scales predictably: 1 million vectors consume 6 GB, 10 million require 60 GB, and 100 million demand 600 GB of memory.&lt;/p></description></item><item><title>Vector Quantization Techniques</title><link>https://qdrant.tech/course/multi-vector-search/module-3/quantization-techniques/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/multi-vector-search/module-3/quantization-techniques/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Module 3 
&lt;/div>

&lt;h1 id="vector-quantization-techniques">Vector Quantization Techniques&lt;/h1>
&lt;p>Vector quantization compresses vectors by reducing the precision of each component. Qdrant supports several quantization methods that can reduce memory usage by 4-64x, sometimes with minimal quality loss.&lt;/p>
&lt;p>Choosing the right quantization method depends on your quality requirements and memory constraints.&lt;/p>
&lt;hr>
&lt;div class="video">
&lt;iframe
 src="https://www.youtube-nocookie.com/embed/we-AEfiXaow?rel=0"
 frameborder="0"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
 referrerpolicy="strict-origin-when-cross-origin"
 allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;hr>
&lt;p>&lt;strong>Follow along in Colab:&lt;/strong> &lt;a href="https://colab.research.google.com/github/qdrant/examples/blob/master/course-multi-vector-search/module-3/quantization-techniques.ipynb">
&lt;img src="https://colab.research.google.com/assets/colab-badge.svg" style="display:inline; margin:0;" alt="Open In Colab"/>
&lt;/a>&lt;/p>
&lt;hr>
&lt;h2 id="the-memory-challenge-with-multi-vector-models">The Memory Challenge with Multi-Vector Models&lt;/h2>
&lt;p>By default, embedding models produce vectors with &lt;strong>float32 precision&lt;/strong> - each component uses 32 bits (4 bytes) of memory. For single-vector embeddings, this is manageable. But multi-vector models like &lt;strong>ColModernVBERT&lt;/strong> change the equation dramatically.&lt;/p></description></item><item><title>Qdrant under the hood: 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>With Qdrant &lt;a href="https://github.com/qdrant/qdrant/releases/tag/v1.3.0" target="_blank" rel="noopener nofollow">version 1.3.0&lt;/a> we
introduce the alternative io_uring based &lt;em>async uring&lt;/em> 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>IO bound&lt;/em> (that is, mostly waiting
on disk).&lt;/p>
&lt;h2 id="inputoutput">Input+Output&lt;/h2>
&lt;p>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></description></item><item><title>Filtered search benchmark</title><link>https://qdrant.tech/benchmarks/filtered-search-intro/</link><pubDate>Mon, 13 Feb 2023 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/benchmarks/filtered-search-intro/</guid><description>&lt;h1 id="filtered-search-benchmark">Filtered search benchmark&lt;/h1>
&lt;p>Applying filters to search results brings a whole new level of complexity.
It is no longer enough to apply one algorithm to plain data. With filtering, it becomes a matter of the &lt;em>cross-integration&lt;/em> of the different indices.&lt;/p>
&lt;p>To measure how well different search engines perform in this scenario, we have prepared a set of &lt;strong>Filtered ANN Benchmark Datasets&lt;/strong> -
&lt;a href="https://github.com/qdrant/ann-filtering-benchmark-datasets" target="_blank" rel="noopener nofollow">https://github.com/qdrant/ann-filtering-benchmark-datasets&lt;/a>&lt;/p>
&lt;p>It is similar to the ones used in the &lt;a href="https://github.com/erikbern/ann-benchmarks/" target="_blank" rel="noopener nofollow">ann-benchmarks project&lt;/a> but enriched with payload metadata and pre-generated filtering requests. It includes synthetic and real-world datasets with various filters, from keywords to geo-spatial queries.&lt;/p></description></item><item><title>Accuracy Recovery with Rescoring</title><link>https://qdrant.tech/course/essentials/day-4/rescoring-oversampling-indexing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-4/rescoring-oversampling-indexing/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 4 
&lt;/div>

&lt;h1 id="accuracy-recovery-with-rescoring">Accuracy Recovery with Rescoring&lt;/h1>
&lt;div class="video">
&lt;iframe 
 src="https://www.youtube.com/embed/ksw3Ok-XXqo"
 frameborder="0"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
 referrerpolicy="strict-origin-when-cross-origin"
 allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;br/>
When we use quantization methods like Scalar, Binary, or Product Quantization, we're compressing our vectors to save memory and improve performance. However, this compression can slightly reduce the accuracy of our similarity searches because the quantized vectors are approximations of the original data. To mitigate this loss of accuracy, you can use oversampling and rescoring, which help improve the accuracy of the final search results.
&lt;p>So let&amp;rsquo;s say we are performing a search in a collection with Binary Quantization. Qdrant retrieves the top candidates using the quantized vectors based on their similarity to the query vector, as determined by the quantized data. This step is fast because we&amp;rsquo;re using the quantized vectors.&lt;/p></description></item><item><title>Collaborative Filtering</title><link>https://qdrant.tech/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://qdrant.tech/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>Combining Vector Search and Filtering</title><link>https://qdrant.tech/course/essentials/day-2/filterable-hnsw/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-2/filterable-hnsw/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 2 
&lt;/div>

&lt;h1 id="combining-vector-search-and-filtering">Combining Vector Search and Filtering&lt;/h1>
&lt;p>We&amp;rsquo;ve talked about how Qdrant uses the &lt;a href="https://qdrant.tech/documentation/manage-data/indexing/#filterable-index">HNSW&lt;/a> graph to efficiently search dense vectors. But in real-world applications, you&amp;rsquo;ll often want to constrain your search using filters. This creates unique challenges for graph traversal that Qdrant solves elegantly.&lt;/p>
&lt;div class="video">
&lt;iframe 
 src="https://www.youtube.com/embed/VJVHU47IAik?si=nkaHShqrlaO4fj7O"
 frameborder="0"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
 referrerpolicy="strict-origin-when-cross-origin"
 allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;h2 id="the-challenge-filters-break-graph-connectivity">The Challenge: Filters Break Graph Connectivity&lt;/h2>
&lt;p>Consider retrieving items from an online store collection where you only want to show laptops priced under $1,000. That price information, along with the category &amp;rsquo;laptop&amp;rsquo;, isn&amp;rsquo;t part of the vector - it lives in the &lt;a href="https://qdrant.tech/documentation/manage-data/payload/">payload&lt;/a>.&lt;/p></description></item><item><title>Configure, Scale &amp; Update Clusters</title><link>https://qdrant.tech/documentation/hybrid-cloud/configure-scale-upgrade/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/hybrid-cloud/configure-scale-upgrade/</guid><description>&lt;h1 id="configure-scale--update-qdrant-hybrid-cloud-clusters">Configure, Scale &amp;amp; Update Qdrant Hybrid Cloud Clusters&lt;/h1>
&lt;h2 id="configure-clusters">Configure Clusters&lt;/h2>
&lt;p>Alongside Hybrid Cloud specific scheduling options, you can also adjust various other advanced configuration options for your clusters. See &lt;a href="https://qdrant.tech/documentation/cloud/configure-cluster/">Configure Clusters&lt;/a> for more details.&lt;/p>
&lt;h2 id="scale-clusters">Scale Clusters&lt;/h2>
&lt;p>Hybrid cloud clusters can be scaled up and down, horizontally and vertically, at any time. For more details see &lt;a href="https://qdrant.tech/documentation/cloud/cluster-scaling/">Scale Clusters&lt;/a>.&lt;/p>
&lt;h3 id="automatic-shard-rebalancing">Automatic Shard Rebalancing&lt;/h3>
&lt;p>Qdrant Cloud supports automatic shard rebalancing when scaling your cluster horizontally. This ensures that data is evenly distributed across the nodes, optimizing performance and resource utilization. For more details see &lt;a href="https://qdrant.tech/documentation/cloud/configure-cluster/#shard-rebalancing">Shard Rebalancing&lt;/a>.&lt;/p></description></item><item><title>Course Completion and Next Steps</title><link>https://qdrant.tech/course/essentials/day-6/congratulations/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-6/congratulations/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 6 
&lt;/div>

&lt;h1 id="course-completion-and-next-steps">Course Completion and Next Steps&lt;/h1>
&lt;h2 id="congratulations-youve-mastered-vector-search">Congratulations! You&amp;rsquo;ve Mastered Vector Search.&lt;/h2>
&lt;p>You&amp;rsquo;ve built and shipped a complete vector search application and gained the expertise to run Qdrant in production. This achievement represents mastery of modern retrieval systems and positions you at the forefront of AI-powered search technology.&lt;/p>
&lt;h2 id="your-learning-journey">Your Learning Journey&lt;/h2>
&lt;p>You&amp;rsquo;ve progressed from vector search fundamentals to production-ready expertise:&lt;/p>
&lt;p>&lt;strong>Foundation Building&lt;/strong> (Days 0-2): You mastered the core concepts of vector search, learned how similarity metrics work, and understood how HNSW indexing enables fast retrieval at scale.&lt;/p></description></item><item><title>Demo: Keyword Search with Sparse Vectors</title><link>https://qdrant.tech/course/essentials/day-3/sparse-retrieval-demo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-3/sparse-retrieval-demo/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 3 
&lt;/div>

&lt;h1 id="demo-keyword-search-with-sparse-vectors">Demo: Keyword Search with Sparse Vectors&lt;/h1>
&lt;p>Use sparse vectors for keywords-based text retrieval.&lt;/p>
&lt;div class="video">
&lt;iframe
 src="https://www.youtube.com/embed/lp8rLJdqUg8"
 frameborder="0"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
 referrerpolicy="strict-origin-when-cross-origin"
 allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;br/>
&lt;h2 id="what-youll-learn">What You&amp;rsquo;ll Learn&lt;/h2>
&lt;ul>
&lt;li>Connection between Sparse Vectors &amp;amp; keywords-based retrieval&lt;/li>
&lt;li>Using BM25 in Qdrant&lt;/li>
&lt;li>Sparse Neural Retrieval&lt;/li>
&lt;li>Using SPLADE++ in Qdrant&lt;/li>
&lt;/ul>
&lt;h2 id="text-encoding">Text Encoding&lt;/h2>
&lt;p>In sparse vectors, each non‑zero dimension represents an object that plays a specific role for the item being represented. When we work with text, the natural choice for these objects is words.&lt;/p></description></item><item><title>Distance Metrics</title><link>https://qdrant.tech/course/essentials/day-1/distance-metrics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-1/distance-metrics/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 1 
&lt;/div>

&lt;h1 id="distance-metrics">Distance Metrics&lt;/h1>
&lt;p>After vectors are stored, we can use their spatial properties to perform &lt;a href="https://qdrant.tech/documentation/search/search/">nearest neighbor searches&lt;/a> that retrieve semantically similar items based on how close they are in this space.&lt;/p>
&lt;p>The position of a vector in embedding space only reflects meaning as far as the embedding model has learned to encode it. The model and its training objective tell you what &amp;ldquo;close&amp;rdquo; means.&lt;/p>
&lt;div class="video">
&lt;iframe 
 src="https://www.youtube.com/embed/P_vsVPsCgTQ?si=dvMvCSnT3M1MfRQT"
 frameborder="0"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
 referrerpolicy="strict-origin-when-cross-origin"
 allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;br/>
&lt;h2 id="quick-rule-of-thumb">Quick rule of thumb&lt;/h2>
&lt;p>Most users do &lt;strong>not&lt;/strong> need to design a distance metric from scratch:&lt;/p></description></item><item><title>Hugging Face Dataset Ingestion</title><link>https://qdrant.tech/documentation/tutorials-basics/huggingface-datasets/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/tutorials-basics/huggingface-datasets/</guid><description>&lt;h1 id="load-hugging-face-datasets-into-qdrant">Load Hugging Face Datasets into Qdrant&lt;/h1>
&lt;p>&lt;a href="https://huggingface.co/" target="_blank" rel="noopener nofollow">Hugging Face&lt;/a> provides a platform for sharing and using ML models and
datasets. &lt;a href="https://huggingface.co/Qdrant" target="_blank" rel="noopener nofollow">Qdrant&lt;/a> also publishes datasets along with the
embeddings that you can use to practice with Qdrant and build your applications based on semantic
search. &lt;strong>Please &lt;a href="https://qdrant.to/discord" target="_blank" rel="noopener nofollow">let us know&lt;/a> if you&amp;rsquo;d like to see a specific dataset!&lt;/strong>&lt;/p>
&lt;h2 id="arxiv-titles-instructorxl-embeddings">arxiv-titles-instructorxl-embeddings&lt;/h2>
&lt;p>&lt;a href="https://huggingface.co/datasets/Qdrant/arxiv-titles-instructorxl-embeddings" target="_blank" rel="noopener nofollow">This dataset&lt;/a> contains
embeddings generated from the paper titles only. Each vector has a payload with the title used to
create it, along with the DOI (Digital Object Identifier).&lt;/p></description></item><item><title>Hybrid Search with FastEmbed</title><link>https://qdrant.tech/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://qdrant.tech/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://qdrant.tech/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://qdrant.tech/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>Implementing a Basic Vector Search</title><link>https://qdrant.tech/course/essentials/day-0/building-simple-vector-search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-0/building-simple-vector-search/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 0 
&lt;/div>

&lt;h1 id="implementing-a-basic-vector-search">Implementing a Basic Vector Search&lt;/h1>
&lt;div class="video">
&lt;iframe 
 src="https://www.youtube.com/embed/_83L9ZIoOjM?si=ZTpn6fMXSjc_7JgL"
 frameborder="0"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
 referrerpolicy="strict-origin-when-cross-origin"
 allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;p>Follow along as we build your first collection, insert vectors, and run similarity searches. This guided tutorial walks you through each step.&lt;/p>
&lt;h2 id="step-1-install-the-qdrant-client">Step 1: Install the Qdrant Client&lt;/h2>
&lt;p>To interact with Qdrant, we need the Python client. This enables us to communicate with the Qdrant service, manage collections, and perform vector searches.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="err">!&lt;/span>&lt;span class="n">pip&lt;/span> &lt;span class="n">install&lt;/span> &lt;span class="n">qdrant&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">client&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="step-2-import-required-libraries">Step 2: Import Required Libraries&lt;/h2>
&lt;p>Import the necessary modules from the qdrant-client package. The QdrantClient class establishes connection to Qdrant, while the models module provides configurations for &lt;code>Distance&lt;/code>, &lt;code>VectorParams&lt;/code>, and &lt;code>PointStruct&lt;/code>.&lt;/p></description></item><item><title>Integrating with Unstructured.io</title><link>https://qdrant.tech/course/essentials/day-7/unstructured/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-7/unstructured/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 7 
&lt;/div>

&lt;h1 id="integrating-with-unstructuredio">Integrating with Unstructured.io&lt;/h1>
&lt;p>Process and vectorize documents with Unstructured.io and Qdrant.&lt;/p>

 &lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/FRIOwOy6VZk?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div>

&lt;h2 id="what-youll-learn">What You&amp;rsquo;ll Learn&lt;/h2>
&lt;ul>
&lt;li>Document processing with Unstructured.io&lt;/li>
&lt;li>Multi-format document ingestion&lt;/li>
&lt;li>Structured data extraction&lt;/li>
&lt;li>Automated vectorization pipelines&lt;/li>
&lt;li>Enterprise data transformation workflows&lt;/li>
&lt;li>VLM-powered document understanding&lt;/li>
&lt;li>Production-ready ETL pipelines&lt;/li>
&lt;/ul>
&lt;h2 id="unstructured-enterprise-data-processing">Unstructured Enterprise Data Processing&lt;/h2>
&lt;p>Unstructured.io addresses the critical challenge of processing unstructured enterprise data, which typically accounts for 80% of enterprise information. The platform provides a composable solution to transform PDFs, Word documents, emails, and other unstructured formats into structured outputs optimized for GenAI initiatives, eliminating the complexity of custom scripts and tools.&lt;/p></description></item><item><title>Managing a Cluster</title><link>https://qdrant.tech/documentation/private-cloud/qdrant-cluster-management/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/private-cloud/qdrant-cluster-management/</guid><description>&lt;h1 id="managing-a-qdrant-cluster">Managing a Qdrant Cluster&lt;/h1>
&lt;p>The most minimal QdrantCluster configuration is:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">apiVersion&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">qdrant.io/v1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">kind&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">QdrantCluster&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">metadata&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">qdrant-a7d8d973-0cc5-42de-8d7b-c29d14d24840&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">labels&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">cluster-id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;a7d8d973-0cc5-42de-8d7b-c29d14d24840&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">customer-id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;acme-industries&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">spec&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;a7d8d973-0cc5-42de-8d7b-c29d14d24840&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">version&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;v1.11.3&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">size&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">resources&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">cpu&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">100m&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">memory&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;1Gi&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">storage&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;2Gi&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The &lt;code>id&lt;/code> should be unique across all Qdrant clusters in the same namespace, the &lt;code>name&lt;/code> must follow the above pattern and the &lt;code>cluster-id&lt;/code> and &lt;code>customer-id&lt;/code> labels are mandatory.&lt;/p></description></item><item><title>Permission Reference</title><link>https://qdrant.tech/documentation/cloud-rbac/permission-reference/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/cloud-rbac/permission-reference/</guid><description>&lt;h1 id="permission-reference">&lt;strong>Permission Reference&lt;/strong>&lt;/h1>
&lt;p>This document outlines the permissions available in Qdrant Cloud.&lt;/p>
&lt;hr>
&lt;blockquote>
&lt;p>💡 When enabling &lt;code>write:*&lt;/code> permissions in the UI, the corresponding &lt;code>read:*&lt;/code> permission will also be enabled and non-actionable. This guarantees access to resources after creating and/or updating them.&lt;/p>
&lt;/blockquote>
&lt;h2 id="identity-and-access-management">&lt;strong>Identity and Access Management&lt;/strong>&lt;/h2>
&lt;p>Permissions for users, user roles, management keys, and invitations.&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Permission&lt;/th>
 &lt;th>Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;code>read:roles&lt;/code>&lt;/td>
 &lt;td>View roles in the Access Management page.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>write:roles&lt;/code>&lt;/td>
 &lt;td>Create and modify roles in the Access Management page.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>delete:roles&lt;/code>&lt;/td>
 &lt;td>Remove roles in the Access Management page.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>read:management_keys&lt;/code>&lt;/td>
 &lt;td>View Cloud Management Keys in the Access Management page.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>write:management_keys&lt;/code>&lt;/td>
 &lt;td>Create and manage Cloud Management Keys.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>delete:management_keys&lt;/code>&lt;/td>
 &lt;td>Remove Cloud Management Keys in the Access Management page.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>write:invites&lt;/code>&lt;/td>
 &lt;td>Invite new users to an account and revoke invitations.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>read:invites&lt;/code>&lt;/td>
 &lt;td>View pending invites in an account.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>delete:invites&lt;/code>&lt;/td>
 &lt;td>Remove an invitation.&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>read:users&lt;/code>&lt;/td>
 &lt;td>View user details in the profile page. &lt;br> - Also applicable in User Management and Role details (User tab).&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>delete:users&lt;/code>&lt;/td>
 &lt;td>Remove users from an account. &lt;br> - Applicable in User Management and Role details (User tab).&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="cluster">&lt;strong>Cluster&lt;/strong>&lt;/h2>
&lt;p>Permissions for API Keys, backups, clusters, and backup schedules.&lt;/p></description></item><item><title>Pooling Techniques</title><link>https://qdrant.tech/course/multi-vector-search/module-3/pooling-techniques/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/multi-vector-search/module-3/pooling-techniques/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Module 3 
&lt;/div>

&lt;h1 id="pooling-techniques">Pooling Techniques&lt;/h1>
&lt;p>While quantization reduces the size of each vector, pooling reduces the number of vectors per document. By intelligently combining token embeddings, you can achieve significant memory savings while preserving retrieval quality.&lt;/p>
&lt;hr>
&lt;div class="video">
&lt;iframe
 src="https://www.youtube-nocookie.com/embed/idDXBOrIuik?rel=0"
 frameborder="0"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
 referrerpolicy="strict-origin-when-cross-origin"
 allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;hr>
&lt;p>&lt;strong>Follow along in Colab:&lt;/strong> &lt;a href="https://colab.research.google.com/github/qdrant/examples/blob/master/course-multi-vector-search/module-3/pooling-techniques.ipynb">
&lt;img src="https://colab.research.google.com/assets/colab-badge.svg" style="display:inline; margin:0;" alt="Open In Colab"/>
&lt;/a>&lt;/p>
&lt;hr>
&lt;h2 id="pooling-in-embedding-models">Pooling in Embedding Models&lt;/h2>
&lt;p>Pooling isn&amp;rsquo;t new to vector search - it&amp;rsquo;s fundamental to how most embedding models work. When you encode text with models like Sentence Transformers, the model first generates embeddings for each token in your input. But to create a single vector representing the entire text, the model must &lt;strong>pool&lt;/strong> these token embeddings together.&lt;/p></description></item><item><title>The Universal Query API</title><link>https://qdrant.tech/course/essentials/day-5/universal-query-api/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-5/universal-query-api/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 5 
&lt;/div>

&lt;h1 id="the-universal-query-api">The Universal Query API&lt;/h1>
&lt;p>Picture this: a customer types &amp;ldquo;leather jackets&amp;rdquo; into your store&amp;rsquo;s search bar. You want to show items that match the style semantically - so a bomber jacket surfaces even if it doesn&amp;rsquo;t mention &amp;ldquo;leather jackets&amp;rdquo; verbatim - but you also need to enforce your business rules. Only products under $200, only items in stock, only jackets released within the past year. Traditionally, you&amp;rsquo;d fire off a search, gather results, then apply filters and glue code. With Qdrant&amp;rsquo;s &lt;a href="https://qdrant.tech/documentation/search/hybrid-queries/">Universal Query API&lt;/a>, all of that happens in one declarative request.&lt;/p></description></item><item><title>Use Cases for Multi-Vector Search</title><link>https://qdrant.tech/course/multi-vector-search/module-1/use-cases-multi-vector/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/multi-vector-search/module-1/use-cases-multi-vector/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Module 1 
&lt;/div>

&lt;h1 id="use-cases-for-multi-vector-search">Use Cases for Multi-Vector Search&lt;/h1>
&lt;p>&lt;strong>When is the added complexity of multi-vector search actually worth it?&lt;/strong> Multi-vector representations require more storage, more computation, and more careful implementation than simple single-vector embeddings. So why bother?&lt;/p>
&lt;p>The answer comes down to one core capability: &lt;strong>fine-grained matching&lt;/strong>. In the previous lessons, you learned how late interaction preserves token-level representations and how MaxSim computes similarity through independent token matching. Now you&amp;rsquo;ll see when this precision actually matters - and when it doesn&amp;rsquo;t.&lt;/p></description></item><item><title>Visual Interpretability of ColPali</title><link>https://qdrant.tech/course/multi-vector-search/module-2/visual-interpretability/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/multi-vector-search/module-2/visual-interpretability/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Module 2 
&lt;/div>

&lt;h1 id="visual-interpretability-of-colpali">Visual Interpretability of ColPali&lt;/h1>
&lt;p>&lt;strong>Why did this document match my query?&lt;/strong> Unlike traditional black-box embedding models that produce a single opaque vector, ColPali&amp;rsquo;s multi-vector architecture offers something remarkable: you can see exactly where the model &amp;ldquo;looks&amp;rdquo; when matching a query to a document.&lt;/p>
&lt;p>This visual interpretability is invaluable for building trust in multi-modal search systems, debugging unexpected results, and understanding model behavior and limitations.&lt;/p>
&lt;hr>
&lt;div class="video">
&lt;iframe
 src="https://www.youtube-nocookie.com/embed/sQcuYWMS4bo?rel=0"
 frameborder="0"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
 referrerpolicy="strict-origin-when-cross-origin"
 allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;hr>
&lt;p>&lt;strong>Follow along in Colab:&lt;/strong> &lt;a href="https://colab.research.google.com/github/qdrant/examples/blob/master/course-multi-vector-search/module-2/visual-interpretability.ipynb">
&lt;img src="https://colab.research.google.com/assets/colab-badge.svg" style="display:inline; margin:0;" alt="Open In Colab"/>
&lt;/a>&lt;/p></description></item><item><title>Product Quantization in Vector Search | Qdrant</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">Product Quantization Demystified: Streamlining Efficiency in Data Management&lt;/h1>
&lt;p>Qdrant 1.1.0 brought the support of &lt;a href="https://qdrant.tech/articles/scalar-quantization/">Scalar Quantization&lt;/a>,
a technique of reducing the memory footprint by even four times, by using &lt;code>int8&lt;/code> to represent
the values that would be normally represented by &lt;code>float32&lt;/code>.&lt;/p>
&lt;p>The memory usage in &lt;a href="https://qdrant.tech/solutions/" target="_blank" rel="noopener nofollow">vector search&lt;/a> might be reduced even further! Please welcome &lt;strong>Product
Quantization&lt;/strong>, a brand-new feature of Qdrant 1.2.0!&lt;/p>
&lt;h2 id="what-is-product-quantization">What is Product Quantization?&lt;/h2>
&lt;p>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">Scalar Quantization&lt;/a> 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></description></item><item><title/><link>https://qdrant.tech/benchmarks/filtered-search-benchmark/</link><pubDate>Mon, 13 Feb 2023 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/benchmarks/filtered-search-benchmark/</guid><description>&lt;h2 id="filtered-results">Filtered Results&lt;/h2>
&lt;p>As you can see from the charts, there are three main patterns:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Speed boost&lt;/strong> - for some engines/queries, the filtered search is faster than the unfiltered one. It might happen if the filter is restrictive enough, to completely avoid the usage of the vector index.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Speed downturn&lt;/strong> - some engines struggle to keep high RPS, it might be related to the requirement of building a filtering mask for the dataset, as described above.&lt;/p></description></item><item><title>Async API</title><link>https://qdrant.tech/documentation/tutorials-develop/async-api/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/tutorials-develop/async-api/</guid><description>&lt;h1 id="build-high-throughput-applications-with-qdrants-async-api">Build High-Throughput Applications with Qdrant&amp;rsquo;s Async API&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 25 min&lt;/th>
 &lt;th>Level: Intermediate&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;/tbody>
&lt;/table>
&lt;p>Asynchronous programming is being broadly adopted in the Python ecosystem. Tools such as FastAPI &lt;a href="https://fastapi.tiangolo.com/async/" target="_blank" rel="noopener nofollow">have embraced this new
paradigm&lt;/a>, but it is also becoming a standard for ML models served as SaaS. For example, the Cohere SDK
&lt;a href="https://github.com/cohere-ai/cohere-python/blob/856a4c3bd29e7a75fa66154b8ac9fcdf1e0745e0/src/cohere/client.py#L189" target="_blank" rel="noopener nofollow">provides an async client&lt;/a> next to its synchronous counterpart.&lt;/p>
&lt;p>Databases are often launched as separate services and are accessed via a network. All the interactions with them are IO-bound and can
be performed asynchronously so as not to waste time actively waiting for a server response. In Python, this is achieved by
using &lt;a href="https://docs.python.org/3/library/asyncio-task.html" target="_blank" rel="noopener nofollow">&lt;code>async/await&lt;/code>&lt;/a> syntax. That lets the interpreter switch to another task
while waiting for a response from the server.&lt;/p></description></item><item><title>Backups</title><link>https://qdrant.tech/documentation/private-cloud/backups/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/private-cloud/backups/</guid><description>&lt;h1 id="backups">Backups&lt;/h1>
&lt;p>To create a one-time backup, create a &lt;code>QdrantClusterSnapshot&lt;/code> resource:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">apiVersion&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">qdrant.io/v1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">kind&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">QdrantClusterSnapshot&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">metadata&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;qdrant-a7d8d973-0cc5-42de-8d7b-c29d14d24840-snapshot-timestamp&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">labels&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">cluster-id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;a7d8d973-0cc5-42de-8d7b-c29d14d24840&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">customer-id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;acme-industries&amp;#34;&lt;/span>&lt;span class="w"> 
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">spec&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">cluster-id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;a7d8d973-0cc5-42de-8d7b-c29d14d24840&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">retention&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">1h&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>You can also create a recurring backup with the &lt;code>QdrantClusterScheduledSnapshot&lt;/code> resource:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">apiVersion&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">qdrant.io/v1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">kind&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">QdrantClusterScheduledSnapshot&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">metadata&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;qdrant-a7d8d973-0cc5-42de-8d7b-c29d14d24840-snapshot-timestamp&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">labels&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">cluster-id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;a7d8d973-0cc5-42de-8d7b-c29d14d24840&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">customer-id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;acme-industries&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">spec&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">scheduleShortId&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">a7d8d973&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">cluster-id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;a7d8d973-0cc5-42de-8d7b-c29d14d24840&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># every hour&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">schedule&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;0 * * * *&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">retention&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">1h&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>To restore from a backup, create a &lt;code>QdrantClusterRestore&lt;/code> resource:&lt;/p></description></item><item><title>Cloud Quickstart</title><link>https://qdrant.tech/documentation/cloud-quickstart/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/cloud-quickstart/</guid><description>&lt;h1 id="quick-start-with-qdrant-cloud">Quick Start with Qdrant Cloud&lt;/h1>
&lt;p align="center">&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/xvWIssi_cjQ?si=CLhFrUDpQlNog9mz&amp;rel=0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen>&lt;/iframe>&lt;/p>
&lt;p>Learn how to set up Qdrant Cloud and perform your first semantic search in just a few minutes. We&amp;rsquo;ll use a sample dataset of menu items embedded with the &lt;code>sentence-transformers/all-MiniLM-L6-v2&lt;/code> model via &lt;a href="https://qdrant.tech/documentation/inference/">Cloud Inference&lt;/a>. This is one of the free embedding models available on Qdrant Cloud. For a list of the available free and paid models, refer to the Inference tab of the Cluster Detail page in the Qdrant Cloud Console.&lt;/p></description></item><item><title>Configure the Qdrant Operator</title><link>https://qdrant.tech/documentation/hybrid-cloud/operator-configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/hybrid-cloud/operator-configuration/</guid><description>&lt;h1 id="configuring-qdrant-operator-advanced-options">Configuring Qdrant Operator: Advanced Options&lt;/h1>
&lt;p>The Qdrant Operator has several configuration options, which can be configured in the advanced section of your Hybrid Cloud Environment.&lt;/p>
&lt;p>The following YAML shows all configuration options with their default values:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="c"># Additional pod annotations&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">podAnnotations&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c"># Configuration for the Qdrant operator service monitor to scrape metrics&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">serviceMonitor&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enabled&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c"># Resource requests and limits for the Qdrant operator&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">resources&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c"># Node selector for the Qdrant operator&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">nodeSelector&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c"># Tolerations for the Qdrant operator&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">tolerations&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c"># Affinity configuration for the Qdrant operator&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">affinity&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>{}&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c"># Configuration for the Qdrant operator (v2)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">settings&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The log level for the operator&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Available options: DEBUG | INFO | WARN | ERROR&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">logLevel&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">INFO &lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Controller related settings&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">controller&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The period a forced recync is done by the controller (if watches are missed / nothing happened)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">forceResyncPeriod&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">10h&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># QPS indicates the maximum QPS to the master from this client.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is 200&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">qps&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">200&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Maximum burst for throttle.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is 500.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">burst&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">500&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Features contains the settings for enabling / disabling the individual features of the operator&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">features&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># ClusterManagement contains the settings for qdrant (database) cluster management&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">clusterManagement&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Whether or not the Qdrant cluster features are enabled.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># If disabled, all other properties in this struct are disregarded. Otherwise, the individual features will be inspected.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is true.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enable&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The StorageClass used to make database and snapshot PVCs.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is nil, meaning the default storage class of Kubernetes.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">storageClass&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> 
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The StorageClass used to make database PVCs.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is nil, meaning the default storage class of Kubernetes.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#database: &lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The StorageClass used to make snapshot PVCs.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is nil, meaning the default storage class of Kubernetes.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#snapshot:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Qdrant config contains settings specific for the database&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">qdrant&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The config where to find the image for qdrant&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">image&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> 
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The repository where to find the image for qdrant&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is &amp;#34;qdrant/qdrant&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">repository&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">qdrant/qdrant&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Docker image pull policy&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default &amp;#34;IfNotPresent&amp;#34;, unless the tag is dev, master or latest. Then &amp;#34;Always&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#pullPolicy:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Docker image pull secret name&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># This secret should be available in the namespace where the cluster is running&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default not set&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#pullSecretName:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># storage contains the settings for the storage of the Qdrant cluster&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">storage&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">performance&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># CPU budget, how many CPUs (threads) to allocate for an optimization job.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># If 0 - auto selection, keep 1 or more CPUs unallocated depending on CPU size&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># If negative - subtract this number of CPUs from the available CPUs.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># If positive - use this exact number of CPUs.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">optimizerCpuBudget&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">0&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Enable async scorer which uses io_uring when rescoring.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Only supported on Linux, must be enabled in your kernel.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># See: &amp;lt;https://qdrant.tech/articles/io_uring/#and-what-about-qdrant&amp;gt;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">asyncScorer&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Qdrant DB log level&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Available options: DEBUG | INFO | WARN | ERROR &lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is &amp;#34;INFO&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">logLevel&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">INFO&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default Qdrant security context configuration&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">securityContext&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Enable default security context&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enabled&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default user for qdrant container&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default not set&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#user: 1000&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default fsGroup for qdrant container&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default not set&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#fsUser: 2000&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default group for qdrant container&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default not set&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#group: 3000&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Network policies configuration for the Qdrant databases&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">networkPolicies&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">ingress&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">ports&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">protocol&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">TCP&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">port&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">6333&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">protocol&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">TCP&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">port&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">6334&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Allow DNS resolution from qdrant pods at Kubernetes internal DNS server&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">egress&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">ports&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">protocol&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">UDP&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">port&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">53&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Scheduling config contains the settings specific for scheduling&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">scheduling&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default topology spread constraints (list from type corev1.TopologySpreadConstraint)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">topologySpreadConstraints&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">maxSkew&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">topologyKey&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;kubernetes.io/hostname&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">whenUnsatisfiable&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;ScheduleAnyway&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default pod disruption budget (object from type policyv1.PodDisruptionBudgetSpec)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">podDisruptionBudget&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">maxUnavailable&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># ClusterManager config contains the settings specific for cluster manager&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">clusterManager&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Whether or not the cluster manager (on operator level).&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># If disabled, all other properties in this struct are disregarded. Otherwise, the individual features will be inspected.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is false.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enable&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The endpoint address the cluster manager could be reached&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># If set, this should be a full URL like: http://cluster-manager.qdrant-cloud-ns.svc.cluster.local:7333&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">endpointAddress&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">http://qdrant-cluster-manager:80&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># InvocationInterval is the interval between calls (started after the previous call is retured)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is 10 seconds&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">invocationInterval&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">10s&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Timeout is the duration a single call to the cluster manager is allowed to take.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is 30 seconds&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">timeout&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">30s&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Specifies overrides for the manage rules&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">manageRulesOverrides&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#dry_run: &lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#max_transfers:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#max_transfers_per_collection:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#rebalance:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#replicate:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Ingress config contains the settings specific for ingress&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">ingress&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Whether or not the Ingress feature is enabled.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is true.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enable&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Which specific ingress provider should be used&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is KubernetesIngress&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">provider&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">KubernetesIngress&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The specific settings when the Provider is QdrantCloudTraefik&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">qdrantCloudTraefik&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Enable tls&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">tls&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Secret with TLS certificate&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is None&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">secretName&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># List of Traefik middlewares to apply&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is an empty list&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">middlewares&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># IP Allowlist Strategy for Traefik&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is None&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">ipAllowlistStrategy&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Enable body validator plugin and matching ingressroute rules&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enableBodyValidatorPlugin&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The specific settings when the Provider is KubernetesIngress&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">kubernetesIngress&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Name of the ingress class&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is None&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c">#ingressClassName:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># TelemetryTimeout is the duration a single call to the cluster telemetry endpoint is allowed to take.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is 3 seconds&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">telemetryTimeout&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">3s&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># MaxConcurrentReconciles is the maximum number of concurrent Reconciles which can be run. Defaults to 20.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">maxConcurrentReconciles&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">20&lt;/span>&lt;span class="w"> 
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># VolumeExpansionMode specifies the expansion mode, which can be online or offline (e.g. in case of Azure).&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Available options: Online, Offline&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is Online&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">volumeExpansionMode&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">Online&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># BackupManagementConfig contains the settings for backup management&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">backupManagement&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Whether or not the backup features are enabled.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># If disabled, all other properties in this struct are disregarded. Otherwise, the individual features will be inspected.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is true.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enable&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Snapshots contains the settings for snapshots as part of backup management.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">snapshots&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Whether or not the Snapshot feature is enabled.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is true.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enable&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The VolumeSnapshotClass used to make VolumeSnapshots.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is &amp;#34;csi-snapclass&amp;#34;.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">volumeSnapshotClass&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;csi-snapclass&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># The duration a snapshot is retained when the phase becomes Failed or Skipped&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is 72h (3d).&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">retainUnsuccessful&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">72h&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># MaxConcurrentReconciles is the maximum number of concurrent Reconciles which can be run. Defaults to 1.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">maxConcurrentReconciles&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># ScheduledSnapshots contains the settings for scheduled snapshot as part of backup management.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">scheduledSnapshots&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Whether or not the ScheduledSnapshot feature is enabled.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is true.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enable&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># MaxConcurrentReconciles is the maximum number of concurrent Reconciles which can be run. Defaults to 1.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">maxConcurrentReconciles&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Restores contains the settings for restoring (a snapshot) as part of backup management.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">restores&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Whether or not the Restore feature is enabled.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default is true.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enable&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># MaxConcurrentReconciles is the maximum number of concurrent Reconciles which can be run. Defaults to 1.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">maxConcurrentReconciles&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Demo: HNSW Performance Tuning</title><link>https://qdrant.tech/course/essentials/day-2/collection-tuning-demo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-2/collection-tuning-demo/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 2 
&lt;/div>

&lt;h1 id="demo-hnsw-performance-tuning">Demo: HNSW Performance Tuning&lt;/h1>
&lt;p>Learn how to improve vector search speed with &lt;a href="https://qdrant.tech/articles/filterable-hnsw/" target="_blank" rel="noopener nofollow">HNSW&lt;/a> tuning and payload indexing on a real 100K dataset.&lt;/p>
&lt;p>&lt;strong>Follow along in Colab:&lt;/strong> &lt;a href="https://colab.research.google.com/github/qdrant/examples/blob/master/course/day_2/hnsw_performance_tuning.ipynb">
&lt;img src="https://colab.research.google.com/assets/colab-badge.svg" style="display:inline; margin:0;" alt="Open In Colab"/>
&lt;/a>&lt;/p>
&lt;h2 id="what-youll-do">What You’ll Do&lt;/h2>
&lt;p>Yesterday you learned the theory behind HNSW indexing. Today you&amp;rsquo;ll see it in action on a 100,000-vector dataset, measuring performance differences and applying optimization strategies that work in production.&lt;/p>
&lt;p>&lt;strong>You&amp;rsquo;ll learn to:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Optimize bulk upload speed with strategic HNSW configuration&lt;/li>
&lt;li>Measure the performance impact of payload indexes&lt;/li>
&lt;li>Tune HNSW params&lt;/li>
&lt;li>Compare full-scan vs. HNSW search performance&lt;/li>
&lt;/ul>
&lt;h2 id="the-performance-challenge">The Performance Challenge&lt;/h2>
&lt;p>Working with 100K high-dimensional vectors (1536 dimensions from OpenAI&amp;rsquo;s text-embedding-3-large) presents real performance challenges:&lt;/p></description></item><item><title>Demo: Universal Query for Hybrid Retrieval</title><link>https://qdrant.tech/course/essentials/day-5/universal-query-demo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-5/universal-query-demo/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 5 
&lt;/div>

&lt;h1 id="demo-universal-query-for-hybrid-retrieval">Demo: Universal Query for Hybrid Retrieval&lt;/h1>
&lt;p>In this hands-on demo, we&amp;rsquo;ll build a research paper discovery system using the arXiv dataset that showcases the full power of Qdrant&amp;rsquo;s Universal Query API. You&amp;rsquo;ll see how to combine dense semantics, sparse keywords, and ColBERT reranking to help researchers find exactly the papers they need - all in a single query.&lt;/p>
&lt;p>&lt;strong>Follow along in Colab:&lt;/strong> &lt;a href="https://colab.research.google.com/github/qdrant/examples/blob/master/course/day_5/universal-query-demo.ipynb">
&lt;img src="https://colab.research.google.com/assets/colab-badge.svg" style="display:inline; margin:0;" alt="Open In Colab"/>
&lt;/a>&lt;/p>
&lt;h2 id="the-challenge-intelligent-research-discovery">The Challenge: Intelligent Research Discovery&lt;/h2>
&lt;p>Imagine you&amp;rsquo;re a machine learning researcher looking for &amp;ldquo;transformer architectures for multimodal learning with attention mechanisms.&amp;rdquo; You need to:&lt;/p></description></item><item><title>Hybrid Search and the Universal Query API</title><link>https://qdrant.tech/course/essentials/day-3/hybrid-search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-3/hybrid-search/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 3 
&lt;/div>

&lt;h1 id="hybrid-search-and-the-universal-query-api">Hybrid Search and the Universal Query API&lt;/h1>
&lt;p>Learn how to combine dense and sparse vector search methods to build powerful hybrid search pipelines that serve diverse user needs.&lt;/p>
&lt;div class="video">
&lt;iframe
 src="https://www.youtube.com/embed/p_IKYRGuxmM"
 frameborder="0"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
 referrerpolicy="strict-origin-when-cross-origin"
 allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;br/>
&lt;h2 id="what-youll-learn">What You&amp;rsquo;ll Learn&lt;/h2>
&lt;ul>
&lt;li>Understand when to use dense vs. sparse vectors&lt;/li>
&lt;li>Build hybrid search pipelines with Qdrant&amp;rsquo;s Universal Query API&lt;/li>
&lt;li>Apply Reciprocal Rank Fusion (RRF) to combine results&lt;/li>
&lt;li>Design multi-stage retrieval and reranking strategies&lt;/li>
&lt;/ul>
&lt;h2 id="the-challenge-different-users-different-search-needs">The Challenge: Different Users, Different Search Needs&lt;/h2>
&lt;p>The reality is that your users exist across a spectrum: from precise keyword searchers to vague natural language describers, and forcing a single search approach means disappointing part of your audience. Rather than compromising on search quality for different user types, hybrid search allows you to meet everyone where they are.&lt;/p></description></item><item><title>Integrating with Tensorlake</title><link>https://qdrant.tech/course/essentials/day-7/tensorlake/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-7/tensorlake/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 7 
&lt;/div>

&lt;h1 id="integrating-with-tensorlake">Integrating with TensorLake&lt;/h1>
&lt;p>Build scalable data lakes with vector search capabilities using TensorLake&amp;rsquo;s advanced document parsing techniques.&lt;/p>

 &lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/IVfoVS0KfPM?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div>

&lt;h2 id="what-youll-learn">What You&amp;rsquo;ll Learn&lt;/h2>
&lt;ul>
&lt;li>Data lake architecture with vectors&lt;/li>
&lt;li>Large-scale data management&lt;/li>
&lt;li>Analytics and vector search integration&lt;/li>
&lt;li>ETL pipeline optimization&lt;/li>
&lt;li>Knowledge graph creation from unstructured documents&lt;/li>
&lt;li>Document parsing and structured data extraction&lt;/li>
&lt;li>LangGraph agent integration for natural language querying&lt;/li>
&lt;/ul>
&lt;h2 id="tensorlake-knowledge-graph-integration">TensorLake Knowledge Graph Integration&lt;/h2>
&lt;p>TensorLake introduces an innovative approach to enhancing Qdrant collection querying through advanced document parsing and knowledge graph creation. The platform transforms unstructured documents into structured knowledge graphs, providing comprehensive data extraction and intelligent summarization of complex tables and figures, leading to more accurate embeddings and fine-tuned searches in RAG applications.&lt;/p></description></item><item><title>Large-Scale Data Ingestion</title><link>https://qdrant.tech/course/essentials/day-4/large-scale-ingestion/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-4/large-scale-ingestion/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 4 
&lt;/div>

&lt;h1 id="large-scale-data-ingestion">Large-Scale Data Ingestion&lt;/h1>
&lt;div class="video">
&lt;iframe 
 src="https://www.youtube.com/embed/Rawvm7TP1XI"
 frameborder="0"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
 referrerpolicy="strict-origin-when-cross-origin"
 allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;br/>
&lt;p>In vector search applications inserting a few thousand data points is straightforward but the dynamics change completely when dealing with millions or billions of records. Tiny inefficiencies in the ingestion process compound into significant time losses, increased memory pressure, and degraded search performance.&lt;/p>
&lt;p>Every individual upsert call initiates a transaction that consumes memory and disk I/O to build parts of the index. At scale, this naive approach can overwhelm your system, causing upload times to spike and search quality to decrease. Efficiently preparing and loading your data into Qdrant is paramount for building a robust and scalable AI application.&lt;/p></description></item><item><title>Logging &amp; Monitoring</title><link>https://qdrant.tech/documentation/private-cloud/logging-monitoring/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/private-cloud/logging-monitoring/</guid><description>&lt;h1 id="configuring-logging--monitoring-in-qdrant-private-cloud">Configuring Logging &amp;amp; Monitoring in Qdrant Private Cloud&lt;/h1>
&lt;h2 id="logging">Logging&lt;/h2>
&lt;p>You can access the logs with kubectl or the Kubernetes log management tool of your choice. For example:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">kubectl -n qdrant-private-cloud logs -l &lt;span class="nv">app&lt;/span>&lt;span class="o">=&lt;/span>qdrant,cluster-id&lt;span class="o">=&lt;/span>a7d8d973-0cc5-42de-8d7b-c29d14d24840
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Configuring log levels:&lt;/strong> You can configure log levels for the databases individually through the QdrantCluster spec. Example:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">apiVersion&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">qdrant.io/v1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">kind&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">QdrantCluster&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">metadata&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">qdrant-a7d8d973-0cc5-42de-8d7b-c29d14d24840&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">labels&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">cluster-id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;a7d8d973-0cc5-42de-8d7b-c29d14d24840&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">customer-id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;acme-industries&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">spec&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">id&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;a7d8d973-0cc5-42de-8d7b-c29d14d24840&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">version&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;v1.11.3&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">size&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">resources&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">cpu&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">100m&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">memory&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;1Gi&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">storage&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;2Gi&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">config&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">log_level&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;DEBUG&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="integrating-with-a-log-management-system">Integrating with a log management system&lt;/h3>
&lt;p>You can integrate the logs into any log management system that supports Kubernetes. There are no Qdrant specific configurations necessary. Just configure the agents of your system to collect the logs from all Pods in the Qdrant namespace.&lt;/p></description></item><item><title>Multivector Document Retrieval</title><link>https://qdrant.tech/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://qdrant.tech/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://qdrant.tech/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>MUVERA</title><link>https://qdrant.tech/course/multi-vector-search/module-3/muvera/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/multi-vector-search/module-3/muvera/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Module 3 
&lt;/div>

&lt;h1 id="muvera">MUVERA&lt;/h1>
&lt;p>MUVERA (Multi-Vector Retrieval with Approximation) solves a fundamental problem: MaxSim&amp;rsquo;s asymmetry makes traditional indexing methods like HNSW ineffective. MUVERA enables fast approximate search for multi-vector representations.&lt;/p>
&lt;p>Understanding MUVERA is key to scaling multi-vector search to millions of documents.&lt;/p>
&lt;hr>
&lt;div class="video">
&lt;iframe
 src="https://www.youtube-nocookie.com/embed/-r0Apuy0c8k?rel=0"
 frameborder="0"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
 referrerpolicy="strict-origin-when-cross-origin"
 allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;hr>
&lt;p>&lt;strong>Follow along in Colab:&lt;/strong> &lt;a href="https://colab.research.google.com/github/qdrant/examples/blob/master/course-multi-vector-search/module-3/muvera.ipynb">
&lt;img src="https://colab.research.google.com/assets/colab-badge.svg" style="display:inline; margin:0;" alt="Open In Colab"/>
&lt;/a>&lt;/p>
&lt;hr>
&lt;h2 id="the-hnsw-incompatibility-problem">The HNSW Incompatibility Problem&lt;/h2>
&lt;p>Traditional vector indexes like HNSW are designed for single-vector search with symmetric distance metrics. Multi-vector representations break this assumption: &lt;strong>MaxSim is inherently asymmetric and non-metric&lt;/strong>.&lt;/p></description></item><item><title>Networking, Logging &amp; Monitoring</title><link>https://qdrant.tech/documentation/hybrid-cloud/networking-logging-monitoring/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/hybrid-cloud/networking-logging-monitoring/</guid><description>&lt;h1 id="configuring-networking-logging--monitoring-in-qdrant-hybrid-cloud">Configuring Networking, Logging &amp;amp; Monitoring in Qdrant Hybrid Cloud&lt;/h1>
&lt;h2 id="configure-network-policies">Configure network policies&lt;/h2>
&lt;p>For security reasons, each database cluster is secured with network policies. By default, database pods only allow egress traffic between each other and ingress traffic to ports 6333 (REST) and 6334 (gRPC) from within the Kubernetes cluster.&lt;/p>
&lt;p>You can modify the default network policies in the Hybrid Cloud environment configuration:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">qdrant&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">networkPolicies&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">ingress&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">from&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">ipBlock&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">cidr&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">192.168.0.0&lt;/span>&lt;span class="l">/22&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">podSelector&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">matchLabels&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">app&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">client-app&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">namespaceSelector&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">matchLabels&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">kubernetes.io/metadata.name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">client-namespace&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">podSelector&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">matchLabels&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">app&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">traefik&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">namespaceSelector&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">matchLabels&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">kubernetes.io/metadata.name&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">kube-system&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">ports&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">port&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">6333&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">protocol&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">TCP&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>- &lt;span class="nt">port&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">6334&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">protocol&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">TCP &lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="logging">Logging&lt;/h2>
&lt;p>You can access the logs with kubectl or the Kubernetes log management tool of your choice. For example:&lt;/p></description></item><item><title>Problems of Multi-Vector Search</title><link>https://qdrant.tech/course/multi-vector-search/module-1/problems-multi-vector/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/multi-vector-search/module-1/problems-multi-vector/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Module 1 
&lt;/div>

&lt;h1 id="problems-of-multi-vector-search">Problems of Multi-Vector Search&lt;/h1>
&lt;p>Multi-vector search delivers impressive retrieval quality, but it comes with significant challenges. Before deploying multi-vector search in production, you need to understand these limitations and plan accordingly.&lt;/p>
&lt;p>The good news: Module 3 covers optimization techniques that address many of these challenges.&lt;/p>
&lt;hr>
&lt;div class="video">
&lt;iframe
 src="https://www.youtube-nocookie.com/embed/vQKF1hO7hzU?rel=0"
 frameborder="0"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
 referrerpolicy="strict-origin-when-cross-origin"
 allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;hr>
&lt;h2 id="the-indexing-challenge-why-hnsw-doesnt-work">The Indexing Challenge: Why HNSW Doesn&amp;rsquo;t Work&lt;/h2>
&lt;p>One of the fundamental challenges with multi-vector search stems from &lt;strong>HNSW indexing incompatibility&lt;/strong>. As you learned in the MaxSim lesson, traditional vector search relies on HNSW (Hierarchical Navigable Small World) graphs to enable fast approximate nearest neighbor search. HNSW works by building static proximity graphs that connect similar documents, allowing efficient traversal during queries.&lt;/p></description></item><item><title>Project: Building Your First Vector Search System</title><link>https://qdrant.tech/course/essentials/day-0/pitstop-project/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-0/pitstop-project/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 0 
&lt;/div>

&lt;h1 id="project-building-your-first-vector-search-system">Project: Building Your First Vector Search System&lt;/h1>
&lt;p>Time to apply what you&amp;rsquo;ve learned. You&amp;rsquo;ll create a complete, working vector search system from scratch.&lt;/p>
&lt;h2 id="your-mission">Your Mission&lt;/h2>
&lt;p>Build a functional vector search system that demonstrates the core concepts: collections, points, similarity search, and filtering. You&amp;rsquo;ll design simple 4-dimensional vectors that represent different concepts or items.&lt;/p>
&lt;p>&lt;strong>Estimated Time:&lt;/strong> 30 minutes&lt;/p>
&lt;h2 id="what-youll-build">What You&amp;rsquo;ll Build&lt;/h2>
&lt;p>A working search system with:&lt;/p>
&lt;ul>
&lt;li>One collection with 4-dimensional vectors and Cosine distance&lt;/li>
&lt;li>5–10 points with hand-crafted vectors and meaningful payloads&lt;/li>
&lt;li>Basic similarity search to find nearest neighbors&lt;/li>
&lt;li>Filtered search combining similarity with payload conditions&lt;/li>
&lt;/ul>
&lt;h2 id="setup">Setup&lt;/h2>
&lt;h3 id="prerequisites">Prerequisites&lt;/h3>
&lt;ul>
&lt;li>Qdrant Cloud cluster (URL + API key)&lt;/li>
&lt;li>Python 3.9+ (or Colab)&lt;/li>
&lt;li>Required packages: &lt;code>qdrant-client&lt;/code>.&lt;/li>
&lt;/ul>
&lt;h3 id="models">Models&lt;/h3>
&lt;ul>
&lt;li>None. We will create vectors by hand.&lt;/li>
&lt;/ul>
&lt;h3 id="dataset">Dataset&lt;/h3>
&lt;ul>
&lt;li>None. We will create our own data points.&lt;/li>
&lt;/ul>
&lt;p>Before creating data, decide what each of the four dimensions in your vectors will represent. This is the creative part of vector search!&lt;/p></description></item><item><title>Retrieval Quality Evaluation</title><link>https://qdrant.tech/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://qdrant.tech/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>Semantic Search 101</title><link>https://qdrant.tech/documentation/tutorials-basics/search-beginners/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/tutorials-basics/search-beginners/</guid><description>&lt;h1 id="build-a-semantic-search-engine-in-5-minutes">Build a Semantic Search Engine in 5 Minutes&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 5 - 15 min&lt;/th>
 &lt;th>Level: Beginner&lt;/th>
 &lt;th>&lt;/th>
 &lt;th>&lt;a href="https://githubtocolab.com/qdrant/examples/blob/master/semantic-search-in-5-minutes/semantic_search_in_5_minutes.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;blockquote>
&lt;p>There are two versions of this tutorial:&lt;/p>
&lt;ul>
&lt;li>The version on this page uses Qdrant Cloud. You&amp;rsquo;ll deploy a cluster and generate vector embedding in the cloud using Qdrant Cloud&amp;rsquo;s &lt;strong>forever free&lt;/strong> tier (no credit card required).&lt;/li>
&lt;li>Alternatively, you can run Qdrant on your own machine. This requires you to manage your own cluster and vector embedding infrastructure. If you prefer this option, check out the &lt;a href="https://qdrant.tech/documentation/tutorials-basics/search-beginners-local/">local deployment version of this tutorial&lt;/a>.&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>If you are new to vector search engines, this tutorial is for you. In 5 minutes you will build a semantic search engine for science fiction books. After you set it up, you will ask the engine about an impending alien threat. Your creation will recommend books as preparation for a potential space attack.&lt;/p></description></item><item><title>Text Chunking Strategies</title><link>https://qdrant.tech/course/essentials/day-1/chunking-strategies/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-1/chunking-strategies/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 1 
&lt;/div>

&lt;h1 id="text-chunking-strategies">Text Chunking Strategies&lt;/h1>
&lt;div class="video">
&lt;iframe 
 src="https://www.youtube.com/embed/VNyA2nXqczk?si=Gs8Nepgf8q0XV8dp" 
 frameborder="0"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
 referrerpolicy="strict-origin-when-cross-origin"
 allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;br/>
&lt;p>So far we&amp;rsquo;ve talked about points - what they&amp;rsquo;re made of, and how Qdrant compares them for approximate nearest neighbor search using distance metrics like cosine similarity, dot product, or Euclidean distance.&lt;/p>
&lt;p>But none of this matters until we give Qdrant something meaningful to compare. That brings us to the real beginning of the system.&lt;/p>
&lt;p>&lt;strong>Disclaimer&lt;/strong>: In this section, we focus on text chunking. Although other types of data (images, videos, audio and code) can also be chunked, we are covering the basics of text chunking as it is the most popular type of data.&lt;/p></description></item><item><title>Scalar Quantization: Background, Practices &amp; More | Qdrant</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">Efficiency Unleashed: The Power of Scalar Quantization&lt;/h1>
&lt;p>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></description></item><item><title>Agentic RAG with CrewAI</title><link>https://qdrant.tech/documentation/tutorials-build-essentials/agentic-rag-crewai-zoom/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/tutorials-build-essentials/agentic-rag-crewai-zoom/</guid><description>&lt;!-- ![agentic-rag-crewai-zoom](/documentation/examples/agentic-rag-crewai-zoom/agentic-rag-1.png) -->
&lt;h1 id="qdrant-agentic-rag-system-with-crewai">Qdrant Agentic RAG System with CrewAI&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 45 min&lt;/th>
 &lt;th>Level: Beginner&lt;/th>
 &lt;th>Output: &lt;a href="https://github.com/qdrant/examples/tree/master/agentic_rag_zoom_crewai" 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>By combining the power of Qdrant for vector search and CrewAI for orchestrating modular agents, you can build systems that don&amp;rsquo;t just answer questions but analyze, interpret, and act.&lt;/p>
&lt;p>Traditional RAG systems focus on fetching data and generating responses, but they lack the ability to reason deeply or handle multi-step processes.&lt;/p>
&lt;p>In this tutorial, we&amp;rsquo;ll walk you through building an Agentic RAG system step by step. By the end, you&amp;rsquo;ll have a working framework for storing data in a Qdrant Vector Database and extracting insights using CrewAI agents in conjunction with Vector Search over your data.&lt;/p></description></item><item><title>API Reference</title><link>https://qdrant.tech/documentation/private-cloud/api-reference/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/private-cloud/api-reference/</guid><description>&lt;h1 id="api-reference">API Reference&lt;/h1>
&lt;h2 id="packages">Packages&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="#authqdrantiov1alpha1">auth.qdrant.io/v1alpha1&lt;/a>&lt;/li>
&lt;li>&lt;a href="#qdrantiov1">qdrant.io/v1&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="authqdrantiov1alpha1">auth.qdrant.io/v1alpha1&lt;/h2>
&lt;p>Package v1alpha1 contains API Schema definitions for the qdrant.io v1alpha1 API group&lt;/p>
&lt;h3 id="resource-types">Resource Types&lt;/h3>
&lt;ul>
&lt;li>&lt;a href="#apiauthentication">APIAuthentication&lt;/a>&lt;/li>
&lt;/ul>
&lt;h4 id="apiauthentication">APIAuthentication&lt;/h4>
&lt;p>APIAuthentication is a configuration for authenticating against Qdrant clusters.&lt;/p>
&lt;p>&lt;em>Appears in:&lt;/em>&lt;/p>
&lt;ul>
&lt;li>&lt;a href="#apiauthenticationlist">APIAuthenticationList&lt;/a>&lt;/li>
&lt;/ul>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Field&lt;/th>
 &lt;th>Description&lt;/th>
 &lt;th>Default&lt;/th>
 &lt;th>Validation&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;code>apiVersion&lt;/code> &lt;em>string&lt;/em>&lt;/td>
 &lt;td>&lt;code>auth.qdrant.io/v1alpha1&lt;/code>&lt;/td>
 &lt;td>&lt;/td>
 &lt;td>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>kind&lt;/code> &lt;em>string&lt;/em>&lt;/td>
 &lt;td>&lt;code>APIAuthentication&lt;/code>&lt;/td>
 &lt;td>&lt;/td>
 &lt;td>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>metadata&lt;/code> &lt;em>&lt;a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.28/#objectmeta-v1-meta" target="_blank" rel="noopener nofollow">ObjectMeta&lt;/a>&lt;/em>&lt;/td>
 &lt;td>Refer to Kubernetes API documentation for fields of &lt;code>metadata&lt;/code>.&lt;/td>
 &lt;td>&lt;/td>
 &lt;td>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>spec&lt;/code> &lt;em>&lt;a href="#apiauthenticationspec">APIAuthenticationSpec&lt;/a>&lt;/em>&lt;/td>
 &lt;td>&lt;/td>
 &lt;td>&lt;/td>
 &lt;td>&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h4 id="apiauthenticationspec">APIAuthenticationSpec&lt;/h4>
&lt;p>APIAuthenticationSpec describes the configuration for authenticating against Qdrant clusters.&lt;/p></description></item><item><title>Capacity Planning</title><link>https://qdrant.tech/documentation/operations/capacity-planning/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/operations/capacity-planning/</guid><description>&lt;h1 id="capacity-planning">Capacity Planning&lt;/h1>
&lt;p>When setting up your cluster, you&amp;rsquo;ll need to figure out the right balance of &lt;strong>RAM&lt;/strong> and &lt;strong>disk storage&lt;/strong>. The best setup depends on a few things:&lt;/p>
&lt;ul>
&lt;li>How many vectors you have and their dimensions.&lt;/li>
&lt;li>The amount of payload data you&amp;rsquo;re using and their indexes.&lt;/li>
&lt;li>What data you want to store in memory versus on disk.&lt;/li>
&lt;li>Your cluster&amp;rsquo;s replication settings.&lt;/li>
&lt;li>Whether you&amp;rsquo;re using quantization and how you’ve set it up.&lt;/li>
&lt;/ul>
&lt;h2 id="calculating-ram-size">Calculating RAM size&lt;/h2>
&lt;p>You should store frequently accessed data in RAM for faster retrieval. If you want to keep all vectors in memory for optimal performance, you can use this rough formula for estimation:&lt;/p></description></item><item><title>Changelog</title><link>https://qdrant.tech/documentation/private-cloud/changelog/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/private-cloud/changelog/</guid><description>&lt;h1 id="changelog">Changelog&lt;/h1>
&lt;h2 id="196-2026-02-19">1.9.6 (2026-02-19)&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Component&lt;/th>
 &lt;th>Version&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>qdrant-kubernetes-api&lt;/td>
 &lt;td>v1.23.0&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>operator&lt;/td>
 &lt;td>2.15.0&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>qdrant-cluster-manager&lt;/td>
 &lt;td>v0.3.17&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>qdrant-cluster-exporter&lt;/td>
 &lt;td>1.7.6&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>Latest validated Qdrant version: 1.17.0&lt;/p>
&lt;ul>
&lt;li>Support for Qdrant 1.17&lt;/li>
&lt;/ul>
&lt;h2 id="195-2026-02-18">1.9.5 (2026-02-18)&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Component&lt;/th>
 &lt;th>Version&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>qdrant-kubernetes-api&lt;/td>
 &lt;td>v1.23.0&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>operator&lt;/td>
 &lt;td>2.14.0&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>qdrant-cluster-manager&lt;/td>
 &lt;td>v0.3.17&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>qdrant-cluster-exporter&lt;/td>
 &lt;td>1.7.6&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>Latest validated Qdrant version: 1.16.3&lt;/p>
&lt;ul>
&lt;li>Performance and stability improvements&lt;/li>
&lt;li>Extended status information in QdrantCluster status&lt;/li>
&lt;li>Support for VolumeAttributeClasses for storage volumes&lt;/li>
&lt;li>Qdrant Pod zone added to QdrantCluster status&lt;/li>
&lt;li>Metrics are additionally exposed on a separate port to allow more granular access control through NetworkPolicies&lt;/li>
&lt;/ul>
&lt;h2 id="194-2026-01-15">1.9.4 (2026-01-15)&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Component&lt;/th>
 &lt;th>Version&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>qdrant-kubernetes-api&lt;/td>
 &lt;td>v1.22.1&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>operator&lt;/td>
 &lt;td>2.9.1&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>qdrant-cluster-manager&lt;/td>
 &lt;td>v0.3.15&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>qdrant-cluster-exporter&lt;/td>
 &lt;td>1.7.6&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>Latest validated Qdrant version: 1.16.3&lt;/p></description></item><item><title>Databricks Ingestion</title><link>https://qdrant.tech/documentation/send-data/databricks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/send-data/databricks/</guid><description>&lt;h1 id="ingest-databricks-data-into-qdrant">Ingest Databricks Data into 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;a href="https://databricks-prod-cloudfront.cloud.databricks.com/public/4027ec902e239c93eaaa8714f173bcfc/4750876096379825/93425612168199/6949977306828869/latest.html" target="_blank" rel="noopener nofollow">Complete Notebook&lt;/a>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;/tbody>
&lt;/table>
&lt;p>&lt;a href="https://www.databricks.com/" target="_blank" rel="noopener nofollow">Databricks&lt;/a> is a unified analytics platform for working with big data and AI. It&amp;rsquo;s built around Apache Spark, a powerful open-source distributed computing system well-suited for processing large-scale datasets and performing complex analytics tasks.&lt;/p>
&lt;p>Apache Spark is designed to scale horizontally, meaning it can handle expensive operations like generating vector embeddings by distributing computation across a cluster of machines. This scalability is crucial when dealing with large datasets.&lt;/p></description></item><item><title>Demo: Implementing a Hybrid Search System</title><link>https://qdrant.tech/course/essentials/day-3/hybrid-search-demo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-3/hybrid-search-demo/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 3 
&lt;/div>

&lt;h1 id="demo-implementing-a-hybrid-search-system">Demo: Implementing a Hybrid Search System&lt;/h1>
&lt;p>Build a complete hybrid search system with hands-on examples.&lt;/p>
&lt;div class="video">
&lt;iframe
 src="https://www.youtube.com/embed/zaQYa7oa1a8"
 frameborder="0"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
 referrerpolicy="strict-origin-when-cross-origin"
 allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;br/>
&lt;h2 id="what-youll-learn">What You&amp;rsquo;ll Learn&lt;/h2>
&lt;ul>
&lt;li>Step-by-step hybrid search implementation&lt;/li>
&lt;li>RRF algorithm in practice&lt;/li>
&lt;li>Performance optimization techniques&lt;/li>
&lt;li>Testing and evaluation methods&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Follow along in Colab:&lt;/strong> &lt;a href="https://colab.research.google.com/github/qdrant/examples/blob/master/course/day_3/hybrid_search/Introduction_to_Qdrant_Hybrid_Search_in_practice.ipynb">
&lt;img src="https://colab.research.google.com/assets/colab-badge.svg" style="display:inline; margin:0;" alt="Open In Colab"/>
&lt;/a>&lt;/p>
&lt;h2 id="what-youll-discover">What You&amp;rsquo;ll Discover&lt;/h2>
&lt;p>In the previous lesson, you learned the theory behind hybrid search and the Universal Query API. Today you&amp;rsquo;ll implement it hands-on with a real dataset, comparing dense and sparse vector search and combining them using fusion algorithms.&lt;/p></description></item><item><title>Demo: Semantic Movie Search</title><link>https://qdrant.tech/course/essentials/day-1/movie-search-system/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-1/movie-search-system/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 1 
&lt;/div>

&lt;h1 id="demo-semantic-movie-search">Demo: Semantic Movie Search&lt;/h1>
&lt;p>Let&amp;rsquo;s synthesize everything we&amp;rsquo;ve learned today into a practical project: a semantic search engine for science fiction movies.&lt;/p>
&lt;div class="video">
&lt;iframe 
 src="https://www.youtube.com/embed/S7FsgzYwzJs?si=SCPzfprpB6aBUPEs"
 frameborder="0"
 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
 referrerpolicy="strict-origin-when-cross-origin"
 allowfullscreen>
&lt;/iframe>
&lt;/div>
&lt;br/>
&lt;p>&lt;strong>Follow along in Colab:&lt;/strong> &lt;a href="https://colab.research.google.com/github/qdrant/examples/blob/master/course/day_1/Semantic_Recommendation_System_for_Science_Fiction_Movies.ipynb">
&lt;img src="https://colab.research.google.com/assets/colab-badge.svg" style="display:inline; margin:0;" alt="Open In Colab"/>
&lt;/a>&lt;/p>
&lt;h2 id="project-overview-when-search-understands-meaning">Project Overview: When Search Understands Meaning&lt;/h2>
&lt;p>Imagine asking a search engine: &lt;em>&amp;ldquo;Show me movies about questioning reality and the nature of existence&amp;rdquo;&lt;/em> and getting back &lt;em>The Matrix&lt;/em>, &lt;em>Inception&lt;/em>, and &lt;em>Ex Machina&lt;/em>, but not because these titles contain those exact words, but because the system understands what these films are actually about.&lt;/p></description></item><item><title>Deployment Platforms</title><link>https://qdrant.tech/documentation/hybrid-cloud/platform-deployment-options/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/hybrid-cloud/platform-deployment-options/</guid><description>&lt;h1 id="qdrant-hybrid-cloud-hosting-platforms--deployment-options">Qdrant Hybrid Cloud: Hosting Platforms &amp;amp; Deployment Options&lt;/h1>
&lt;p>This page provides an overview of how to deploy Qdrant Hybrid Cloud on various managed Kubernetes platforms.&lt;/p>
&lt;p>For a general list of prerequisites and installation steps, see our &lt;a href="https://qdrant.tech/documentation/hybrid-cloud/hybrid-cloud-setup/">Hybrid Cloud setup guide&lt;/a>. This platform specific documentation also applies to Qdrant Private Cloud.&lt;/p>
&lt;p>&lt;img src="https://qdrant.tech/documentation/cloud/cloud-providers/akamai.jpg" alt="Akamai">&lt;/p>
&lt;h2 id="akamai-linode">Akamai (Linode)&lt;/h2>
&lt;p>&lt;a href="https://www.linode.com/products/kubernetes/" target="_blank" rel="noopener nofollow">The Linode Kubernetes Engine (LKE)&lt;/a> is a managed container orchestration engine built on top of Kubernetes. LKE enables you to quickly deploy and manage your containerized applications without needing to build (and maintain) your own Kubernetes cluster. All LKE instances are equipped with a fully managed control plane at no additional cost.&lt;/p></description></item><item><title>Evaluating Search Pipelines</title><link>https://qdrant.tech/course/multi-vector-search/module-3/evaluating-pipelines/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/multi-vector-search/module-3/evaluating-pipelines/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Module 3 
&lt;/div>

&lt;h1 id="evaluating-search-pipelines">Evaluating Search Pipelines&lt;/h1>
&lt;p>Throughout this module, you&amp;rsquo;ve learned many optimization techniques: quantization to reduce memory, pooling to compress representations, MUVERA for efficient indexing, and multi-stage retrieval to balance speed with accuracy. But how do you know which combination is right for &lt;em>your&lt;/em> data?&lt;/p>
&lt;p>The answer lies in systematic evaluation across three dimensions: &lt;strong>cost&lt;/strong> (memory and compute resources), &lt;strong>latency&lt;/strong> (query response time), and &lt;strong>quality&lt;/strong> (retrieval accuracy). Cost and latency are straightforward to measure - you can observe memory usage and time queries directly. Quality, however, requires a more principled approach: you need to measure whether your system returns the &lt;em>right&lt;/em> documents.&lt;/p></description></item><item><title>From Pinecone</title><link>https://qdrant.tech/documentation/migrate-to-qdrant/from-pinecone/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/migrate-to-qdrant/from-pinecone/</guid><description>&lt;h1 id="migrate-from-pinecone-to-qdrant">Migrate from Pinecone to Qdrant&lt;/h1>
&lt;h2 id="what-you-need-from-pinecone">What You Need from Pinecone&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>API key&lt;/strong> — from the &lt;a href="https://app.pinecone.io/" target="_blank" rel="noopener nofollow">Pinecone console&lt;/a>&lt;/li>
&lt;li>&lt;strong>Index name&lt;/strong> — the name of the index to migrate&lt;/li>
&lt;li>&lt;strong>Index host URL&lt;/strong> — the host endpoint shown in your index dashboard&lt;/li>
&lt;/ul>
&lt;aside role="status">Only Pinecone &lt;strong>serverless&lt;/strong> indexes support listing all vectors for migration. Legacy pod-based indexes may require additional steps.&lt;/aside>
&lt;h2 id="concept-mapping">Concept Mapping&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Pinecone&lt;/th>
 &lt;th style="text-align: left">Qdrant&lt;/th>
 &lt;th style="text-align: left">Notes&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">Index&lt;/td>
 &lt;td style="text-align: left">Collection&lt;/td>
 &lt;td style="text-align: left">One-to-one mapping&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Namespace&lt;/td>
 &lt;td style="text-align: left">Payload field or separate collection&lt;/td>
 &lt;td style="text-align: left">No direct equivalent — the tool migrates all namespaces. Use &lt;code>--pinecone.namespace&lt;/code> to migrate a specific one&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Metadata&lt;/td>
 &lt;td style="text-align: left">Payload&lt;/td>
 &lt;td style="text-align: left">Direct mapping&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Sparse values&lt;/td>
 &lt;td style="text-align: left">Sparse vectors&lt;/td>
 &lt;td style="text-align: left">Mapped to &lt;code>sparse_vector&lt;/code> named vector by default&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>cosine&lt;/code>&lt;/td>
 &lt;td style="text-align: left">&lt;code>Cosine&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Direct mapping&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>dotproduct&lt;/code>&lt;/td>
 &lt;td style="text-align: left">&lt;code>Dot&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Pinecone requires unit-normalized vectors for dotproduct&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>euclidean&lt;/code>&lt;/td>
 &lt;td style="text-align: left">&lt;code>Euclid&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Direct mapping&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="run-the-migration">Run the Migration&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run --net&lt;span class="o">=&lt;/span>host --rm -it registry.cloud.qdrant.io/library/qdrant-migration pinecone &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --pinecone.index-host &lt;span class="s1">&amp;#39;https://your-index-host.pinecone.io&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --pinecone.index-name &lt;span class="s1">&amp;#39;your-index&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --pinecone.api-key &lt;span class="s1">&amp;#39;pcsk_...&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.url &lt;span class="s1">&amp;#39;https://your-instance.cloud.qdrant.io:6334&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.api-key &lt;span class="s1">&amp;#39;your-qdrant-api-key&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="migrating-a-specific-namespace">Migrating a Specific Namespace&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run --net&lt;span class="o">=&lt;/span>host --rm -it registry.cloud.qdrant.io/library/qdrant-migration pinecone &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --pinecone.index-host &lt;span class="s1">&amp;#39;https://your-index-host.pinecone.io&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --pinecone.index-name &lt;span class="s1">&amp;#39;your-index&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --pinecone.api-key &lt;span class="s1">&amp;#39;pcsk_...&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --pinecone.namespace &lt;span class="s1">&amp;#39;my-namespace&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.url &lt;span class="s1">&amp;#39;https://your-instance.cloud.qdrant.io:6334&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.api-key &lt;span class="s1">&amp;#39;your-qdrant-api-key&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="all-pinecone-specific-flags">All Pinecone-Specific Flags&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Flag&lt;/th>
 &lt;th style="text-align: left">Required&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--pinecone.index-name&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Yes&lt;/td>
 &lt;td style="text-align: left">Name of the Pinecone index&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--pinecone.index-host&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Yes&lt;/td>
 &lt;td style="text-align: left">Host URL of the Pinecone index&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--pinecone.api-key&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Yes&lt;/td>
 &lt;td style="text-align: left">Pinecone API key&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--pinecone.namespace&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Specific namespace to migrate&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--pinecone.service-host&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Custom Pinecone service host&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="qdrant-side-options">Qdrant-Side Options&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Flag&lt;/th>
 &lt;th style="text-align: left">Default&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--qdrant.id-field&lt;/code>&lt;/td>
 &lt;td style="text-align: left">&lt;code>__id__&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Payload field name for original Pinecone IDs&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--qdrant.sparse-vector&lt;/code>&lt;/td>
 &lt;td style="text-align: left">&lt;code>sparse_vector&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Named vector for Pinecone sparse values&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="gotchas">Gotchas&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Score scaling:&lt;/strong> Pinecone cosine similarity returns values in [0, 1] (rescaled). Qdrant returns [-1, 1]. Rankings are identical, but raw scores won&amp;rsquo;t match.&lt;/li>
&lt;li>&lt;strong>Metadata size limits:&lt;/strong> Pinecone limits metadata to 40KB per vector. Qdrant has no per-payload size limit, so data is preserved as-is.&lt;/li>
&lt;li>&lt;strong>Namespace strategy:&lt;/strong> If you have multiple namespaces, decide upfront whether to merge them into a single Qdrant collection (using a &lt;code>namespace&lt;/code> payload field for filtering) or create separate collections.&lt;/li>
&lt;/ul>
&lt;h2 id="next-steps">Next Steps&lt;/h2>
&lt;p>After migration, verify your data arrived correctly with the &lt;a href="https://qdrant.tech/documentation/migration-guidance/">Migration Verification Guide&lt;/a>.&lt;/p></description></item><item><title>GraphRAG with Qdrant and Neo4j</title><link>https://qdrant.tech/documentation/examples/graphrag-qdrant-neo4j/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/examples/graphrag-qdrant-neo4j/</guid><description>&lt;h1 id="build-a-graphrag-agent-with-neo4j-and-qdrant">Build a GraphRAG Agent with Neo4j and Qdrant&lt;/h1>
&lt;p>&lt;img src="https://qdrant.tech/documentation/examples/graphrag-qdrant-neo4j/image0.png" alt="image0">&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/graphrag_neo4j/graphrag.py" target="_blank" rel="noopener nofollow">GitHub&lt;/a>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;/tbody>
&lt;/table>
&lt;p>To make Artificial Intelligence (AI) systems more intelligent and reliable, we face a paradox: Large Language Models (LLMs) possess remarkable reasoning capabilities, yet they struggle to connect information in ways humans find intuitive. While groundbreaking, Retrieval-Augmented Generation (RAG) approaches often fall short when tasked with complex information synthesis. When asked to connect disparate pieces of information or understand holistic concepts across large documents, these systems frequently miss crucial connections that would be obvious to human experts.&lt;/p></description></item><item><title>Integrating with Superlinked</title><link>https://qdrant.tech/course/essentials/day-7/superlinked/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-7/superlinked/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 7 
&lt;/div>

&lt;h1 id="integrating-with-superlinked">Integrating with Superlinked&lt;/h1>
&lt;p>Advanced feature engineering for vector search applications.&lt;/p>

 &lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/55iDpaHwKJo?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div>

&lt;h2 id="what-youll-learn">What You&amp;rsquo;ll Learn&lt;/h2>
&lt;ul>
&lt;li>Advanced feature engineering techniques&lt;/li>
&lt;li>Vector space optimization&lt;/li>
&lt;li>Multi-modal data handling&lt;/li>
&lt;li>Performance enhancement strategies&lt;/li>
&lt;/ul>
&lt;h2 id="mixture-of-encoders-architecture-in-superlinked">Mixture of Encoders Architecture in Superlinked&lt;/h2>
&lt;p>The Mixture of Encoders architecture is Superlinked&amp;rsquo;s modular system for combining multiple data-specific embedding models into one unified representation. It creates metadata-aware vector embeddings that integrate signals from text, images, popularity, user interaction, numbers, categories, and time, producing richer and more accurate results for search, retrieval, and recommendation tasks.&lt;/p></description></item><item><title>Multi-Vector Embeddings in Qdrant</title><link>https://qdrant.tech/course/multi-vector-search/module-1/multi-vector-in-qdrant/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/multi-vector-search/module-1/multi-vector-in-qdrant/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Module 1 
&lt;/div>

&lt;h1 id="multi-vector-embeddings-in-qdrant">Multi-Vector Embeddings in Qdrant&lt;/h1>
&lt;p>You&amp;rsquo;ve learned how MaxSim enables fine-grained token-level matching and explored both the benefits and challenges of multi-vector search. Now it&amp;rsquo;s time to put that knowledge into practice.&lt;/p>
&lt;p>Qdrant provides first-class support for multi-vector embeddings, making it straightforward to build search systems that leverage late interaction. In this lesson, you&amp;rsquo;ll learn how to configure Qdrant collections for multi-vector search, index documents with token-level embeddings, and execute queries using MaxSim distance.&lt;/p></description></item><item><title>OpenLLMetry</title><link>https://qdrant.tech/documentation/observability/openllmetry/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/observability/openllmetry/</guid><description>&lt;h1 id="openllmetry">OpenLLMetry&lt;/h1>
&lt;p>OpenLLMetry from &lt;a href="https://www.traceloop.com/" target="_blank" rel="noopener nofollow">Traceloop&lt;/a> is a set of extensions built on top of &lt;a href="https://opentelemetry.io/" target="_blank" rel="noopener nofollow">OpenTelemetry&lt;/a> that gives you complete observability over your LLM application.&lt;/p>
&lt;p>OpenLLMetry supports instrumenting the &lt;code>qdrant_client&lt;/code> Python library and exporting the traces to various observability platforms, as described in their &lt;a href="https://www.traceloop.com/docs/openllmetry/integrations/introduction#the-integrations-catalog" target="_blank" rel="noopener nofollow">Integrations catalog&lt;/a>.&lt;/p>
&lt;p>This page assumes you&amp;rsquo;re using &lt;code>qdrant-client&lt;/code> version 1.7.3 or above.&lt;/p>
&lt;h2 id="usage">Usage&lt;/h2>
&lt;p>To set up OpenLLMetry, follow these steps:&lt;/p>
&lt;ol>
&lt;li>Install the SDK:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">pip install traceloop-sdk
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol>
&lt;li>Instantiate the SDK:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">traceloop.sdk&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">Traceloop&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Traceloop&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">init&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>You&amp;rsquo;re now tracing your &lt;code>qdrant_client&lt;/code> usage with OpenLLMetry!&lt;/p></description></item><item><title>Points</title><link>https://qdrant.tech/documentation/manage-data/points/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/manage-data/points/</guid><description>&lt;h1 id="points">Points&lt;/h1>
&lt;p>The points are the central entity that Qdrant operates with.
A point is a record consisting of a &lt;a href="https://qdrant.tech/documentation/manage-data/vectors/">vector&lt;/a> and an optional &lt;a href="https://qdrant.tech/documentation/manage-data/payload/">payload&lt;/a>.&lt;/p>
&lt;p>It looks like this:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// This is a simple point
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;id&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">129&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;vector&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="mf">0.1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mf">0.2&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mf">0.3&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mf">0.4&lt;/span>&lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;payload&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="nt">&amp;#34;color&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;red&amp;#34;&lt;/span>&lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>You can search among the points grouped in one &lt;a href="https://qdrant.tech/documentation/manage-data/collections/">collection&lt;/a> based on vector similarity.
This procedure is described in more detail in the &lt;a href="https://qdrant.tech/documentation/search/search/">search&lt;/a> and &lt;a href="https://qdrant.tech/documentation/search/filtering/">filtering&lt;/a> sections.&lt;/p>
&lt;p>This section explains how to create and manage vectors.&lt;/p></description></item><item><title>Pre-Migration Baseline</title><link>https://qdrant.tech/documentation/migration-guidance/pre-migration-baseline/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/migration-guidance/pre-migration-baseline/</guid><description>&lt;h1 id="pre-migration-baseline">Pre-Migration Baseline&lt;/h1>
&lt;p>Establishing a baseline is paramount for migration verification. If you don&amp;rsquo;t capture what &amp;ldquo;correct&amp;rdquo; looks like before you migrate, you have nothing to compare against afterward. This page covers what to record from your source system before starting the migration.&lt;/p>
&lt;h2 id="what-to-capture">What to Capture&lt;/h2>
&lt;p>There are four pieces of information that need to be accounted for when establishing a baseline: collection/index inventory, metadata samples, baseline search results, and system configuration snapshots.&lt;/p></description></item><item><title>Project: Building a Recommendation System</title><link>https://qdrant.tech/course/essentials/day-5/pitstop-project/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-5/pitstop-project/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 5 
&lt;/div>

&lt;h1 id="project-building-a-recommendation-system">Project: Building a Recommendation System&lt;/h1>
&lt;p>Bring together dense, sparse, and multivectors in one atomic Universal Query. You&amp;rsquo;ll retrieve candidates, fuse signals, rerank with ColBERT, and apply business filters - in a single request.&lt;/p>
&lt;h2 id="your-mission">Your Mission&lt;/h2>
&lt;p>Build a complete recommendation system using Qdrant’s Universal Query API with dense, sparse, and ColBERT multivectors in one request.&lt;/p>
&lt;p>&lt;strong>Estimated Time:&lt;/strong> 90 minutes&lt;/p>
&lt;h2 id="what-youll-build">What You&amp;rsquo;ll Build&lt;/h2>
&lt;p>A hybrid recommendation system using:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Multi-vector architecture&lt;/strong> with dense, sparse, and ColBERT vectors&lt;/li>
&lt;li>&lt;strong>Universal Query API&lt;/strong> for atomic multi-stage search&lt;/li>
&lt;li>&lt;strong>RRF fusion&lt;/strong> for combining candidates&lt;/li>
&lt;li>&lt;strong>ColBERT reranking&lt;/strong> for fine-grained relevance scoring&lt;/li>
&lt;li>&lt;strong>Business rule filtering&lt;/strong> at multiple pipeline stages&lt;/li>
&lt;li>&lt;strong>Production-ready patterns&lt;/strong> for recommendation systems&lt;/li>
&lt;/ul>
&lt;h2 id="setup">Setup&lt;/h2>
&lt;h3 id="prerequisites">Prerequisites&lt;/h3>
&lt;ul>
&lt;li>Qdrant Cloud cluster (URL + API key)&lt;/li>
&lt;li>Python 3.9+ (or Google Colab)&lt;/li>
&lt;li>Packages: &lt;code>qdrant-client&lt;/code>, &lt;code>fastembed&lt;/code>&lt;/li>
&lt;/ul>
&lt;h3 id="models">Models&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Dense&lt;/strong>: &lt;code>sentence-transformers/all-MiniLM-L6-v2&lt;/code> (384-dim)&lt;/li>
&lt;li>&lt;strong>Sparse&lt;/strong>: &lt;code>prithivida/Splade_PP_en_v1&lt;/code> (SPLADE)&lt;/li>
&lt;li>&lt;strong>Multivector&lt;/strong>: &lt;code>colbert-ir/colbertv2.0&lt;/code> (128-dim tokens)&lt;/li>
&lt;/ul>
&lt;h3 id="dataset">Dataset&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Scope&lt;/strong>: A small set of sample items (e.g., 10-20 movies).&lt;/li>
&lt;li>&lt;strong>Payload Fields&lt;/strong>: &lt;code>title&lt;/code>, &lt;code>description&lt;/code>, &lt;code>category&lt;/code>, &lt;code>genre&lt;/code>, &lt;code>year&lt;/code>, &lt;code>rating&lt;/code>, &lt;code>user_segment&lt;/code>, &lt;code>popularity_score&lt;/code>, &lt;code>release_date&lt;/code>.&lt;/li>
&lt;li>&lt;strong>Filters Used&lt;/strong>: &lt;code>category&lt;/code>, &lt;code>user_segment&lt;/code>, &lt;code>release_date&lt;/code>, &lt;code>popularity_score&lt;/code>.&lt;/li>
&lt;/ul>
&lt;h2 id="build-steps">Build Steps&lt;/h2>
&lt;h3 id="step-1-set-up-the-hybrid-collection">Step 1: Set Up the Hybrid Collection&lt;/h3>
&lt;h4 id="initialize-client-and-collection">Initialize Client and Collection&lt;/h4>
&lt;p>First, connect to Qdrant and create a clean collection for our recommendation system:&lt;/p></description></item><item><title>Project: HNSW Performance Benchmarking</title><link>https://qdrant.tech/course/essentials/day-2/pitstop-project/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-2/pitstop-project/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 2 
&lt;/div>

&lt;h1 id="project-hnsw-performance-benchmarking">Project: HNSW Performance Benchmarking&lt;/h1>
&lt;p>Now that you&amp;rsquo;ve seen how &lt;a href="https://qdrant.tech/articles/filterable-hnsw/">HNSW&lt;/a> parameters and payload indexes affect performance with the DBpedia dataset, it&amp;rsquo;s time to optimize for your own domain and use case.&lt;/p>
&lt;h2 id="your-mission">Your Mission&lt;/h2>
&lt;p>Build on your Day 1 search engine by adding performance optimization. You&amp;rsquo;ll discover which HNSW settings work best for your specific data and queries, and measure the real impact of payload indexing.&lt;/p>
&lt;p>&lt;strong>Estimated Time:&lt;/strong> 90 minutes&lt;/p></description></item><item><title>Project: Quantization Performance Optimization</title><link>https://qdrant.tech/course/essentials/day-4/pitstop-project/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-4/pitstop-project/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 4 
&lt;/div>

&lt;h1 id="project-quantization-performance-optimization">Project: Quantization Performance Optimization&lt;/h1>
&lt;p>Apply quantization techniques to your domain search engine and measure the real-world impact on speed, memory, and accuracy. You&amp;rsquo;ll discover how different quantization methods affect your specific use case and learn to optimize the accuracy recovery pipeline.&lt;/p>
&lt;h2 id="your-mission">Your Mission&lt;/h2>
&lt;p>Transform your search engine from previous days into a production-ready system by implementing quantization optimization. You&amp;rsquo;ll test different quantization methods, measure performance impacts, and tune the oversampling + rescoring pipeline for optimal results.&lt;/p></description></item><item><title>Search</title><link>https://qdrant.tech/documentation/search/search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/search/search/</guid><description>&lt;h1 id="similarity-search">Similarity search&lt;/h1>
&lt;p>Searching for the nearest vectors is at the core of many representational learning applications.
Modern neural networks are trained to transform objects into vectors so that objects close in the real world appear close in vector space.
It could be, for example, texts with similar meanings, visually similar pictures, or songs of the same genre.&lt;/p>
&lt;figure>&lt;img src="https://qdrant.tech/docs/encoders.png"
 alt="This is how vector similarity works" width="70%">&lt;figcaption>
 &lt;p>This is how vector similarity works&lt;/p>
 &lt;/figcaption>
&lt;/figure>

&lt;h2 id="query-api">Query API&lt;/h2>
&lt;p>&lt;em>Available as of v1.10.0&lt;/em>&lt;/p></description></item><item><title>What is Qdrant?</title><link>https://qdrant.tech/documentation/overview/what-is-qdrant/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/overview/what-is-qdrant/</guid><description>&lt;h1 id="introduction">Introduction&lt;/h1>
&lt;p>Vector databases are a relatively new way for interacting with abstract data representations
derived from opaque machine learning models such as deep learning architectures. These
representations are often called vectors or embeddings and they are a compressed version of
the data used to train a machine learning model to accomplish a task like sentiment analysis,
speech recognition, object detection, and many others.&lt;/p>
&lt;p>These new databases shine in many applications like &lt;a href="https://en.wikipedia.org/wiki/Semantic_search" target="_blank" rel="noopener nofollow">semantic search&lt;/a>
and &lt;a href="https://en.wikipedia.org/wiki/Recommender_system" target="_blank" rel="noopener nofollow">recommendation systems&lt;/a>, and here, we&amp;rsquo;ll
learn about one of the most popular and fastest growing vector databases in the market, &lt;a href="https://github.com/qdrant/qdrant" target="_blank" rel="noopener nofollow">Qdrant&lt;/a>.&lt;/p></description></item><item><title>With Postgres</title><link>https://qdrant.tech/documentation/data-synchronization/with-postgres/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/data-synchronization/with-postgres/</guid><description>&lt;h1 id="keeping-postgres-and-qdrant-in-sync">Keeping Postgres and Qdrant in Sync&lt;/h1>
&lt;p>If you&amp;rsquo;ve migrated your vectors to Qdrant but still use Postgres as your source of truth, the next challenge is keeping both systems in sync as data changes.&lt;/p>
&lt;p>This guide covers three progressively robust sync architectures — from simple application-level dual-writes to production-grade Change Data Capture — with working code, failure mode analysis, and clear guidance on when to use each.&lt;/p>
&lt;p>Not sure if you need a dedicated vector store alongside Postgres? Read our &lt;a href="https://qdrant.tech/blog/pgvector-tradeoffs/">pgvector tradeoffs blog post&lt;/a> to understand the six conditions under which pgvector is sufficient — and when you&amp;rsquo;ll outgrow it.&lt;/p></description></item><item><title>On Unstructured Data, Vector Databases, New AI Age, and Our Seed Round.</title><link>https://qdrant.tech/articles/seed-round/</link><pubDate>Wed, 19 Apr 2023 00:42:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/seed-round/</guid><description>&lt;blockquote>
&lt;p>Vector databases are here to stay. The New Age of AI is powered by vector embeddings, and vector databases are a foundational part of the stack. At Qdrant, we are working on cutting-edge open-source vector similarity search solutions to power fantastic AI applications with the best possible performance and excellent developer experience.&lt;/p>
&lt;p>Our 7.5M seed funding – led by &lt;a href="https://www.unusual.vc/" target="_blank" rel="noopener nofollow">Unusual Ventures&lt;/a>, awesome angels, and existing investors – will help us bring these innovations to engineers and empower them to make the most of their unstructured data and the awesome power of LLMs at any scale.&lt;/p></description></item><item><title>Using LangChain for Question Answering with Qdrant</title><link>https://qdrant.tech/articles/langchain-integration/</link><pubDate>Tue, 31 Jan 2023 10:53:20 +0100</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/langchain-integration/</guid><description>&lt;h1 id="streamlining-question-answering-simplifying-integration-with-langchain-and-qdrant">Streamlining Question Answering: Simplifying Integration with LangChain and Qdrant&lt;/h1>
&lt;p>Building applications with Large Language Models doesn&amp;rsquo;t have to be complicated. A lot has been going on recently to simplify the development,
so you can utilize already pre-trained models and support even complex pipelines with a few lines of code. &lt;a href="https://langchain.readthedocs.io" target="_blank" rel="noopener nofollow">LangChain&lt;/a>
provides unified interfaces to different libraries, so you can avoid writing boilerplate code and focus on the value you want to bring.&lt;/p></description></item><item><title>Integrating with LlamaIndex</title><link>https://qdrant.tech/course/essentials/day-7/llamaindex/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-7/llamaindex/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 7 
&lt;/div>

&lt;h1 id="integrating-with-llamaindex">Integrating with LlamaIndex&lt;/h1>
&lt;p>Data framework for building LLM applications with Qdrant.&lt;/p>

 &lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/ytWskQWsAA4?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div>

&lt;h2 id="what-youll-learn">What You&amp;rsquo;ll Learn&lt;/h2>
&lt;ul>
&lt;li>Building data pipelines with LlamaIndex&lt;/li>
&lt;li>Connecting LlamaIndex to Qdrant&lt;/li>
&lt;li>Query engines and retrieval strategies&lt;/li>
&lt;li>Advanced RAG patterns with LlamaIndex&lt;/li>
&lt;li>Agent workflows and function calling&lt;/li>
&lt;li>Custom workflow development with events and steps&lt;/li>
&lt;li>Qdrant Cloud integration with Llama Cloud&lt;/li>
&lt;li>Real-world data ingestion and processing&lt;/li>
&lt;/ul>
&lt;h2 id="llamaindex-agent-development-framework">LlamaIndex Agent Development Framework&lt;/h2>
&lt;p>LlamaIndex provides a comprehensive framework for building sophisticated LLM applications with Qdrant integration. The platform supports multiple deployment options including local Qdrant instances, Qdrant Cloud, and Llama Cloud with Qdrant Cloud synchronization, enabling flexible and scalable agent development.&lt;/p></description></item><item><title>Project: Building a Hybrid Search Engine</title><link>https://qdrant.tech/course/essentials/day-3/pitstop-project/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-3/pitstop-project/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 3 
&lt;/div>

&lt;h1 id="project-building-a-hybrid-search-engine">Project: Building a Hybrid Search Engine&lt;/h1>
&lt;p>Build a hybrid system that combines dense and sparse vectors with Reciprocal Rank Fusion, demonstrating how to get the best of both semantic understanding and keyword precision.&lt;/p>
&lt;h2 id="your-mission">Your Mission&lt;/h2>
&lt;p>Create a production-ready hybrid search system that leverages both dense and sparse vectors to deliver superior search results. You&amp;rsquo;ll implement the complete hybrid pipeline and compare its performance against single-vector approaches.&lt;/p>
&lt;p>&lt;strong>Estimated Time:&lt;/strong> 75 minutes&lt;/p></description></item><item><title>Project: Building a Semantic Search Engine</title><link>https://qdrant.tech/course/essentials/day-1/pitstop-project/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-1/pitstop-project/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 1 
&lt;/div>

&lt;h1 id="project-building-a-semantic-search-engine">Project: Building a Semantic Search Engine&lt;/h1>
&lt;p>Now that you&amp;rsquo;ve seen how semantic search works with movies, it&amp;rsquo;s time to build your own. Choose a domain you care about and create a search engine that understands meaning, not just keywords.&lt;/p>
&lt;h2 id="your-mission">Your Mission&lt;/h2>
&lt;p>Build a semantic search engine for a topic of your choice. You&amp;rsquo;ll discover how chunking strategy affects search quality in your specific domain.&lt;/p>
&lt;p>&lt;strong>Estimated Time:&lt;/strong> 120 minutes&lt;/p></description></item><item><title>Minimal RAM you need to serve a million 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
-->
&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.
-->
&lt;p>When it comes to measuring the memory consumption of our processes, we often rely on tools such as &lt;code>htop&lt;/code> 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></description></item><item><title>Question Answering as a Service with Cohere and Qdrant</title><link>https://qdrant.tech/articles/qa-with-cohere-and-qdrant/</link><pubDate>Tue, 29 Nov 2022 15:45:00 +0100</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/qa-with-cohere-and-qdrant/</guid><description>&lt;p>Bi-encoders are probably the most efficient way of setting up a semantic Question Answering system.
This architecture relies on the same neural model that creates vector embeddings for both questions and answers.
The assumption is, both question and answer should have representations close to each other in the latent space.
It should be like that because they should both describe the same semantic concept. That doesn&amp;rsquo;t apply
to answers like &amp;ldquo;Yes&amp;rdquo; or &amp;ldquo;No&amp;rdquo; though, but standard FAQ-like problems are a bit easier as there is typically
an overlap between both texts. Not necessarily in terms of wording, but in their semantics.&lt;/p></description></item><item><title>Final Project: Build Your Own Multi-Vector Search System</title><link>https://qdrant.tech/course/multi-vector-search/module-3/final-project/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/multi-vector-search/module-3/final-project/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Module 3 
&lt;/div>

&lt;h1 id="final-project-build-your-own-multi-vector-search-system">Final Project: Build Your Own Multi-Vector Search System&lt;/h1>
&lt;hr>
&lt;h2 id="your-mission">Your Mission&lt;/h2>
&lt;p>It&amp;rsquo;s time to bring together everything you&amp;rsquo;ve learned about multi-vector search, late interaction models, and production optimization. You&amp;rsquo;ll build a sophisticated document retrieval system that leverages late interaction&amp;rsquo;s token-level matching for superior search quality.&lt;/p>
&lt;p>Your search engine will understand the nuanced relationships between query terms and document content. When someone searches for &amp;ldquo;machine learning applications in healthcare,&amp;rdquo; your system will find documents that discuss relevant concepts even when they use different terminology, thanks to late interaction&amp;rsquo;s fine-grained matching.&lt;/p></description></item><item><title>Integrating with Quotient</title><link>https://qdrant.tech/course/essentials/day-7/quotient/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-7/quotient/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 7 
&lt;/div>

&lt;h1 id="integrating-with-quotient">Integrating with Quotient&lt;/h1>
&lt;p>Advanced analytics with vector data using Quotient platform.&lt;/p>

 &lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/QeQuCsh1SHs?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div>

&lt;h2 id="what-youll-learn">What You&amp;rsquo;ll Learn&lt;/h2>
&lt;ul>
&lt;li>Analytics platform integration&lt;/li>
&lt;li>Vector data analysis techniques&lt;/li>
&lt;li>Business intelligence applications&lt;/li>
&lt;li>Reporting and visualization&lt;/li>
&lt;li>RAG monitoring and quality assurance&lt;/li>
&lt;li>AI application monitoring and debugging&lt;/li>
&lt;li>Hallucination detection and document relevance scoring&lt;/li>
&lt;/ul>
&lt;h2 id="quotient-ai-monitoring-platform">Quotient AI Monitoring Platform&lt;/h2>
&lt;p>Quotient AI provides critical monitoring capabilities for AI applications and agents, automatically detecting quality issues and providing comprehensive insights into system performance. The platform serves as an essential monitoring layer for RAG (Retrieval Augmented Generation) applications, helping maintain reliability and enabling effective debugging of AI systems.&lt;/p></description></item><item><title>Introducing Qdrant 1.2.x</title><link>https://qdrant.tech/articles/qdrant-1.2.x/</link><pubDate>Wed, 24 May 2023 10:45:00 +0200</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/qdrant-1.2.x/</guid><description>&lt;p>A brand-new Qdrant 1.2 release comes packed with a plethora of new features, some of which
were highly requested by our users. If you want to shape the development of the Qdrant vector
database, please &lt;a href="https://qdrant.to/discord" target="_blank" rel="noopener nofollow">join our Discord community&lt;/a> and let us know
how you use it!&lt;/p>
&lt;h2 id="new-features">New features&lt;/h2>
&lt;p>As usual, a minor version update of Qdrant brings some interesting new features. We love to see your
feedback, and we tried to include the features most requested by our community.&lt;/p></description></item><item><title>Finding errors in datasets 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>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>
&lt;p>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></description></item><item><title>Integrating with Camel AI</title><link>https://qdrant.tech/course/essentials/day-7/camel/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-7/camel/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 7 
&lt;/div>

&lt;h1 id="integrating-with-camel-ai">Integrating with Camel AI&lt;/h1>
&lt;p>Agentic RAG with multi-agent systems using Camel AI and Qdrant.&lt;/p>

 &lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Kz59XG_blY8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div>

&lt;h2 id="what-youll-learn">What You&amp;rsquo;ll Learn&lt;/h2>
&lt;ul>
&lt;li>Multi-agent system architectures&lt;/li>
&lt;li>Agentic RAG patterns and best practices&lt;/li>
&lt;li>Agent collaboration and communication&lt;/li>
&lt;li>Building autonomous AI systems with Qdrant&lt;/li>
&lt;li>Auto-Retrieval with CAMEL for automated RAG processes&lt;/li>
&lt;li>Discord bot integration with vector databases&lt;/li>
&lt;/ul>
&lt;h2 id="camel-auto-retrieval-architecture">CAMEL Auto-Retrieval Architecture&lt;/h2>
&lt;p>CAMEL (Communicative Agents for &amp;ldquo;Mind&amp;rdquo; Exploration of Large Language Model Society) provides an advanced framework for building multi-agent systems with automated RAG capabilities. The Auto-Retrieval module streamlines the process of expanding agent capabilities by automatically handling context retrieval from vector databases like Qdrant.&lt;/p></description></item><item><title>Q&amp;A with Similarity Learning</title><link>https://qdrant.tech/articles/faq-question-answering/</link><pubDate>Tue, 28 Jun 2022 08:57:07 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/faq-question-answering/</guid><description>&lt;h1 id="question-answering-system-with-similarity-learning-and-quaterion">Question-answering system with Similarity Learning and Quaterion&lt;/h1>
&lt;p>Many problems in modern machine learning are approached as classification tasks.
Some are the classification tasks by design, but others are artificially transformed into such.
And when you try to apply an approach, which does not naturally fit your problem, you risk coming up with over-complicated or bulky solutions.
In some cases, you would even get worse performance.&lt;/p>
&lt;p>Imagine that you got a new task and decided to solve it with a good old classification approach.
Firstly, you will need labeled data.
If it came on a plate with the task, you&amp;rsquo;re lucky, but if it didn&amp;rsquo;t, you might need to label it manually.
And I guess you are already familiar with how painful it might be.&lt;/p></description></item><item><title>Integrating with Jina AI</title><link>https://qdrant.tech/course/essentials/day-7/jina/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/essentials/day-7/jina/</guid><description>&lt;div class="date">
 &lt;img class="date-icon" src="https://qdrant.tech/icons/outline/date-blue.svg" alt="Calendar" /> Day 7 
&lt;/div>

&lt;h1 id="integrating-with-jina-ai">Integrating with Jina AI&lt;/h1>
&lt;p>Advanced multimodal embeddings with Jina AI and Qdrant.&lt;/p>

 &lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/lJ7mkvHETfg?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video">&lt;/iframe>
 &lt;/div>

&lt;h2 id="what-youll-learn">What You&amp;rsquo;ll Learn&lt;/h2>
&lt;ul>
&lt;li>Jina Embeddings v4 model capabilities&lt;/li>
&lt;li>Multimodal text and image embeddings&lt;/li>
&lt;li>Multi-vector embeddings for enhanced performance&lt;/li>
&lt;li>API integration and self-hosting options&lt;/li>
&lt;li>Text-to-image retrieval systems&lt;/li>
&lt;li>Late chunking for long documents&lt;/li>
&lt;li>Performance optimization strategies&lt;/li>
&lt;/ul>
&lt;h2 id="jina-ai-multimodal-embeddings">Jina AI Multimodal Embeddings&lt;/h2>
&lt;p>Jina AI provides state-of-the-art deep neural networks for transforming text and images into high-quality vector representations. The Jina Embeddings v4 model represents a breakthrough in multimodal embedding technology, enabling seamless integration of text and image data within a unified vector space for sophisticated search and retrieval applications.&lt;/p></description></item><item><title>Why Rust?</title><link>https://qdrant.tech/articles/why-rust/</link><pubDate>Thu, 11 May 2023 10:00:00 +0100</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/why-rust/</guid><description>&lt;h1 id="building-qdrant-in-rust">Building Qdrant in Rust&lt;/h1>
&lt;p>Looking at the &lt;a href="https://github.com/qdrant/qdrant" target="_blank" rel="noopener nofollow">github repository&lt;/a>, you can see that Qdrant is built in &lt;a href="https://rust-lang.org" target="_blank" rel="noopener nofollow">Rust&lt;/a>. Other offerings may be written in C++, Go, Java or even Python. So why does Qdrant chose Rust? Our founder Andrey had built the first prototype in C++, but didn’t trust his command of the language to scale to a production system (to be frank, he likened it to cutting his leg off). He was well versed in Java and Scala and also knew some Python. However, he considered neither a good fit:&lt;/p></description></item><item><title>Layer Recycling and Fine-tuning Efficiency</title><link>https://qdrant.tech/articles/embedding-recycler/</link><pubDate>Tue, 23 Aug 2022 13:00:00 +0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/embedding-recycler/</guid><description>&lt;p>A recent &lt;a href="https://arxiv.org/abs/2207.04993" target="_blank" rel="noopener nofollow">paper&lt;/a>
by Allen AI has attracted attention in the NLP community as they cache the output of a certain intermediate layer
in the training and inference phases to achieve a speedup of ~83%
with a negligible loss in model performance.
This technique is quite similar to &lt;a href="https://quaterion.qdrant.tech/tutorials/cache_tutorial.html" target="_blank" rel="noopener nofollow">the caching mechanism in Quaterion&lt;/a>,
but the latter is intended for any data modalities while the former focuses only on language models
despite presenting important insights from their experiments.
In this post, I will share our findings combined with those,
hoping to provide the community with a wider perspective on layer recycling.&lt;/p></description></item><item><title>Fine Tuning Similar Cars Search</title><link>https://qdrant.tech/articles/cars-recognition/</link><pubDate>Tue, 28 Jun 2022 13:00:00 +0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/cars-recognition/</guid><description>&lt;p>Supervised classification is one of the most widely used training objectives in machine learning,
but not every task can be defined as such. For example,&lt;/p>
&lt;ol>
&lt;li>Your classes may change quickly —e.g., new classes may be added over time,&lt;/li>
&lt;li>You may not have samples from every possible category,&lt;/li>
&lt;li>It may be impossible to enumerate all the possible classes during the training time,&lt;/li>
&lt;li>You may have an essentially different task, e.g., search or retrieval.&lt;/li>
&lt;/ol>
&lt;p>All such problems may be efficiently solved with similarity learning.&lt;/p></description></item><item><title>Benchmarks F.A.Q.</title><link>https://qdrant.tech/benchmarks/benchmark-faq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/benchmarks/benchmark-faq/</guid><description>&lt;h1 id="benchmarks-faq">Benchmarks F.A.Q.&lt;/h1>
&lt;h2 id="are-we-biased">Are we biased?&lt;/h2>
&lt;p>Probably, yes. Even if we try to be objective, we are not experts in using all the existing vector search engines.
We build Qdrant and know the most about it.
Due to that, we could have missed some important tweaks in different vector search engines.&lt;/p>
&lt;p>However, we tried our best, kept scrolling the docs up and down, experimented with combinations of different configurations, and gave all of them an equal chance to stand out. If you believe you can do it better than us, our &lt;strong>benchmarks are fully &lt;a href="https://github.com/qdrant/vector-db-benchmark" target="_blank" rel="noopener nofollow">open-sourced&lt;/a>, and contributions are welcome&lt;/strong>!&lt;/p></description></item><item><title>Data Integrity</title><link>https://qdrant.tech/documentation/migration-guidance/data-integrity/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/migration-guidance/data-integrity/</guid><description>&lt;h1 id="data-integrity-verification">Data Integrity Verification&lt;/h1>
&lt;p>Once you&amp;rsquo;ve established a &lt;a href="https://qdrant.tech/documentation/migration-guidance/pre-migration-baseline/">baseline&lt;/a>, you first need to check data integrity. Data integrity answers the question: &amp;ldquo;Did all my data arrive, and did it arrive correctly?&amp;rdquo; These are the fastest checks to run and catch the most common migration failures.&lt;/p>
&lt;h2 id="1-vector-count-verification">1. Vector Count Verification&lt;/h2>
&lt;p>The simplest check: does the number of vectors in Qdrant match your source system?&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-py" data-lang="py">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qdrant_client&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">QdrantClient&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">client&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">QdrantClient&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;localhost&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">port&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">6333&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Get collection info&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">collection_info&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">client&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get_collection&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;your_collection&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">qdrant_count&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">collection_info&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">points_count&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Compare against baseline&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">source_count&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">baseline&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;total_vector_count&amp;#34;&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="c1"># From pre-migration capture&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">if&lt;/span> &lt;span class="n">qdrant_count&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="n">source_count&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;✓ Vector count matches: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">qdrant_count&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">diff&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">source_count&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">qdrant_count&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">pct&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">diff&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="n">source_count&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="mi">100&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;✗ Count mismatch: source=&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">source_count&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">, qdrant=&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">qdrant_count&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">, &amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;missing=&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">diff&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> (&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">pct&lt;/span>&lt;span class="si">:&lt;/span>&lt;span class="s2">.2f&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">%)&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>Common causes of count mismatches:&lt;/strong>&lt;/p></description></item><item><title>Filtering</title><link>https://qdrant.tech/documentation/search/filtering/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/search/filtering/</guid><description>&lt;h1 id="filtering">Filtering&lt;/h1>
&lt;p>With Qdrant, you can set conditions when searching or retrieving points.
For example, you can impose conditions on both the &lt;a href="https://qdrant.tech/documentation/manage-data/payload/">payload&lt;/a> and the &lt;code>id&lt;/code> of the point.&lt;/p>
&lt;p>Setting additional conditions is important when it is impossible to express all the features of the object in the embedding.
Examples include a variety of business requirements: stock availability, user location, or desired price range.&lt;/p>
&lt;h2 id="related-content">Related Content&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>&lt;a href="https://qdrant.tech/articles/vector-search-filtering/">A Complete Guide to Filtering in Vector Search&lt;/a>&lt;/th>
 &lt;th>Developer advice on proper usage and advanced practices.&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="filtering-clauses">Filtering clauses&lt;/h2>
&lt;p>Qdrant allows you to combine conditions in clauses.
Clauses are different logical operations, such as &lt;code>OR&lt;/code>, &lt;code>AND&lt;/code>, and &lt;code>NOT&lt;/code>.
Clauses can be recursively nested into each other so that you can reproduce an arbitrary boolean expression.&lt;/p></description></item><item><title>From Weaviate</title><link>https://qdrant.tech/documentation/migrate-to-qdrant/from-weaviate/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/migrate-to-qdrant/from-weaviate/</guid><description>&lt;h1 id="migrate-from-weaviate-to-qdrant">Migrate from Weaviate to Qdrant&lt;/h1>
&lt;h2 id="what-you-need-from-weaviate">What You Need from Weaviate&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Host URL&lt;/strong> — the Weaviate instance address&lt;/li>
&lt;li>&lt;strong>Class name&lt;/strong> — the class to migrate&lt;/li>
&lt;li>&lt;strong>Authentication&lt;/strong> — API key, username/password, or bearer token depending on your setup&lt;/li>
&lt;li>&lt;strong>Vector dimensions&lt;/strong> — Weaviate does not expose vector dimensions through its API, so you must know this value&lt;/li>
&lt;/ul>
&lt;aside role="alert">&lt;strong>Important:&lt;/strong> Because Weaviate does not expose vector dimensions, the migration tool cannot auto-create the Qdrant collection. You must create the collection manually before running the migration.&lt;/aside>
&lt;h2 id="pre-create-your-qdrant-collection">Pre-Create Your Qdrant Collection&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">curl -X PUT &lt;span class="s1">&amp;#39;https://your-instance.cloud.qdrant.io:6333/collections/your-collection&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -H &lt;span class="s1">&amp;#39;api-key: your-qdrant-api-key&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -H &lt;span class="s1">&amp;#39;Content-Type: application/json&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -d &lt;span class="s1">&amp;#39;{
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;vectors&amp;#34;: {
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;size&amp;#34;: 384,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> &amp;#34;distance&amp;#34;: &amp;#34;Cosine&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> }
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1"> }&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Replace &lt;code>384&lt;/code> with your actual vector dimensions. Set the distance metric to match your Weaviate configuration.&lt;/p></description></item><item><title>Installation</title><link>https://qdrant.tech/documentation/operations/installation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/operations/installation/</guid><description>&lt;h1 id="installation-requirements">Installation requirements&lt;/h1>
&lt;p>The following sections describe the requirements for deploying Qdrant.&lt;/p>
&lt;h2 id="cpu-and-memory">CPU and memory&lt;/h2>
&lt;p>The preferred size of your CPU and RAM depends on:&lt;/p>
&lt;ul>
&lt;li>Number of vectors&lt;/li>
&lt;li>Vector dimensions&lt;/li>
&lt;li>&lt;a href="https://qdrant.tech/documentation/manage-data/payload/">Payloads&lt;/a> and their indexes&lt;/li>
&lt;li>Storage&lt;/li>
&lt;li>Replication&lt;/li>
&lt;li>How you configure quantization&lt;/li>
&lt;/ul>
&lt;p>Our &lt;a href="https://cloud.qdrant.io/calculator" target="_blank" rel="noopener nofollow">Cloud Pricing Calculator&lt;/a> can help you estimate required resources without payload or index data.&lt;/p>
&lt;h3 id="supported-cpu-architectures">Supported CPU architectures:&lt;/h3>
&lt;p>&lt;strong>64-bit system:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>x86_64/amd64&lt;/li>
&lt;li>AArch64/arm64&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>32-bit system:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Not supported&lt;/li>
&lt;/ul>
&lt;h3 id="storage">Storage&lt;/h3>
&lt;p>For persistent storage, Qdrant requires block-level access to storage devices with a &lt;a href="https://www.quobyte.com/storage-explained/posix-filesystem/" target="_blank" rel="noopener nofollow">POSIX-compatible file system&lt;/a>. Network systems such as &lt;a href="https://en.wikipedia.org/wiki/ISCSI" target="_blank" rel="noopener nofollow">iSCSI&lt;/a> that provide block-level access are also acceptable.
Qdrant won&amp;rsquo;t work with &lt;a href="https://en.wikipedia.org/wiki/File_system#Network_file_systems" target="_blank" rel="noopener nofollow">Network file systems&lt;/a> such as NFS, or &lt;a href="https://en.wikipedia.org/wiki/Object_storage" target="_blank" rel="noopener nofollow">Object storage&lt;/a> systems such as S3.&lt;/p></description></item><item><title>LLM-Powered Filter Automation</title><link>https://qdrant.tech/documentation/search-precision/automate-filtering-with-llms/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/search-precision/automate-filtering-with-llms/</guid><description>&lt;h1 id="llm-powered-filter-automation-with-qdrant">LLM-Powered Filter Automation with Qdrant&lt;/h1>
&lt;p>Our &lt;a href="https://qdrant.tech/articles/vector-search-filtering/">complete guide to filtering in vector search&lt;/a> describes why filtering is
important, and how to implement it with Qdrant. However, applying filters is easier when you build an application
with a traditional interface. Your UI may contain a form with checkboxes, sliders, and other elements that users can
use to set their criteria. But what if you want to build a RAG-powered application with just the conversational
interface, or even voice commands? In this case, you need to automate the filtering process!&lt;/p></description></item><item><title>OpenLIT</title><link>https://qdrant.tech/documentation/observability/openlit/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/observability/openlit/</guid><description>&lt;h1 id="openlit">OpenLIT&lt;/h1>
&lt;p>&lt;a href="https://github.com/openlit/openlit" target="_blank" rel="noopener nofollow">OpenLIT&lt;/a> is an OpenTelemetry-native LLM Application Observability tool and includes OpenTelemetry auto-instrumentation to monitor Qdrant and provide insights to improve database operations and application performance.&lt;/p>
&lt;p>This page assumes you&amp;rsquo;re using &lt;code>qdrant-client&lt;/code> version 1.7.3 or above.&lt;/p>
&lt;h2 id="usage">Usage&lt;/h2>
&lt;h3 id="step-1-install-openlit">Step 1: Install OpenLIT&lt;/h3>
&lt;p>Open your command line or terminal and run:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install openlit
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="step-2-initialize-openlit-in-your-application">Step 2: Initialize OpenLIT in your Application&lt;/h3>
&lt;p>Integrating OpenLIT into LLM applications is straightforward with just &lt;strong>two lines of code&lt;/strong>:&lt;/p></description></item><item><title>Querying with Airflow</title><link>https://qdrant.tech/documentation/send-data/qdrant-airflow-astronomer/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/send-data/qdrant-airflow-astronomer/</guid><description>&lt;h1 id="qdrant-semantic-querying-with-airflow-and-astronomer">Qdrant Semantic Querying with Airflow and Astronomer&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 45 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>In this tutorial, you will use Qdrant as a &lt;a href="https://airflow.apache.org/docs/apache-airflow-providers-qdrant/stable/index.html" target="_blank" rel="noopener nofollow">provider&lt;/a> in &lt;a href="https://airflow.apache.org/" target="_blank" rel="noopener nofollow">Apache Airflow&lt;/a>, an open-source tool that lets you setup data-engineering workflows.&lt;/p>
&lt;p>You will write the pipeline as a DAG (Directed Acyclic Graph) in Python. With this, you can leverage the powerful suite of Python&amp;rsquo;s capabilities and libraries to achieve almost anything your data pipeline needs.&lt;/p></description></item><item><title>Quickstart</title><link>https://qdrant.tech/documentation/edge/edge-quickstart/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/edge/edge-quickstart/</guid><description>&lt;h1 id="qdrant-edge-quickstart">Qdrant Edge Quickstart&lt;/h1>
&lt;h2 id="install-qdrant-edge">Install Qdrant Edge&lt;/h2>
&lt;p>First, install the &lt;a href="https://pypi.org/project/qdrant-edge-py/" target="_blank" rel="noopener nofollow">Python Bindings for Qdrant Edge&lt;/a> or the &lt;a href="https://crates.io/crates/qdrant-edge" target="_blank" rel="noopener nofollow">Rust crate&lt;/a>.&lt;/p>
&lt;h2 id="create-a-storage-directory">Create a Storage Directory&lt;/h2>
&lt;p>A Qdrant Edge Shard stores its data in a local directory on disk. Create the directory if it doesn&amp;rsquo;t exist yet:&lt;/p>























 
 

 
 


 
 
 
 

 
 
 
 
 

 
 
 
 
 

 
 
 
 
 

 
 
 
 
 


 
 







 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 





 
 

 
 

 
 

 
 
 &lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">pathlib&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">Path&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">SHARD_DIRECTORY&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;./qdrant-edge-directory&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">Path&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">SHARD_DIRECTORY&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">mkdir&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">parents&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">exist_ok&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="kc">True&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
 

 
 

 
 
 &lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-rust" data-lang="rust">&lt;span class="line">&lt;span class="cl">&lt;span class="k">const&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">SHARD_DIRECTORY&lt;/span>: &lt;span class="kp">&amp;amp;&lt;/span>&lt;span class="kt">str&lt;/span> &lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s">&amp;#34;./qdrant-edge-directory&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="n">fs_err&lt;/span>::&lt;span class="n">create_dir_all&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="no">SHARD_DIRECTORY&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">?&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
 

 
 

 
 

 
 





 

 


&lt;h2 id="configure-the-edge-shard">Configure the Edge Shard&lt;/h2>
&lt;p>An Edge Shard is configured with a definition of the dense and sparse vectors that can be stored in the Edge Shard, similar to how you would configure a Qdrant collection.&lt;/p></description></item><item><title>Quickstart</title><link>https://qdrant.tech/documentation/fastembed/fastembed-quickstart/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/fastembed/fastembed-quickstart/</guid><description>&lt;h1 id="how-to-generate-text-embedings-with-fastembed">How to Generate Text Embedings with FastEmbed&lt;/h1>
&lt;h2 id="install-fastembed">Install FastEmbed&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">pip&lt;/span> &lt;span class="n">install&lt;/span> &lt;span class="n">fastembed&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Just for demo purposes, you will use Lists and NumPy to work with sample data.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">typing&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">List&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">numpy&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">np&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="load-default-model">Load default model&lt;/h2>
&lt;p>In this example, you will use the default text embedding model, &lt;code>BAAI/bge-small-en-v1.5&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">fastembed&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">TextEmbedding&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="add-sample-data">Add sample data&lt;/h2>
&lt;p>Now, add two sample documents. Your documents must be in a list, and each document must be a string&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">documents&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">List&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="nb">str&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;FastEmbed is lighter than Transformers &amp;amp; Sentence-Transformers.&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;FastEmbed is supported by and maintained by Qdrant.&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Download and initialize the model. Print a message to verify the process.&lt;/p></description></item><item><title>S3 Ingestion with LangChain</title><link>https://qdrant.tech/documentation/tutorials-build-essentials/data-ingestion-beginners/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/tutorials-build-essentials/data-ingestion-beginners/</guid><description>&lt;!-- ![data-ingestion-beginners-7](/documentation/examples/data-ingestion-beginners/data-ingestion-7.png) -->
&lt;h1 id="s3-ingestion-with-langchain-and-qdrant">S3 Ingestion with LangChain and Qdrant&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 30 min&lt;/th>
 &lt;th>Level: Beginner&lt;/th>
 &lt;th>&lt;/th>
 &lt;th>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>Data ingestion into a vector store&lt;/strong> is essential for building effective search and retrieval algorithms, especially since nearly 80% of data is unstructured, lacking any predefined format.&lt;/p>
&lt;p>In this tutorial, we’ll create a streamlined data ingestion pipeline, pulling data directly from &lt;strong>AWS S3&lt;/strong> and feeding it into Qdrant. We’ll dive into vector embeddings, transforming unstructured data into a format that allows you to search documents semantically. Prepare to discover new ways to uncover insights hidden within unstructured data!&lt;/p></description></item><item><title>Snapshots</title><link>https://qdrant.tech/documentation/tutorials-operations/create-snapshot/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/tutorials-operations/create-snapshot/</guid><description>&lt;h1 id="backup--restore-qdrant-with-snapshots">Backup &amp;amp; Restore Qdrant with Snapshots&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 20 min&lt;/th>
 &lt;th>Level: Beginner&lt;/th>
 &lt;th>&lt;/th>
 &lt;th>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;/tbody>
&lt;/table>
&lt;p>A collection is a basic unit of data storage in Qdrant. It contains vectors, their IDs, and payloads. However, keeping the search efficient requires additional data structures to be built on top of the data. Building these data structures may take a while, especially for large collections.
That&amp;rsquo;s why using snapshots is the best way to export and import Qdrant collections, as they contain all the bits and pieces required to restore the entire collection efficiently.&lt;/p></description></item><item><title>Understanding Vector Search in Qdrant</title><link>https://qdrant.tech/documentation/overview/vector-search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/overview/vector-search/</guid><description>&lt;h1 id="how-does-vector-search-work-in-qdrant">How Does Vector Search Work in Qdrant?&lt;/h1>
&lt;p align="center">&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/mXNrhyw4q84?si=wruP9wWSa8JW4t78" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen>&lt;/iframe>&lt;/p>
&lt;p>If you are still trying to figure out how vector search works, please read ahead. This document describes how vector search is used, covers Qdrant&amp;rsquo;s place in the larger ecosystem, and outlines how you can use Qdrant to augment your existing projects.&lt;/p>
&lt;p>For those who want to start writing code right away, visit our &lt;a href="https://qdrant.tech/documentation/tutorials-basics/search-beginners/">Complete Beginners tutorial&lt;/a> to build a search engine in 5-15 minutes.&lt;/p></description></item><item><title>Vectors</title><link>https://qdrant.tech/documentation/manage-data/vectors/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/manage-data/vectors/</guid><description>&lt;h1 id="vectors">Vectors&lt;/h1>
&lt;p>Vectors (or embeddings) are the core concept of the Qdrant Vector Search engine.
Vectors define the similarity between objects in the vector space.&lt;/p>
&lt;p>If a pair of vectors are similar in vector space, it means that the objects they represent are similar in some way.&lt;/p>
&lt;p>For example, if you have a collection of images, you can represent each image as a vector.
If two images are similar, their vectors will be close to each other in the vector space.&lt;/p></description></item><item><title>Managed Services</title><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid/><description/></item><item><title>Upgrades</title><link>https://qdrant.tech/documentation/operations/upgrades/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/operations/upgrades/</guid><description>&lt;h1 id="upgrading-qdrant">Upgrading Qdrant&lt;/h1>
&lt;p>If you are several versions behind, multiple updates might be required to reach the latest version. When upgrading Qdrant, upgrade to the latest patch version of each intermediate minor version first. For example, if you are running version 1.15 and want to upgrade to 1.17, you must first upgrade all cluster nodes to 1.16.3 before upgrading to 1.17. A Qdrant node with version 1.17 will be compatible with a node with version 1.16, but not with a node with version 1.15. If you run a single node cluster, you also can not skip versions to ensure that all data migrations are properly applied. Qdrant Cloud does this automatically for you.&lt;/p></description></item><item><title>Getting Started</title><link>https://qdrant.tech/documentation/cloud-getting-started/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/cloud-getting-started/</guid><description>&lt;h1 id="getting-started-with-qdrant-managed-cloud">Getting Started with Qdrant Managed Cloud&lt;/h1>
&lt;p>Welcome to Qdrant Managed Cloud! This document contains all the information you need to get started.&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;p>Before creating a cluster, make sure you have a Qdrant Cloud account. Detailed instructions for signing up can be found in the &lt;a href="https://qdrant.tech/documentation/cloud-account-setup/">Qdrant Cloud Setup&lt;/a> guide. Qdrant Cloud supports granular &lt;a href="https://qdrant.tech/documentation/cloud-rbac/">role-based access control&lt;/a>.&lt;/p>
&lt;p>You also need to provide &lt;a href="https://qdrant.tech/documentation/cloud-pricing-payments/">payment details&lt;/a>. If you have a custom payment agreement, first create your account, then &lt;a href="https://support.qdrant.io/" target="_blank" rel="noopener nofollow">contact our Support Team&lt;/a> to finalize the setup.&lt;/p></description></item><item><title>Account Setup</title><link>https://qdrant.tech/documentation/cloud-account-setup/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/cloud-account-setup/</guid><description>&lt;h1 id="setting-up-a-qdrant-cloud-account">Setting up a Qdrant Cloud Account&lt;/h1>
&lt;h2 id="registration">Registration&lt;/h2>
&lt;p>There are different ways to register for a Qdrant Cloud account:&lt;/p>
&lt;ul>
&lt;li>With an email address and passwordless login via email&lt;/li>
&lt;li>With a Google account&lt;/li>
&lt;li>With a GitHub account&lt;/li>
&lt;li>By connection an enterprise SSO solution&lt;/li>
&lt;/ul>
&lt;p>Every account is tied to an email address. You can invite additional users to your account and manage their permissions.&lt;/p>
&lt;h3 id="email-registration">Email Registration&lt;/h3>
&lt;ol>
&lt;li>Register for a &lt;a href="https://cloud.qdrant.io/signup" target="_blank" rel="noopener nofollow">Cloud account&lt;/a> with your email, Google or GitHub credentials.&lt;/li>
&lt;/ol>
&lt;h2 id="inviting-additional-users-to-an-account">Inviting Additional Users to an Account&lt;/h2>
&lt;p>You can invite additional users to your account, and manage their permissions on the &lt;strong>Account -&amp;gt; Access Management&lt;/strong> page in the Qdrant Cloud Console.&lt;/p></description></item><item><title>Agentic RAG with LangGraph</title><link>https://qdrant.tech/documentation/tutorials-build-essentials/agentic-rag-langgraph/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/tutorials-build-essentials/agentic-rag-langgraph/</guid><description>&lt;h1 id="agentic-rag-with-langgraph-and-qdrant">Agentic RAG with LangGraph and Qdrant&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 45 min&lt;/th>
 &lt;th>Level: Intermediate&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;/tbody>
&lt;/table>
&lt;p>Traditional Retrieval-Augmented Generation (RAG) systems follow a straightforward path: query → retrieve → generate. Sure, this works well for many scenarios. But let’s face it—this linear approach often struggles when you&amp;rsquo;re dealing with complex queries that demand multiple steps or pulling together diverse types of information.&lt;/p>
&lt;p>&lt;a href="https://qdrant.tech/articles/agentic-rag/" target="_blank" rel="noopener nofollow">Agentic RAG&lt;/a> takes things up a notch by introducing AI agents that can orchestrate multiple retrieval steps and smartly decide how to gather and use the information you need. Think of it this way: in an Agentic RAG workflow, RAG becomes just one powerful tool in a much bigger and more versatile toolkit.&lt;/p></description></item><item><title>From Milvus</title><link>https://qdrant.tech/documentation/migrate-to-qdrant/from-milvus/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/migrate-to-qdrant/from-milvus/</guid><description>&lt;h1 id="migrate-from-milvus-to-qdrant">Migrate from Milvus to Qdrant&lt;/h1>
&lt;h2 id="what-you-need-from-milvus">What You Need from Milvus&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Milvus URL&lt;/strong> — the gRPC endpoint of your Milvus instance&lt;/li>
&lt;li>&lt;strong>Collection name&lt;/strong> — the collection to migrate&lt;/li>
&lt;li>&lt;strong>API key&lt;/strong> — if using Zilliz Cloud or authenticated Milvus&lt;/li>
&lt;/ul>
&lt;h2 id="concept-mapping">Concept Mapping&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Milvus&lt;/th>
 &lt;th style="text-align: left">Qdrant&lt;/th>
 &lt;th style="text-align: left">Notes&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">Collection&lt;/td>
 &lt;td style="text-align: left">Collection&lt;/td>
 &lt;td style="text-align: left">One-to-one mapping&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Partition&lt;/td>
 &lt;td style="text-align: left">Payload field or separate collection&lt;/td>
 &lt;td style="text-align: left">Use &lt;code>--milvus.partitions&lt;/code> to specify which partitions to migrate&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Schema fields&lt;/td>
 &lt;td style="text-align: left">Payload&lt;/td>
 &lt;td style="text-align: left">Non-vector fields become payload&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>COSINE&lt;/code>&lt;/td>
 &lt;td style="text-align: left">&lt;code>Cosine&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Direct mapping&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>L2&lt;/code>&lt;/td>
 &lt;td style="text-align: left">&lt;code>Euclid&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Direct mapping&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>IP&lt;/code> (inner product)&lt;/td>
 &lt;td style="text-align: left">&lt;code>Dot&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Direct mapping&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Dynamic fields&lt;/td>
 &lt;td style="text-align: left">Payload&lt;/td>
 &lt;td style="text-align: left">JSON-typed dynamic fields are preserved&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="run-the-migration">Run the Migration&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run --net&lt;span class="o">=&lt;/span>host --rm -it registry.cloud.qdrant.io/library/qdrant-migration milvus &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --milvus.url &lt;span class="s1">&amp;#39;your-milvus-host:19530&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --milvus.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --milvus.api-key &lt;span class="s1">&amp;#39;your-milvus-api-key&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.url &lt;span class="s1">&amp;#39;https://your-instance.cloud.qdrant.io:6334&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.api-key &lt;span class="s1">&amp;#39;your-qdrant-api-key&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="migrating-specific-partitions">Migrating Specific Partitions&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run --net&lt;span class="o">=&lt;/span>host --rm -it registry.cloud.qdrant.io/library/qdrant-migration milvus &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --milvus.url &lt;span class="s1">&amp;#39;your-milvus-host:19530&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --milvus.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --milvus.partitions &lt;span class="s1">&amp;#39;partition_a,partition_b&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.url &lt;span class="s1">&amp;#39;https://your-instance.cloud.qdrant.io:6334&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.api-key &lt;span class="s1">&amp;#39;your-qdrant-api-key&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="all-milvus-specific-flags">All Milvus-Specific Flags&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Flag&lt;/th>
 &lt;th style="text-align: left">Required&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--milvus.url&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Yes&lt;/td>
 &lt;td style="text-align: left">Milvus gRPC endpoint&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--milvus.collection&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Yes&lt;/td>
 &lt;td style="text-align: left">Collection name to migrate&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--milvus.api-key&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">API key (for Zilliz Cloud)&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--milvus.username&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Username for authentication&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--milvus.password&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Password for authentication&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--milvus.db-name&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Database name&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--milvus.partitions&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Comma-separated partition names&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--milvus.server-version&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Override detected server version&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--milvus.enable-tls-auth&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Enable TLS authentication&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="qdrant-side-options">Qdrant-Side Options&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Flag&lt;/th>
 &lt;th style="text-align: left">Default&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--qdrant.distance-metric&lt;/code>&lt;/td>
 &lt;td style="text-align: left">—&lt;/td>
 &lt;td style="text-align: left">Distance metric per vector field (map format, e.g., &lt;code>field1:cosine,field2:dot&lt;/code>)&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="gotchas">Gotchas&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Partition handling:&lt;/strong> Milvus partitions can map to Qdrant collections or payload filters. If you merge partitions into a single collection, add a partition name as a payload field for filtering.&lt;/li>
&lt;li>&lt;strong>Schema strictness:&lt;/strong> Milvus enforces schema on write; Qdrant is schema-flexible. Verify that the schema-less flexibility didn&amp;rsquo;t cause payload fields to drift during migration.&lt;/li>
&lt;li>&lt;strong>Dynamic fields:&lt;/strong> Milvus dynamic fields (introduced in 2.3) may serialize differently. Check that JSON-typed dynamic fields survived the migration with correct structure.&lt;/li>
&lt;/ul>
&lt;h2 id="next-steps">Next Steps&lt;/h2>
&lt;p>After migration, verify your data arrived correctly with the &lt;a href="https://qdrant.tech/documentation/migration-guidance/">Migration Verification Guide&lt;/a>.&lt;/p></description></item><item><title>Hybrid Queries</title><link>https://qdrant.tech/documentation/search/hybrid-queries/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/search/hybrid-queries/</guid><description>&lt;h1 id="hybrid-and-multi-stage-queries">Hybrid and Multi-Stage Queries&lt;/h1>
&lt;p>&lt;em>Available as of v1.10.0&lt;/em>&lt;/p>
&lt;p>With the introduction of &lt;a href="https://qdrant.tech/documentation/manage-data/vectors/#named-vectors">multiple named vectors per point&lt;/a>, there are use-cases when the best search is obtained by combining multiple queries,
or by performing the search in more than one stage.&lt;/p>
&lt;p>Qdrant has a flexible and universal interface to make this possible, called &lt;code>Query API&lt;/code> (&lt;a href="https://api.qdrant.tech/api-reference/search/query-points" target="_blank" rel="noopener nofollow">API reference&lt;/a>).&lt;/p>
&lt;p>The main component for making the combinations of queries possible is the &lt;code>prefetch&lt;/code> parameter, which enables making sub-requests.&lt;/p></description></item><item><title>Kafka Streaming into Qdrant</title><link>https://qdrant.tech/documentation/send-data/data-streaming-kafka-qdrant/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/send-data/data-streaming-kafka-qdrant/</guid><description>&lt;h1 id="stream-real-time-data-into-qdrant-with-kafka-and-confluent">Stream Real-Time Data into Qdrant with Kafka and Confluent&lt;/h1>
&lt;p>&lt;strong>Author:&lt;/strong> &lt;a href="https://www.linkedin.com/in/kameshwara-pavan-kumar-mantha-91678b21/" target="_blank" rel="noopener nofollow">M K Pavan Kumar&lt;/a> , research scholar at &lt;a href="https://iiitk.ac.in" target="_blank" rel="noopener nofollow">IIITDM, Kurnool&lt;/a>. Specialist in hallucination mitigation techniques and RAG methodologies.
• &lt;a href="https://github.com/pavanjava" target="_blank" rel="noopener nofollow">GitHub&lt;/a> • &lt;a href="https://medium.com/@manthapavankumar11" target="_blank" rel="noopener nofollow">Medium&lt;/a>&lt;/p>
&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>This guide will walk you through the detailed steps of installing and setting up the &lt;a href="https://github.com/qdrant/qdrant-kafka" target="_blank" rel="noopener nofollow">Qdrant Sink Connector&lt;/a>, building the necessary infrastructure, and creating a practical playground application. By the end of this article, you will have a deep understanding of how to leverage this powerful integration to streamline your data workflows, ultimately enhancing the performance and capabilities of your data-driven real-time semantic search and RAG applications.&lt;/p></description></item><item><title>On-Device Embeddings</title><link>https://qdrant.tech/documentation/edge/edge-fastembed-embeddings/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/edge/edge-fastembed-embeddings/</guid><description>&lt;h1 id="on-device-embeddings-with-qdrant-edge-and-fastembed">On-Device Embeddings with Qdrant Edge and FastEmbed&lt;/h1>
&lt;p>When using Python, you can use the &lt;a href="https://qdrant.tech/documentation/fastembed/">FastEmbed&lt;/a> library to generate embeddings for use with Qdrant Edge. FastEmbed provides multimodal models that run efficiently on edge devices to generate vector embeddings from text and images.&lt;/p>
&lt;h1 id="provision-the-device">Provision the Device&lt;/h1>
&lt;p>Assuming the devices on which you will run Qdrant Edge have intermittent or no internet connectivity, you need to provision them with the necessary dependencies and model files ahead of time. First, install FastEmbed and the Qdrant Edge Python bindings:&lt;/p></description></item><item><title>Payload</title><link>https://qdrant.tech/documentation/manage-data/payload/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/manage-data/payload/</guid><description>&lt;h1 id="payload">Payload&lt;/h1>
&lt;p>One of the significant features of Qdrant is the ability to store additional information along with vectors.
This information is called &lt;code>payload&lt;/code> in Qdrant terminology.&lt;/p>
&lt;p>Qdrant allows you to store any information that can be represented using JSON.&lt;/p>
&lt;p>Here is an example of a typical payload:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-json" data-lang="json">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;name&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;jacket&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;colors&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;red&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;blue&amp;#34;&lt;/span>&lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;count&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">10&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;price&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">11.99&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;locations&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;lon&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">52.5200&lt;/span>&lt;span class="p">,&lt;/span> 
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;lat&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mf">13.4050&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;reviews&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;user&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;alice&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;score&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">4&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;user&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;bob&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;#34;score&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="mi">5&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="payload-types">Payload types&lt;/h2>
&lt;p>In addition to storing payloads, Qdrant also allows you search based on certain kinds of values.
This feature is implemented as additional filters during the search and will enable you to incorporate custom logic on top of semantic similarity.&lt;/p></description></item><item><title>Search Quality</title><link>https://qdrant.tech/documentation/migration-guidance/search-quality/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/migration-guidance/search-quality/</guid><description>&lt;h1 id="search-quality-verification">Search Quality Verification&lt;/h1>
&lt;p>Two systems can hold identical vectors and produce different search results because of differences in indexing, quantization, scoring, and filtering implementation.&lt;/p>
&lt;p>This is perhaps the hardest part of migration verification. The guide breaks it into &lt;strong>three tiers&lt;/strong> so you can pick the level of rigor that matches your resources and risk tolerance.&lt;/p>
&lt;h2 id="three-tiered-search-quality-checks">Three-Tiered Search Quality Checks&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Tier&lt;/th>
 &lt;th>Effort&lt;/th>
 &lt;th>What It Catches&lt;/th>
 &lt;th>When to Use&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;strong>Tier 1: Spot-Check&lt;/strong>&lt;/td>
 &lt;td>15 min&lt;/td>
 &lt;td>Gross failures: wrong metric, broken filters, obviously wrong results&lt;/td>
 &lt;td>Every migration&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Tier 2: Statistical Sampling&lt;/strong>&lt;/td>
 &lt;td>1-2 hours&lt;/td>
 &lt;td>Systematic recall degradation, filter interaction bugs, score distribution shifts&lt;/td>
 &lt;td>Production workloads, &amp;gt;100K vectors&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Tier 3: Gold-Standard Evaluation&lt;/strong>&lt;/td>
 &lt;td>Half day to days&lt;/td>
 &lt;td>Measurable relevance changes with confidence intervals&lt;/td>
 &lt;td>High-stakes search (revenue, safety), regulated industries&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>Our recommendation:&lt;/strong> Every migration should run Tier 1 and Tier 2. Tier 3 is for teams that have (or can build) labeled evaluation data. If you don&amp;rsquo;t have labeled data today, Tier 2 gives you a strong quantitative baseline and this guide shows you how to build toward Tier 3 over time.&lt;/p></description></item><item><title>Billing &amp; Payments</title><link>https://qdrant.tech/documentation/cloud-pricing-payments/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/cloud-pricing-payments/</guid><description>&lt;h1 id="qdrant-cloud-billing--payments">Qdrant Cloud Billing &amp;amp; Payments&lt;/h1>
&lt;p>Qdrant database clusters in Qdrant Cloud are priced based on CPU, memory, and disk storage usage. To get a clearer idea for the pricing structure, based on the amounts of vectors you want to store, please use our &lt;a href="https://cloud.qdrant.io/calculator" target="_blank" rel="noopener nofollow">Pricing Calculator&lt;/a>.&lt;/p>
&lt;h2 id="billing">Billing&lt;/h2>
&lt;p>You can pay for your Qdrant Cloud database clusters either with a credit card or through an AWS, GCP, or Azure Marketplace subscription.&lt;/p>
&lt;p>Your payment method is charged at the beginning of each month for the previous month&amp;rsquo;s usage. There is no difference in pricing between the different payment methods.&lt;/p></description></item><item><title>Premium Tier</title><link>https://qdrant.tech/documentation/cloud-premium/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/cloud-premium/</guid><description>&lt;h1 id="qdrant-cloud-premium-tier">Qdrant Cloud Premium Tier&lt;/h1>
&lt;p>Qdrant Cloud offers an optional premium tier for customers who require additional features and better SLA support levels. The premium tier includes:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>24/7 Support&lt;/strong>: Our support team is available around the clock to help you with any issues you may encounter (compared to 10x5 in standard).&lt;/li>
&lt;li>&lt;strong>Shorter Response Times&lt;/strong>: Premium customers receive priority support and can expect faster response times, with shorter SLAs.&lt;/li>
&lt;li>&lt;strong>99.9% Uptime SLA&lt;/strong>: We guarantee 99.9% uptime for your Qdrant Cloud clusters (compared to 99.5% in standard).&lt;/li>
&lt;li>&lt;strong>Single Sign-On (SSO)&lt;/strong>: Premium customers can use their existing SSO provider to manage access to Qdrant Cloud.&lt;/li>
&lt;li>&lt;strong>VPC Private Links&lt;/strong>: Premium customers can connect their Qdrant Cloud clusters to their VPCs using private links.&lt;/li>
&lt;li>&lt;strong>Storage encryption with shared keys&lt;/strong>: Premium customers can encrypt their data at rest using their own keys.&lt;/li>
&lt;/ul>
&lt;p>Please refer to the &lt;a href="https://qdrant.to/sla/" target="_blank" rel="noopener nofollow">Qdrant Cloud SLA&lt;/a> for a detailed definition on uptime and support SLAs.&lt;/p></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">How to train object matching model with no labeled data and use it in production&lt;/h2>
&lt;p>Currently, most machine-learning-related business cases are solved as a 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>
&lt;p>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></description></item><item><title>Building a Chain-of-Thought Medical Chatbot with Qdrant and DSPy</title><link>https://qdrant.tech/documentation/examples/qdrant-dspy-medicalbot/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/examples/qdrant-dspy-medicalbot/</guid><description>&lt;h1 id="building-a-chain-of-thought-medical-chatbot-with-qdrant-and-dspy">Building a Chain-of-Thought Medical Chatbot with Qdrant and DSPy&lt;/h1>
&lt;p>Accessing medical information from LLMs can lead to hallucinations or outdated information. Relying on this type of information can result in serious medical consequences. Building a trustworthy and context-aware medical chatbot can solve this.&lt;/p>
&lt;p>In this article, we will look at how to tackle these challenges using:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Retrieval-Augmented Generation (RAG)&lt;/strong>: Instead of answering the questions from scratch, the bot retrieves the information from medical literature before answering questions.&lt;/li>
&lt;li>&lt;strong>Filtering&lt;/strong>: Users can filter the results by specialty and publication year, ensuring the information is accurate and up-to-date.&lt;/li>
&lt;/ul>
&lt;p>Let’s discover the technologies needed to build the medical bot.&lt;/p></description></item><item><title>Collections</title><link>https://qdrant.tech/documentation/manage-data/collections/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/manage-data/collections/</guid><description>&lt;h1 id="collections">Collections&lt;/h1>
&lt;p>A collection is a named set of points (vectors with a payload) among which you can search. The vector of each point within the same collection must have the same dimensionality and be compared by a single metric. &lt;a href="#collection-with-multiple-vectors">Named vectors&lt;/a> can be used to have multiple vectors in a single point, each of which can have their own dimensionality and metric requirements.&lt;/p>
&lt;p>Distance metrics are used to measure similarities among vectors.
The choice of metric depends on the way vectors obtaining and, in particular, on the method of neural network encoder training.&lt;/p></description></item><item><title>Create a Cluster</title><link>https://qdrant.tech/documentation/cloud/create-cluster/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/cloud/create-cluster/</guid><description>&lt;h1 id="creating-a-qdrant-cloud-cluster">Creating a Qdrant Cloud Cluster&lt;/h1>
&lt;p>Qdrant Cloud offers two types of clusters: &lt;strong>Free&lt;/strong> and &lt;strong>Standard&lt;/strong>.&lt;/p>
&lt;h2 id="free-clusters">Free Clusters&lt;/h2>
&lt;p>Free tier clusters are perfect for prototyping and testing. You don&amp;rsquo;t need a credit card to join.&lt;/p>
&lt;p>A free tier cluster only includes 1 single node with the following resources:&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Resource&lt;/th>
 &lt;th>Value&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>RAM&lt;/td>
 &lt;td>1 GB&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>vCPU&lt;/td>
 &lt;td>0.5&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Disk space&lt;/td>
 &lt;td>4 GB&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Nodes&lt;/td>
 &lt;td>1&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>This configuration supports serving about 1 M vectors of 768 dimensions. To calculate your needs, refer to our documentation on &lt;a href="https://qdrant.tech/documentation/operations/capacity-planning/">Capacity Planning&lt;/a>.&lt;/p></description></item><item><title>Data Migration</title><link>https://qdrant.tech/documentation/tutorials-operations/migration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/tutorials-operations/migration/</guid><description>&lt;h1 id="migrate-your-embeddings-to-qdrant">Migrate Your Embeddings to Qdrant&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: Varies&lt;/th>
 &lt;th>Level: Intermediate&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;/tbody>
&lt;/table>
&lt;p>Migrating data between vector databases, especially across regions, platforms, or deployment types, can be a hassle. That’s where the &lt;a href="https://github.com/qdrant/migration" target="_blank" rel="noopener nofollow">Qdrant Migration Tool&lt;/a> comes in. It supports a wide range of migration needs, including transferring data between Qdrant instances and migrating from other vector database providers to Qdrant.&lt;/p>
&lt;p>You can run the migration tool on any machine where you have connectivity to both the source and the target Qdrant databases. Direct connectivity between both databases is not required. For optimal performance, you should run the tool on a machine with a fast network connection and minimum latency to both databases.&lt;/p></description></item><item><title>Data Synchronization Patterns</title><link>https://qdrant.tech/documentation/edge/edge-data-synchronization-patterns/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/edge/edge-data-synchronization-patterns/</guid><description>&lt;h1 id="data-synchronization-patterns">Data Synchronization Patterns&lt;/h1>
&lt;p>This page describes patterns for synchronizing data between Qdrant Edge Shards and Qdrant server collections. For a practical end-to-end guide on implementing these patterns, refer to the &lt;a href="https://qdrant.tech/documentation/edge/edge-synchronization-guide/">Qdrant Edge Synchronization Guide&lt;/a>.&lt;/p>
&lt;h2 id="initialize-edge-shard-from-existing-qdrant-collection">Initialize Edge Shard from Existing Qdrant Collection&lt;/h2>
&lt;p>Instead of starting with an empty Edge Shard, you may want to initialize it with pre-existing data from a collection on a Qdrant server. You can achieve this by restoring a snapshot of a shard in the server-side collection.&lt;/p></description></item><item><title>Diagnosing Discrepancies</title><link>https://qdrant.tech/documentation/migration-guidance/diagnosing-discrepancies/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/migration-guidance/diagnosing-discrepancies/</guid><description>&lt;h1 id="diagnosing-discrepancies">Diagnosing Discrepancies&lt;/h1>
&lt;p>When verification catches a problem, you need to determine whether it&amp;rsquo;s a data issue (something went wrong during migration) or a configuration issue (the data is correct but the systems behave differently). This page provides a diagnostic decision tree and vendor-specific gotchas.&lt;/p>
&lt;h2 id="decision-tree">Decision Tree&lt;/h2>
&lt;p>Start here when any verification check fails:&lt;/p>
&lt;pre tabindex="0">&lt;code>Is the vector count wrong?
├─ Yes → Data-level issue
│ ├─ Count lower than expected → Check migration script logs for errors,
│ │ timeouts, or partial failures. Re-run for missing segments.
│ ├─ Count higher than expected → Check for duplicate inserts (retried batches)
│ │ or source count excluding namespaces/partitions.
│ └─ Count matches but IDs differ → ID mapping error during migration.
│
└─ No (count matches) → Continue
 │
 Are metadata fields missing or wrong type?
 ├─ Yes → Payload mapping issue
 │ ├─ Fields missing → Source system may omit null fields on export.
 │ │ Check migration script&amp;#39;s null handling.
 │ ├─ Types changed → See &amp;#34;Type Coercion&amp;#34; section below.
 │ └─ Values differ → Encoding issue (UTF-8, special characters, unicode normalization).
 │
 └─ No (metadata looks correct) → Continue
 │
 Are search results completely different?
 ├─ Yes → Configuration-level issue
 │ ├─ Check distance metric (most common cause)
 │ ├─ Check if index is built (HNSW may not be built yet on fresh data)
 │ └─ Check if vectors are normalized (affects cosine vs. dot product)
 │
 └─ No (results overlap but differ at the margins) → Expected behavior
 │
 Is recall@10 below 0.85?
 ├─ Yes → Indexing parameter mismatch
 │ ├─ Compare HNSW ef_construction and M values
 │ ├─ Compare ef (search-time) parameters
 │ └─ Check quantization settings
 │
 └─ No → Migration is working correctly.
 Results differ on borderline cases due to
 ANN approximation. This is normal.
&lt;/code>&lt;/pre>&lt;h2 id="configuration-level-issues">Configuration-Level Issues&lt;/h2>
&lt;h3 id="distance-metric-mismatch">Distance Metric Mismatch&lt;/h3>
&lt;p>The most impactful configuration error. Here&amp;rsquo;s how metrics map across systems:&lt;/p></description></item><item><title>Discord RAG Bot</title><link>https://qdrant.tech/documentation/tutorials-build-essentials/agentic-rag-camelai-discord/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/tutorials-build-essentials/agentic-rag-camelai-discord/</guid><description>&lt;!-- ![agentic-rag-camelai-astronaut](/documentation/examples/agentic-rag-camelai-discord/astronaut-main.png) -->
&lt;h1 id="qdrant-agentic-rag-discord-bot-with-camel-ai-and-openai">Qdrant Agentic RAG Discord Bot with CAMEL-AI and OpenAI&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/drive/1Ymqzm6ySoyVOekY7fteQBCFCXYiYyHxw#scrollTo=QQZXwzqmNfaS" 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>Unlike traditional RAG techniques, which passively retrieve context and generate responses, &lt;strong>agentic RAG&lt;/strong> involves active decision-making and multi-step reasoning by the chatbot. Instead of just fetching data, the chatbot makes decisions, dynamically interacts with various data sources, and adapts based on context, giving it a much more dynamic and intelligent approach.&lt;/p></description></item><item><title>Explore</title><link>https://qdrant.tech/documentation/search/explore/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/search/explore/</guid><description>&lt;h1 id="explore-the-data">Explore the data&lt;/h1>
&lt;p>After mastering the concepts in &lt;a href="https://qdrant.tech/documentation/search/search/">search&lt;/a>, you can start exploring your data in other ways. Qdrant provides a stack of APIs that allow you to find similar vectors in a different fashion, as well as to find the most dissimilar ones. These are useful tools for recommendation systems, data exploration, and data cleaning.&lt;/p>
&lt;h2 id="recommendation-api">Recommendation API&lt;/h2>
&lt;p>In addition to the regular search, Qdrant also allows you to search based on multiple positive and negative examples. The API is called &lt;em>&lt;strong>recommend&lt;/strong>&lt;/em>, and the examples can be point IDs, so that you can leverage the already encoded objects; and, as of v1.6, you can also use raw vectors as input, so that you can create your vectors on the fly without uploading them as points.&lt;/p></description></item><item><title>FastEmbed &amp; Qdrant</title><link>https://qdrant.tech/documentation/fastembed/fastembed-semantic-search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/fastembed/fastembed-semantic-search/</guid><description>&lt;h1 id="using-fastembed-with-qdrant-for-vector-search">Using FastEmbed with Qdrant for Vector Search&lt;/h1>
&lt;h2 id="install-qdrant-client-and-fastembed">Install Qdrant Client and FastEmbed&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">pip&lt;/span> &lt;span class="n">install&lt;/span> &lt;span class="s2">&amp;#34;qdrant-client[fastembed]&amp;gt;=1.14.2&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="initialize-the-client">Initialize the client&lt;/h2>
&lt;p>Qdrant Client has a simple in-memory mode that lets you try semantic search locally.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qdrant_client&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">QdrantClient&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">models&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">client&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">QdrantClient&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;:memory:&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="c1"># Qdrant is running from RAM.&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="add-data">Add data&lt;/h2>
&lt;p>Now you can add two sample documents, their associated metadata, and a point &lt;code>id&lt;/code> for each.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">docs&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Qdrant has a LangChain integration for chatbots.&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Qdrant has a LlamaIndex integration for agents.&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">metadata&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;source&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;langchain-docs&amp;#34;&lt;/span>&lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;source&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;llamaindex-docs&amp;#34;&lt;/span>&lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">ids&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="mi">42&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="create-a-collection">Create a collection&lt;/h2>
&lt;p>Qdrant stores vectors and associated metadata in collections.
Collection requires vector parameters to be set during creation.
In this tutorial, we&amp;rsquo;ll be using &lt;code>BAAI/bge-small-en&lt;/code> to compute embeddings.&lt;/p></description></item><item><title>From Elasticsearch</title><link>https://qdrant.tech/documentation/migrate-to-qdrant/from-elasticsearch/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/migrate-to-qdrant/from-elasticsearch/</guid><description>&lt;h1 id="migrate-from-elasticsearch-to-qdrant">Migrate from Elasticsearch to Qdrant&lt;/h1>
&lt;h2 id="what-you-need-from-elasticsearch">What You Need from Elasticsearch&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Elasticsearch URL&lt;/strong> — the HTTP endpoint&lt;/li>
&lt;li>&lt;strong>Index name&lt;/strong> — the index containing your vectors&lt;/li>
&lt;li>&lt;strong>Credentials&lt;/strong> — username/password or API key&lt;/li>
&lt;/ul>
&lt;h2 id="concept-mapping">Concept Mapping&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Elasticsearch&lt;/th>
 &lt;th style="text-align: left">Qdrant&lt;/th>
 &lt;th style="text-align: left">Notes&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">Index&lt;/td>
 &lt;td style="text-align: left">Collection&lt;/td>
 &lt;td style="text-align: left">One-to-one mapping&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Document&lt;/td>
 &lt;td style="text-align: left">Point&lt;/td>
 &lt;td style="text-align: left">Each document becomes a point&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>dense_vector&lt;/code> field&lt;/td>
 &lt;td style="text-align: left">Vector&lt;/td>
 &lt;td style="text-align: left">Mapped automatically&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Document fields&lt;/td>
 &lt;td style="text-align: left">Payload&lt;/td>
 &lt;td style="text-align: left">Non-vector fields become payload&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>cosine&lt;/code>&lt;/td>
 &lt;td style="text-align: left">&lt;code>Cosine&lt;/code>&lt;/td>
 &lt;td style="text-align: left">ES returns &lt;code>1 - cosine_distance&lt;/code>; Qdrant returns cosine similarity directly&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>l2_norm&lt;/code>&lt;/td>
 &lt;td style="text-align: left">&lt;code>Euclid&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Direct mapping&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>dot_product&lt;/code>&lt;/td>
 &lt;td style="text-align: left">&lt;code>Dot&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Direct mapping&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="run-the-migration">Run the Migration&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run --net&lt;span class="o">=&lt;/span>host --rm -it registry.cloud.qdrant.io/library/qdrant-migration elasticsearch &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --elasticsearch.url &lt;span class="s1">&amp;#39;https://your-es-host:9200&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --elasticsearch.index &lt;span class="s1">&amp;#39;your-index&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --elasticsearch.username &lt;span class="s1">&amp;#39;elastic&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --elasticsearch.password &lt;span class="s1">&amp;#39;your-password&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.url &lt;span class="s1">&amp;#39;https://your-instance.cloud.qdrant.io:6334&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.api-key &lt;span class="s1">&amp;#39;your-qdrant-api-key&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="using-api-key-authentication">Using API Key Authentication&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run --net&lt;span class="o">=&lt;/span>host --rm -it registry.cloud.qdrant.io/library/qdrant-migration elasticsearch &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --elasticsearch.url &lt;span class="s1">&amp;#39;https://your-es-host:9200&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --elasticsearch.index &lt;span class="s1">&amp;#39;your-index&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --elasticsearch.api-key &lt;span class="s1">&amp;#39;your-es-api-key&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.url &lt;span class="s1">&amp;#39;https://your-instance.cloud.qdrant.io:6334&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.api-key &lt;span class="s1">&amp;#39;your-qdrant-api-key&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="all-elasticsearch-specific-flags">All Elasticsearch-Specific Flags&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Flag&lt;/th>
 &lt;th style="text-align: left">Required&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--elasticsearch.url&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Yes&lt;/td>
 &lt;td style="text-align: left">Elasticsearch HTTP endpoint&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--elasticsearch.index&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Yes&lt;/td>
 &lt;td style="text-align: left">Index to migrate&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--elasticsearch.username&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Username for basic auth&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--elasticsearch.password&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Password for basic auth&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--elasticsearch.api-key&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">API key for authentication&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--elasticsearch.insecure-skip-verify&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Skip TLS certificate verification&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="qdrant-side-options">Qdrant-Side Options&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Flag&lt;/th>
 &lt;th style="text-align: left">Default&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--qdrant.id-field&lt;/code>&lt;/td>
 &lt;td style="text-align: left">&lt;code>__id__&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Payload field name for original Elasticsearch document IDs&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="hybrid-search-considerations">Hybrid Search Considerations&lt;/h2>
&lt;p>If your Elasticsearch setup uses hybrid BM25 + kNN scoring, you&amp;rsquo;ll need to reconstruct this in Qdrant using &lt;a href="https://qdrant.tech/documentation/manage-data/vectors/#sparse-vectors">sparse vectors&lt;/a> (for BM25-like behavior) alongside dense vectors. The migration tool transfers the dense vectors; you&amp;rsquo;ll need to generate sparse vectors separately if you want hybrid search in Qdrant.&lt;/p></description></item><item><title>From OpenSearch</title><link>https://qdrant.tech/documentation/migrate-to-qdrant/from-opensearch/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/migrate-to-qdrant/from-opensearch/</guid><description>&lt;h1 id="migrate-from-opensearch-to-qdrant">Migrate from OpenSearch to Qdrant&lt;/h1>
&lt;h2 id="what-you-need-from-opensearch">What You Need from OpenSearch&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>OpenSearch URL&lt;/strong> — the HTTP endpoint&lt;/li>
&lt;li>&lt;strong>Index name&lt;/strong> — the index containing your vectors&lt;/li>
&lt;li>&lt;strong>Credentials&lt;/strong> — username/password or API key&lt;/li>
&lt;/ul>
&lt;h2 id="concept-mapping">Concept Mapping&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">OpenSearch&lt;/th>
 &lt;th style="text-align: left">Qdrant&lt;/th>
 &lt;th style="text-align: left">Notes&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">Index&lt;/td>
 &lt;td style="text-align: left">Collection&lt;/td>
 &lt;td style="text-align: left">One-to-one mapping&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Document&lt;/td>
 &lt;td style="text-align: left">Point&lt;/td>
 &lt;td style="text-align: left">Each document becomes a point&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>knn_vector&lt;/code> field&lt;/td>
 &lt;td style="text-align: left">Vector&lt;/td>
 &lt;td style="text-align: left">Mapped automatically&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Document fields&lt;/td>
 &lt;td style="text-align: left">Payload&lt;/td>
 &lt;td style="text-align: left">Non-vector fields become payload&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>cosinesimil&lt;/code>&lt;/td>
 &lt;td style="text-align: left">&lt;code>Cosine&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Direct mapping&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>l2&lt;/code>&lt;/td>
 &lt;td style="text-align: left">&lt;code>Euclid&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Direct mapping&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>innerproduct&lt;/code>&lt;/td>
 &lt;td style="text-align: left">&lt;code>Dot&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Direct mapping&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="run-the-migration">Run the Migration&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run --net&lt;span class="o">=&lt;/span>host --rm -it registry.cloud.qdrant.io/library/qdrant-migration opensearch &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --opensearch.url &lt;span class="s1">&amp;#39;https://your-opensearch-host:9200&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --opensearch.index &lt;span class="s1">&amp;#39;your-index&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --opensearch.username &lt;span class="s1">&amp;#39;admin&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --opensearch.password &lt;span class="s1">&amp;#39;your-password&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.url &lt;span class="s1">&amp;#39;https://your-instance.cloud.qdrant.io:6334&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.api-key &lt;span class="s1">&amp;#39;your-qdrant-api-key&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="using-api-key-authentication">Using API Key Authentication&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run --net&lt;span class="o">=&lt;/span>host --rm -it registry.cloud.qdrant.io/library/qdrant-migration opensearch &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --opensearch.url &lt;span class="s1">&amp;#39;https://your-opensearch-host:9200&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --opensearch.index &lt;span class="s1">&amp;#39;your-index&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --opensearch.api-key &lt;span class="s1">&amp;#39;your-opensearch-api-key&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.url &lt;span class="s1">&amp;#39;https://your-instance.cloud.qdrant.io:6334&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.api-key &lt;span class="s1">&amp;#39;your-qdrant-api-key&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="all-opensearch-specific-flags">All OpenSearch-Specific Flags&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Flag&lt;/th>
 &lt;th style="text-align: left">Required&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--opensearch.url&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Yes&lt;/td>
 &lt;td style="text-align: left">OpenSearch HTTP endpoint&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--opensearch.index&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Yes&lt;/td>
 &lt;td style="text-align: left">Index to migrate&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--opensearch.username&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Username for basic auth&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--opensearch.password&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Password for basic auth&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--opensearch.api-key&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">API key for authentication&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--opensearch.insecure-skip-verify&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Skip TLS certificate verification&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="qdrant-side-options">Qdrant-Side Options&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Flag&lt;/th>
 &lt;th style="text-align: left">Default&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--qdrant.id-field&lt;/code>&lt;/td>
 &lt;td style="text-align: left">&lt;code>__id__&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Payload field name for original OpenSearch document IDs&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="gotchas">Gotchas&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>OpenSearch vs. Elasticsearch:&lt;/strong> OpenSearch is a fork of Elasticsearch, so many of the same considerations apply. However, the CLI subcommand is &lt;code>opensearch&lt;/code>, not &lt;code>elasticsearch&lt;/code>.&lt;/li>
&lt;li>&lt;strong>Score normalization:&lt;/strong> OpenSearch &lt;code>_score&lt;/code> values are not directly comparable to Qdrant scores. Use rank-based metrics when &lt;a href="https://qdrant.tech/documentation/migration-guidance/">verifying your migration&lt;/a>.&lt;/li>
&lt;li>&lt;strong>Nested documents:&lt;/strong> OpenSearch nested documents need to be flattened or restructured for Qdrant&amp;rsquo;s payload model.&lt;/li>
&lt;/ul>
&lt;h2 id="next-steps">Next Steps&lt;/h2>
&lt;p>After migration, verify your data arrived correctly with the &lt;a href="https://qdrant.tech/documentation/migration-guidance/">Migration Verification Guide&lt;/a>.&lt;/p></description></item><item><title>Interfaces &amp; Tools</title><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid/><description/></item><item><title>Multimodal and Multilingual RAG</title><link>https://qdrant.tech/documentation/tutorials-build-essentials/multimodal-search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/tutorials-build-essentials/multimodal-search/</guid><description>&lt;h1 id="multimodal-and-multilingual-rag-with-llamaindex-and-qdrant">Multimodal and Multilingual RAG with LlamaIndex and Qdrant&lt;/h1>
&lt;!-- ![Snow prints](/documentation/examples/multimodal-search/image-1.png) -->
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 15 min&lt;/th>
 &lt;th>Level: Beginner&lt;/th>
 &lt;th>Output: &lt;a href="https://github.com/qdrant/examples/blob/master/multimodal-search/Multimodal_Search_with_LlamaIndex.ipynb" target="_blank" rel="noopener nofollow">GitHub&lt;/a>&lt;/th>
 &lt;th>&lt;a href="https://githubtocolab.com/qdrant/examples/blob/master/multimodal-search/Multimodal_Search_with_LlamaIndex.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;h2 id="overview">Overview&lt;/h2>
&lt;p>We often understand and share information more effectively when combining different types of data. For example, the taste of comfort food can trigger childhood memories. We might describe a song with just “pam pam clap” sounds. Instead of writing paragraphs. Sometimes, we may use emojis and stickers to express how we feel or to share complex ideas.&lt;/p></description></item><item><title>Multitenancy with LlamaIndex</title><link>https://qdrant.tech/documentation/examples/llama-index-multitenancy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/examples/llama-index-multitenancy/</guid><description>&lt;h1 id="multitenancy-with-llamaindex">Multitenancy with LlamaIndex&lt;/h1>
&lt;p>If you are building a service that serves vectors for many independent users, and you want to isolate their
data, the best practice is to use a single collection with payload-based partitioning. This approach is
called &lt;strong>multitenancy&lt;/strong>. Our guide on the &lt;a href="https://qdrant.tech/documentation/manage-data/multitenancy/">Separate Partitions&lt;/a> describes
how to set it up in general, but if you use &lt;a href="https://qdrant.tech/documentation/frameworks/llama-index/">LlamaIndex&lt;/a> as a
backend, you may prefer reading a more specific instruction. So here it is!&lt;/p></description></item><item><title>Snapshots</title><link>https://qdrant.tech/documentation/operations/snapshots/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/operations/snapshots/</guid><description>&lt;h1 id="snapshots">Snapshots&lt;/h1>
&lt;p>&lt;em>Available as of v0.8.4&lt;/em>&lt;/p>
&lt;p>Snapshots are &lt;code>tar&lt;/code> archive files that contain data and configuration of a specific collection on a specific node at a specific time. In a distributed setup, when you have multiple nodes in your cluster, you must create snapshots for each node separately when dealing with a single collection.&lt;/p>
&lt;p>This feature can be used to archive data or easily replicate an existing deployment. For disaster recovery, Qdrant Cloud users may prefer to use &lt;a href="https://qdrant.tech/documentation/cloud/backups/">Backups&lt;/a> instead, which are physical disk-level copies of your data.&lt;/p></description></item><item><title>Storage</title><link>https://qdrant.tech/documentation/manage-data/storage/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/manage-data/storage/</guid><description>&lt;h1 id="storage">Storage&lt;/h1>
&lt;p>All data within one collection is divided into segments.
Each segment has its independent vector and payload storage as well as indexes.&lt;/p>
&lt;p>Data stored in segments usually do not overlap.
However, storing the same point in different segments will not cause problems since the search contains a deduplication mechanism.&lt;/p>
&lt;p>The segments consist of vector and payload storages, vector and payload &lt;a href="https://qdrant.tech/documentation/manage-data/indexing/">indexes&lt;/a>, and id mapper, which stores the relationship between internal and external ids.&lt;/p></description></item><item><title>Text Search</title><link>https://qdrant.tech/documentation/search/text-search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/search/text-search/</guid><description>&lt;h2 id="text-search">Text Search&lt;/h2>
&lt;p>Qdrant is a vector search engine, making it a great tool for &lt;a href="#semantic-search">semantic search&lt;/a>. However, Qdrant&amp;rsquo;s capabilities go beyond just vector search. It also supports a range of lexical search features, including filtering on text fields and full-text search using popular algorithms like BM25.&lt;/p>
&lt;h3 id="semantic-search">Semantic Search&lt;/h3>
&lt;p>Semantic search is a search technique that focuses on the meaning of the text rather than just matching on keywords. This is achieved by converting text into &lt;a href="https://qdrant.tech/documentation/manage-data/vectors/">vectors&lt;/a> (embeddings) using machine learning models. These vectors capture the semantic meaning of the text, enabling you to find similar text even if it doesn&amp;rsquo;t share exact keywords.&lt;/p></description></item><item><title>Qdrant Cloud API</title><link>https://qdrant.tech/documentation/cloud-api/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/cloud-api/</guid><description>&lt;h1 id="qdrant-cloud-api-powerful-grpc-and-flexible-restjson-interfaces">Qdrant Cloud API: Powerful gRPC and Flexible REST/JSON Interfaces&lt;/h1>
&lt;p>&lt;strong>Note:&lt;/strong> This is not the Qdrant REST or gPRC API of the database itself. For database APIs &amp;amp; SDKs, see our list of &lt;a href="https://qdrant.tech/documentation/interfaces/">interfaces&lt;/a>&lt;/p>
&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>The Qdrant Cloud API lets you automate the Qdrant Cloud platform. You can use this API to manage your accounts, clusters, backup schedules, authentication methods, hybrid cloud environments, and more.&lt;/p>
&lt;p>To cater to diverse integration needs, the Qdrant Cloud API offers two primary interaction models:&lt;/p></description></item><item><title>Qdrant Cloud CLI</title><link>https://qdrant.tech/documentation/cloud-cli/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/cloud-cli/</guid><description>&lt;h1 id="qdrant-cloud-cli">Qdrant Cloud CLI&lt;/h1>
&lt;p>&lt;code>qcloud&lt;/code> is the official command-line interface for managing Qdrant Cloud. It lets you manage clusters, authentication, and anything the Qdrant Cloud API has to offer—all from your terminal.&lt;/p>
&lt;h2 id="installation">Installation&lt;/h2>
&lt;h3 id="from-github-releases">From GitHub Releases&lt;/h3>
&lt;p>Download the latest release from &lt;a href="https://github.com/qdrant/qcloud-cli/releases" target="_blank" rel="noopener nofollow">GitHub Releases&lt;/a>.&lt;/p>
&lt;p>Select the archive that matches your OS and CPU architecture, extract it, and place the &lt;code>qcloud&lt;/code> binary somewhere in your &lt;code>PATH&lt;/code> (e.g. &lt;code>~/.local/bin&lt;/code> or &lt;code>/usr/local/bin&lt;/code>).&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>macOS:&lt;/strong> The binary is currently not signed. If macOS blocks it, run &lt;code>xattr -d com.apple.quarantine qcloud&lt;/code> after extracting.&lt;/p></description></item><item><title>Metric Learning for Anomaly Detection</title><link>https://qdrant.tech/articles/detecting-coffee-anomalies/</link><pubDate>Wed, 04 May 2022 13:00:00 +0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/detecting-coffee-anomalies/</guid><description>&lt;p>Anomaly detection is a thirsting yet challenging task that has numerous use cases across various industries.
The complexity results mainly from the fact that the task is data-scarce by definition.&lt;/p>
&lt;p>Similarly, anomalies are, again by definition, subject to frequent change, and they may take unexpected forms.
For that reason, supervised classification-based approaches are:&lt;/p>
&lt;ul>
&lt;li>Data-hungry - requiring quite a number of labeled data;&lt;/li>
&lt;li>Expensive - data labeling is an expensive task itself;&lt;/li>
&lt;li>Time-consuming - you would try to obtain what is necessarily scarce;&lt;/li>
&lt;li>Hard to maintain - you would need to re-train the model repeatedly in response to changes in the data distribution.&lt;/li>
&lt;/ul>
&lt;p>These are not desirable features if you want to put your model into production in a rapidly-changing environment.
And, despite all the mentioned difficulties, they do not necessarily offer superior performance compared to the alternatives.
In this post, we will detail the lessons learned from such a use case.&lt;/p></description></item><item><title>Triplet Loss - Advanced Intro</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">What is Triplet Loss?&lt;/h2>
&lt;p>Triplet Loss was first introduced in &lt;a href="https://arxiv.org/abs/1503.03832" target="_blank" rel="noopener nofollow">FaceNet: A Unified Embedding for Face Recognition and Clustering&lt;/a> 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></description></item><item><title>5-Minute RAG with DeepSeek</title><link>https://qdrant.tech/documentation/tutorials-build-essentials/rag-deepseek/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/tutorials-build-essentials/rag-deepseek/</guid><description>&lt;!-- ![deepseek-rag-qdrant](/documentation/examples/rag-deepseek/deepseek.png) -->
&lt;h1 id="rag-in-5-minutes-with-deepseek-and-qdrant">RAG in 5 Minutes with DeepSeek and Qdrant&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 5 min&lt;/th>
 &lt;th>Level: Beginner&lt;/th>
 &lt;th>Output: &lt;a href="https://github.com/qdrant/examples/blob/master/rag-with-qdrant-deepseek/deepseek-qdrant.ipynb" 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 demonstrates how to build a &lt;strong>Retrieval-Augmented Generation (RAG)&lt;/strong> pipeline using Qdrant as a vector storage solution and DeepSeek for semantic query enrichment. RAG pipelines enhance Large Language Model (LLM) responses by providing contextually relevant data.&lt;/p>
&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>In this tutorial, we will:&lt;/p>
&lt;ol>
&lt;li>Take sample text and turn it into vectors with FastEmbed.&lt;/li>
&lt;li>Send the vectors to a Qdrant collection.&lt;/li>
&lt;li>Connect Qdrant and DeepSeek into a minimal RAG pipeline.&lt;/li>
&lt;li>Ask DeepSeek different questions and test answer accuracy.&lt;/li>
&lt;li>Enrich DeepSeek prompts with content retrieved from Qdrant.&lt;/li>
&lt;li>Evaluate answer accuracy before and after.&lt;/li>
&lt;/ol>
&lt;h4 id="architecture">Architecture:&lt;/h4>
&lt;p>&lt;img src="https://qdrant.tech/documentation/examples/rag-deepseek/architecture.png" alt="deepseek-rag-architecture">&lt;/p></description></item><item><title>Authentication</title><link>https://qdrant.tech/documentation/cloud/authentication/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/cloud/authentication/</guid><description>&lt;h1 id="database-authentication-in-qdrant-managed-cloud">Database Authentication in Qdrant Managed Cloud&lt;/h1>
&lt;p>This page describes what Database API keys are and shows you how to use the Qdrant Cloud Console to create a Database API key for a cluster. You will learn how to connect to your cluster using the new API key.&lt;/p>
&lt;p>Database API keys can be configured with granular access control. Database API keys with granular access control can be recognized by starting with &lt;code>eyJhb&lt;/code>. Please refer to the &lt;a href="https://qdrant.tech/documentation/operations/security/#table-of-access">Table of access&lt;/a> to understand what permissions you can configure.&lt;/p></description></item><item><title>From pgvector</title><link>https://qdrant.tech/documentation/migrate-to-qdrant/from-pgvector/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/migrate-to-qdrant/from-pgvector/</guid><description>&lt;h1 id="migrate-from-pgvector-to-qdrant">Migrate from pgvector to Qdrant&lt;/h1>
&lt;h2 id="what-you-need-from-postgres">What You Need from Postgres&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Connection URL&lt;/strong> — a standard Postgres connection string&lt;/li>
&lt;li>&lt;strong>Table name&lt;/strong> — the table containing your vector data&lt;/li>
&lt;/ul>
&lt;h2 id="concept-mapping">Concept Mapping&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">pgvector&lt;/th>
 &lt;th style="text-align: left">Qdrant&lt;/th>
 &lt;th style="text-align: left">Notes&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">Table&lt;/td>
 &lt;td style="text-align: left">Collection&lt;/td>
 &lt;td style="text-align: left">One-to-one mapping&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Row&lt;/td>
 &lt;td style="text-align: left">Point&lt;/td>
 &lt;td style="text-align: left">Each row becomes a point&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>vector&lt;/code> column&lt;/td>
 &lt;td style="text-align: left">Vector&lt;/td>
 &lt;td style="text-align: left">Mapped automatically&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Other columns&lt;/td>
 &lt;td style="text-align: left">Payload&lt;/td>
 &lt;td style="text-align: left">All non-vector columns become payload fields&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>vector_cosine_ops&lt;/code>&lt;/td>
 &lt;td style="text-align: left">&lt;code>Cosine&lt;/code>&lt;/td>
 &lt;td style="text-align: left">pgvector returns distance (1 - similarity); Qdrant returns similarity&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>vector_l2_ops&lt;/code>&lt;/td>
 &lt;td style="text-align: left">&lt;code>Euclid&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Direct mapping&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>vector_ip_ops&lt;/code>&lt;/td>
 &lt;td style="text-align: left">&lt;code>Dot&lt;/code>&lt;/td>
 &lt;td style="text-align: left">pgvector uses negative inner product for ordering; scores will be inverted&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="run-the-migration">Run the Migration&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run --net&lt;span class="o">=&lt;/span>host --rm -it registry.cloud.qdrant.io/library/qdrant-migration pg &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --pg.url &lt;span class="s1">&amp;#39;postgres://user:password@host:5432/dbname&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --pg.table &lt;span class="s1">&amp;#39;your_embeddings_table&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --pg.key-column &lt;span class="s1">&amp;#39;id&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.url &lt;span class="s1">&amp;#39;https://your-instance.cloud.qdrant.io:6334&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.api-key &lt;span class="s1">&amp;#39;your-qdrant-api-key&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="selecting-specific-columns">Selecting Specific Columns&lt;/h3>
&lt;p>By default, all columns are migrated. Use &lt;code>--pg.columns&lt;/code> to select specific ones:&lt;/p></description></item><item><title>Indexing</title><link>https://qdrant.tech/documentation/manage-data/indexing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/manage-data/indexing/</guid><description>&lt;h1 id="indexing">Indexing&lt;/h1>
&lt;p>A key feature of Qdrant is the effective combination of vector and traditional indexes. It is essential to have this because for vector search to work effectively with filters, having a vector index only is not enough. In simpler terms, a vector index speeds up vector search, and payload indexes speed up filtering.&lt;/p>
&lt;p>The indexes in the segments exist independently, but the parameters of the indexes themselves are configured for the whole collection.&lt;/p></description></item><item><title>Migrate to a New Embedding Model</title><link>https://qdrant.tech/documentation/tutorials-operations/embedding-model-migration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/tutorials-operations/embedding-model-migration/</guid><description>&lt;h1 id="migrate-to-a-new-embedding-model-with-zero-downtime-in-qdrant">Migrate to a New Embedding Model with Zero Downtime in Qdrant&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>When building a semantic search application, you need to &lt;a href="https://qdrant.tech/articles/how-to-choose-an-embedding-model/">choose an embedding
model&lt;/a>. Over time, you may want to switch to a different model for better
quality or cost-effectiveness. If your application is in production, this must be done with zero downtime to avoid
disrupting users. Switching models requires re-embedding all vectors in your collection, which can take time. If your
data doesn&amp;rsquo;t change, you can re-embed everything and switch to the new embeddings. However, in systems with frequent
updates, stopping the search service to re-embed is not an option.&lt;/p></description></item><item><title>Optimize Throughput</title><link>https://qdrant.tech/documentation/fastembed/fastembed-optimize/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/fastembed/fastembed-optimize/</guid><description>&lt;h1 id="optimize-fastembed-throughput">Optimize FastEmbed Throughput&lt;/h1>
&lt;p>By default, FastEmbed processes documents sequentially in the main processing thread. To optimize throughput, FastEmbed supports processing documents in parallel.&lt;/p>
&lt;p>When parallel processing is enabled, FastEmbed splits a dataset across multiple workers, each running an independent copy of the embedding model. Internally, documents are split into batches and put on a shared input queue. Each batch is then processed by one of the workers, put on a shared output queue, and then collected and reordered to match the original input order.&lt;/p></description></item><item><title>Private Chatbot for Interactive Learning</title><link>https://qdrant.tech/documentation/examples/rag-chatbot-red-hat-openshift-haystack/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/examples/rag-chatbot-red-hat-openshift-haystack/</guid><description>&lt;h1 id="private-chatbot-for-interactive-learning">Private Chatbot for Interactive Learning&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 120 min&lt;/th>
 &lt;th>Level: Advanced&lt;/th>
 &lt;th>&lt;/th>
 &lt;th>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;/tbody>
&lt;/table>
&lt;p>With chatbots, companies can scale their training programs to accommodate a large workforce, delivering consistent and standardized learning experiences across departments, locations, and time zones. Furthermore, having already completed their online training, corporate employees might want to refer back old course materials. Most of this information is proprietary to the company, and manually searching through an entire library of materials takes time. However, a chatbot built on this knowledge can respond in the blink of an eye.&lt;/p></description></item><item><title>Search Relevance</title><link>https://qdrant.tech/documentation/search/search-relevance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/search/search-relevance/</guid><description>&lt;h1 id="search-relevance">Search Relevance&lt;/h1>
&lt;p>By default, Qdrant ranks search results based on vector similarity scores. However, you may wish to consider additional factors when ranking results. Qdrant offers several tools to help you accomplish this.&lt;/p>
&lt;h2 id="score-boosting">Score Boosting&lt;/h2>
&lt;p>&lt;em>Available as of v1.14.0&lt;/em>&lt;/p>
&lt;p>When introducing vector search to specific applications, sometimes business logic needs to be considered for ranking the final list of results.&lt;/p>
&lt;p>A quick example is &lt;a href="https://github.com/qdrant/page-search" target="_blank" rel="noopener nofollow">our own documentation search bar&lt;/a>.
It has vectors for every part of the documentation site. If one were to perform a search by &amp;ldquo;just&amp;rdquo; using the vectors, all kinds of elements would be equally considered good results.
However, when searching for documentation, we can establish a hierarchy of importance:&lt;/p></description></item><item><title>Support</title><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid/><description/></item><item><title>Synchronize with a Server</title><link>https://qdrant.tech/documentation/edge/edge-synchronization-guide/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/edge/edge-synchronization-guide/</guid><description>&lt;h1 id="synchronize-qdrant-edge-with-a-server">Synchronize Qdrant Edge with a Server&lt;/h1>
&lt;p>Qdrant Edge can be synchronized with a collection from an external Qdrant server to support use cases like:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Offload indexing&lt;/strong>: Indexing is a computationally expensive operation. By synchronizing an Edge Shard with a server collection, you can offload the indexing process to a more powerful server instance. The indexed data can then be synchronized back to the Edge Shard.&lt;/li>
&lt;li>&lt;strong>Back up and Restore&lt;/strong>: Regularly back up your Edge Shard data to a central Qdrant instance to prevent data loss. In case of hardware failure or data corruption, you can restore the data from the central instance.&lt;/li>
&lt;li>&lt;strong>Data Aggregation&lt;/strong>: Collect data from multiple Edge Shards deployed in different locations and aggregate it into a central Qdrant instance for comprehensive analysis and reporting.&lt;/li>
&lt;li>&lt;strong>Synchronization between devices&lt;/strong>: Keep data consistent across multiple edge devices by synchronizing their Edge Shards with a central Qdrant instance.&lt;/li>
&lt;/ul>
&lt;h2 id="synchronizing-qdrant-edge-with-a-server">Synchronizing Qdrant Edge with a Server&lt;/h2>
&lt;p>To support having local updates as well as updates from a centralized server, implement a setup with two Edge Shards:&lt;/p></description></item><item><title>Usage Statistics</title><link>https://qdrant.tech/documentation/operations/usage-statistics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/operations/usage-statistics/</guid><description>&lt;h1 id="usage-statistics">Usage statistics&lt;/h1>
&lt;p>The Qdrant open-source container image collects anonymized usage statistics from users in order to improve the engine by default. You can &lt;a href="#deactivate-telemetry">deactivate&lt;/a> at any time, and any data that has already been collected can be &lt;a href="#request-information-deletion">deleted on request&lt;/a>.&lt;/p>
&lt;p>Deactivating this will not affect your ability to monitor the Qdrant database yourself by accessing the &lt;code>/metrics&lt;/code> or &lt;code>/telemetry&lt;/code> endpoints of your database. It will just stop sending independent, anonymized usage statistics to the Qdrant team.&lt;/p></description></item><item><title>Cloud Inference Hybrid Search</title><link>https://qdrant.tech/documentation/tutorials-and-examples/cloud-inference-hybrid-search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/tutorials-and-examples/cloud-inference-hybrid-search/</guid><description>&lt;h1 id="hybrid-search-using-qdrant-cloud-inference">Hybrid Search Using Qdrant Cloud Inference&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>In this tutorial, we&amp;rsquo;ll walkthrough building a &lt;strong>hybrid semantic search engine&lt;/strong> using Qdrant Cloud&amp;rsquo;s built-in &lt;a href="https://qdrant.tech/documentation/cloud/inference/">inference&lt;/a> capabilities. You&amp;rsquo;ll learn how to:&lt;/p>
&lt;ul>
&lt;li>Automatically embed your data using &lt;a href="https://qdrant.tech/documentation/cloud/inference/">cloud Inference&lt;/a> without needing to run local models,&lt;/li>
&lt;li>Combine dense semantic embeddings with &lt;a href="https://qdrant.tech/documentation/tutorials-search-engineering/reranking-hybrid-search/" target="_blank" rel="noopener nofollow">sparse BM25 keywords&lt;/a>, and&lt;/li>
&lt;li>Perform hybrid search using &lt;a href="https://qdrant.tech/documentation/search/hybrid-queries/">Reciprocal Rank Fusion (RRF)&lt;/a> to retrieve the most relevant results.&lt;/li>
&lt;/ul>
&lt;h2 id="initialize-the-client">Initialize the Client&lt;/h2>
&lt;p>Initialize the Qdrant client after creating a &lt;a href="https://qdrant.tech/documentation/cloud/">Qdrant Cloud account&lt;/a> and a &lt;a href="https://qdrant.tech/documentation/cloud/create-cluster/">dedicated paid cluster&lt;/a>. Set &lt;code>cloud_inference&lt;/code> to &lt;code>True&lt;/code> to enable &lt;a href="https://qdrant.tech/documentation/cloud/inference/">cloud inference&lt;/a>.&lt;/p></description></item><item><title>Cluster Access</title><link>https://qdrant.tech/documentation/cloud/cluster-access/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/cloud/cluster-access/</guid><description>&lt;h1 id="accessing-qdrant-cloud-clusters">Accessing Qdrant Cloud Clusters&lt;/h1>
&lt;p>Once you &lt;a href="https://qdrant.tech/documentation/cloud/create-cluster/">created&lt;/a> a cluster, and set up an &lt;a href="https://qdrant.tech/documentation/cloud/authentication/">API key&lt;/a>, you can access your cluster through the integrated Cluster UI, the REST API and the GRPC API.&lt;/p>
&lt;h2 id="cluster-ui">Cluster UI&lt;/h2>
&lt;p>You can access your &lt;a href="https://qdrant.tech/documentation/web-ui/">Cluster UI&lt;/a> via the Cluster Details page in the Qdrant Cloud Console. Authentication to a cluster is automatic if your cloud user has the &lt;a href="https://qdrant.tech/documentation/cloud-rbac/permission-reference/">&lt;code>read:cluster_data&lt;/code> or &lt;code>write:cluster_data&lt;/code> permission&lt;/a>. Without the correct permissions you will be prompted to enter an &lt;a href="https://qdrant.tech/documentation/cloud/authentication/">API Key&lt;/a> to access the cluster.&lt;/p></description></item><item><title>From S3 Vectors</title><link>https://qdrant.tech/documentation/migrate-to-qdrant/from-s3-vectors/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/migrate-to-qdrant/from-s3-vectors/</guid><description>&lt;h1 id="migrate-from-s3-vectors-to-qdrant">Migrate from S3 Vectors to Qdrant&lt;/h1>
&lt;h2 id="what-you-need-from-aws">What You Need from AWS&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>S3 bucket name&lt;/strong> — the bucket containing your vector data&lt;/li>
&lt;li>&lt;strong>Index name&lt;/strong> — the S3 Vectors index to migrate&lt;/li>
&lt;li>&lt;strong>AWS credentials&lt;/strong> — configured via &lt;code>aws configure&lt;/code> or environment variables (&lt;code>AWS_ACCESS_KEY_ID&lt;/code>, &lt;code>AWS_SECRET_ACCESS_KEY&lt;/code>)&lt;/li>
&lt;/ul>
&lt;aside role="status">Set your AWS credentials using the AWS CLI's &lt;code>configure&lt;/code> command or environment variables before running the migration container.&lt;/aside>
&lt;h2 id="run-the-migration">Run the Migration&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run --net&lt;span class="o">=&lt;/span>host --rm -it &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -e &lt;span class="nv">AWS_ACCESS_KEY_ID&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;your-access-key&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -e &lt;span class="nv">AWS_SECRET_ACCESS_KEY&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;your-secret-key&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -e &lt;span class="nv">AWS_REGION&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s1">&amp;#39;us-east-1&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> registry.cloud.qdrant.io/library/qdrant-migration s3 &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --s3.bucket &lt;span class="s1">&amp;#39;your-bucket-name&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --s3.index &lt;span class="s1">&amp;#39;your-index-name&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.url &lt;span class="s1">&amp;#39;https://your-instance.cloud.qdrant.io:6334&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.api-key &lt;span class="s1">&amp;#39;your-qdrant-api-key&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="all-s3-vectors-specific-flags">All S3 Vectors-Specific Flags&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Flag&lt;/th>
 &lt;th style="text-align: left">Required&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--s3.bucket&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Yes&lt;/td>
 &lt;td style="text-align: left">S3 bucket name&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--s3.index&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Yes&lt;/td>
 &lt;td style="text-align: left">S3 Vectors index name&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>AWS credentials are passed via environment variables or the default AWS credential chain, not CLI flags.&lt;/p></description></item><item><title>Implement Cohere RAG connector</title><link>https://qdrant.tech/documentation/examples/cohere-rag-connector/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/examples/cohere-rag-connector/</guid><description>&lt;h1 id="implement-custom-connector-for-cohere-rag">Implement custom connector for Cohere RAG&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 45 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>The usual approach to implementing Retrieval Augmented Generation requires users to build their prompts with the
relevant context the LLM may rely on, and manually sending them to the model. Cohere is quite unique here, as their
models can now speak to the external tools and extract meaningful data on their own. You can virtually connect any data
source and let the Cohere LLM know how to access it. Obviously, vector search goes well with LLMs, and enabling semantic
search over your data is a typical case.&lt;/p></description></item><item><title>Low-Latency Search</title><link>https://qdrant.tech/documentation/search/low-latency-search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/search/low-latency-search/</guid><description>&lt;h1 id="tips-for-low-latency-search-with-qdrant">Tips for Low-Latency Search with Qdrant&lt;/h1>
&lt;h2 id="scale-horizontally-with-replicas">Scale Horizontally with Replicas&lt;/h2>
&lt;p>Qdrant can be deployed in a &lt;a href="https://qdrant.tech/documentation/operations/distributed_deployment/">distributed configuration&lt;/a>. In distributed mode, multiple instances of Qdrant, called peers, operate as a single entity, called a cluster. Data is stored in &lt;a href="https://qdrant.tech/documentation/manage-data/collections/">collections&lt;/a>, which are divided into &lt;a href="https://qdrant.tech/documentation/operations/distributed_deployment/#sharding">shards&lt;/a> that are distributed across the peers. Each shard can have multiple &lt;a href="https://qdrant.tech/documentation/operations/distributed_deployment/#replication">replicas&lt;/a> for redundancy and load balancing. Because every replica of the same shard contains the same data, read requests can be distributed across replicas, reducing latency and increasing throughput.&lt;/p></description></item><item><title>Monitoring &amp; Telemetry</title><link>https://qdrant.tech/documentation/operations/monitoring/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/operations/monitoring/</guid><description>&lt;h1 id="monitoring--telemetry">Monitoring &amp;amp; Telemetry&lt;/h1>
&lt;p>Qdrant exposes its metrics in &lt;a href="https://prometheus.io/docs/instrumenting/exposition_formats/#text-based-format" target="_blank" rel="noopener nofollow">Prometheus&lt;/a>/&lt;a href="https://github.com/OpenObservability/OpenMetrics" target="_blank" rel="noopener nofollow">OpenMetrics&lt;/a> format, so you can integrate them easily
with the compatible tools and monitor Qdrant with your own monitoring system. You can
use the &lt;code>/metrics&lt;/code> endpoint and configure it as a scrape target.&lt;/p>
&lt;p>Metrics endpoint: &lt;a href="http://localhost:6333/metrics" target="_blank" rel="noopener nofollow">http://localhost:6333/metrics&lt;/a>&lt;/p>
&lt;p>The integration with Qdrant is easy to
&lt;a href="https://prometheus.io/docs/prometheus/latest/getting_started/#configure-prometheus-to-monitor-the-sample-targets" target="_blank" rel="noopener nofollow">configure&lt;/a>
with Prometheus and Grafana.&lt;/p>
&lt;h2 id="metrics">Metrics&lt;/h2>
&lt;p>Qdrant exposes various metrics in Prometheus/OpenMetrics format, commonly used together with Grafana for monitoring.&lt;/p></description></item><item><title>n8n Workflow Automation</title><link>https://qdrant.tech/documentation/tutorials-build-essentials/qdrant-n8n/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/tutorials-build-essentials/qdrant-n8n/</guid><description>&lt;!-- ![n8n-qdrant](/documentation/examples/qdrant-n8n-2/cover.png) -->
&lt;h1 id="automate-qdrant-workflows-with-n8n">Automate Qdrant Workflows with n8n&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 45 min&lt;/th>
 &lt;th>Level: Intermediate&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;/tbody>
&lt;/table>
&lt;p>This tutorial shows how to combine Qdrant with &lt;a href="https://n8n.io/" target="_blank" rel="noopener nofollow">n8n&lt;/a> low-code automation platform to cover &lt;strong>use cases beyond basic Retrieval-Augmented Generation (RAG)&lt;/strong>. You&amp;rsquo;ll learn how to use vector search for &lt;strong>recommendations&lt;/strong> and &lt;strong>unstructured big data analysis&lt;/strong>.&lt;/p>
&lt;aside role="status">
 Since this tutorial was created, &lt;a href="https://qdrant.tech/documentation/platforms/n8n/">an official Qdrant node for n8n&lt;/a> has been released. It simplifies workflows and replaces the HTTP request nodes used in the examples below. Watch &lt;a href="https://youtu.be/sYP_kHWptHY"> a quick video introduction&lt;/a> to it.
&lt;/aside>
&lt;h2 id="setting-up-qdrant-in-n8n">Setting Up Qdrant in n8n&lt;/h2>
&lt;p>To start using Qdrant with n8n, you need to provide your Qdrant instance credentials in the &lt;a href="https://docs.n8n.io/integrations/builtin/credentials/qdrant/#using-api-key" target="_blank" rel="noopener nofollow">credentials&lt;/a> tab. Select &lt;code>QdrantApi&lt;/code> from the list.&lt;/p></description></item><item><title>Quantization</title><link>https://qdrant.tech/documentation/manage-data/quantization/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/manage-data/quantization/</guid><description>&lt;h1 id="quantization">Quantization&lt;/h1>
&lt;p>Quantization is an optional feature in Qdrant that enables efficient storage and search of high-dimensional vectors.
By transforming original vectors into a new representations, quantization compresses data while preserving close to original relative distances between vectors.
Different quantization methods have different mechanics and tradeoffs. We will cover them in this section.&lt;/p>
&lt;p>Quantization is primarily used to reduce the memory footprint and accelerate the search process in high-dimensional vector spaces.
In the context of the Qdrant, quantization allows you to optimize the search engine for specific use cases, striking a balance between accuracy, storage efficiency, and search speed.&lt;/p></description></item><item><title>Support</title><link>https://qdrant.tech/documentation/support/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/support/</guid><description>&lt;h1 id="qdrant-cloud-support-and-troubleshooting">Qdrant Cloud Support and Troubleshooting&lt;/h1>
&lt;h2 id="community-support">Community Support&lt;/h2>
&lt;p>All Qdrant Cloud users are welcome to join our &lt;a href="https://qdrant.to/discord/" target="_blank" rel="noopener nofollow">Discord community&lt;/a>.&lt;/p>
&lt;p>&lt;img src="https://qdrant.tech/documentation/cloud/discord.png" alt="Discord">&lt;/p>
&lt;h2 id="qdrant-cloud-support">Qdrant Cloud Support&lt;/h2>
&lt;p>Paying customers have access to our Support team. Links to the support portal are available in the Qdrant Cloud Console.&lt;/p>
&lt;p>&lt;img src="https://qdrant.tech/documentation/cloud/support-portal.png" alt="Support Portal">&lt;/p>
&lt;p>Support is handled via &lt;strong>Jira Service Management (JSM)&lt;/strong>. When creating a support ticket, you will be asked to select a request type and provide information to help us understand and prioritize your issue.&lt;/p></description></item><item><title>Managed Cloud Prometheus Monitoring</title><link>https://qdrant.tech/documentation/tutorials-and-examples/managed-cloud-prometheus/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/tutorials-and-examples/managed-cloud-prometheus/</guid><description>&lt;h1 id="monitoring-managed-cloud-with-prometheus-and-grafana">Monitoring Managed Cloud with Prometheus and Grafana&lt;/h1>
&lt;p>This tutorial will guide you through the process of setting up Prometheus and Grafana to monitor Qdrant databases running in Qdrant Managed Cloud.&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;p>This tutorial assumes that you already have a Kubernetes cluster running where you want to deploy your monitoring stack, and a Qdrant database created in Qdrant Managed Cloud. You should also have &lt;code>kubectl&lt;/code> and &lt;code>helm&lt;/code> configured to interact with your cluster.&lt;/p></description></item><item><title>Security</title><link>https://qdrant.tech/documentation/cloud-security/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/cloud-security/</guid><description>&lt;h1 id="qdrant-cloud-security">Qdrant Cloud Security&lt;/h1>
&lt;h2 id="compliance-and-certifications">Compliance and Certifications&lt;/h2>
&lt;p>Qdrant is committed to maintaining high standards of security and compliance. We are both SOC2 Type 2 and HIPAA certified, ensuring that our systems and processes meet rigorous security criteria. You can find our compliance reports in our &lt;a href="https://qdrant.to/trust-center" target="_blank" rel="noopener nofollow">Trust Center&lt;/a>. The trust center also contains our internal security policies and procedures, so you can learn how we manage data protection, vulnerabilities, disaster recovery, incident responses, and more.&lt;/p></description></item><item><title>Self-Hosted Prometheus Monitoring</title><link>https://qdrant.tech/documentation/tutorials-and-examples/hybrid-cloud-prometheus/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/tutorials-and-examples/hybrid-cloud-prometheus/</guid><description>&lt;h1 id="monitoring-hybridprivate-cloud-with-prometheus-and-grafana">Monitoring Hybrid/Private Cloud with Prometheus and Grafana&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>This tutorial will guide you through the process of setting up Prometheus and Grafana to monitor Qdrant databases running in a Kubernetes cluster used for Hybrid or Private Cloud.&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;p>This tutorial assumes that you already have a Kubernetes cluster running and a Qdrant database deployed in it, using either a Hybrid Cloud or Private Cloud deployment. You should also have &lt;code>kubectl&lt;/code> and &lt;code>helm&lt;/code> configured to interact with your cluster.&lt;/p></description></item><item><title>From Chroma</title><link>https://qdrant.tech/documentation/migrate-to-qdrant/from-chroma/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/migrate-to-qdrant/from-chroma/</guid><description>&lt;h1 id="migrate-from-chroma-to-qdrant">Migrate from Chroma to Qdrant&lt;/h1>
&lt;h2 id="what-you-need-from-chroma">What You Need from Chroma&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Chroma URL&lt;/strong> — the HTTP endpoint of your Chroma server&lt;/li>
&lt;li>&lt;strong>Collection name&lt;/strong> — the collection to migrate&lt;/li>
&lt;li>&lt;strong>Authentication&lt;/strong> — API token or basic auth credentials, if configured&lt;/li>
&lt;/ul>
&lt;h2 id="concept-mapping">Concept Mapping&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Chroma&lt;/th>
 &lt;th style="text-align: left">Qdrant&lt;/th>
 &lt;th style="text-align: left">Notes&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">Collection&lt;/td>
 &lt;td style="text-align: left">Collection&lt;/td>
 &lt;td style="text-align: left">One-to-one mapping&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Document&lt;/td>
 &lt;td style="text-align: left">Point&lt;/td>
 &lt;td style="text-align: left">Each document becomes a point&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Embeddings&lt;/td>
 &lt;td style="text-align: left">Vector&lt;/td>
 &lt;td style="text-align: left">Mapped automatically&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Metadata&lt;/td>
 &lt;td style="text-align: left">Payload&lt;/td>
 &lt;td style="text-align: left">Direct mapping&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Documents (text)&lt;/td>
 &lt;td style="text-align: left">Payload field&lt;/td>
 &lt;td style="text-align: left">Stored via &lt;code>--qdrant.document-field&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="run-the-migration">Run the Migration&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run --net&lt;span class="o">=&lt;/span>host --rm -it registry.cloud.qdrant.io/library/qdrant-migration chroma &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --chroma.url &lt;span class="s1">&amp;#39;http://localhost:8000&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --chroma.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.url &lt;span class="s1">&amp;#39;https://your-instance.cloud.qdrant.io:6334&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.api-key &lt;span class="s1">&amp;#39;your-qdrant-api-key&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="with-authentication">With Authentication&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run --net&lt;span class="o">=&lt;/span>host --rm -it registry.cloud.qdrant.io/library/qdrant-migration chroma &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --chroma.url &lt;span class="s1">&amp;#39;https://your-chroma-host:8000&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --chroma.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --chroma.auth-type token &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --chroma.token &lt;span class="s1">&amp;#39;your-chroma-token&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.url &lt;span class="s1">&amp;#39;https://your-instance.cloud.qdrant.io:6334&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.api-key &lt;span class="s1">&amp;#39;your-qdrant-api-key&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="all-chroma-specific-flags">All Chroma-Specific Flags&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Flag&lt;/th>
 &lt;th style="text-align: left">Required&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--chroma.url&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Chroma HTTP endpoint (default: &lt;code>http://localhost:8000&lt;/code>)&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--chroma.collection&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Yes&lt;/td>
 &lt;td style="text-align: left">Collection name to migrate&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--chroma.tenant&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Chroma tenant&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--chroma.database&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Chroma database&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--chroma.auth-type&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">&lt;code>none&lt;/code>, &lt;code>basic&lt;/code>, or &lt;code>token&lt;/code> (default: &lt;code>none&lt;/code>)&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--chroma.username&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Username (when auth-type is &lt;code>basic&lt;/code>)&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--chroma.password&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Password (when auth-type is &lt;code>basic&lt;/code>)&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--chroma.token&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Token (when auth-type is &lt;code>token&lt;/code>)&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--chroma.token-header&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Custom header name for token auth&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="qdrant-side-options">Qdrant-Side Options&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Flag&lt;/th>
 &lt;th style="text-align: left">Default&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--qdrant.document-field&lt;/code>&lt;/td>
 &lt;td style="text-align: left">&lt;code>document&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Payload field name to store Chroma document text&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--qdrant.id-field&lt;/code>&lt;/td>
 &lt;td style="text-align: left">&lt;code>__id__&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Payload field name for original Chroma IDs&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--qdrant.distance-metric&lt;/code>&lt;/td>
 &lt;td style="text-align: left">&lt;code>euclid&lt;/code>&lt;/td>
 &lt;td style="text-align: left">&lt;code>cosine&lt;/code>, &lt;code>dot&lt;/code>, &lt;code>manhattan&lt;/code>, or &lt;code>euclid&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="gotchas">Gotchas&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Document text:&lt;/strong> Chroma stores raw document text alongside embeddings. Use &lt;code>--qdrant.document-field&lt;/code> to preserve this text as a payload field in Qdrant.&lt;/li>
&lt;li>&lt;strong>ID mapping:&lt;/strong> Chroma uses string IDs. The migration tool maps these to Qdrant point IDs and stores the original Chroma ID in a payload field (default: &lt;code>__id__&lt;/code>).&lt;/li>
&lt;li>&lt;strong>Distance metric:&lt;/strong> Chroma defaults to L2 distance. Verify which metric your collection uses and set &lt;code>--qdrant.distance-metric&lt;/code> accordingly.&lt;/li>
&lt;/ul>
&lt;h2 id="next-steps">Next Steps&lt;/h2>
&lt;p>After migration, verify your data arrived correctly with the &lt;a href="https://qdrant.tech/documentation/migration-guidance/">Migration Verification Guide&lt;/a>.&lt;/p></description></item><item><title>Large-Scale Search</title><link>https://qdrant.tech/documentation/tutorials-operations/large-scale-search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/tutorials-operations/large-scale-search/</guid><description>&lt;h1 id="large-scale-search-in-qdrant">Large-Scale Search in Qdrant&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 2 days&lt;/th>
 &lt;th>Level: Advanced&lt;/th>
 &lt;th>&lt;/th>
 &lt;th>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;/tbody>
&lt;/table>
&lt;p>In this tutorial, we will describe an approach to upload, index, and search a large volume of data cost-efficiently,
on an example of the real-world dataset &lt;a href="https://laion.ai/blog/laion-400-open-dataset/" target="_blank" rel="noopener nofollow">LAION-400M&lt;/a>.&lt;/p>
&lt;p>The goal of this tutorial is to demonstrate what minimal amount of resources is required to index and search a large dataset,
while still maintaining a reasonable search latency and accuracy.&lt;/p>
&lt;p>All relevant code snippets are available in the &lt;a href="https://github.com/qdrant/laion-400m-benchmark" target="_blank" rel="noopener nofollow">GitHub repository&lt;/a>.&lt;/p></description></item><item><title>Multitenancy</title><link>https://qdrant.tech/documentation/manage-data/multitenancy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/manage-data/multitenancy/</guid><description>&lt;h1 id="configure-multitenancy">Configure Multitenancy&lt;/h1>
&lt;aside role="alert">
It is not recommended to create hundreds and thousands of collections per cluster as it increases resource overhead unsustainably. Eventually this will lead to increased costs and at some point performance degradation and cluster instability. In Qdrant Cloud, we limit the amount of collections per cluster to 1000.
&lt;/aside>
&lt;p>&lt;strong>How many collections should you create?&lt;/strong> In most cases, a single collection per embedding model with payload-based partitioning for different tenants and use cases. This approach is called multitenancy. It is efficient for most users, but requires additional configuration. This document will show you how to set it up.&lt;/p></description></item><item><title>Question-Answering System for AI Customer Support</title><link>https://qdrant.tech/documentation/examples/rag-customer-support-cohere-airbyte-aws/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/examples/rag-customer-support-cohere-airbyte-aws/</guid><description>&lt;h1 id="question-answering-system-for-ai-customer-support">Question-Answering System for AI Customer Support&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 120 min&lt;/th>
 &lt;th>Level: Advanced&lt;/th>
 &lt;th>&lt;/th>
 &lt;th>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;/tbody>
&lt;/table>
&lt;p>Maintaining top-notch customer service is vital to business success. As your operation expands, so does the influx of customer queries. Many of these queries are repetitive, making automation a time-saving solution.
Your support team&amp;rsquo;s expertise is typically kept private, but you can still use AI to automate responses securely.&lt;/p>
&lt;p>In this tutorial we will setup a private AI service that answers customer support queries with high accuracy and effectiveness. By leveraging Cohere&amp;rsquo;s powerful models (deployed to &lt;a href="https://cohere.com/deployment-options/aws" target="_blank" rel="noopener nofollow">AWS&lt;/a>) with Qdrant Hybrid Cloud, you can create a fully private customer support system. Data synchronization, facilitated by &lt;a href="https://airbyte.com/" target="_blank" rel="noopener nofollow">Airbyte&lt;/a>, will complete the setup.&lt;/p></description></item><item><title>Security</title><link>https://qdrant.tech/documentation/operations/security/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/operations/security/</guid><description>&lt;h1 id="security">Security&lt;/h1>
&lt;p>Qdrant supports various security features to help you secure your instance. Most
of these must to be explicitly configured to make your instance production
ready. Please read the following section carefully.&lt;/p>
&lt;h2 id="secure-your-instance">Secure Your Instance&lt;/h2>
&lt;aside role="alert">Custom deployments are &lt;b>not&lt;/b> secure by default and are &lt;b>not&lt;/b> production ready. Qdrant Cloud deployments are always secure and production ready.&lt;/aside>
&lt;p>By default, all self-deployed Qdrant instances are not secure. They are open to
all network interfaces and do not have any kind of authentication configured. They
may be open to everybody on the internet without any restrictions. You must
therefore take security measures to make your instance production-ready.
Please read through this section carefully for instructions on how to secure
your instance.&lt;/p></description></item><item><title>Video Anomaly Detection Part 1: Architecture, Twelve Labs, and NVIDIA VSS</title><link>https://qdrant.tech/documentation/tutorials-build-essentials/video-anomaly-edge-part-1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/tutorials-build-essentials/video-anomaly-edge-part-1/</guid><description>&lt;h1 id="video-anomaly-detection-architecture-twelve-labs-and-nvidia-vss">Video Anomaly Detection: Architecture, Twelve Labs, and NVIDIA VSS&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 90 min&lt;/th>
 &lt;th>Level: Advanced&lt;/th>
 &lt;th>Output: &lt;a href="https://github.com/qdrant/video-anomaly-edge" target="_blank" rel="noopener nofollow">GitHub&lt;/a>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;/tbody>
&lt;/table>
&lt;p>&lt;em>This is Part 1 of a 3-part series on building real-time video anomaly detection from edge to cloud. We&amp;rsquo;ll go from architecture and integrations to a production-grade detection pipeline.&lt;/em>&lt;/p>
&lt;p>&lt;strong>Series:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Part 1 | Architecture, Twelve Labs, and NVIDIA VSS (here)&lt;/li>
&lt;li>&lt;a href="https://qdrant.tech/documentation/tutorials-build-essentials/video-anomaly-edge-part-2/">Part 2 | Edge-to-Cloud Pipeline&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://qdrant.tech/documentation/tutorials-build-essentials/video-anomaly-edge-part-3/">Part 3 | Scoring, Governance, and Deployment&lt;/a>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>In this tutorial, you will learn how to build a real-time video anomaly detection system that monitors live surveillance cameras across multiple sites, automatically detecting unusual events without training on specific anomaly types. You&amp;rsquo;ll see how Qdrant Edge integrates with Twelve Labs and NVIDIA Metropolis VSS to create a production-grade edge-to-cloud detection pipeline deployed on Vultr Cloud GPUs.&lt;/p></description></item><item><title>Working with miniCOIL</title><link>https://qdrant.tech/documentation/fastembed/fastembed-minicoil/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/fastembed/fastembed-minicoil/</guid><description>&lt;h1 id="how-to-use-minicoil-qdrants-sparse-neural-retriever">How to use miniCOIL, Qdrant&amp;rsquo;s Sparse Neural Retriever&lt;/h1>
&lt;p>&lt;strong>miniCOIL&lt;/strong> is an open-sourced sparse neural retrieval model that acts as if a BM25-based retriever understood the contextual meaning of keywords and ranked results accordingly.&lt;/p>
&lt;p>&lt;strong>miniCOIL&lt;/strong> scoring is based on the BM25 formula scaled by the semantic similarity between matched keywords in a query and a document.
$$
\text{miniCOIL}(D,Q) = \sum_{i=1}^{N} \text{IDF}(q_i) \cdot \text{Importance}^{q_i}_{D} \cdot {\color{YellowGreen}\text{Meaning}^{q_i \times d_j}} \text{, where keyword } d_j \in D \text{ equals } q_i
$$&lt;/p></description></item><item><title>Chat With Product PDF Manuals Using Hybrid Search</title><link>https://qdrant.tech/documentation/examples/hybrid-search-llamaindex-jinaai/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/examples/hybrid-search-llamaindex-jinaai/</guid><description>&lt;h1 id="chat-with-product-pdf-manuals-using-hybrid-search">Chat With Product PDF Manuals Using Hybrid Search&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 120 min&lt;/th>
 &lt;th>Level: Advanced&lt;/th>
 &lt;th>Output: &lt;a href="https://github.com/infoslack/qdrant-example/blob/main/HC-demo/HC-DO-LlamaIndex-Jina-v2.ipynb" target="_blank" rel="noopener nofollow">GitHub&lt;/a>&lt;/th>
 &lt;th>&lt;a href="https://githubtocolab.com/infoslack/qdrant-example/blob/main/HC-demo/HC-DO-LlamaIndex-Jina-v2.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>With the proliferation of digital manuals and the increasing demand for quick and accurate customer support, having a chatbot capable of efficiently parsing through complex PDF documents and delivering precise information can be a game-changer for any business.&lt;/p>
&lt;p>In this tutorial, we&amp;rsquo;ll walk you through the process of building a RAG-based chatbot, designed specifically to assist users with understanding the operation of various household appliances.
We&amp;rsquo;ll cover the essential steps required to build your system, including data ingestion, natural language understanding, and response generation for customer support use cases.&lt;/p></description></item><item><title>Troubleshooting</title><link>https://qdrant.tech/documentation/operations/common-errors/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/operations/common-errors/</guid><description>&lt;h1 id="solving-common-errors">Solving common errors&lt;/h1>
&lt;h2 id="too-many-files-open-os-error-24">Too many files open (OS error 24)&lt;/h2>
&lt;p>Each collection segment needs some files to be open. At some point you may encounter the following errors in your server log:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl">Error: Too many files open (OS error 24)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>In such a case you may need to increase the limit of the open files. It might be done, for example, while you launch the Docker container:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run --ulimit &lt;span class="nv">nofile&lt;/span>&lt;span class="o">=&lt;/span>10000:10000 qdrant/qdrant:latest
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The command above will set both soft and hard limits to &lt;code>10000&lt;/code>.&lt;/p></description></item><item><title>Video Anomaly Detection Part 2: Edge-to-Cloud Pipeline</title><link>https://qdrant.tech/documentation/tutorials-build-essentials/video-anomaly-edge-part-2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/tutorials-build-essentials/video-anomaly-edge-part-2/</guid><description>&lt;h1 id="video-anomaly-detection-edge-to-cloud-pipeline">Video Anomaly Detection: Edge-to-Cloud Pipeline&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 90 min&lt;/th>
 &lt;th>Level: Advanced&lt;/th>
 &lt;th>Output: &lt;a href="https://github.com/qdrant/video-anomaly-edge" target="_blank" rel="noopener nofollow">GitHub&lt;/a>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;/tbody>
&lt;/table>
&lt;p>&lt;em>This is Part 2 of a 3-part series on building real-time video anomaly detection from edge to cloud.&lt;/em>&lt;/p>
&lt;p>&lt;strong>Series:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://qdrant.tech/documentation/tutorials-build-essentials/video-anomaly-edge-part-1/">Part 1 | Architecture, Twelve Labs, and NVIDIA VSS&lt;/a>&lt;/li>
&lt;li>Part 2 | Edge-to-Cloud Pipeline (here)&lt;/li>
&lt;li>&lt;a href="https://qdrant.tech/documentation/tutorials-build-essentials/video-anomaly-edge-part-3/">Part 3 | Scoring, Governance, and Deployment&lt;/a>&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>In &lt;a href="https://qdrant.tech/documentation/tutorials-build-essentials/video-anomaly-edge-part-1/">Part 1&lt;/a>, we set up the project, covered why kNN anomaly detection in Qdrant outperforms classifiers, integrated Twelve Labs for video embeddings and Q&amp;amp;A, and connected NVIDIA VSS. Now we build the edge.&lt;/p></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">Neural Search 101: A Comprehensive Guide and Step-by-Step Tutorial&lt;/h1>
&lt;p>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>
&lt;p>In this guide we are going to find answers to these questions:&lt;/p></description></item><item><title>Configuration</title><link>https://qdrant.tech/documentation/operations/configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/operations/configuration/</guid><description>&lt;h1 id="configuration">Configuration&lt;/h1>
&lt;p>Qdrant ships with sensible defaults for collection and network settings that are suitable for most use cases. You can view these defaults in the &lt;a href="https://github.com/qdrant/qdrant/blob/master/config/config.yaml" target="_blank" rel="noopener nofollow">Qdrant source&lt;/a>. If you need to customize the settings, you can do so using configuration files and environment variables.&lt;/p>
&lt;aside role="status">
 Qdrant Cloud does not allow modifying the Qdrant configuration.
&lt;/aside>
&lt;h2 id="configuration-files">Configuration Files&lt;/h2>
&lt;p>To customize Qdrant, you can mount your configuration file in any of the following locations. This guide uses &lt;code>.yaml&lt;/code> files, but Qdrant also supports other formats such as &lt;code>.toml&lt;/code>, &lt;code>.json&lt;/code>, and &lt;code>.ini&lt;/code>.&lt;/p></description></item><item><title>Qdrant Multi-Vector Certification</title><link>https://qdrant.tech/course/multi-vector-search/certification/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/course/multi-vector-search/certification/</guid><description>&lt;h1 id="qdrant-multi-vector-search-certification">Qdrant Multi-Vector Search Certification&lt;/h1>
&lt;p>Congratulations! You’ve completed the &lt;strong>Multi-Vector Search course&lt;/strong>. You didn’t just learn how to store vectors; you learned how to build high-performance retrieval systems using late interaction models and multi-vector representations.&lt;/p>
&lt;p>You’ve moved past single-vector embeddings and dove deep into ColBERT, ColPali, MaxSim scoring, MUVERA, and production-grade multi-vector pipelines. That effort deserves more than just a “finished” status. It deserves professional recognition!&lt;/p>
&lt;h2 id="get-qdrantcertified">Get #QdrantCertified&lt;/h2>
&lt;p>Your expertise is now production-ready. It’s time to validate those skills with our official certification.&lt;/p></description></item><item><title>Region-Specific Contract Management System</title><link>https://qdrant.tech/documentation/examples/rag-contract-management-stackit-aleph-alpha/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/examples/rag-contract-management-stackit-aleph-alpha/</guid><description>&lt;h1 id="region-specific-contract-management-system">Region-Specific Contract Management System&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 90 min&lt;/th>
 &lt;th>Level: Advanced&lt;/th>
 &lt;th>&lt;/th>
 &lt;th>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;/tbody>
&lt;/table>
&lt;p>Contract management benefits greatly from Retrieval Augmented Generation (RAG), streamlining the handling of lengthy business contract texts. With AI assistance, complex questions can be asked and well-informed answers generated, facilitating efficient document management. This proves invaluable for businesses with extensive relationships, like shipping companies, construction firms, and consulting practices. Access to such contracts is often restricted to authorized team members due to security and regulatory requirements, such as GDPR in Europe, necessitating secure storage practices.&lt;/p></description></item><item><title>Scale Clusters</title><link>https://qdrant.tech/documentation/cloud/cluster-scaling/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/cloud/cluster-scaling/</guid><description>&lt;h1 id="scaling-qdrant-cloud-clusters">Scaling Qdrant Cloud Clusters&lt;/h1>
&lt;p>The amount of data is always growing and at some point you might need to change the capacity of your cluster. You can easily scale your Qdrant cluster up or down from the Cluster detail page in the Qdrant Cloud console.&lt;/p>
&lt;p>&lt;img src="https://qdrant.tech/documentation/cloud/cluster-scaling.png" alt="Cluster Scaling">&lt;/p>
&lt;h2 id="vertical-scaling">Vertical Scaling&lt;/h2>
&lt;p>Vertical scaling is the process of increasing the capacity of a cluster by adding or removing CPU, storage and memory resources on each database node.&lt;/p></description></item><item><title>Video Anomaly Detection Part 3: Scoring, Governance, and Deployment</title><link>https://qdrant.tech/documentation/tutorials-build-essentials/video-anomaly-edge-part-3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/tutorials-build-essentials/video-anomaly-edge-part-3/</guid><description>&lt;h1 id="video-anomaly-detection-scoring-governance-and-deployment">Video Anomaly Detection: Scoring, Governance, and Deployment&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 90 min&lt;/th>
 &lt;th>Level: Advanced&lt;/th>
 &lt;th>Output: &lt;a href="https://github.com/qdrant/video-anomaly-edge" target="_blank" rel="noopener nofollow">GitHub&lt;/a>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;/tbody>
&lt;/table>
&lt;p>&lt;em>This is Part 3 of a 3-part series on building real-time video anomaly detection from edge to cloud.&lt;/em>&lt;/p>
&lt;p>&lt;strong>Series:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://qdrant.tech/documentation/tutorials-build-essentials/video-anomaly-edge-part-1/">Part 1 | Architecture, Twelve Labs, and NVIDIA VSS&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://qdrant.tech/documentation/tutorials-build-essentials/video-anomaly-edge-part-2/">Part 2 | Edge-to-Cloud Pipeline&lt;/a>&lt;/li>
&lt;li>Part 3 | Scoring, Governance, and Deployment (here)&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>In &lt;a href="https://qdrant.tech/documentation/tutorials-build-essentials/video-anomaly-edge-part-1/">Part 1&lt;/a>, we set up the architecture, Twelve Labs integration, and NVIDIA VSS connection. In &lt;a href="https://qdrant.tech/documentation/tutorials-build-essentials/video-anomaly-edge-part-2/">Part 2&lt;/a>, we built Qdrant Edge&amp;rsquo;s two-shard architecture and the escalation pipeline. Now we turn raw scores into incidents, protect the baseline, and deploy.&lt;/p></description></item><item><title>Working with SPLADE</title><link>https://qdrant.tech/documentation/fastembed/fastembed-splade/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/fastembed/fastembed-splade/</guid><description>&lt;h1 id="how-to-generate-sparse-vectors-with-splade">How to Generate Sparse Vectors with SPLADE&lt;/h1>
&lt;p>SPLADE is a novel method for learning sparse text representation vectors, outperforming BM25 in tasks like information retrieval and document classification. Its main advantage is generating efficient and interpretable sparse vectors, making it effective for large-scale text data.&lt;/p>
&lt;h2 id="setup">Setup&lt;/h2>
&lt;p>First, install FastEmbed.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">pip&lt;/span> &lt;span class="n">install&lt;/span> &lt;span class="o">-&lt;/span>&lt;span class="n">q&lt;/span> &lt;span class="n">fastembed&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Next, import the required modules for sparse embeddings and Python’s typing module.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">fastembed&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">SparseTextEmbedding&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">SparseEmbedding&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>You may always check the list of all supported sparse embedding models.&lt;/p></description></item><item><title>Administration</title><link>https://qdrant.tech/documentation/operations/administration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/operations/administration/</guid><description>&lt;h1 id="administration">Administration&lt;/h1>
&lt;p>Qdrant exposes administration tools which enable to modify at runtime the behavior of a qdrant instance without changing its configuration manually.&lt;/p>
&lt;h2 id="recovery-mode">Recovery mode&lt;/h2>
&lt;p>&lt;em>Available as of v1.2.0&lt;/em>&lt;/p>
&lt;p>Recovery mode can help in situations where Qdrant fails to start repeatedly.
When starting in recovery mode, Qdrant only loads collection metadata to prevent
going out of memory. This allows you to resolve out of memory situations, for
example, by deleting a collection. After resolving Qdrant can be restarted
normally to continue operation.&lt;/p></description></item><item><title>Configure Clusters</title><link>https://qdrant.tech/documentation/cloud/configure-cluster/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/cloud/configure-cluster/</guid><description>&lt;h1 id="configure-qdrant-cloud-clusters">Configure Qdrant Cloud Clusters&lt;/h1>
&lt;p>Qdrant Cloud offers several advanced configuration options to optimize clusters for your specific needs. You can access these options from the Cluster Details page in the Qdrant Cloud console.&lt;/p>
&lt;p>The cloud platform does not expose all &lt;a href="https://qdrant.tech/documentation/operations/configuration/">configuration options&lt;/a> available in Qdrant. We have selected the relevant options that are explained in detail below.&lt;/p>
&lt;p>In addition, the cloud platform automatically configures the following settings for your cluster to ensure optimal performance and reliability:&lt;/p></description></item><item><title>Monitor Clusters</title><link>https://qdrant.tech/documentation/cloud/cluster-monitoring/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/cloud/cluster-monitoring/</guid><description>&lt;h1 id="monitoring-qdrant-cloud-clusters">Monitoring Qdrant Cloud Clusters&lt;/h1>
&lt;h2 id="telemetry">Telemetry&lt;/h2>
&lt;p>&lt;img src="https://qdrant.tech/documentation/cloud/cluster-metrics.png" alt="Cluster Metrics">&lt;/p>
&lt;p>Qdrant Cloud provides you with a set of metrics to monitor the health of your database cluster. You can access these metrics in the Qdrant Cloud Console in the &lt;strong>Metrics&lt;/strong> and &lt;strong>Request&lt;/strong> sections of the Cluster Details page.&lt;/p>
&lt;h2 id="logs">Logs&lt;/h2>
&lt;p>&lt;img src="https://qdrant.tech/documentation/cloud/cluster-logs.png" alt="Cluster Logs">&lt;/p>
&lt;p>Logs of the database cluster are available in the Qdrant Cloud Console in the &lt;strong>Logs&lt;/strong> section of the Cluster Details page.&lt;/p>
&lt;h2 id="alerts">Alerts&lt;/h2>
&lt;p>The account owner will receive automatic alerts via email if your cluster has any of the following issues:&lt;/p></description></item><item><title>RAG System for Employee Onboarding</title><link>https://qdrant.tech/documentation/examples/natural-language-search-oracle-cloud-infrastructure-cohere-langchain/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/examples/natural-language-search-oracle-cloud-infrastructure-cohere-langchain/</guid><description>&lt;h1 id="rag-system-for-employee-onboarding">RAG System for Employee Onboarding&lt;/h1>
&lt;p>Public websites are a great way to share information with a wide audience. However, finding the right information can be
challenging, if you are not familiar with the website&amp;rsquo;s structure or the terminology used. That&amp;rsquo;s what the search bar is
for, but it is not always easy to formulate a query that will return the desired results, if you are not yet familiar
with the content. This is even more important in a corporate environment, and for the new employees, who are just
starting to learn the ropes, and don&amp;rsquo;t even know how to ask the right questions yet. You may have even the best intranet
pages, but onboarding is more than just reading the documentation, it is about understanding the processes. Semantic
search can help with finding right resources easier, but wouldn&amp;rsquo;t it be easier to just chat with the website, like you
would with a colleague?&lt;/p></description></item><item><title>Update Clusters</title><link>https://qdrant.tech/documentation/cloud/cluster-upgrades/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/cloud/cluster-upgrades/</guid><description>&lt;h1 id="updating-qdrant-cloud-clusters">Updating Qdrant Cloud Clusters&lt;/h1>
&lt;p>As soon as a new Qdrant version is available. Qdrant Cloud will show you an update notification in the Cluster list and on the Cluster details page.&lt;/p>
&lt;p>To update to a new version, go to the Cluster Details page, choose the new version from the version dropdown and click &lt;strong>Update&lt;/strong>.&lt;/p>
&lt;p>If you are several versions behind, multiple updates might be required to reach the latest version. In this case, Qdrant Cloud will automatically perform the required intermediate updates to ensure a supported update path. You need to ensure that your client applications and used SDKs are compatible with the target version.&lt;/p></description></item><item><title>Filterable HNSW</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;p>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>
&lt;p>But what if you need to introduce some constraints in your search?
For example, you want search only for products in some category or select the most similar customer of a particular brand.
I did not find any simple solutions for this.
There are several discussions like &lt;a href="https://github.com/spotify/annoy/issues/263" target="_blank" rel="noopener nofollow">this&lt;/a>, but they only suggest to iterate over top search results and apply conditions consequently after the search.&lt;/p></description></item><item><title>Distributed Deployment</title><link>https://qdrant.tech/documentation/operations/distributed_deployment/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/operations/distributed_deployment/</guid><description>&lt;h1 id="distributed-deployment">Distributed deployment&lt;/h1>
&lt;p>Since version v0.8.0 Qdrant supports a distributed deployment mode.
In this mode, multiple Qdrant services communicate with each other to distribute the data across the peers to extend the storage capabilities and increase stability.&lt;/p>
&lt;h2 id="how-many-qdrant-nodes-should-i-run">How many Qdrant nodes should I run?&lt;/h2>
&lt;p>The ideal number of Qdrant nodes depends on how much you value cost-saving, resilience, and performance/scalability in relation to each other.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Prioritizing cost-saving&lt;/strong>: If cost is most important to you, run a single Qdrant node. This is not recommended for production environments. Drawbacks:&lt;/p></description></item><item><title>Private RAG Information Extraction Engine</title><link>https://qdrant.tech/documentation/examples/rag-chatbot-vultr-dspy-ollama/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/examples/rag-chatbot-vultr-dspy-ollama/</guid><description>&lt;h1 id="private-rag-information-extraction-engine">Private RAG Information Extraction Engine&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 90 min&lt;/th>
 &lt;th>Level: Advanced&lt;/th>
 &lt;th>&lt;/th>
 &lt;th>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;/tbody>
&lt;/table>
&lt;p>Handling private documents is a common task in many industries. Various businesses possess a large amount of
unstructured data stored as huge files that must be processed and analyzed. Industry reports, financial analysis, legal
documents, and many other documents are stored in PDF, Word, and other formats. Conversational chatbots built on top of
RAG pipelines are one of the viable solutions for finding the relevant answers in such documents. However, if we want to
extract structured information from these documents, and pass them to downstream systems, we need to use a different
approach.&lt;/p></description></item><item><title>Working with ColBERT</title><link>https://qdrant.tech/documentation/fastembed/fastembed-colbert/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/fastembed/fastembed-colbert/</guid><description>&lt;h1 id="how-to-generate-colbert-multivectors-with-fastembed">How to Generate ColBERT Multivectors with FastEmbed&lt;/h1>
&lt;h2 id="colbert">ColBERT&lt;/h2>
&lt;p>ColBERT is an embedding model that produces a matrix (multivector) representation of input text,
generating one vector per token (a token being a meaningful text unit for a machine learning model).
This approach allows ColBERT to capture more nuanced input semantics than many dense embedding models,
which represent an entire input with a single vector. By producing more granular input representations,
ColBERT becomes a strong retriever. However, this advantage comes at the cost of increased resource consumption compared to
traditional dense embedding models, both in terms of speed and memory.&lt;/p></description></item><item><title>Backup Clusters</title><link>https://qdrant.tech/documentation/cloud/backups/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/cloud/backups/</guid><description>&lt;h1 id="backing-up-qdrant-cloud-clusters">Backing up Qdrant Cloud Clusters&lt;/h1>
&lt;p>Qdrant organizes cloud instances as clusters. On occasion, you may need to
restore your cluster because of application or system failure.&lt;/p>
&lt;p>You may already have a source of truth for your data in a regular database. If you
have a problem, you could reindex the data into your Qdrant vector search cluster.
However, this process can take time. For high availability critical projects we
recommend replication. It guarantees the proper cluster functionality as long as
at least one replica is running.&lt;/p></description></item><item><title>Introducing Qdrant 0.11</title><link>https://qdrant.tech/articles/qdrant-0-11-release/</link><pubDate>Wed, 26 Oct 2022 13:55:00 +0200</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/qdrant-0-11-release/</guid><description>&lt;p>We are excited to &lt;a href="https://github.com/qdrant/qdrant/releases/tag/v0.11.0" target="_blank" rel="noopener nofollow">announce the release of Qdrant v0.11&lt;/a>,
which introduces a number of new features and improvements.&lt;/p>
&lt;h2 id="replication">Replication&lt;/h2>
&lt;p>One of the key features in this release is replication support, which allows Qdrant to provide a high availability
setup with distributed deployment out of the box. This, combined with sharding, enables you to horizontally scale
both the size of your collections and the throughput of your cluster. This means that you can use Qdrant to handle
large amounts of data without sacrificing performance or reliability.&lt;/p></description></item><item><title>Movie Recommendation System</title><link>https://qdrant.tech/documentation/examples/recommendation-system-ovhcloud/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/examples/recommendation-system-ovhcloud/</guid><description>&lt;h1 id="movie-recommendation-system">Movie Recommendation System&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 120 min&lt;/th>
 &lt;th>Level: Advanced&lt;/th>
 &lt;th>Output: &lt;a href="https://github.com/infoslack/qdrant-example/blob/main/HC-demo/HC-OVH.ipynb" 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>In this tutorial, you will build a mechanism that recommends movies based on defined preferences. Vector databases like Qdrant are good for storing high-dimensional data, such as user and item embeddings. They can enable personalized recommendations by quickly retrieving similar entries based on advanced indexing techniques. In this specific case, we will use &lt;a href="https://qdrant.tech/articles/sparse-vectors/">sparse vectors&lt;/a> to create an efficient and accurate recommendation system.&lt;/p></description></item><item><title>Running with GPU</title><link>https://qdrant.tech/documentation/operations/running-with-gpu/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/operations/running-with-gpu/</guid><description>&lt;h1 id="running-qdrant-with-gpu-support">Running Qdrant with GPU Support&lt;/h1>
&lt;p>Starting from version v1.13.0, Qdrant offers support for GPU acceleration.&lt;/p>
&lt;p>However, GPU support is not included in the default Qdrant binary due to additional dependencies and libraries. Instead, you will need to use dedicated Docker images with GPU support (&lt;a href="#nvidia-gpus">NVIDIA&lt;/a>, &lt;a href="#amd-gpus">AMD&lt;/a>).&lt;/p>
&lt;h2 id="configuration">Configuration&lt;/h2>
&lt;p>Qdrant includes a number of configuration options to control GPU usage. The following options are available:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">gpu&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Enable GPU indexing.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">indexing&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Force half precision for `f32` values while indexing.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># `f16` conversion will take place &lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># only inside GPU memory and won&amp;#39;t affect storage type.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">force_half_precision&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Used vulkan &amp;#34;groups&amp;#34; of GPU. &lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># In other words, how many parallel points can be indexed by GPU.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Optimal value might depend on the GPU model.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Proportional, but doesn&amp;#39;t necessary equal&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># to the physical number of warps.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Do not change this value unless you know what you are doing.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default: 512&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">groups_count&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">512&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Filter for GPU devices by hardware name. Case insensitive.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Comma-separated list of substrings to match &lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># against the gpu device name.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Example: &amp;#34;nvidia&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default: &amp;#34;&amp;#34; - all devices are accepted.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">device_filter&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># List of explicit GPU devices to use.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># If host has multiple GPUs, this option allows to select specific devices&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># by their index in the list of found devices.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># If `device_filter` is set, indexes are applied after filtering.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># By default, all devices are accepted.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">devices&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">null&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># How many parallel indexing processes are allowed to run.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default: 1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">parallel_indexes&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Allow to use integrated GPUs.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default: false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">allow_integrated&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Allow to use emulated GPUs like LLVMpipe. Useful for CI.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c"># Default: false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">allow_emulated&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">false&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>It is not recommended to change these options unless you are familiar with the Qdrant internals and the Vulkan API.&lt;/p></description></item><item><title>Qdrant 0.10 released</title><link>https://qdrant.tech/articles/qdrant-0-10-release/</link><pubDate>Mon, 19 Sep 2022 13:30:00 +0200</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/qdrant-0-10-release/</guid><description>&lt;p>&lt;a href="https://github.com/qdrant/qdrant/releases/tag/v0.10.0" target="_blank" rel="noopener nofollow">Qdrant 0.10 is a new version&lt;/a> that brings a lot of performance
improvements, but also some new features which were heavily requested by our users. Here is an overview of what has changed.&lt;/p>
&lt;h2 id="storing-multiple-vectors-per-object">Storing multiple vectors per object&lt;/h2>
&lt;p>Previously, if you wanted to use semantic search with multiple vectors per object, you had to create separate collections
for each vector type. This was even if the vectors shared some other attributes in the payload. With Qdrant 0.10, you can
now store all of these vectors together in the same collection, which allows you to share a single copy of the payload.
This makes it easier to use semantic search with multiple vector types, and reduces the amount of work you need to do to
set up your collections.&lt;/p></description></item><item><title>Blog-Reading Chatbot with GPT-4o</title><link>https://qdrant.tech/documentation/examples/rag-chatbot-scaleway/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/examples/rag-chatbot-scaleway/</guid><description>&lt;h1 id="blog-reading-chatbot-with-gpt-4o">Blog-Reading Chatbot with GPT-4o&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 90 min&lt;/th>
 &lt;th>Level: Advanced&lt;/th>
 &lt;th>&lt;a href="https://github.com/qdrant/examples/blob/langchain-lcel-rag/langchain-lcel-rag/Langchain-LCEL-RAG-Demo.ipynb" 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>In this tutorial, you will build a RAG system that combines blog content ingestion with the capabilities of semantic search. &lt;strong>OpenAI&amp;rsquo;s GPT-4o LLM&lt;/strong> is powerful, but scaling its use requires us to supply context systematically.&lt;/p>
&lt;p>RAG enhances the LLM&amp;rsquo;s generation of answers by retrieving relevant documents to aid the question-answering process. This setup showcases the integration of advanced search and AI language processing to improve information retrieval and generation tasks.&lt;/p></description></item><item><title>From Redis</title><link>https://qdrant.tech/documentation/migrate-to-qdrant/from-redis/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/migrate-to-qdrant/from-redis/</guid><description>&lt;h1 id="migrate-from-redis-to-qdrant">Migrate from Redis to Qdrant&lt;/h1>
&lt;h2 id="what-you-need-from-redis">What You Need from Redis&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Redis address&lt;/strong> — host and port of your Redis instance&lt;/li>
&lt;li>&lt;strong>FT index name&lt;/strong> — the RediSearch full-text index that contains your vectors&lt;/li>
&lt;li>&lt;strong>Authentication&lt;/strong> — username and password, if configured&lt;/li>
&lt;/ul>
&lt;aside role="alert">&lt;strong>Important:&lt;/strong> Redis does not expose vector configurations (dimensions, distance metric) after an index is created. You must create the Qdrant collection manually before running the migration.&lt;/aside>
&lt;h2 id="concept-mapping">Concept Mapping&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Redis&lt;/th>
 &lt;th style="text-align: left">Qdrant&lt;/th>
 &lt;th style="text-align: left">Notes&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">FT Index&lt;/td>
 &lt;td style="text-align: left">Collection&lt;/td>
 &lt;td style="text-align: left">One-to-one mapping&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Document&lt;/td>
 &lt;td style="text-align: left">Point&lt;/td>
 &lt;td style="text-align: left">Each document becomes a point&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Vector field&lt;/td>
 &lt;td style="text-align: left">Vector&lt;/td>
 &lt;td style="text-align: left">Named vectors are preserved&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Hash/JSON fields&lt;/td>
 &lt;td style="text-align: left">Payload&lt;/td>
 &lt;td style="text-align: left">Direct mapping&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Document key&lt;/td>
 &lt;td style="text-align: left">Payload field&lt;/td>
 &lt;td style="text-align: left">Stored via &lt;code>--qdrant.id-field&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="run-the-migration">Run the Migration&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run --net&lt;span class="o">=&lt;/span>host --rm -it registry.cloud.qdrant.io/library/qdrant-migration redis &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --redis.index &lt;span class="s1">&amp;#39;your-ft-index&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --redis.addr &lt;span class="s1">&amp;#39;localhost:6379&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.url &lt;span class="s1">&amp;#39;https://your-instance.cloud.qdrant.io:6334&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.api-key &lt;span class="s1">&amp;#39;your-qdrant-api-key&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="with-authentication">With Authentication&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run --net&lt;span class="o">=&lt;/span>host --rm -it registry.cloud.qdrant.io/library/qdrant-migration redis &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --redis.index &lt;span class="s1">&amp;#39;your-ft-index&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --redis.addr &lt;span class="s1">&amp;#39;your-redis-host:6379&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --redis.username &lt;span class="s1">&amp;#39;your-username&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --redis.password &lt;span class="s1">&amp;#39;your-password&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.url &lt;span class="s1">&amp;#39;https://your-instance.cloud.qdrant.io:6334&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.api-key &lt;span class="s1">&amp;#39;your-qdrant-api-key&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --migration.create-collection &lt;span class="nb">false&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="all-redis-specific-flags">All Redis-Specific Flags&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Flag&lt;/th>
 &lt;th style="text-align: left">Required&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--redis.index&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Yes&lt;/td>
 &lt;td style="text-align: left">RediSearch FT index name&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--redis.addr&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Redis address (default: &lt;code>localhost:6379&lt;/code>)&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--redis.protocol&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Redis protocol version (default: &lt;code>2&lt;/code>)&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--redis.username&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Username for authentication&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--redis.password&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Password for authentication&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--redis.client-name&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Client name&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--redis.db&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Database number&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--redis.network&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Network type: &lt;code>tcp&lt;/code> or &lt;code>unix&lt;/code> (default: &lt;code>tcp&lt;/code>)&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="qdrant-side-options">Qdrant-Side Options&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Flag&lt;/th>
 &lt;th style="text-align: left">Default&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--qdrant.id-field&lt;/code>&lt;/td>
 &lt;td style="text-align: left">&lt;code>__id__&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Payload field name for original Redis document keys&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="gotchas">Gotchas&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Named vectors:&lt;/strong> If your Redis index has multiple vector fields, all are migrated as named vectors. Ensure your pre-created Qdrant collection has a matching named vector configuration.&lt;/li>
&lt;li>&lt;strong>ID mapping:&lt;/strong> Redis document keys are converted to Qdrant point IDs. The original key is stored in the payload under &lt;code>--qdrant.id-field&lt;/code>.&lt;/li>
&lt;/ul>
&lt;h2 id="next-steps">Next Steps&lt;/h2>
&lt;p>After migration, verify your data arrived correctly with the &lt;a href="https://qdrant.tech/documentation/migration-guidance/">Migration Verification Guide&lt;/a>.&lt;/p></description></item><item><title>Optimize Performance</title><link>https://qdrant.tech/documentation/operations/optimize/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/operations/optimize/</guid><description>&lt;h1 id="optimizing-qdrant-performance-three-scenarios">Optimizing Qdrant Performance: Three Scenarios&lt;/h1>
&lt;p>Different use cases require different balances between memory usage, search speed, and precision. Qdrant is designed to be flexible and customizable so you can tune it to your specific needs.&lt;/p>
&lt;p>This guide will walk you three main optimization strategies:&lt;/p>
&lt;ul>
&lt;li>High Speed Search &amp;amp; Low Memory Usage&lt;/li>
&lt;li>High Precision &amp;amp; Low Memory Usage&lt;/li>
&lt;li>High Precision &amp;amp; High Speed Search&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://qdrant.tech/docs/tradeoff.png" alt="qdrant resource tradeoffs">&lt;/p>
&lt;h2 id="1-high-speed-search-with-low-memory-usage">1. High-Speed Search with Low Memory Usage&lt;/h2>
&lt;p>To achieve high search speed with minimal memory usage, you can store vectors on disk while minimizing the number of disk reads. Vector quantization is a technique that compresses vectors, allowing more of them to be stored in memory, thus reducing the need to read from disk.&lt;/p></description></item><item><title>Optimizer</title><link>https://qdrant.tech/documentation/operations/optimizer/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/operations/optimizer/</guid><description>&lt;h1 id="optimizer">Optimizer&lt;/h1>
&lt;p>It is much more efficient to apply changes in batches than perform each change individually, as many other databases do. Qdrant here is no exception. Since Qdrant operates with data structures that are not always easy to change, it is sometimes necessary to rebuild those structures completely.&lt;/p>
&lt;p>Storage optimization in Qdrant occurs at the segment level (see &lt;a href="https://qdrant.tech/documentation/manage-data/storage/">storage&lt;/a>).
In this case, the segment to be optimized remains readable for the time of the rebuild.&lt;/p></description></item><item><title>From MongoDB</title><link>https://qdrant.tech/documentation/migrate-to-qdrant/from-mongodb/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/migrate-to-qdrant/from-mongodb/</guid><description>&lt;h1 id="migrate-from-mongodb-to-qdrant">Migrate from MongoDB to Qdrant&lt;/h1>
&lt;h2 id="what-you-need-from-mongodb">What You Need from MongoDB&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Connection string&lt;/strong> — MongoDB URI (e.g., &lt;code>mongodb://user:pass@host:27017&lt;/code>)&lt;/li>
&lt;li>&lt;strong>Database name&lt;/strong> — the database containing your collection&lt;/li>
&lt;li>&lt;strong>Collection name&lt;/strong> — the collection to migrate&lt;/li>
&lt;li>&lt;strong>Vector field names&lt;/strong> — the names of fields that store vector embeddings&lt;/li>
&lt;/ul>
&lt;aside role="alert">&lt;strong>Important:&lt;/strong> MongoDB does not expose vector dimensions or distance metrics in a way the tool can read automatically. You must create the Qdrant collection manually before running the migration.&lt;/aside>
&lt;h2 id="concept-mapping">Concept Mapping&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">MongoDB&lt;/th>
 &lt;th style="text-align: left">Qdrant&lt;/th>
 &lt;th style="text-align: left">Notes&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">Collection&lt;/td>
 &lt;td style="text-align: left">Collection&lt;/td>
 &lt;td style="text-align: left">One-to-one mapping&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Document&lt;/td>
 &lt;td style="text-align: left">Point&lt;/td>
 &lt;td style="text-align: left">Each document becomes a point&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Vector field&lt;/td>
 &lt;td style="text-align: left">Vector&lt;/td>
 &lt;td style="text-align: left">Named vectors are preserved&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Non-vector fields&lt;/td>
 &lt;td style="text-align: left">Payload&lt;/td>
 &lt;td style="text-align: left">Direct mapping&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>_id&lt;/code> (ObjectID or string)&lt;/td>
 &lt;td style="text-align: left">Point ID + Payload&lt;/td>
 &lt;td style="text-align: left">Converted to UUID; original stored in payload&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="run-the-migration">Run the Migration&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run --net&lt;span class="o">=&lt;/span>host --rm -it registry.cloud.qdrant.io/library/qdrant-migration mongodb &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --mongodb.url &lt;span class="s1">&amp;#39;mongodb://localhost:27017&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --mongodb.database &lt;span class="s1">&amp;#39;your-database&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --mongodb.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --mongodb.vector-fields &lt;span class="s1">&amp;#39;embedding&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.url &lt;span class="s1">&amp;#39;https://your-instance.cloud.qdrant.io:6334&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.api-key &lt;span class="s1">&amp;#39;your-qdrant-api-key&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="with-multiple-vector-fields">With Multiple Vector Fields&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run --net&lt;span class="o">=&lt;/span>host --rm -it registry.cloud.qdrant.io/library/qdrant-migration mongodb &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --mongodb.url &lt;span class="s1">&amp;#39;mongodb+srv://user:pass@cluster.mongodb.net&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --mongodb.database &lt;span class="s1">&amp;#39;your-database&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --mongodb.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --mongodb.vector-fields &lt;span class="s1">&amp;#39;title_embedding,body_embedding&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.url &lt;span class="s1">&amp;#39;https://your-instance.cloud.qdrant.io:6334&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.api-key &lt;span class="s1">&amp;#39;your-qdrant-api-key&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --migration.create-collection &lt;span class="nb">false&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="all-mongodb-specific-flags">All MongoDB-Specific Flags&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Flag&lt;/th>
 &lt;th style="text-align: left">Required&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--mongodb.url&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Yes&lt;/td>
 &lt;td style="text-align: left">MongoDB connection string&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--mongodb.database&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Yes&lt;/td>
 &lt;td style="text-align: left">Database name&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--mongodb.collection&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Yes&lt;/td>
 &lt;td style="text-align: left">Collection name&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--mongodb.vector-fields&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Yes&lt;/td>
 &lt;td style="text-align: left">Comma-separated list of vector field names&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="qdrant-side-options">Qdrant-Side Options&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Flag&lt;/th>
 &lt;th style="text-align: left">Default&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--qdrant.id-field&lt;/code>&lt;/td>
 &lt;td style="text-align: left">&lt;code>__id__&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Payload field name for original MongoDB &lt;code>_id&lt;/code> values&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="gotchas">Gotchas&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Vector field names are required:&lt;/strong> MongoDB has no schema-level marker for vector fields. You must explicitly list them via &lt;code>--mongodb.vector-fields&lt;/code>.&lt;/li>
&lt;li>&lt;strong>ID mapping:&lt;/strong> MongoDB &lt;code>_id&lt;/code> values (ObjectID or string) are converted to Qdrant UUIDs. The original value is stored in payload under &lt;code>--qdrant.id-field&lt;/code>.&lt;/li>
&lt;/ul>
&lt;h2 id="next-steps">Next Steps&lt;/h2>
&lt;p>After migration, verify your data arrived correctly with the &lt;a href="https://qdrant.tech/documentation/migration-guidance/">Migration Verification Guide&lt;/a>.&lt;/p></description></item><item><title>Reranking with FastEmbed</title><link>https://qdrant.tech/documentation/fastembed/fastembed-rerankers/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/fastembed/fastembed-rerankers/</guid><description>&lt;h1 id="how-to-use-rerankers-with-fastembed">How to use rerankers with FastEmbed&lt;/h1>
&lt;h2 id="rerankers">Rerankers&lt;/h2>
&lt;p>A reranker is a model that improves the ordering of search results. A subset of documents is initially retrieved using a fast, simple method (e.g., BM25 or dense embeddings). Then, a reranker &amp;ndash; a more powerful, precise, but slower and heavier model &amp;ndash; re-evaluates this subset to refine document relevance to the query.&lt;/p>
&lt;p>Rerankers analyze token-level interactions between the query and each document in depth, making them expensive to use but precise in defining relevance. They trade speed for accuracy, so they are best used on a limited candidate set rather than the entire corpus.&lt;/p></description></item><item><title>Inference</title><link>https://qdrant.tech/documentation/cloud/inference/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/cloud/inference/</guid><description>&lt;h1 id="inference-in-qdrant-managed-cloud">Inference in Qdrant Managed Cloud&lt;/h1>
&lt;p>&lt;a href="https://qdrant.tech/documentation/inference/">Inference&lt;/a> is the process of creating vector embeddings from text, images, or other data types using a machine learning model.&lt;/p>
&lt;p>Qdrant Managed Cloud allows you to use inference directly in the cloud, without the need to set up and maintain your own inference infrastructure. You can use &lt;a href="#cloud-inference">embedding models hosted on Qdrant Cloud&lt;/a>, or use &lt;a href="#use-external-models">externally hosted models&lt;/a>.&lt;/p>
&lt;aside role="alert">
 Inference is executed within the EU for Qdrant clusters in EU regions and in the US for Qdrant Clusters in all other regions. Free models are hosted on US region only.
&lt;/aside>
&lt;p>&lt;img src="https://qdrant.tech/documentation/cloud/cloud-inference.png" alt="Cluster Cluster UI">&lt;/p></description></item><item><title>From FAISS</title><link>https://qdrant.tech/documentation/migrate-to-qdrant/from-faiss/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/migrate-to-qdrant/from-faiss/</guid><description>&lt;h1 id="migrate-from-faiss-to-qdrant">Migrate from FAISS to Qdrant&lt;/h1>
&lt;h2 id="what-you-need-from-faiss">What You Need from FAISS&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Index file path&lt;/strong> — path to your FAISS index file&lt;/li>
&lt;li>&lt;strong>Distance metric&lt;/strong> — the metric used when the index was built (&lt;code>l2&lt;/code>, &lt;code>inner product&lt;/code>, etc.)&lt;/li>
&lt;/ul>
&lt;aside role="alert">&lt;strong>Important:&lt;/strong> Only non-quantized FAISS index types are supported. Quantized indexes (e.g., &lt;code>IndexIVFPQ&lt;/code>) do not store the original vectors and cannot be migrated.&lt;/aside>
&lt;h2 id="supported-index-types">Supported Index Types&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">FAISS Index Type&lt;/th>
 &lt;th style="text-align: left">Supported&lt;/th>
 &lt;th style="text-align: left">Notes&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>IndexFlatL2&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Yes&lt;/td>
 &lt;td style="text-align: left">Maps to &lt;code>euclid&lt;/code> distance&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>IndexFlatIP&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Yes&lt;/td>
 &lt;td style="text-align: left">Maps to &lt;code>dot&lt;/code> distance&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>IndexHNSWFlat&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Yes&lt;/td>
 &lt;td style="text-align: left">Full vectors are stored&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>IndexIVFFlat&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Yes&lt;/td>
 &lt;td style="text-align: left">Full vectors are stored&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>IndexIVFPQ&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Quantized — original vectors not stored&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>IndexPQ&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Quantized — original vectors not stored&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="concept-mapping">Concept Mapping&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">FAISS&lt;/th>
 &lt;th style="text-align: left">Qdrant&lt;/th>
 &lt;th style="text-align: left">Notes&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">Index&lt;/td>
 &lt;td style="text-align: left">Collection&lt;/td>
 &lt;td style="text-align: left">One-to-one mapping&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Vector (by position)&lt;/td>
 &lt;td style="text-align: left">Point&lt;/td>
 &lt;td style="text-align: left">Position in index becomes point ID&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="run-the-migration">Run the Migration&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run --net&lt;span class="o">=&lt;/span>host --rm -it &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -v /path/to/your/index:/data &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> registry.cloud.qdrant.io/library/qdrant-migration faiss &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --faiss.index-path &lt;span class="s1">&amp;#39;/data/your-index.index&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.url &lt;span class="s1">&amp;#39;https://your-instance.cloud.qdrant.io:6334&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.api-key &lt;span class="s1">&amp;#39;your-qdrant-api-key&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.distance-metric cosine
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="all-faiss-specific-flags">All FAISS-Specific Flags&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Flag&lt;/th>
 &lt;th style="text-align: left">Required&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--faiss.index-path&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Yes&lt;/td>
 &lt;td style="text-align: left">Path to the FAISS index file (inside the container)&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="qdrant-side-options">Qdrant-Side Options&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Flag&lt;/th>
 &lt;th style="text-align: left">Default&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--qdrant.distance-metric&lt;/code>&lt;/td>
 &lt;td style="text-align: left">&lt;code>cosine&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Distance metric: &lt;code>cosine&lt;/code>, &lt;code>dot&lt;/code>, &lt;code>euclid&lt;/code>, or &lt;code>manhattan&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="gotchas">Gotchas&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>No metadata:&lt;/strong> FAISS indexes store only vectors. All points will have empty payloads. If you have a separate metadata store keyed by vector position, import that separately after migration.&lt;/li>
&lt;li>&lt;strong>Point IDs:&lt;/strong> Points are assigned IDs based on their position in the FAISS index. Use this to join with any external metadata store.&lt;/li>
&lt;/ul>
&lt;h2 id="next-steps">Next Steps&lt;/h2>
&lt;p>After migration, verify your data arrived correctly with the &lt;a href="https://qdrant.tech/documentation/migration-guidance/">Migration Verification Guide&lt;/a>.&lt;/p></description></item><item><title>Multi-Vector Postprocessing</title><link>https://qdrant.tech/documentation/fastembed/fastembed-postprocessing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/fastembed/fastembed-postprocessing/</guid><description>&lt;h1 id="multi-vector-postprocessing">Multi-Vector Postprocessing&lt;/h1>
&lt;p>FastEmbed&amp;rsquo;s postprocessing module provides techniques for transforming and optimizing embeddings after generation. These
postprocessing methods can improve search performance, reduce storage requirements, or adapt embeddings for specific use
cases.&lt;/p>
&lt;p>Currently, the postprocessing module includes MUVERA (Multi-Vector Retrieval Algorithm) for speeding up multi-vector
embeddings. Additional postprocessing techniques are planned for future releases.&lt;/p>
&lt;h2 id="muvera">MUVERA&lt;/h2>
&lt;p>MUVERA transforms variable-length sequences of vectors into fixed-dimensional single-vector representations. These
approximations can be used for fast initial retrieval using traditional vector search methods like HNSW. Once you&amp;rsquo;ve
retrieved a small set of candidates quickly, you can then rerank them using the original multi-vector representations
for maximum accuracy.&lt;/p></description></item><item><title>Articles</title><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid/><description/></item><item><title>From Apache Solr</title><link>https://qdrant.tech/documentation/migrate-to-qdrant/from-solr/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/migrate-to-qdrant/from-solr/</guid><description>&lt;h1 id="migrate-from-apache-solr-to-qdrant">Migrate from Apache Solr to Qdrant&lt;/h1>
&lt;h2 id="what-you-need-from-solr">What You Need from Solr&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Solr URL&lt;/strong> — the base URL of your Solr instance (e.g., &lt;code>http://localhost:8983&lt;/code>)&lt;/li>
&lt;li>&lt;strong>Collection name&lt;/strong> — the Solr collection to migrate&lt;/li>
&lt;li>&lt;strong>Authentication&lt;/strong> — username and password, if configured&lt;/li>
&lt;/ul>
&lt;aside role="alert">&lt;strong>Important:&lt;/strong> Solr does not reliably expose vector dimensions and distance metrics via its schema API. You must create the Qdrant collection manually before running the migration.&lt;/aside>
&lt;h2 id="concept-mapping">Concept Mapping&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Solr&lt;/th>
 &lt;th style="text-align: left">Qdrant&lt;/th>
 &lt;th style="text-align: left">Notes&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">Collection&lt;/td>
 &lt;td style="text-align: left">Collection&lt;/td>
 &lt;td style="text-align: left">One-to-one mapping&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Document&lt;/td>
 &lt;td style="text-align: left">Point&lt;/td>
 &lt;td style="text-align: left">Each document becomes a point&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Dense vector field&lt;/td>
 &lt;td style="text-align: left">Vector&lt;/td>
 &lt;td style="text-align: left">Named vectors are preserved&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Non-vector fields&lt;/td>
 &lt;td style="text-align: left">Payload&lt;/td>
 &lt;td style="text-align: left">Direct mapping&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Document ID (&lt;code>id&lt;/code> field)&lt;/td>
 &lt;td style="text-align: left">Payload field&lt;/td>
 &lt;td style="text-align: left">Stored via &lt;code>--qdrant.id-field&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="run-the-migration">Run the Migration&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run --net&lt;span class="o">=&lt;/span>host --rm -it registry.cloud.qdrant.io/library/qdrant-migration solr &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --solr.url &lt;span class="s1">&amp;#39;http://localhost:8983&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --solr.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.url &lt;span class="s1">&amp;#39;https://your-instance.cloud.qdrant.io:6334&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.api-key &lt;span class="s1">&amp;#39;your-qdrant-api-key&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="with-authentication">With Authentication&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run --net&lt;span class="o">=&lt;/span>host --rm -it registry.cloud.qdrant.io/library/qdrant-migration solr &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --solr.url &lt;span class="s1">&amp;#39;https://your-solr-host:8983&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --solr.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --solr.username &lt;span class="s1">&amp;#39;your-username&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --solr.password &lt;span class="s1">&amp;#39;your-password&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.url &lt;span class="s1">&amp;#39;https://your-instance.cloud.qdrant.io:6334&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.api-key &lt;span class="s1">&amp;#39;your-qdrant-api-key&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --qdrant.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --migration.create-collection &lt;span class="nb">false&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="all-solr-specific-flags">All Solr-Specific Flags&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Flag&lt;/th>
 &lt;th style="text-align: left">Required&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--solr.url&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Yes&lt;/td>
 &lt;td style="text-align: left">Solr base URL (e.g., &lt;code>http://localhost:8983&lt;/code>)&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--solr.collection&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Yes&lt;/td>
 &lt;td style="text-align: left">Solr collection name&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--solr.username&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Username for basic authentication&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--solr.password&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Password for basic authentication&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--solr.insecure-skip-verify&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Skip TLS certificate verification (default: &lt;code>false&lt;/code>)&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="qdrant-side-options">Qdrant-Side Options&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Flag&lt;/th>
 &lt;th style="text-align: left">Default&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--qdrant.id-field&lt;/code>&lt;/td>
 &lt;td style="text-align: left">&lt;code>__id__&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Payload field name for original Solr document IDs&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="gotchas">Gotchas&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Named vectors:&lt;/strong> If your Solr schema has multiple dense vector fields, all are migrated as named vectors. Ensure your pre-created collection has matching named vector configurations.&lt;/li>
&lt;li>&lt;strong>ID mapping:&lt;/strong> Solr document IDs (strings) are converted to Qdrant UUIDs. The original Solr ID is stored in payload under &lt;code>--qdrant.id-field&lt;/code>.&lt;/li>
&lt;/ul>
&lt;h2 id="next-steps">Next Steps&lt;/h2>
&lt;p>After migration, verify your data arrived correctly with the &lt;a href="https://qdrant.tech/documentation/migration-guidance/">Migration Verification Guide&lt;/a>.&lt;/p></description></item><item><title>Getting Started</title><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid/><description/></item><item><title>Migrate to Qdrant</title><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid/><description/></item><item><title/><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid/><description/></item><item><title>From Qdrant</title><link>https://qdrant.tech/documentation/migrate-to-qdrant/from-qdrant/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/migrate-to-qdrant/from-qdrant/</guid><description>&lt;h1 id="migrate-between-qdrant-instances">Migrate Between Qdrant Instances&lt;/h1>
&lt;p>Use the &lt;code>qdrant&lt;/code> subcommand to copy a collection from one Qdrant instance to another — or between collections within the same instance. The tool automatically recreates the full collection schema (vector config, HNSW settings, quantization, sharding) on the target.&lt;/p>
&lt;h2 id="what-you-need">What You Need&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Source Qdrant URL&lt;/strong> — gRPC endpoint of the source instance&lt;/li>
&lt;li>&lt;strong>Target Qdrant URL&lt;/strong> — gRPC endpoint of the target instance&lt;/li>
&lt;li>&lt;strong>Source collection name&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Target collection name&lt;/strong> (must be different from source if using the same instance)&lt;/li>
&lt;li>&lt;strong>API keys&lt;/strong> — for each instance, if authentication is enabled&lt;/li>
&lt;/ul>
&lt;h2 id="concept-mapping">Concept Mapping&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Source Qdrant&lt;/th>
 &lt;th style="text-align: left">Target Qdrant&lt;/th>
 &lt;th style="text-align: left">Notes&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">Collection&lt;/td>
 &lt;td style="text-align: left">Collection&lt;/td>
 &lt;td style="text-align: left">Recreated with exact schema&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Named vectors&lt;/td>
 &lt;td style="text-align: left">Named vectors&lt;/td>
 &lt;td style="text-align: left">All vector types preserved&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Sparse vectors&lt;/td>
 &lt;td style="text-align: left">Sparse vectors&lt;/td>
 &lt;td style="text-align: left">Direct mapping&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Payload&lt;/td>
 &lt;td style="text-align: left">Payload&lt;/td>
 &lt;td style="text-align: left">Direct mapping&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Payload indexes&lt;/td>
 &lt;td style="text-align: left">Payload indexes&lt;/td>
 &lt;td style="text-align: left">Recreated if &lt;code>--target.ensure-payload-indexes&lt;/code> is &lt;code>true&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Shard keys&lt;/td>
 &lt;td style="text-align: left">Shard keys&lt;/td>
 &lt;td style="text-align: left">Recreated automatically&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="run-the-migration">Run the Migration&lt;/h2>
&lt;h3 id="between-two-instances">Between Two Instances&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run --net&lt;span class="o">=&lt;/span>host --rm -it registry.cloud.qdrant.io/library/qdrant-migration qdrant &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --source.url &lt;span class="s1">&amp;#39;http://source-instance:6334&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --source.api-key &lt;span class="s1">&amp;#39;source-api-key&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --source.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --target.url &lt;span class="s1">&amp;#39;https://your-instance.cloud.qdrant.io:6334&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --target.api-key &lt;span class="s1">&amp;#39;your-qdrant-api-key&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --target.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="within-the-same-instance">Within the Same Instance&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run --net&lt;span class="o">=&lt;/span>host --rm -it registry.cloud.qdrant.io/library/qdrant-migration qdrant &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --source.url &lt;span class="s1">&amp;#39;http://localhost:6334&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --source.collection &lt;span class="s1">&amp;#39;original-collection&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --target.url &lt;span class="s1">&amp;#39;http://localhost:6334&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --target.collection &lt;span class="s1">&amp;#39;new-collection&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="with-parallel-workers">With Parallel Workers&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run --net&lt;span class="o">=&lt;/span>host --rm -it registry.cloud.qdrant.io/library/qdrant-migration qdrant &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --source.url &lt;span class="s1">&amp;#39;http://source-instance:6334&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --source.api-key &lt;span class="s1">&amp;#39;source-api-key&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --source.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --target.url &lt;span class="s1">&amp;#39;https://your-instance.cloud.qdrant.io:6334&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --target.api-key &lt;span class="s1">&amp;#39;your-qdrant-api-key&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --target.collection &lt;span class="s1">&amp;#39;your-collection&amp;#39;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --migration.num-workers &lt;span class="m">4&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="all-source-flags">All Source Flags&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Flag&lt;/th>
 &lt;th style="text-align: left">Required&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--source.collection&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Yes&lt;/td>
 &lt;td style="text-align: left">Source collection name&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--source.url&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Source gRPC URL (default: &lt;code>http://localhost:6334&lt;/code>)&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--source.api-key&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">API key for the source instance&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--source.max-message-size&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Maximum gRPC message size in bytes (default: &lt;code>33554432&lt;/code> = 32 MB)&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="all-target-flags">All Target Flags&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Flag&lt;/th>
 &lt;th style="text-align: left">Required&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--target.collection&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Yes&lt;/td>
 &lt;td style="text-align: left">Target collection name&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--target.url&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Target gRPC URL (default: &lt;code>http://localhost:6334&lt;/code>)&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--target.api-key&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">API key for the target instance&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--target.ensure-payload-indexes&lt;/code>&lt;/td>
 &lt;td style="text-align: left">No&lt;/td>
 &lt;td style="text-align: left">Recreate payload indexes from source (default: &lt;code>true&lt;/code>)&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="parallel-worker-option">Parallel Worker Option&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Flag&lt;/th>
 &lt;th style="text-align: left">Default&lt;/th>
 &lt;th style="text-align: left">Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">&lt;code>--migration.num-workers&lt;/code>&lt;/td>
 &lt;td style="text-align: left">Number of CPU cores&lt;/td>
 &lt;td style="text-align: left">Number of parallel workers for migration&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="gotchas">Gotchas&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Source and target must differ:&lt;/strong> You cannot migrate a collection to itself.&lt;/li>
&lt;li>&lt;strong>Parallel workers and resume:&lt;/strong> Migration progress is tracked per worker. If you change &lt;code>--migration.num-workers&lt;/code> between runs, the saved offsets are invalidated and the migration restarts from scratch. Use &lt;code>--migration.restart&lt;/code> explicitly if you intentionally want to change the worker count.&lt;/li>
&lt;li>&lt;strong>Large messages:&lt;/strong> If you encounter gRPC message size errors, increase &lt;code>--source.max-message-size&lt;/code>.&lt;/li>
&lt;li>&lt;strong>Existing target collection:&lt;/strong> If the target collection already exists, the tool uses it as-is without modifying the schema.&lt;/li>
&lt;/ul>
&lt;h2 id="next-steps">Next Steps&lt;/h2>
&lt;p>After migration, verify your data arrived correctly with the &lt;a href="https://qdrant.tech/documentation/migration-guidance/">Migration Verification Guide&lt;/a>.&lt;/p></description></item><item><title>Qdrant Quickstart</title><link>https://qdrant.tech/documentation/quickstart/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/quickstart/</guid><description>&lt;h1 id="how-to-get-started-with-qdrant-locally">How to Get Started with Qdrant Locally&lt;/h1>
&lt;p>In this short example, you will use the Python Client to create a Collection, load data into it and run a basic search query.&lt;/p>
&lt;aside role="status">Before you start, please make sure Docker is installed and running on your system.&lt;/aside>
&lt;h2 id="download-and-run">Download and run&lt;/h2>
&lt;p>First, download the latest Qdrant image from Dockerhub:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker pull qdrant/qdrant
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Then, run the service:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker run -p 6333:6333 -p 6334:6334 &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> -v &lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="k">$(&lt;/span>&lt;span class="nb">pwd&lt;/span>&lt;span class="k">)&lt;/span>&lt;span class="s2">/qdrant_storage:/qdrant/storage:z&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> qdrant/qdrant
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;aside role="status">On Windows, you may need to create a named Docker volume instead of mounting a local folder.&lt;/aside>
&lt;p>Under the default configuration all data will be stored in the &lt;code>./qdrant_storage&lt;/code> directory. This will also be the only directory that both the Container and the host machine can both see.&lt;/p></description></item><item><title/><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid/><description/></item><item><title/><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid/><description/></item><item><title/><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid/><description/></item><item><title/><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid/><description/></item><item><title/><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid/><description/></item><item><title/><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid/><description/></item><item><title>Static Embeddings</title><link>https://qdrant.tech/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://qdrant.tech/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><item><title>Courses</title><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid/><description/></item><item><title>User Manual</title><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid/><description/></item><item><title/><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid/><description/></item><item><title/><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid/><description/></item><item><title>Inference</title><link>https://qdrant.tech/documentation/inference/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/inference/</guid><description>&lt;h1 id="inference">Inference&lt;/h1>
&lt;p>Inference is the process of using a machine learning model to create vector embeddings from text, images, or other data types. While you can create embeddings on the client side, you can also let Qdrant generate them while storing or querying data.&lt;/p>
&lt;p>&lt;img src="https://qdrant.tech/docs/inference.png" alt="Inference">&lt;/p>
&lt;p>There are several advantages to generating embeddings with Qdrant:&lt;/p>
&lt;ul>
&lt;li>No need for external pipelines or separate model servers.&lt;/li>
&lt;li>Work with a single unified API instead of a different API per model provider.&lt;/li>
&lt;li>No external network calls, minimizing delays or data transfer overhead.&lt;/li>
&lt;/ul>
&lt;p>Depending on the model you want to use, inference can be executed:&lt;/p></description></item><item><title>Retrieval Optimization</title><link>https://qdrant.tech/learn/ref-courses-retrieval-optimization/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/learn/ref-courses-retrieval-optimization/</guid><description/></item><item><title>Qdrant Web UI</title><link>https://qdrant.tech/documentation/web-ui/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/web-ui/</guid><description>&lt;h1 id="qdrant-web-ui">Qdrant Web UI&lt;/h1>
&lt;p>You can manage both local and cloud Qdrant deployments through the Web UI.&lt;/p>
&lt;p>If you&amp;rsquo;ve set up a deployment locally with the Qdrant &lt;a href="https://qdrant.tech/documentation/quickstart/">Quickstart&lt;/a>,
navigate to http://localhost:6333/dashboard.&lt;/p>
&lt;p>If you&amp;rsquo;ve set up a deployment in a cloud cluster, find your Cluster URL in your
cloud dashboard, at &lt;a href="https://cloud.qdrant.io" target="_blank" rel="noopener nofollow">https://cloud.qdrant.io&lt;/a>. Add &lt;code>:6333/dashboard&lt;/code> to the end
of the URL.&lt;/p>
&lt;h2 id="access-the-web-ui">Access the Web UI&lt;/h2>
&lt;p>Qdrant&amp;rsquo;s Web UI is an intuitive and efficient graphic interface for your Qdrant Collections, REST API and data points.&lt;/p></description></item><item><title>API &amp; SDKs</title><link>https://qdrant.tech/documentation/interfaces/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/interfaces/</guid><description>&lt;h1 id="interfaces">Interfaces&lt;/h1>
&lt;p>Qdrant supports these &amp;ldquo;official&amp;rdquo; clients.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Note:&lt;/strong> If you are using a language that is not listed here, you can use the REST API directly or generate a client for your language
using &lt;a href="https://github.com/qdrant/qdrant/blob/master/docs/redoc/master/openapi.json" target="_blank" rel="noopener nofollow">OpenAPI&lt;/a>
or &lt;a href="https://github.com/qdrant/qdrant/tree/master/lib/api/src/grpc/proto" target="_blank" rel="noopener nofollow">protobuf&lt;/a> definitions.&lt;/p>
&lt;/blockquote>
&lt;h2 id="client-libraries">Client Libraries&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>&lt;/th>
 &lt;th>Client Repository&lt;/th>
 &lt;th>Installation&lt;/th>
 &lt;th>Version&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;a href="https://python-client.qdrant.tech/" target="_blank" rel="noopener nofollow">&lt;img src="https://qdrant.tech/docs/misc/python.webp" alt="python">&lt;/a>&lt;/td>
 &lt;td>&lt;strong>&lt;a href="https://github.com/qdrant/qdrant-client" target="_blank" rel="noopener nofollow">Python&lt;/a>&lt;/strong> + &lt;strong>&lt;a href="https://python-client.qdrant.tech/" target="_blank" rel="noopener nofollow">(Client Docs)&lt;/a>&lt;/strong>&lt;/td>
 &lt;td>&lt;code>pip install qdrant-client[fastembed]&lt;/code>&lt;/td>
 &lt;td>&lt;a href="https://github.com/qdrant/qdrant-client/releases" target="_blank" rel="noopener nofollow">Latest Release&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;img src="https://qdrant.tech/docs/misc/ts.webp" alt="typescript">&lt;/td>
 &lt;td>&lt;strong>&lt;a href="https://github.com/qdrant/qdrant-js" target="_blank" rel="noopener nofollow">JavaScript / Typescript&lt;/a>&lt;/strong>&lt;/td>
 &lt;td>&lt;code>npm install @qdrant/js-client-rest&lt;/code>&lt;/td>
 &lt;td>&lt;a href="https://github.com/qdrant/qdrant-js/releases" target="_blank" rel="noopener nofollow">Latest Release&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;img src="https://qdrant.tech/docs/misc/rust.png" alt="rust">&lt;/td>
 &lt;td>&lt;strong>&lt;a href="https://github.com/qdrant/rust-client" target="_blank" rel="noopener nofollow">Rust&lt;/a>&lt;/strong>&lt;/td>
 &lt;td>&lt;code>cargo add qdrant-client&lt;/code>&lt;/td>
 &lt;td>&lt;a href="https://github.com/qdrant/rust-client/releases" target="_blank" rel="noopener nofollow">Latest Release&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;img src="https://qdrant.tech/docs/misc/go.webp" alt="golang">&lt;/td>
 &lt;td>&lt;strong>&lt;a href="https://github.com/qdrant/go-client" target="_blank" rel="noopener nofollow">Go&lt;/a>&lt;/strong>&lt;/td>
 &lt;td>&lt;code>go get github.com/qdrant/go-client&lt;/code>&lt;/td>
 &lt;td>&lt;a href="https://github.com/qdrant/go-client/releases" target="_blank" rel="noopener nofollow">Latest Release&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;img src="https://qdrant.tech/docs/misc/dotnet.webp" alt=".net">&lt;/td>
 &lt;td>&lt;strong>&lt;a href="https://github.com/qdrant/qdrant-dotnet" target="_blank" rel="noopener nofollow">.NET&lt;/a>&lt;/strong>&lt;/td>
 &lt;td>&lt;code>dotnet add package Qdrant.Client&lt;/code>&lt;/td>
 &lt;td>&lt;a href="https://github.com/qdrant/qdrant-dotnet/releases" target="_blank" rel="noopener nofollow">Latest Release&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;img src="https://qdrant.tech/docs/misc/java.webp" alt="java">&lt;/td>
 &lt;td>&lt;strong>&lt;a href="https://github.com/qdrant/java-client" target="_blank" rel="noopener nofollow">Java&lt;/a>&lt;/strong>&lt;/td>
 &lt;td>&lt;a href="https://central.sonatype.com/artifact/io.qdrant/client" target="_blank" rel="noopener nofollow">Available on Maven Central&lt;/a>&lt;/td>
 &lt;td>&lt;a href="https://github.com/qdrant/java-client/releases" target="_blank" rel="noopener nofollow">Latest Release&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="api-reference">API Reference&lt;/h2>
&lt;p>All interaction with Qdrant takes place via the REST API. We recommend using REST API if you are using Qdrant for the first time or if you are working on a prototype.&lt;/p></description></item><item><title>Qdrant Tools</title><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid/><description/></item><item><title>Tutorials</title><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid/><description/></item><item><title/><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid/><description/></item><item><title>Qdrant MCP Server</title><link>https://qdrant.tech/documentation/qdrant-mcp-server/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/qdrant-mcp-server/</guid><description/></item><item><title/><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid/><description/></item><item><title/><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid/><description/></item><item><title/><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid/><description/></item><item><title/><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid/><description/></item><item><title>Tutorials</title><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid/><description/></item><item><title>Overview</title><link>https://qdrant.tech/documentation/tutorials-lp-overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/tutorials-lp-overview/</guid><description>&lt;h1 id="qdrant-tutorial-repository">Qdrant Tutorial Repository&lt;/h1>
&lt;h3 id="basic-tutorials">Basic Tutorials&lt;/h3>
&lt;p>&lt;em>Get up and running with Qdrant in minutes.&lt;/em>&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Tutorial&lt;/th>
 &lt;th style="text-align: left">Objective&lt;/th>
 &lt;th style="text-align: left">Stack&lt;/th>
 &lt;th style="text-align: left">Time&lt;/th>
 &lt;th style="text-align: left">Level&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">&lt;a href="https://qdrant.tech/documentation/quickstart/">Qdrant Local Quickstart&lt;/a>&lt;/td>
 &lt;td style="text-align: left">Basic CRUD operations and local deployment.&lt;/td>
 &lt;td style="text-align: left">&lt;span class="pill">Python&lt;/span>&lt;/td>
 &lt;td style="text-align: left">10m&lt;/td>
 &lt;td style="text-align: left">&lt;span class="text-green">Beginner&lt;/span>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;a href="https://qdrant.tech/documentation/tutorials-basics/search-beginners/">Semantic Search 101&lt;/a>&lt;/td>
 &lt;td style="text-align: left">Build a search engine for science fiction books.&lt;/td>
 &lt;td style="text-align: left">&lt;span class="pill">Python&lt;/span>&lt;/td>
 &lt;td style="text-align: left">5m&lt;/td>
 &lt;td style="text-align: left">&lt;span class="text-green">Beginner&lt;/span>&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h3 id="search-engineering-tutorials">Search Engineering Tutorials&lt;/h3>
&lt;p>&lt;em>Master vector search modalities, reranking, and retrieval quality.&lt;/em>&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">Tutorial&lt;/th>
 &lt;th style="text-align: left">Objective&lt;/th>
 &lt;th style="text-align: left">Stack&lt;/th>
 &lt;th style="text-align: left">Time&lt;/th>
 &lt;th style="text-align: left">Level&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">&lt;a href="https://qdrant.tech/documentation/tutorials-search-engineering/neural-search/">Semantic Search Intro&lt;/a>&lt;/td>
 &lt;td style="text-align: left">Deploy a search service for company descriptions.&lt;/td>
 &lt;td style="text-align: left">&lt;span class="pill">FastAPI&lt;/span>&lt;/td>
 &lt;td style="text-align: left">30m&lt;/td>
 &lt;td style="text-align: left">&lt;span class="text-green">Beginner&lt;/span>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;a href="https://qdrant.tech/documentation/tutorials-search-engineering/hybrid-search-fastembed/">Hybrid Search with FastEmbed&lt;/a>&lt;/td>
 &lt;td style="text-align: left">Combine dense and sparse search.&lt;/td>
 &lt;td style="text-align: left">&lt;span class="pill">FastAPI&lt;/span>&lt;/td>
 &lt;td style="text-align: left">20m&lt;/td>
 &lt;td style="text-align: left">&lt;span class="text-green">Beginner&lt;/span>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;a href="https://qdrant.tech/documentation/tutorials-search-engineering/using-relevance-feedback/">Relevance Feedback&lt;/a>&lt;/td>
 &lt;td style="text-align: left">Relevance Feedback Retrieval in Qdrant&lt;/td>
 &lt;td style="text-align: left">&lt;span class="pill">Python&lt;/span>&lt;/td>
 &lt;td style="text-align: left">30m&lt;/td>
 &lt;td style="text-align: left">&lt;span class="text-yellow">Intermediate&lt;/span>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;a href="https://qdrant.tech/documentation/tutorials-search-engineering/collaborative-filtering/">Collaborative Filtering&lt;/a>&lt;/td>
 &lt;td style="text-align: left">Collaborative filtering using sparse embeddings.&lt;/td>
 &lt;td style="text-align: left">&lt;span class="pill">Python&lt;/span>&lt;/td>
 &lt;td style="text-align: left">45m&lt;/td>
 &lt;td style="text-align: left">&lt;span class="text-yellow">Intermediate&lt;/span>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;a href="https://qdrant.tech/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/">Multivector Document Retrieval&lt;/a>&lt;/td>
 &lt;td style="text-align: left">PDF RAG using ColPali and embedding pooling.&lt;/td>
 &lt;td style="text-align: left">&lt;span class="pill">Python&lt;/span>&lt;/td>
 &lt;td style="text-align: left">30m&lt;/td>
 &lt;td style="text-align: left">&lt;span class="text-yellow">Intermediate&lt;/span>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;a href="https://qdrant.tech/documentation/tutorials-search-engineering/retrieval-quality/">Retrieval Quality Evaluation&lt;/a>&lt;/td>
 &lt;td style="text-align: left">Measure quality and tune HNSW parameters.&lt;/td>
 &lt;td style="text-align: left">&lt;span class="pill">Python&lt;/span>&lt;/td>
 &lt;td style="text-align: left">30m&lt;/td>
 &lt;td style="text-align: left">&lt;span class="text-yellow">Intermediate&lt;/span>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;a href="https://qdrant.tech/documentation/tutorials-search-engineering/reranking-hybrid-search/">Hybrid Search with Reranking&lt;/a>&lt;/td>
 &lt;td style="text-align: left">Implement late interaction and sparse reranking.&lt;/td>
 &lt;td style="text-align: left">&lt;span class="pill">Python&lt;/span>&lt;/td>
 &lt;td style="text-align: left">40m&lt;/td>
 &lt;td style="text-align: left">&lt;span class="text-yellow">Intermediate&lt;/span>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;a href="https://qdrant.tech/documentation/tutorials-search-engineering/code-search/">Semantic Search for Code&lt;/a>&lt;/td>
 &lt;td style="text-align: left">Navigate codebases using vector similarity.&lt;/td>
 &lt;td style="text-align: left">&lt;span class="pill">Python&lt;/span>&lt;/td>
 &lt;td style="text-align: left">45m&lt;/td>
 &lt;td style="text-align: left">&lt;span class="text-yellow">Intermediate&lt;/span>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;a href="https://qdrant.tech/documentation/tutorials-search-engineering/using-multivector-representations/">Multivectors and Late Interaction&lt;/a>&lt;/td>
 &lt;td style="text-align: left">Effective use of multivector representations.&lt;/td>
 &lt;td style="text-align: left">&lt;span class="pill">Python&lt;/span>&lt;/td>
 &lt;td style="text-align: left">30m&lt;/td>
 &lt;td style="text-align: left">&lt;span class="text-yellow">Intermediate&lt;/span>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">&lt;a href="https://qdrant.tech/documentation/tutorials-search-engineering/static-embeddings/">Static Embeddings&lt;/a>&lt;/td>
 &lt;td style="text-align: left">Evaluate the utility of static embeddings.&lt;/td>
 &lt;td style="text-align: left">&lt;span class="pill">Python&lt;/span>&lt;/td>
 &lt;td style="text-align: left">20m&lt;/td>
 &lt;td style="text-align: left">&lt;span class="text-yellow">Intermediate&lt;/span>&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h3 id="operations--scale">Operations &amp;amp; Scale&lt;/h3>
&lt;p>&lt;em>Production-grade management, monitoring, and high-volume optimization.&lt;/em>&lt;/p></description></item><item><title>Integrations</title><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid/><description/></item><item><title>Support</title><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid/><description/></item><item><title>Release Notes</title><link>https://qdrant.tech/documentation/release-notes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/release-notes/</guid><description/></item><item><title>Vultr and Qdrant Hybrid Cloud Support Next-Gen AI Projects</title><link>https://qdrant.tech/blog/hybrid-cloud-vultr/</link><pubDate>Wed, 10 Apr 2024 00:08:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/hybrid-cloud-vultr/</guid><description>&lt;p>We’re excited to share that Qdrant and &lt;a href="https://www.vultr.com/" target="_blank" rel="noopener nofollow">Vultr&lt;/a> are partnering to provide seamless scalability and performance for vector search workloads. With Vultr&amp;rsquo;s global footprint and customizable platform, deploying vector search workloads becomes incredibly flexible. Qdrant&amp;rsquo;s new &lt;a href="https://qdrant.tech/hybrid-cloud/">Qdrant Hybrid Cloud&lt;/a> offering and its Kubernetes-native design, coupled with Vultr&amp;rsquo;s straightforward virtual machine provisioning, allows for simple setup when prototyping and building next-gen AI apps.&lt;/p>
&lt;h4 id="adapting-to-diverse-ai-development-needs-with-customization-and-deployment-flexibility">Adapting to Diverse AI Development Needs with Customization and Deployment Flexibility&lt;/h4>
&lt;p>In the fast-paced world of AI and ML, businesses are eagerly integrating AI and generative AI to enhance their products with new features like AI assistants, develop new innovative solutions, and streamline internal workflows with AI-driven processes. Given the diverse needs of these applications, it&amp;rsquo;s clear that a one-size-fits-all approach doesn&amp;rsquo;t apply to AI development. This variability in requirements underscores the need for adaptable and customizable development environments.&lt;/p></description></item><item><title>Vector Search in constant time</title><link>https://qdrant.tech/articles/quantum-quantization/</link><pubDate>Sat, 01 Apr 2023 00:48:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/quantum-quantization/</guid><description>&lt;p>The advent of quantum computing has revolutionized many areas of science and technology, and one of the most intriguing developments has been its potential application to artificial neural networks (ANNs). One area where quantum computing can significantly improve performance is in vector search, a critical component of many machine learning tasks. In this article, we will discuss the concept of quantum quantization for ANN vector search, focusing on the conversion of float32 to qbit vectors and the ability to perform vector search on arbitrary-sized databases in constant time.&lt;/p></description></item><item><title>STACKIT and Qdrant Hybrid Cloud for Best Data Privacy</title><link>https://qdrant.tech/blog/hybrid-cloud-stackit/</link><pubDate>Wed, 10 Apr 2024 00:07:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/hybrid-cloud-stackit/</guid><description>&lt;p>Qdrant and &lt;a href="https://www.stackit.de/en/" target="_blank" rel="noopener nofollow">STACKIT&lt;/a> are thrilled to announce that developers are now able to deploy a fully managed vector database to their STACKIT environment with the introduction of &lt;a href="https://qdrant.tech/hybrid-cloud/">Qdrant Hybrid Cloud&lt;/a>. This is a great step forward for the German AI ecosystem as it enables developers and businesses to build cutting edge AI applications that run on German data centers with full control over their data.&lt;/p>
&lt;p>Vector databases are an essential component of the modern AI stack. They enable rapid and accurate retrieval of high-dimensional data, crucial for powering search, recommendation systems, and augmenting machine learning models. In the rising field of GenAI, vector databases power retrieval-augmented-generation (RAG) scenarios as they are able to enhance the output of large language models (LLMs) by injecting relevant contextual information. However, this contextual information is often rooted in confidential internal or customer-related information, which is why enterprises are in pursuit of solutions that allow them to make this data available for their AI applications without compromising data privacy, losing data control, or letting data exit the company&amp;rsquo;s secure environment.&lt;/p></description></item><item><title>Qdrant Hybrid Cloud and Scaleway Empower GenAI</title><link>https://qdrant.tech/blog/hybrid-cloud-scaleway/</link><pubDate>Wed, 10 Apr 2024 00:06:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/hybrid-cloud-scaleway/</guid><description>&lt;p>In a move to empower the next wave of AI innovation, Qdrant and &lt;a href="https://www.scaleway.com/en/" target="_blank" rel="noopener nofollow">Scaleway&lt;/a> collaborate to introduce &lt;a href="https://qdrant.tech/hybrid-cloud/">Qdrant Hybrid Cloud&lt;/a>, a fully managed vector database that can be deployed on existing Scaleway environments. This collaboration is set to democratize access to advanced AI capabilities, enabling developers to easily deploy and scale vector search technologies within Scaleway&amp;rsquo;s robust and developer-friendly cloud infrastructure. By focusing on the unique needs of startups and the developer community, Qdrant and Scaleway are providing access to intuitive and easy to use tools, making cutting-edge AI more accessible than ever before.&lt;/p></description></item><item><title>Red Hat OpenShift and Qdrant Hybrid Cloud Offer Seamless and Scalable AI</title><link>https://qdrant.tech/blog/hybrid-cloud-red-hat-openshift/</link><pubDate>Thu, 11 Apr 2024 00:04:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/hybrid-cloud-red-hat-openshift/</guid><description>&lt;p>We’re excited about our collaboration with Red Hat to bring the Qdrant vector database to &lt;a href="https://www.redhat.com/en/technologies/cloud-computing/openshift" target="_blank" rel="noopener nofollow">Red Hat OpenShift&lt;/a> customers! With the release of &lt;a href="https://qdrant.tech/hybrid-cloud/">Qdrant Hybrid Cloud&lt;/a>, developers can now deploy and run the Qdrant vector database directly in their Red Hat OpenShift environment. This collaboration enables developers to scale more seamlessly, operate more consistently across hybrid cloud environments, and maintain complete control over their vector data. This is a big step forward in simplifying AI infrastructure and empowering data-driven projects, like retrieval augmented generation (RAG) use cases, advanced search scenarios, or recommendations systems.&lt;/p></description></item><item><title>Qdrant and OVHcloud Bring Vector Search to All Enterprises</title><link>https://qdrant.tech/blog/hybrid-cloud-ovhcloud/</link><pubDate>Wed, 10 Apr 2024 00:05:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/hybrid-cloud-ovhcloud/</guid><description>&lt;p>With the official release of &lt;a href="https://qdrant.tech/hybrid-cloud/">Qdrant Hybrid Cloud&lt;/a>, businesses running their data infrastructure on &lt;a href="https://ovhcloud.com/" target="_blank" rel="noopener nofollow">OVHcloud&lt;/a> are now able to deploy a fully managed vector database in their existing OVHcloud environment. We are excited about this partnership, which has been established through the &lt;a href="https://opentrustedcloud.ovhcloud.com/en/" target="_blank" rel="noopener nofollow">OVHcloud Open Trusted Cloud&lt;/a> program, as it is based on our shared understanding of the importance of trust, control, and data privacy in the context of the emerging landscape of enterprise-grade AI applications. As part of this collaboration, we are also providing a detailed use case tutorial on building a recommendation system that demonstrates the benefits of running Qdrant Hybrid Cloud on OVHcloud.&lt;/p></description></item><item><title>New RAG Horizons with Qdrant Hybrid Cloud and LlamaIndex</title><link>https://qdrant.tech/blog/hybrid-cloud-llamaindex/</link><pubDate>Wed, 10 Apr 2024 00:04:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/hybrid-cloud-llamaindex/</guid><description>&lt;p>We&amp;rsquo;re happy to announce the collaboration between &lt;a href="https://www.llamaindex.ai/" target="_blank" rel="noopener nofollow">LlamaIndex&lt;/a> and &lt;a href="https://qdrant.tech/hybrid-cloud/">Qdrant’s new Hybrid Cloud launch&lt;/a>, aimed at empowering engineers and scientists worldwide to swiftly and securely develop and scale their GenAI applications. By leveraging LlamaIndex&amp;rsquo;s robust framework, users can maximize the potential of vector search and create stable and effective AI products. Qdrant Hybrid Cloud offers the same Qdrant functionality on a Kubernetes-based architecture, which further expands the ability of LlamaIndex to support any user on any environment.&lt;/p></description></item><item><title>Developing Advanced RAG Systems with Qdrant Hybrid Cloud and LangChain</title><link>https://qdrant.tech/blog/hybrid-cloud-langchain/</link><pubDate>Sun, 14 Apr 2024 00:04:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/hybrid-cloud-langchain/</guid><description>&lt;p>&lt;a href="https://www.langchain.com/" target="_blank" rel="noopener nofollow">LangChain&lt;/a> and Qdrant are collaborating on the launch of &lt;a href="https://qdrant.tech/hybrid-cloud/">Qdrant Hybrid Cloud&lt;/a>, which is designed to empower engineers and scientists globally to easily and securely develop and scale their GenAI applications. Harnessing LangChain’s robust framework, users can unlock the full potential of vector search, enabling the creation of stable and effective AI products. Qdrant Hybrid Cloud extends the same powerful functionality of Qdrant onto a Kubernetes-based architecture, enhancing LangChain’s capability to cater to users across any environment.&lt;/p></description></item><item><title>Cutting-Edge GenAI with Jina AI and Qdrant Hybrid Cloud</title><link>https://qdrant.tech/blog/hybrid-cloud-jinaai/</link><pubDate>Wed, 10 Apr 2024 00:03:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/hybrid-cloud-jinaai/</guid><description>&lt;p>We&amp;rsquo;re thrilled to announce the collaboration between Qdrant and &lt;a href="https://jina.ai/" target="_blank" rel="noopener nofollow">Jina AI&lt;/a> for the launch of &lt;a href="https://qdrant.tech/hybrid-cloud/">Qdrant Hybrid Cloud&lt;/a>, empowering users worldwide to rapidly and securely develop and scale their AI applications. By leveraging Jina AI&amp;rsquo;s top-tier large language models (LLMs), engineers and scientists can optimize their vector search efforts. Qdrant&amp;rsquo;s latest Hybrid Cloud solution, designed natively with Kubernetes, seamlessly integrates with Jina AI&amp;rsquo;s robust embedding models and APIs. This synergy streamlines both prototyping and deployment processes for AI solutions.&lt;/p></description></item><item><title>Qdrant Hybrid Cloud and Haystack for Enterprise RAG</title><link>https://qdrant.tech/blog/hybrid-cloud-haystack/</link><pubDate>Wed, 10 Apr 2024 00:02:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/hybrid-cloud-haystack/</guid><description>&lt;p>We’re excited to share that Qdrant and &lt;a href="https://haystack.deepset.ai/" target="_blank" rel="noopener nofollow">Haystack&lt;/a> are continuing to expand their seamless integration to the new &lt;a href="https://qdrant.tech/hybrid-cloud/">Qdrant Hybrid Cloud&lt;/a> offering, allowing developers to deploy a managed &lt;a href="https://qdrant.tech/articles/what-is-a-vector-database/">vector database&lt;/a> in their own environment of choice. Earlier this year, both Qdrant and Haystack, started to address their user’s growing need for production-ready retrieval-augmented-generation (RAG) deployments. The ability to build and deploy AI apps anywhere now allows for complete data sovereignty and control. This gives large enterprise customers the peace of mind they need before they expand AI functionalities throughout their operations.&lt;/p></description></item><item><title>Qdrant Hybrid Cloud and DigitalOcean for Scalable and Secure AI Solutions</title><link>https://qdrant.tech/blog/hybrid-cloud-digitalocean/</link><pubDate>Thu, 11 Apr 2024 00:02:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/hybrid-cloud-digitalocean/</guid><description>&lt;p>Developers are constantly seeking new ways to enhance their AI applications with new customer experiences. At the core of this are vector databases, as they enable the efficient handling of complex, unstructured data, making it possible to power applications with semantic search, personalized recommendation systems, and intelligent Q&amp;amp;A platforms. However, when deploying such new AI applications, especially those handling sensitive or personal user data, privacy becomes important.&lt;/p>
&lt;p>&lt;a href="https://www.digitalocean.com/" target="_blank" rel="noopener nofollow">DigitalOcean&lt;/a> and Qdrant are actively addressing this with an integration that lets developers deploy a managed vector database in their existing DigitalOcean environments. With the recent launch of &lt;a href="https://qdrant.tech/hybrid-cloud/">Qdrant Hybrid Cloud&lt;/a>, developers can seamlessly deploy Qdrant on DigitalOcean Kubernetes (DOKS) clusters, making it easier for developers to handle vector databases without getting bogged down in the complexity of managing the underlying infrastructure.&lt;/p></description></item><item><title>Enhance AI Data Sovereignty with Aleph Alpha and Qdrant Hybrid Cloud</title><link>https://qdrant.tech/blog/hybrid-cloud-aleph-alpha/</link><pubDate>Thu, 11 Apr 2024 00:01:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/hybrid-cloud-aleph-alpha/</guid><description>&lt;p>&lt;a href="https://aleph-alpha.com/" target="_blank" rel="noopener nofollow">Aleph Alpha&lt;/a> and Qdrant are on a joint mission to empower the world’s best companies in their AI journey. The launch of &lt;a href="https://qdrant.tech/hybrid-cloud/">Qdrant Hybrid Cloud&lt;/a> furthers this effort by ensuring complete data sovereignty and hosting security. This latest collaboration is all about giving enterprise customers complete transparency and sovereignty to make use of AI in their own environment. By using a hybrid cloud vector database, those looking to leverage vector search for the AI applications can now ensure their proprietary and customer data is completely secure.&lt;/p></description></item><item><title>Elevate Your Data With Airbyte and Qdrant Hybrid Cloud</title><link>https://qdrant.tech/blog/hybrid-cloud-airbyte/</link><pubDate>Wed, 10 Apr 2024 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/hybrid-cloud-airbyte/</guid><description>&lt;p>In their mission to support large-scale AI innovation, &lt;a href="https://airbyte.com/" target="_blank" rel="noopener nofollow">Airbyte&lt;/a> and Qdrant are collaborating on the launch of Qdrant’s new offering - &lt;a href="https://qdrant.tech/hybrid-cloud/">Qdrant Hybrid Cloud&lt;/a>. This collaboration allows users to leverage the synergistic capabilities of both Airbyte and Qdrant within a private infrastructure. Qdrant’s new offering represents the first managed &lt;a href="https://qdrant.tech/articles/what-is-a-vector-database/">vector database&lt;/a> that can be deployed in any environment. Businesses optimizing their data infrastructure with Airbyte are now able to host a vector database either on premise, or on a public cloud of their choice - while still reaping the benefits of a managed database product.&lt;/p></description></item><item><title>Ecosystem Guides</title><link/><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid/><description/></item><item><title>Practice Datasets</title><link>https://qdrant.tech/documentation/datasets/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/datasets/</guid><description>&lt;h1 id="common-datasets-in-snapshot-format">Common Datasets in Snapshot Format&lt;/h1>
&lt;p>You may find that creating embeddings from datasets is a very resource-intensive task.
If you need a practice dataset, feel free to pick one of the ready-made snapshots on this page.
These snapshots contain pre-computed vectors that you can easily import into your Qdrant instance.&lt;/p>
&lt;h2 id="available-datasets">Available datasets&lt;/h2>
&lt;p>Our snapshots are usually generated from publicly available datasets, which are often used for
non-commercial or academic purposes. The following datasets are currently available. Please click
on a dataset name to see its detailed description.&lt;/p></description></item><item><title>Qdrant Skills for AI Agents</title><link>https://qdrant.tech/blog/qdrant-skills-release/</link><pubDate>Tue, 31 Mar 2026 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-skills-release/</guid><description>&lt;p>The standard RAG tutorial teaches a simple pattern: embed your documents, store them in a vector database, retrieve the top K, and feed them to the LLM. The vector engine is passive infrastructure. Put vectors in, get neighbors out. Configure once, forget about it forever.&lt;/p>
&lt;p>This mental model is why most AI agents treat vector search as a black box. They can call the API. They cannot make the engineering decisions that determine whether it works well.&lt;/p></description></item><item><title>Master Multi-Vector Search With Qdrant</title><link>https://qdrant.tech/blog/multi-vector-search-course/</link><pubDate>Tue, 24 Mar 2026 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/multi-vector-search-course/</guid><description>&lt;p>Most vector search tutorials stop at single-vector embeddings: one document, one vector, one similarity score. That works for demos. It falls apart when your retrieval pipeline needs to capture fine-grained token-level interactions across text, images, and PDFs at production scale.&lt;/p>
&lt;p>Until now, engineers who wanted to go deeper had to piece together scattered papers, blog posts, and half-documented repos. There was no structured, hands-on resource that connected the theory of late interaction models to real implementation in a production search engine.&lt;/p></description></item><item><title>Start with pgvector: Why You'll Outgrow It Faster Than You Think</title><link>https://qdrant.tech/blog/pgvector-tradeoffs/</link><pubDate>Tue, 17 Mar 2026 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/pgvector-tradeoffs/</guid><description>&lt;p>The most common advice in every vector database thread online is some version of &amp;ldquo;start with pgvector, graduate later.&amp;rdquo; We analyzed 110+ community threads from Hacker News and Reddit to see if the data supports this heuristic. The short answer is that it&amp;rsquo;s more nuanced than it sounds, and most applications will hit its limits sooner than expected.&lt;/p>
&lt;hr>
&lt;h2 id="the-appeal-of-just-use-pgvector">The Appeal of &amp;ldquo;Just Use pgvector&amp;rdquo;&lt;/h2>
&lt;p>This advice is attractive for obvious reasons. If you&amp;rsquo;re already running Postgres — and most teams are — pgvector gives you vector search without new infrastructure, new ops burden, or new sync headaches. One system, one deployment.&lt;/p></description></item><item><title>Video Anomaly Detection From Edge to Cloud With Qdrant</title><link>https://qdrant.tech/blog/video-anomaly-detection-edge-to-cloud/</link><pubDate>Sun, 15 Mar 2026 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/video-anomaly-detection-edge-to-cloud/</guid><description>&lt;p>&lt;strong>What if your surveillance cameras could detect fights, accidents, intrusions, and equipment failures without ever being trained on those specific events?&lt;/strong>&lt;/p>
&lt;p>Traditional video classifiers need labeled examples of every anomaly type you want to catch. That breaks in the real world. You can&amp;rsquo;t enumerate everything that could go wrong, and the moment something new happens, your model scores 0.0.&lt;/p>
&lt;p>We built a system that takes a different approach: reframe anomaly detection as a &lt;strong>nearest-neighbor search problem&lt;/strong>. Instead of asking &amp;ldquo;is this a fight?&amp;rdquo;, ask &amp;ldquo;how different is this from what we normally see?&amp;rdquo; That question is a vector distance calculation, and Qdrant answers it in sub-millisecond time.&lt;/p></description></item><item><title>We Raised $50M to Build Composable Vector Search as Core Infrastructure</title><link>https://qdrant.tech/blog/series-b-announcement/</link><pubDate>Thu, 12 Mar 2026 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/series-b-announcement/</guid><description>&lt;p>Today we&amp;rsquo;re announcing $50 million in Series B funding, led by AVP, with participation from Bosch Ventures, Unusual Ventures, Spark Capital, and 42CAP.&lt;/p>
&lt;h3 id="retrieval-is-on-the-critical-path-of-every-ai-system">Retrieval Is on the Critical Path of Every AI System&lt;/h3>
&lt;p>Every serious AI workload — RAG, agents, multimodal search — depends on retrieving the right information, at the right time, under real constraints. Teams prototype with whatever is convenient, then hit walls in production: indexes that stall under writes, filtering applied after search instead of during it, tail latencies that spike under load. These aren&amp;rsquo;t configuration problems. They&amp;rsquo;re architectural ones. And they&amp;rsquo;re why we started Qdrant.&lt;/p></description></item><item><title>Qdrant Meets Google Gemini Embedding 2</title><link>https://qdrant.tech/blog/qdrant-gemini-embedding-2/</link><pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-gemini-embedding-2/</guid><description>&lt;p>Until now, building a search system that understands both what a document says &lt;em>and&lt;/em> what its images, videos, or audio convey could be complex and limited. It meant stitching together multiple embedding models and writing code to reconcile results across modalities. That pipeline complexity may have been the single biggest barrier to production-grade multimodal retrieval.&lt;/p>
&lt;p>Today, Google launched &lt;a href="https://ai.google.dev/gemini-api/docs/embeddings" target="_blank" rel="noopener nofollow">&lt;strong>Gemini Embedding 2&lt;/strong>&lt;/a> in Public Preview, the first fully multimodal embedding model in the Gemini family, and Qdrant supports it from day one. This post explains what the model offers, why Qdrant is a natural fit, and how to get started.&lt;/p></description></item><item><title>How GlassDollar improved high-recall sourcing by migrating from Elasticsearch to Qdrant</title><link>https://qdrant.tech/blog/case-study-glassdollar/</link><pubDate>Wed, 04 Mar 2026 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-glassdollar/</guid><description>&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-glassdollar/glassdollar-bento-box.png" alt="GlassDollar overview">&lt;/p>
&lt;p>&lt;a href="https://www.glassdollar.com/" target="_blank">GlassDollar&lt;/a> helps enterprises such as Siemens, Mahle, and A2A discover, compare, and run proof-of-concepts with innovative startups. The platform combines an chatbot-like experience for discovering innovate companies with tools to manager innovation projects from start to finish.&lt;/p>
&lt;p>For GlassDollar, search is not a feature. It is the core mechanism that turns an enterprise problem statement into a shortlist of relevant companies, ranked and contextualized for decision-making.&lt;/p>
&lt;h2 id="scaling-to-10-million-documents-pushed-search-to-its-limits">Scaling to 10 Million Documents Pushed Search to its Limits&lt;/h2>
&lt;p>GlassDollar’s dataset spans a few million companies. Each company can map to multiple documents, including product descriptions and technical summaries.&lt;/p></description></item><item><title>Convolve 4.0 - IIT Hackathon Winners</title><link>https://qdrant.tech/blog/iit-hack-winners/</link><pubDate>Fri, 27 Feb 2026 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/iit-hack-winners/</guid><description>&lt;p>Builders from across India came together for Convolve 4.0 - A Pan IIT AI/ML Hackathon, hosted by IIT Madras, to develop impactful, real-world AI systems across critical domains. The hackathon focused on multi-agent systems, retrieval-augmented generation (RAG), vector memory, multimodal intelligence, and production-ready AI pipelines.&lt;/p>
&lt;p>Participants built solutions spanning healthcare and medical reasoning, disaster response and crisis intelligence, climate and risk monitoring, legal-tech and governance systems, misinformation detection, public safety, infrastructure auditing, education, and civic-tech platforms. Many projects emphasized persistent AI memory, domain-aware guardrails, spatial intelligence, and collaborative agent architectures designed for long-term, scalable deployment.&lt;/p></description></item><item><title>How My AskAI Built Self-Improving Support Agents</title><link>https://qdrant.tech/blog/case-study-my-askai/</link><pubDate>Wed, 25 Feb 2026 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-my-askai/</guid><description>&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-my-askai/my-askai-bento-box.png" alt="My AskAI overview">&lt;/p>
&lt;p>&lt;a href="https://myaskai.com" target="_blank">My AskAI&lt;/a> built a managed platform for AI customer support agents that plug directly into existing helpdesk tools like &lt;a href="https://myaskai.com/ai-agent-integration/intercom" target="_blank">Intercom&lt;/a>
and &lt;a href="https://myaskai.com/ai-agent-integration/zendesk-tickets" target="_blank">Zendesk&lt;/a> . The goal was to make AI behave like a reliable coworker, not a brittle chatbot. In production, My AskAI&amp;rsquo;s agents are designed to resolve a large portion of inbound support requests automatically, then hand over to a human when the agent cannot answer confidently. My AskAI positions this as &lt;a href="https://myaskai.com/blog/my-askai-edel-optics-case-study-2026" target="_blank">deflecting around 75 percent of support requests&lt;/a> and sustaining a resolution rate in the low to mid 70s, depending on the time window and workload mix.&lt;/p></description></item><item><title>Qdrant 1.17 - Relevance Feedback &amp; Search Latency Improvements</title><link>https://qdrant.tech/blog/qdrant-1.17.x/</link><pubDate>Fri, 20 Feb 2026 00:00:00 -0800</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-1.17.x/</guid><description>&lt;p>&lt;a href="https://github.com/qdrant/qdrant/releases/tag/v1.17.0" target="_blank" rel="noopener nofollow">&lt;strong>Qdrant 1.17.0 is out!&lt;/strong>&lt;/a> Let’s look at the main features for this version:&lt;/p>
&lt;p>&lt;strong>Relevance Feedback Query:&lt;/strong> Improve the quality of search results by incorporating information about their relevance.&lt;/p>
&lt;p>&lt;strong>Search Latency Improvements:&lt;/strong> Manage search latency with new tools, such as an update queue and delayed fan-outs, as well as many internal search performance improvements.&lt;/p>
&lt;p>&lt;strong>Greater Operational Observability:&lt;/strong> Better insights into operational metrics and faster troubleshooting with a new cluster-wide telemetry API and segment optimization monitoring.&lt;/p></description></item><item><title>How Bazaarvoice scaled AI-powered product insights with Qdrant</title><link>https://qdrant.tech/blog/case-study-bazaarvoice/</link><pubDate>Tue, 10 Feb 2026 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-bazaarvoice/</guid><description>&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-bazaarvoice/bazaarvoice-bento.png" alt="Bazaarvoice overview">&lt;/p>
&lt;h2 id="turning-billions-of-reviews-into-real-time-actionable-intelligence">Turning billions of reviews into real-time, actionable intelligence&lt;/h2>
&lt;p>Bazaarvoice powers ratings and reviews across the global ecommerce ecosystem, connecting brands, retailers, and consumers through authentic product feedback. From brand-owned storefronts to major retailers, Bazaarvoice sources, verifies, and amplifies reviews at a scale few companies ever reach.&lt;/p>
&lt;p>As large language models (LLMs) became production-ready, Bazaarvoice saw an opportunity to enhance the experiences of their clients&amp;rsquo; shoppers. The company wanted to help shoppers ask questions directly on product detail pages using natural language and help brands extract meaningful insights from vast volumes of unstructured customer feedback.&lt;/p></description></item><item><title>Sketch &amp; Search: Google Deepmind x Qdrant x Freepik Hackathon Winners</title><link>https://qdrant.tech/blog/sketch-n-search-winners/</link><pubDate>Tue, 03 Feb 2026 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/sketch-n-search-winners/</guid><description>&lt;p>Builders from around the world came together for Sketch &amp;amp; Search, a global hackathon powered by Google DeepMind, Freepik, and Qdrant, to explore the future of AI-driven creative pipelines.&lt;/p>
&lt;p>Teams were challenged to go beyond single-prompt generation and build end-to-end systems combining generative models, visual creation, and vector search. Submissions showcased consistent characters and style memory, image-as-prompt and image-to-video workflows, intelligent asset discovery, recommendations, and built-in brand-safe guardrails.&lt;/p>
&lt;p>The hackathon kicked off in San Francisco on November 22, 2025, followed by a two-week virtual build window and a live demo day where winners were announced. Projects were judged on creative quality, effective search and similarity, UX tradeoffs, guardrails, and real-world applicability.&lt;/p></description></item><item><title>Two Approaches to Helping AI Agents Use Your API (And Why You Need Both)</title><link>https://qdrant.tech/blog/skill-md-meets-repl/</link><pubDate>Wed, 28 Jan 2026 00:00:00 -0800</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/skill-md-meets-repl/</guid><description>&lt;p>AI coding agents fail in predictable ways when working with APIs. Two recent approaches from Mintlify and Armin Ronacher attack different failure modes. Understanding both reveals something useful about how agents should interact with developer tools.&lt;/p>
&lt;h2 id="two-failure-modes">Two Failure Modes&lt;/h2>
&lt;p>When an agent writes code against your API, it can fail because:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>It doesn&amp;rsquo;t know what it doesn&amp;rsquo;t know.&lt;/strong> The agent uses a deprecated method, misconfigures a parameter, or violates a constraint that isn&amp;rsquo;t obvious from type signatures. This is the &amp;ldquo;known unknowns&amp;rdquo; problem: things the API maintainer knows but the agent doesn&amp;rsquo;t.&lt;/p></description></item><item><title>How Anima Health scaled clinical document intelligence with Qdrant</title><link>https://qdrant.tech/blog/case-study-anima-health/</link><pubDate>Wed, 28 Jan 2026 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-anima-health/</guid><description>&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-anima-health/anima-bento.png" alt="Anima Health scaled privacy-first clinical intelligence with Qdrant">&lt;/p>
&lt;p>Primary care systems across the UK are under intense strain. General practitioners (GPs) balance their time with patient demand, understaffing, administrative burden vs. delivering care. &lt;a href="https://animahealth.com/" target="_blank">Anima Health&lt;/a> set out to address this challenge by building a clinical operating system designed to make primary care more efficient, more informed, and more humane for both clinicians and patients.&lt;/p>
&lt;p>At the heart of Anima’s platform is the ability to process large volumes of unstructured clinical data, including documents, test results, referral letters, and notes, while maintaining strict privacy guarantees. To achieve this at scale, Anima relies on Qdrant as a core infrastructure component for vector search, similarity analysis, and agentic AI workflows.&lt;/p></description></item><item><title>Qdrant Academy Expands with Official Certification</title><link>https://qdrant.tech/blog/qdrant-certification-launch/</link><pubDate>Wed, 28 Jan 2026 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-certification-launch/</guid><description>&lt;p>Since we first announced &lt;strong>&lt;a href="https://qdrant.tech/course/" target="_blank" rel="noopener nofollow">Qdrant Academy&lt;/a>&lt;/strong>, our mission has been to provide developers with more than just documentation. We wanted to build a structured path to mastering vector search. As the AI search landscape matures, the distinction between a simple storage layer and a high-performance vector search engine has become the defining factor in production-grade RAG and recommendation systems.&lt;/p>
&lt;p>Today, we are thrilled to take the next step in that mission. It’s time to move from learning to proving your expertise with the launch of our first official certification.&lt;/p></description></item><item><title>How Kakao Built an AI-Powered Internal Service Desk with Qdrant</title><link>https://qdrant.tech/blog/case-study-kakao/</link><pubDate>Tue, 27 Jan 2026 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-kakao/</guid><description>&lt;p>&lt;a href="https://www.kakaocorp.com/" target="_blank">Kakao&lt;/a> is one of South Korea&amp;rsquo;s leading technology companies, best known for KakaoTalk, the country&amp;rsquo;s dominant messaging platform with over 48 million monthly active users. Beyond messaging, Kakao operates a broad ecosystem of services including maps, mobility, fintech, and enterprise solutions.&lt;/p>
&lt;h2 id="helping-employees-find-answers-faster-without-sacrificing-precision-or-control">Helping employees find answers faster without sacrificing precision or control&lt;/h2>
&lt;p>Kakao’s Connectivity Platform team set out to solve a familiar internal problem: employees across the organization needed a faster, more reliable way to get answers about internal systems, APIs, and operational procedures. The result was &lt;strong>Service Desk Agent&lt;/strong>, an AI-powered internal service desk designed to answer questions in natural language using Kakao’s internal documentation and historical inquiry data.&lt;/p></description></item><item><title>Building real-time multimodal similarity search in Flipkart Trust &amp; Safety with Qdrant</title><link>https://qdrant.tech/blog/case-study-flipkart/</link><pubDate>Fri, 09 Jan 2026 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-flipkart/</guid><description>&lt;h3 id="tackling-fraud-and-abuse-with-scalable-similarity-search">Tackling fraud and abuse with scalable similarity search&lt;/h3>
&lt;p>At Flipkart, the Trust &amp;amp; Safety team is focused on detecting and preventing platform abuse and fraud. A critical part of this work involves running large-scale similarity searches across customer and seller-submitted data, particularly images. This allows the team to identify patterns associated with fraudulent activity, such as repeat returns or duplicate seller claims, before they cause downstream harm.&lt;/p>
&lt;p>&lt;em>“Platform integrity is a constant challenge. To stay ahead of fraudulent actors, we needed a system that could compare multimodal data in real time, not just in long-running batch jobs.”&lt;/em>&lt;/p></description></item><item><title>Qdrant 2025 Recap: Powering the Agentic Era</title><link>https://qdrant.tech/blog/2025-recap/</link><pubDate>Wed, 17 Dec 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/2025-recap/</guid><description>&lt;p>&lt;img src="https://qdrant.tech/blog/2025-recap/2025-infographic.png" alt="Infographic">&lt;/p>
&lt;p>This year was a defining year for Qdrant. Not because of a single feature or launch, but because of a clear shift in what the platform enables. As AI systems moved from static assistants to autonomous, multi-step agents, the demands placed on retrieval changed fundamentally. Speed alone was no longer enough. Production systems now require precise relevance control, predictable performance at scale, and the flexibility to run wherever data and users live.&lt;/p></description></item><item><title>New DeepLearning.AI Course on Multi-Vector Image Retrieval with ColPali and MUVERA</title><link>https://qdrant.tech/blog/qdrant-deeplearning-ai-multi-vector-image-retrieval/</link><pubDate>Thu, 11 Dec 2025 17:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-deeplearning-ai-multi-vector-image-retrieval/</guid><description>&lt;p>We&amp;rsquo;re thrilled to announce our latest collaboration with DeepLearning.AI: &lt;a href="https://www.deeplearning.ai/short-courses/multi-vector-image-retrieval/" target="_blank" rel="noopener nofollow">Multi-Vector Image Retrieval&lt;/a>. Building on the success of our previous course on retrieval optimization, this intermediate-level course takes you deeper into advanced search techniques that are transforming how AI systems understand and retrieve visual content.&lt;/p>
&lt;p>Led once again by Qdrant&amp;rsquo;s Kacper Łukawski, Senior Developer Advocate, this free course is designed for AI builders working with multi-modal data who want to implement cutting-edge image retrieval in their applications.&lt;/p></description></item><item><title>How Cosmos delivered editorial-grade visual search with Qdrant</title><link>https://qdrant.tech/blog/case-study-cosmos/</link><pubDate>Thu, 20 Nov 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-cosmos/</guid><description>&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-cosmos/cosmos-bento-box-dark.jpg" alt="How Cosmos powered text, color, and hybrid search with Qdrant">&lt;/p>
&lt;p>&lt;a href="https://www.cosmos.so/" target="_blank">Cosmos&lt;/a> is redefining how people find inspiration online. It’s a visual search app built for creative professionals and everyday users who want a clean, meditative, ad-free place to collect and curate ideas. In contrast to feeds dominated by doomscrolling, ads, and generative “AI slop,” Cosmos focuses on high-quality, human-made content. AI-powered search and captions connect each image to its creator, making visual discovery richer, more accurate, and easier to navigate.&lt;/p></description></item><item><title>Qdrant 1.16 - Tiered Multitenancy &amp; Disk-Efficient Vector Search</title><link>https://qdrant.tech/blog/qdrant-1.16.x/</link><pubDate>Wed, 19 Nov 2025 00:00:00 -0800</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-1.16.x/</guid><description>&lt;p>&lt;a href="https://github.com/qdrant/qdrant/releases/tag/v1.16.0" target="_blank" rel="noopener nofollow">&lt;strong>Qdrant 1.16.0 is out!&lt;/strong>&lt;/a> Let’s look at the main features for this version:&lt;/p>
&lt;p>&lt;strong>Tiered Multitenancy:&lt;/strong> An improved approach to multitenancy that enables you to combine small and large tenants in a single collection, with the ability to promote growing tenants to dedicated shards.&lt;/p>
&lt;p>&lt;strong>ACORN&lt;/strong>: A new search algorithm that improves the quality of filtered vector search in cases of multiple filters with weak selectivity.&lt;/p>
&lt;p>&lt;strong>Inline Storage&lt;/strong>: A new HNSW index storage mode that stores vector data directly inside HNSW nodes, enabling efficient disk-based vector search.&lt;/p></description></item><item><title>How Dragonfruit AI scaled real-time computer vision with Qdrant</title><link>https://qdrant.tech/blog/case-study-dragonfruit/</link><pubDate>Thu, 13 Nov 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-dragonfruit/</guid><description>&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-dragonfruit/dragonfruit-bento-box-dark.png" alt="Dragonfruit Overview">&lt;/p>
&lt;h2 id="dragonfruit-ai-scales-real-time-computer-vision-with-qdrant">Dragonfruit AI scales real-time computer vision with Qdrant&lt;/h2>
&lt;h3 id="building-enterprise-ready-computer-vision">Building enterprise-ready computer vision&lt;/h3>
&lt;p>&lt;a href="https://www.dragonfruit.ai/" target="_blank">Dragonfruit AI&lt;/a> builds enterprise-ready computer vision solutions, turning ordinary IP camera feeds into actionable insights for security, safety, operations, and compliance. Their platform ships a suite of AI “agents,” including retail loss prevention and warehouse safety, that run with a patented “Split AI” approach: real-time inference on-prem for speed and bandwidth efficiency, paired with cloud services for aggregation and search. Dragonfruit needed to keep total cost of ownership low, meet strict latency targets, and operate reliably across hundreds of sites with thousands of cameras; all without asking customers to rip and replace existing infrastructure.&lt;/p></description></item><item><title>How Xaver scaled personalized financial advice with Qdrant</title><link>https://qdrant.tech/blog/case-study-xaver/</link><pubDate>Thu, 13 Nov 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-xaver/</guid><description>&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-xaver/xaver-bento-box-dark.jpg" alt="Xaver Overview">&lt;/p>
&lt;h2 id="how-xaver-built-its-ai-knowledge-engine-with-qdrant">How Xaver Built its AI Knowledge Engine with Qdrant&lt;/h2>
&lt;p>&lt;a href="https://www.xaver.com/" target="_blank">Xaver&lt;/a> is tackling a core challenge in the financial industry: scaling personalized financial and retirement advice. As demographic shifts increase demand for private pensions, traditional, manual consultation models are proving too slow and costly to support everyone who needs help.&lt;/p>
&lt;p>To solve this, Xaver provides banks, insurers and distributors with a vertically specialized and compliant agentic sales platform. This technology acts as both an AI sales assistant for human advisors and as an autonomous agent to deliver compliant, personalized financial guidance to consumers via phone, video avatars, messengers and web journeys.&lt;/p></description></item><item><title>Building Performant, Scaled Agentic Vector Search with Qdrant</title><link>https://qdrant.tech/articles/agentic-builders-guide/</link><pubDate>Sun, 26 Oct 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/agentic-builders-guide/</guid><description>&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>AI agents have grown from simple Q&amp;amp;A chatbots into systems that can independently plan, retrieve, act, and verify tasks. As developers work to recreate real-life workflows with agents, a common starting point is to give your agent access to a search API.&lt;/p>
&lt;p>&lt;img src="https://qdrant.tech/articles_data/agentic-builders-guide/agentic-architecture.png" alt="Agentic vector search architecture">&lt;/p>
&lt;h2 id="the-limitations-of-agents">The Limitations of Agents&lt;/h2>
&lt;p>While agents have proven they can create incredible impact, they still face serious limitations without the right tools. This is where a simple search box isn’t enough, and agents often fail when they move from prototype to production in three key areas:&lt;/p></description></item><item><title>Qdrant Academy Launches with Qdrant Essentials Course</title><link>https://qdrant.tech/blog/qdrant-academy-launch/</link><pubDate>Thu, 23 Oct 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-academy-launch/</guid><description>&lt;p>Today, we’re proud to launch &lt;strong>Qdrant Academy&lt;/strong>, a new learning site designed to help developers, data scientists, and engineers build real-world vector search systems.&lt;/p>
&lt;p>This started with a mission: to make learning more accessible, scalable, and frictionless for practitioners around the world. And today, we crossed the first milestone in our mission by launching our first course, &lt;a href="https://qdrant.tech/course/essentials/" target="_blank" rel="noopener nofollow">Qdrant Essentials&lt;/a>.&lt;/p>
&lt;p>With &lt;strong>Qdrant Essentials&lt;/strong>, you get a free, self-paced, structured learning course that teaches the fundamentals of vector search, embeddings, and productionalizing AI systems using Qdrant. You’ll learn not just what vector search &lt;em>is&lt;/em>, but how to build, query, and optimize search with real projects, exercises, and examples.&lt;/p></description></item><item><title>How TrustGraph built enterprise-grade agentic AI with Qdrant</title><link>https://qdrant.tech/blog/case-study-trustgraph/</link><pubDate>Fri, 10 Oct 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-trustgraph/</guid><description>&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-trustgraph/trustgraph-bento-box-dark.jpg" alt="TrustGraph Overview">&lt;/p>
&lt;h1 id="trustgraph--qdrant-a-technical-deep-dive">TrustGraph + Qdrant: A Technical Deep Dive&lt;/h1>
&lt;p>When teams first experiment with agentic AI, the journey often starts with a slick demo: a few APIs stitched together, a large language model answering questions, and just enough smoke and mirrors to impress stakeholders.&lt;/p>
&lt;p>But as soon as those demos face enterprise requirements (constant data ingestion, compliance, thousands of users, 24×7 uptime), the illusion breaks. Services stall at the first failure, query reliability plummets, and regulatory guardrails are nowhere to be found. What worked in a five-minute demo becomes impossible to maintain in production.&lt;/p></description></item><item><title>All Vectors Lead to Community: Vector Space Day 2025 Recap</title><link>https://qdrant.tech/blog/vector-space-day-2025-recap/</link><pubDate>Tue, 30 Sep 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/vector-space-day-2025-recap/</guid><description>&lt;p>&lt;a href="https://drive.google.com/drive/folders/1DbRQmwmMg8U255g3-ooo7Ojt9FPgHNc9?usp=sharing" target="_blank" rel="noopener nofollow">&lt;strong>[See all event slides here]&lt;/strong>&lt;/a>&lt;/p>
&lt;p>On September 26, 2025, nearly &lt;strong>400 developers, researchers, and engineers&lt;/strong> came together at the Colosseum Theater in Berlin for the first-ever &lt;strong>Qdrant Vector Space Day&lt;/strong>.&lt;/p>
&lt;p>From the start, the day belonged to the community. Over coffee and fresh Qdrant swag, the conversations quickly moved to embeddings, hybrid search, and AI agents. Laptops flipped open, QR codes were shared, and the room filled with people eager to trade ideas and learn from one another.&lt;/p></description></item><item><title>Thinking Outside the Bot with 2025 Hackathon Winners</title><link>https://qdrant.tech/blog/vector-space-hackathon-winners-2025/</link><pubDate>Mon, 29 Sep 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/vector-space-hackathon-winners-2025/</guid><description>&lt;p>Over the past several weeks, builders from around the world proved that vector search is about much more than chatbots. We challenged teams to think beyond RAG, and they delivered: robotics safety reflexes, event discovery on routes, 3D shopping, video game characters, and more.&lt;/p>
&lt;p>Winners were announced live in Berlin on Friday, September 26, 2025 at &lt;a href="https://luma.com/p7w9uqtz" target="_blank" rel="noopener nofollow">Vector Space Day&lt;/a>. Full hackathon details are here: &lt;a href="https://try.qdrant.tech/hackathon-2025" target="_blank" rel="noopener nofollow">Hackathon page&lt;/a>.&lt;/p>
&lt;p>With numerous submissions from around the world, hackathon judges used criteria of Creativity, Technical Depth, and Qdrant Usage to evaluate each submission and determine the top projects. There was $10,000 in prizes from Qdrant as well as many additional bonus prizes for using partner tech:&lt;/p></description></item><item><title>Announcing the Vector Space Day 2025 Speaker Lineup</title><link>https://qdrant.tech/blog/vector-space-day-lineup-2025/</link><pubDate>Mon, 15 Sep 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/vector-space-day-lineup-2025/</guid><description>&lt;h1 id="announcing-the-vector-space-day-2025-speaker-lineup">Announcing the Vector Space Day 2025 Speaker Lineup&lt;/h1>
&lt;p>We are just days away from &lt;a href="https://luma.com/p7w9uqtz" target="_blank" rel="noopener nofollow">Vector Space Day&lt;/a> in Berlin, and the full speaker lineup is here! This year’s program spans keynotes, deep-dive technical sessions, and lightning talks, covering everything from benchmarking search engines to scalable AI memory and multimodal embeddings. Here’s what to expect.&lt;/p>
&lt;h2 id="opening-keynotes">Opening Keynotes&lt;/h2>
&lt;p>The day begins with perspectives from across the ecosystem:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Andre Zayarni, Andrey Vasnetsov,&lt;/strong> and &lt;strong>Neil Kanungo&lt;/strong> sharing Qdrant’s vision for the future of vector search and how devs can engage with the Qdrant Community.&lt;/li>
&lt;li>&lt;strong>Robert Eichenseer (Microsoft), Kevin Cochrane (Vultr),&lt;/strong> and &lt;strong>Inaam Syed (AWS)&lt;/strong> offering insights on how cloud, infrastructure, and developer communities are reshaping AI systems.&lt;/li>
&lt;/ul>
&lt;h2 id="breakout-sessions">Breakout Sessions&lt;/h2>
&lt;h4 id="track-a-milky-way---architectures-infrastructure-and-multimodal-retrieval">Track A: Milky Way - Architectures, Infrastructure and Multimodal Retrieval&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>AskNews&lt;/strong> - &lt;em>Building a News Sleuth for the Deep Research Paradigm:&lt;/em> How high-performance hybrid retrieval can support investigative journalism and geopolitical risk monitoring.&lt;/li>
&lt;li>&lt;strong>Delivery Hero&lt;/strong> - &lt;em>How to Cheat at Benchmarking Search Engines:&lt;/em> Lessons from building reproducible benchmarking harnesses and public leaderboards.&lt;/li>
&lt;li>&lt;strong>Neo4j&lt;/strong> - &lt;em>Hands-On GraphRAG:&lt;/em> Practical guidance on combining knowledge graphs with RAG for more explainable retrieval.&lt;/li>
&lt;li>&lt;strong>Superlinked&lt;/strong> - &lt;em>Beyond Text-Only:&lt;/em> How mixture of encoders unlocks advanced retrieval using Google DeepMind’s latest embeddings.&lt;/li>
&lt;li>&lt;strong>Jina AI&lt;/strong> - &lt;em>Vision-Language Models for Embedding:&lt;/em> Training insights for multimodal embeddings that span text, diagrams, and UI screenshots.&lt;/li>
&lt;li>&lt;strong>TwelveLabs&lt;/strong> - &lt;em>Practical Multimodal Embeddings:&lt;/em> Real workflows for cross-modal video search and recommendations.&lt;/li>
&lt;li>&lt;strong>Baseten&lt;/strong> - &lt;em>High Throughput, Low Latency Embedding Pipelines:&lt;/em> Patterns and open-source tools for production-ready embedding inference.&lt;/li>
&lt;li>&lt;strong>Google&lt;/strong> &lt;strong>DeepMind&lt;/strong> - &lt;em>Vector Search with Gemini and EmbeddingGemma:&lt;/em> Deploying cutting-edge embeddings with the right indexing strategies.&lt;/li>
&lt;/ul>
&lt;h4 id="track-b-andromeda---ai-workflows-agents-and-applications">Track B: Andromeda - AI Workflows, Agents and Applications&lt;/h4>
&lt;ul>
&lt;li>&lt;strong>Linkup&lt;/strong> - &lt;em>Beyond Web Search:&lt;/em> Infrastructure for AI-native agents that need structured, real-time web intelligence.&lt;/li>
&lt;li>&lt;strong>Cognee&lt;/strong> - &lt;em>Building Scalable AI Memory:&lt;/em> Abstractions that sync graphs and vectors for durable, multi-backend AI memory.&lt;/li>
&lt;li>&lt;strong>n8n&lt;/strong> - &lt;em>Evaluate Your Qdrant-RAG Agents:&lt;/em> A live no-code session on agent evaluation using n8n’s native tools.&lt;/li>
&lt;li>&lt;strong>Arize AI&lt;/strong> - &lt;em>Self-Improving Evaluations:&lt;/em> Feedback loops and tracing for reliable agentic RAG in production.&lt;/li>
&lt;li>&lt;strong>LlamaIndex&lt;/strong> - &lt;em>Vector Databases for Workflow Engineering:&lt;/em> Using Qdrant to orchestrate context-aware AI pipelines.&lt;/li>
&lt;li>&lt;strong>deepset&lt;/strong> - &lt;em>Agent-Powered Retrieval with Haystack and Qdrant:&lt;/em> When retrieval agents outperform or overcomplicate pipelines.&lt;/li>
&lt;li>&lt;strong>GoodData&lt;/strong> - &lt;em>Scaling Real-Time RAG for Analytics:&lt;/em> Lessons from streaming BI artifacts into Qdrant for natural-language analytics.&lt;/li>
&lt;li>&lt;strong>Equal&lt;/strong> - &lt;em>Redefining Long-Term Memory:&lt;/em> Streaming-driven ingestion architectures that give agents enterprise-grade responsiveness.&lt;/li>
&lt;/ul>
&lt;h2 id="lightning-talks">Lightning Talks&lt;/h2>
&lt;p>The afternoon features rapid-fire sessions from innovators including:&lt;/p></description></item><item><title>How Tavus used Qdrant Edge to create conversational AI</title><link>https://qdrant.tech/blog/case-study-tavus/</link><pubDate>Fri, 12 Sep 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-tavus/</guid><description>&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-tavus/tavus-bento-box-dark.jpg" alt="Tavus Overview">&lt;/p>
&lt;h2 id="how-tavus-delivered-human-grade-conversational-ai-with-edge-retrieval-on-qdrant">How Tavus delivered human-grade conversational AI with edge retrieval on Qdrant&lt;/h2>
&lt;p>Tavus is a human–computer research lab building CVI, the &lt;a href="https://www.tavus.io/" target="_blank">Conversational Video Interface&lt;/a>. CVI presents a face-to-face AI that reads tone, gesture, and on-screen context in real time, allowing for humans to interface with powerful, functional AI like never before. The team’s north star was simple to say and hard to ship: conversations should feel natural. That meant tracking conversational dynamics like utterance-to-utterance timing, back-channeling, and turn-taking while grounding replies in a customer’s private knowledge.&lt;/p></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">What are MUVERA Embeddings?&lt;/h2>
&lt;p>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">HNSW&lt;/a> 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></description></item><item><title>Balancing Relevance and Diversity with MMR Search</title><link>https://qdrant.tech/blog/mmr-diversity-aware-reranking/</link><pubDate>Thu, 04 Sep 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/mmr-diversity-aware-reranking/</guid><description>&lt;p>Variety is the spice of life! Yet often, with search engines, users find that the results are too similar to get value. You search for a black jacket on your favorite shopping site, and you get 5 black full zip bomber jackets. Search for a black dress and you get 5 strapless dresses. Traditional vector search focuses on returning the most relevant items, which creates an echo chamber of similar results.&lt;/p></description></item><item><title>How Fieldy AI Achieved Reliable AI Memory with Qdrant</title><link>https://qdrant.tech/blog/case-study-fieldy/</link><pubDate>Thu, 04 Sep 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-fieldy/</guid><description>&lt;h2 id="fieldy-ais-migration-to-qdrant-building-a-fault-tolerant-ai-memory-platform">Fieldy AI’s migration to Qdrant: Building a fault-tolerant AI memory platform&lt;/h2>
&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-fieldy/case-study-fieldy-bento-dark.jpg" alt="How Fieldy AI Achieved Reliable AI Memory with Qdrant">&lt;/p>
&lt;h3 id="capturing-and-retrieving-a-lifetime-of-conversations">Capturing and retrieving a lifetime of conversations&lt;/h3>
&lt;p>&lt;a href="https://fieldy.ai/" target="_blank">Fieldy&lt;/a> is a hands-free wearable AI note taker that continuously records, transcribes, and organizes real-world conversations into your personal, searchable memory. The system’s goal is simple in concept but demanding in execution: capture every relevant spoken interaction, transcribe it with high accuracy, and make it instantly retrievable. This requires a robust ingestion pipeline, a scalable &lt;a href="https://qdrant.tech/documentation/overview/" target="_blank" rel="noopener nofollow">vector search&lt;/a> layer, and a retrieval process capable of handling growing volumes of multimodal data without introducing latency or errors.&lt;/p></description></item><item><title>How OpenTable Reinvented Restaurant Discovery with Qdrant</title><link>https://qdrant.tech/blog/case-study-opentable/</link><pubDate>Tue, 02 Sep 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-opentable/</guid><description>&lt;h2 id="reinventing-restaurant-discovery-how-opentable-built-concierge-an-ai-dining-assistant">&lt;strong>Reinventing Restaurant Discovery: How OpenTable built Concierge, an AI Dining Assistant&lt;/strong>&lt;/h2>
&lt;h3 id="recognizing-that-ai-would-redefine-restaurant-discovery">Recognizing that AI would redefine restaurant discovery&lt;/h3>
&lt;p>When generative AI tools entered the mainstream, OpenTable knew diners would change how they find and choose restaurants. People were beginning to expect conversational, intelligent and context-aware assistants, rather than static search boxes.&lt;/p>
&lt;p>Patrick Lombardo, Staff ML Engineer at OpenTable, recalls that the team wanted to move quickly. “We knew early on that generative AI was going to change user expectations. Concierge was an opportunity for us to transform the way that diners discover restaurants while building the tooling and infrastructure that will support future AI-powered experiences.”&lt;/p></description></item><item><title>Untangling Relevance Score Boosting and Decay Functions</title><link>https://qdrant.tech/blog/decay-functions/</link><pubDate>Mon, 01 Sep 2025 14:55:45 +0200</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/decay-functions/</guid><description>&lt;p>A problem we&amp;rsquo;ve noticed while monitoring the &lt;a href="https://discord.gg/d4MPnX3s" target="_blank" rel="noopener nofollow">Qdrant Discord Community&lt;/a> is that due to the extensive list of expressions that the &lt;a href="https://qdrant.tech/documentation/search/search-relevance/#score-boosting" target="_blank" rel="noopener nofollow">score boosting&lt;/a> functionality provides, there&amp;rsquo;s room for confusion on how it&amp;rsquo;s supposed to be applied. And that might block you from moving the business logic behind relevance scoring into the Qdrant search engine. We don&amp;rsquo;t want that!&lt;/p>
&lt;p>In this blog, we&amp;rsquo;d like to de-spooky-fy the &lt;strong>decay functions&lt;/strong> part of the score boosting, or, more precisely: &lt;code>LinDecayExpression&lt;/code>, &lt;code>ExpDecayExpression&lt;/code>, and &lt;code>GaussDecayExpression&lt;/code> &amp;ndash; frequent guests on the Discord &lt;em>#ask-for-help&lt;/em> channel.&lt;/p></description></item><item><title>How PortfolioMind Delivered Real-Time Crypto Intelligence with Qdrant</title><link>https://qdrant.tech/blog/case-study-portfolio-mind/</link><pubDate>Thu, 31 Jul 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-portfolio-mind/</guid><description>&lt;h2 id="how-portfoliomind-delivered-real-time-crypto-intelligence-with-qdrant">&lt;strong>How PortfolioMind delivered real-time crypto intelligence with Qdrant&lt;/strong>&lt;/h2>
&lt;p>The crypto world is an inherently noisy and volatile place. Markets shift quickly, narratives change overnight, and wallet activities conceal subtle yet critical patterns. For PortfolioMind, Web3-native AI research copilot built using the &lt;a href="https://spoonai.io/" target="_blank" rel="noopener nofollow">SpoonOS framework&lt;/a>, the challenge was not only finding just finding relevant information, but also surfacing it in real-time.&lt;/p>
&lt;h3 id="challenge-moving-beyond-static-insights">Challenge: Moving beyond static insights&lt;/h3>
&lt;p>Most crypto platforms presume users want simple token tracking. PortfolioMind, however, recognized that real research behaviors are dynamic. Users pivot rapidly between topics like L2 scaling, meme tokens, protocol risks, and DeFi yield fluctuations based on real-time events.&lt;/p></description></item><item><title>Qdrant Edge: Vector Search for Embedded AI</title><link>https://qdrant.tech/blog/qdrant-edge/</link><pubDate>Tue, 29 Jul 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-edge/</guid><description>&lt;h1 id="qdrant-edge-private-beta-vector-search-for-embedded-ai">Qdrant Edge (Private Beta): Vector Search for Embedded AI&lt;/h1>
&lt;p>Over the past two years, vector search has become foundational infrastructure for AI applications, from retrieval-augmented generation (RAG) to agentic reasoning. But as AI systems extend beyond cloud-hosted inference into the physical world - running on devices like robots, kiosks, home assistants, and mobile phones - new constraints emerge. Low-latency retrieval, multimodal inputs, and bandwidth-independent operation will become first-class requirements. &lt;strong>Qdrant Edge&lt;/strong> is our response to this shift.&lt;/p></description></item><item><title>Qdrant for Research: The Story Behind ETH &amp; Stanford’s MIRIAD Dataset</title><link>https://qdrant.tech/blog/miriad-qdrant/</link><pubDate>Wed, 23 Jul 2025 00:00:00 +0200</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/miriad-qdrant/</guid><description>&lt;p>This summer, researchers from ETH Zurich and Stanford &lt;a href="https://www.linkedin.com/posts/qinyue-zheng-526b391a4_we-just-released-a-million-scale-medical-activity-7337889277445365760-Criy" target="_blank" rel="noopener nofollow">released &lt;strong>MIRIAD&lt;/strong>&lt;/a>, an open source dataset of &lt;strong>5.8 million medical Question Answer pairs&lt;/strong>, each grounded in peer-reviewed literature.&lt;/p>
&lt;p>A dataset of this scale has the potential to become an &lt;strong>ultimate solution to the lack of structured, rich-in-context, high-quality data in the medical field&lt;/strong>. It is a powerful measure for a significant reduction of hallucinations in medical AI applications, created to be a knowledge base for Retrieval Augmented Generation (RAG) and a source for downstreaming embedding models.&lt;/p></description></item><item><title>Qdrant 1.15 - Smarter Quantization &amp; better Text Filtering</title><link>https://qdrant.tech/blog/qdrant-1.15.x/</link><pubDate>Fri, 18 Jul 2025 00:00:00 -0800</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-1.15.x/</guid><description>&lt;p>&lt;a href="https://github.com/qdrant/qdrant/releases/tag/v1.15.0" target="_blank" rel="noopener nofollow">&lt;strong>Qdrant 1.15.0 is out!&lt;/strong>&lt;/a> Let’s look at the main features for this version:&lt;/p>
&lt;p>&lt;strong>New quantizations:&lt;/strong> We introduce asymmetric quantization and 1.5 and 2-bit quantizations. Asymmetric quantization allows vectors and queries to have different quantization algorithms. 1.5 and 2-bit quantizations allow for improved accuracy.&lt;/p>
&lt;p>&lt;strong>Changes in text index&lt;/strong>: Introduction of a new multilingual tokenizer, stopwords support, stemming, and phrase matching.&lt;/p>
&lt;p>Various optimizations, including &lt;strong>HNSW healing&lt;/strong>, allowing HNSW indexes to reuse the old graph without a complete rebuild, and &lt;strong>Migration to Gridstore&lt;/strong> unlocks faster injestion.&lt;/p></description></item><item><title>Qdrant joins AI Agent category on AWS Marketplace to accelerate Agentic AI development</title><link>https://qdrant.tech/blog/ai-agents-aws-marketplace/</link><pubDate>Wed, 16 Jul 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/ai-agents-aws-marketplace/</guid><description>&lt;h3 id="qdrant-is-now-available-in-the-new-aws-marketplace-ai-agents-and-tools-category">Qdrant is now available in the new AWS Marketplace AI Agents and Tools category.&lt;/h3>
&lt;p>Customers can now use AWS Marketplace to easily discover, buy, and deploy AI agents solutions, including Qdrant’s vector search engine using their AWS accounts, accelerating AI agent and agentic workflow development.&lt;/p>
&lt;p>Qdrant helps organizations build enterprise AI agents with long-term memory and real-time context retrieval by enabling step-aware reasoning and reliable decision-making across complex, unstructured data with a vector-native search engine built for accuracy, scale, and responsiveness.&lt;/p></description></item><item><title>How &amp;AI scaled global legal retrieval with Qdrant</title><link>https://qdrant.tech/blog/case-study-and-ai/</link><pubDate>Tue, 15 Jul 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-and-ai/</guid><description>&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-and-ai/and-ai-bento.jpg" alt="Bento Box">&lt;/p>
&lt;h2 id="how-ai-scaled-global-patent-retrieval-with-qdrant">How &amp;amp;AI scaled global patent retrieval with Qdrant&lt;/h2>
&lt;p>&lt;a href="https://tryandai.com/" target="_blank" rel="noopener nofollow">&amp;amp;AI&lt;/a> is on a mission to redefine patent litigation. Their platform helps legal professionals invalidate patents through intelligent prior art search, claim charting, and automated litigation support. To make this work at scale, CTO and co-founder Herbie Turner needed a vector database that could power fast, accurate retrieval across billions of documents without ballooning DevOps complexity. That’s where Qdrant came in.&lt;/p></description></item><item><title>How to choose an embedding model</title><link>https://qdrant.tech/articles/how-to-choose-an-embedding-model/</link><pubDate>Tue, 15 Jul 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/how-to-choose-an-embedding-model/</guid><description>&lt;p>No matter if you are just beginning your journey in the world of vector search, or you are a seasoned practitioner, you
have probably wondered how to choose the right embedding model to achieve the best search quality. There are some
public benchmarks, such as &lt;a href="https://huggingface.co/spaces/mteb/leaderboard" target="_blank" rel="noopener nofollow">MTEB&lt;/a>, that can help you narrow down the
options, but datasets used in those benchmarks will rarely be representative of your domain-specific data. Moreover,
search quality is not the only requirement you could have. For example, some of the best models might be amazingly
accurate for retrieval, but you can&amp;rsquo;t afford to run them, e.g., due to high resource usage or your budget constraints.&lt;/p></description></item><item><title>Introducing Qdrant Cloud Inference</title><link>https://qdrant.tech/blog/qdrant-cloud-inference-launch/</link><pubDate>Tue, 15 Jul 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-cloud-inference-launch/</guid><description>&lt;h1 id="introducing-qdrant-cloud-inference">Introducing Qdrant Cloud Inference&lt;/h1>
&lt;p>Today, we’re announcing the launch of Qdrant Cloud Inference (&lt;a href="https://cloud.qdrant.io/" target="_blank" rel="noopener nofollow">get started in your cluster&lt;/a>). With Qdrant Cloud Inference, users can generate, store and index embeddings in a single API call, turning unstructured text and images into search-ready vectors in a single environment. Directly integrating model inference into Qdrant Cloud removes the need for separate inference infrastructure, manual pipelines, and redundant data transfers.&lt;/p>
&lt;p>This simplifies workflows, accelerates development cycles, and eliminates unnecessary network hops for developers. With a single API call, you can now embed, store, and index your data more quickly and more simply. This speeds up application development for RAG, Multimodal, Hybrid search, and more.&lt;/p></description></item><item><title>Announcing Vector Space Day 2025 in Berlin</title><link>https://qdrant.tech/blog/vector-space-day-2025/</link><pubDate>Mon, 14 Jul 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/vector-space-day-2025/</guid><description>&lt;h2 id="vector-space-day-2025-powered-by-qdrant">Vector Space Day 2025: Powered by Qdrant&lt;/h2>
&lt;p>📍 Colosseum Berlin, Germany&lt;br>
🗓️ Friday, September 26, 2025&lt;/p>
&lt;h3 id="about">About&lt;/h3>
&lt;p>We’re hosting our first-ever full-day in-person &lt;a href="https://lu.ma/p7w9uqtz" target="_blank" rel="noopener nofollow">&lt;strong>Vector Space Day&lt;/strong>&lt;/a> this September in Berlin, and you’re invited.&lt;/p>
&lt;p>The Vector Space Day will bring together engineers, researchers, and AI builders to explore the cutting edge of retrieval, vector search infrastructure, and agentic AI. From building scalable RAG pipelines to enabling real-time AI memory and next-gen context engineering, we’re covering the full spectrum of modern vector-native search.&lt;/p></description></item><item><title>How Pento modeled aesthetic taste with Qdrant</title><link>https://qdrant.tech/blog/case-study-pento/</link><pubDate>Mon, 14 Jul 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-pento/</guid><description>&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-pento/pento-bento-box-dark.jpg" alt="pento bento box">&lt;/p>
&lt;h1 id="bringing-people-together-through-qdrant">Bringing People Together Through Qdrant&lt;/h1>
&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-pento/pento-cover-image.png" alt="pento-cover-image">&lt;/p>
&lt;h2 id="taste-in-art-isnt-just-a-preference-its-a-fingerprint">&lt;em>Taste in art isn’t just a preference; it’s a fingerprint.&lt;/em>&lt;/h2>
&lt;p>Imagine you&amp;rsquo;re an artist or art enthusiast searching not for a painting, but for people who share your unique taste, someone who resonates with surrealist colors just as deeply as you, or who finds quiet joy in minimalist lines. How would a system know who those people are? Traditional recommenders often suggest what’s trending or popular, or just can&amp;rsquo;t understand the nuances of art.&lt;/p></description></item><item><title>How Alhena AI unified its AI stack and improved ecommerce conversions with Qdrant</title><link>https://qdrant.tech/blog/case-study-alhena/</link><pubDate>Thu, 10 Jul 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-alhena/</guid><description>&lt;h1 id="how-alhena-ai-unified-its-ai-stack-and-accelerated-ecommerce-outcomes-with-qdrant">How Alhena AI unified its AI stack and accelerated ecommerce outcomes with Qdrant&lt;/h1>
&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-alhena/alhena-bento-box-dark.jpg" alt="How Alhena AI unified its AI stack and improved ecommerce conversions with Qdrant">&lt;/p>
&lt;h2 id="building-ai-agents-that-drive-both-revenue-and-support-outcomes">Building AI agents that drive both revenue and support outcomes&lt;/h2>
&lt;p>&lt;a href="https://alhena.ai/" target="_blank">Alhena AI&lt;/a> is redefining the ecommerce experience through intelligent agents that assist customers before and after a purchase. On the front end, these agents help users find the perfect product based on nuanced preferences. On the back end, they resolve complex support queries without escalating to a human.&lt;/p></description></item><item><title>How GoodData turbocharged AI analytics with Qdrant</title><link>https://qdrant.tech/blog/case-study-gooddata/</link><pubDate>Wed, 09 Jul 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-gooddata/</guid><description>&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-gooddata/gooddata-bento-box-dark.jpg" alt="Gooddata Overview">&lt;/p>
&lt;h3 id="gooddatas-evolution-into-ai-powered-analytics">GoodData&amp;rsquo;s Evolution into AI-Powered Analytics&lt;/h3>
&lt;p>AI is redefining how people interact with data, pushing analytics platforms beyond static dashboards toward intelligent, conversational experiences. While traditionally recognized as a powerful BI platform, GoodData is laser-focused on accelerating both &amp;rsquo;time to insight&amp;rsquo; and &amp;rsquo;time to solution&amp;rsquo; by enhancing productivity for analysts and business users alike.&lt;/p>
&lt;p>What sets GoodData apart is its unique position in the market: a composable, API-first platform designed for teams that build data products, not just consume them. With deep support for white-labeled analytics, embedded use cases, and governed self-service at scale, GoodData delivers the flexibility modern organizations need. With AI being integrated across every layer of the platform, GoodData is helping their over 140,000 end customers move from traditional BI to intelligent, real-time decision-making.&lt;/p></description></item><item><title>The Hitchhiker's Guide to Vector Search</title><link>https://qdrant.tech/blog/hitchhikers-guide/</link><pubDate>Wed, 09 Jul 2025 00:00:00 +0200</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/hitchhikers-guide/</guid><description>&lt;blockquote>
&lt;p>From lecture halls to production pipelines, &lt;a href="https://qdrant.tech/stars/" target="_blank" rel="noopener nofollow">Qdrant Stars&lt;/a> &amp;ndash; founders, mentors and open-source contributors &amp;ndash; share how they’re building with vectors in the wild.&lt;br>
In this post, Clelia distils tips from her talk at the &lt;a href="https://lu.ma/based_meetup" target="_blank" rel="noopener nofollow">“Bavaria, Advancements in SEarch Development” meetup&lt;/a>, where she covered hard-won lessons from her extensive open-source building.&lt;/p>
&lt;/blockquote>
&lt;p>&lt;em>Hey there, vector space astronauts!&lt;/em>&lt;/p>
&lt;p>&lt;em>I am Clelia, an Open Source Engineer at &lt;a href="https://www.llamaindex.ai/" target="_blank" rel="noopener nofollow">LlamaIndex&lt;/a>. In the last two years, I&amp;rsquo;ve dedicated myself to the AI space, building (and breaking) many things, and sometimes even deploying them to production!&lt;/em>&lt;/p></description></item><item><title>How FAZ unlocked 75 years of journalism with Qdrant</title><link>https://qdrant.tech/blog/case-study-faz/</link><pubDate>Thu, 03 Jul 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-faz/</guid><description>&lt;h1 id="how-faz-built-a-hybrid-search-engine-with-qdrant-to-unlock-75-years-of-journalism">How FAZ Built a Hybrid Search Engine with Qdrant to Unlock 75 Years of Journalism&lt;/h1>
&lt;p>&lt;a href="https://www.frankfurterallgemeine.de/die-faz" target="_blank" rel="noopener nofollow">Frankfurter Allgemeine Zeitung (FAZ)&lt;/a>, a major national newspaper in Germany, has spent decades building a rich archive of journalistic content, stretching back to 1949. The FAZ archive has long built expertise in making its extensive collection of over 75 years accessible and searchable for both internal and external customers through keyword- and index-based search engines. New AI-powered search technologies were therefore immediately recognized as an opportunity to unlock the potential of the comprehensive archive in entirely new ways and to systematically address the limitations of traditional search methods. The solution they arrived at involved a thoughtful orchestration of technologies - with Qdrant at the heart.&lt;/p></description></item><item><title>GraphRAG: How Lettria Unlocked 20% Accuracy Gains with Qdrant and Neo4j</title><link>https://qdrant.tech/blog/case-study-lettria-v2/</link><pubDate>Tue, 17 Jun 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-lettria-v2/</guid><description>&lt;h1 id="scaled-vector--graph-retrieval-how-lettria-unlocked-20-accuracy-gains-with-qdrant--neo4j">Scaled Vector &amp;amp; Graph Retrieval: How Lettria Unlocked 20% Accuracy Gains with Qdrant &amp;amp; Neo4j&lt;/h1>
&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-lettria/lettria-bento-dark.jpg" alt="Lettria increases accuracy by 20% by blending Qdrant&amp;rsquo;s vector search and Neo4j&amp;rsquo;s knowledge graphs">&lt;/p>
&lt;h2 id="why-complex-document-intelligence-needs-more-than-just-vector-search">Why Complex Document Intelligence Needs More Than Just Vector Search&lt;/h2>
&lt;p>In regulated industries where precision, auditability, and accuracy are paramount, leveraging Large Language Models (LLMs) effectively often requires going beyond traditional Retrieval-Augmented Generation (RAG). &lt;a href="https://www.lettria.com/" target="_blank" rel="noopener nofollow">Lettria&lt;/a>, a leader in document intelligence platforms, recognized that complex, highly regulated data sets like pharmaceutical research, legal compliance, and aerospace documentation demanded superior accuracy and more explainable outputs than vector-only RAG systems could provide. To achieve the expected level of performance, the team has focused its effort on building a very robust document parsing engine designed for complex pdf (with tables, diagrams, charts etc.), an automatic ontology builder and an ingestion pipeline covering vectors and graph enrichment&lt;/p></description></item><item><title>Vector Data Migration Tool</title><link>https://qdrant.tech/blog/beta-database-migration-tool/</link><pubDate>Mon, 16 Jun 2025 00:02:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/beta-database-migration-tool/</guid><description>&lt;h2 id="migrating-your-data-just-got-easier">Migrating your data just got easier&lt;/h2>
&lt;p>We’ve launched the &lt;strong>beta&lt;/strong> of our Qdrant &lt;strong>Vector Data Migration Tool&lt;/strong>, designed to simplify moving data between different instances, whether you&amp;rsquo;re migrating between Qdrant deployments or switching from other vector database providers.&lt;/p>
&lt;p>This powerful tool streams all vectors from a source collection to a target Qdrant instance in live batches. It supports migrations from one Qdrant deployment to another, including from open source to Qdrant Cloud or between cloud regions. But that&amp;rsquo;s not all. You can also migrate your data from other vector databases directly into Qdrant. All with a single command.&lt;/p></description></item><item><title>How Lawme Scaled AI Legal Assistants and Significantly Cut Costs with Qdrant</title><link>https://qdrant.tech/blog/case-study-lawme/</link><pubDate>Wed, 11 Jun 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-lawme/</guid><description>&lt;h2 id="how-lawme-scaled-ai-legal-assistants-and-cut-costs-by-75-with-qdrant">How Lawme Scaled AI Legal Assistants and Cut Costs by 75% with Qdrant&lt;/h2>
&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-lawme/lawme-bento-dark.jpg" alt="How Lawme Scaled AI Legal Assistants and Cut Costs 75% with Qdrant">&lt;/p>
&lt;p>Legal technology (LegalTech) is at the forefront of digital transformation in the traditionally conservative legal industry. Lawme.ai, an ambitious startup, is pioneering this transformation by automating routine legal workflows with AI assistants. By leveraging sophisticated AI-driven processes, Lawme empowers law firms to dramatically accelerate legal document preparation, from initial research and analysis to comprehensive drafting. However, scaling their solution presented formidable challenges, particularly around data management, compliance, and operational costs.&lt;/p></description></item><item><title>How ConvoSearch Boosted Revenue for D2C Brands with Qdrant</title><link>https://qdrant.tech/blog/case-study-convosearch/</link><pubDate>Tue, 10 Jun 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-convosearch/</guid><description>&lt;h2 id="how-convosearch-boosted-e-commerce-revenue-with-qdrant">How ConvoSearch Boosted E-commerce Revenue with Qdrant&lt;/h2>
&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-convosearch/convosearch-bento-dark.jpg" alt="How ConvoSearch Boosted E-commerce Revenue with Qdrant">&lt;/p>
&lt;h3 id="driving-e-commerce-success-through-enhanced-search">Driving E-commerce Success Through Enhanced Search&lt;/h3>
&lt;p>E-commerce retailers face intense competition and constant pressure to increase conversion rates. &lt;a href="https://convosearch.com/" target="_blank" rel="noopener nofollow">ConvoSearch&lt;/a> , an AI-powered recommendation engine tailored for direct-to-consumer (D2C) e-commerce brands, addresses these challenges by delivering hyper-personalized search and recommendations. With customers like The Closet Lover and Uncle Reco achieving dramatic revenue increases, ConvoSearch relies heavily on high-speed vector search to ensure relevance and accuracy at scale.&lt;/p></description></item><item><title>LegalTech Builder's Guide: Navigating Strategic Decisions with Vector Search</title><link>https://qdrant.tech/blog/legal-tech-builders-guide/</link><pubDate>Tue, 10 Jun 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/legal-tech-builders-guide/</guid><description>&lt;h2 id="legaltech-builders-guide-navigating-strategic-decisions-with-vector-search">LegalTech Builder&amp;rsquo;s Guide: Navigating Strategic Decisions with Vector Search&lt;/h2>
&lt;h3 id="legaltech-innovation-needs-a-new-search-stack">LegalTech innovation needs a new search stack&lt;/h3>
&lt;p>LegalTech applications, more than most other application types, demand accuracy due to complex document structures, high regulatory stakes, and compliance requirements. Traditional keyword searches often fall short, failing to grasp semantic nuances essential for precise legal queries. &lt;a href="https://qdrant.tech/" target="_blank" rel="noopener nofollow">Qdrant&lt;/a> addresses these challenges by providing robust vector search solutions tailored for the complexities inherent in LegalTech applications.&lt;/p></description></item><item><title>Qdrant Achieves SOC 2 Type II and HIPAA Certifications</title><link>https://qdrant.tech/blog/soc-2-type-ii-hipaa/</link><pubDate>Tue, 10 Jun 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/soc-2-type-ii-hipaa/</guid><description>&lt;h2 id="qdrant-attains-soc-2-type-ii-and-hipaa-certifications-strengthening-our-commitment-to-enterprise-security">Qdrant Attains SOC 2 Type II and HIPAA Certifications: Strengthening Our Commitment to Enterprise Security&lt;/h2>
&lt;p>At Qdrant, we&amp;rsquo;re proud to announce that we&amp;rsquo;ve successfully renewed our SOC 2 Type II certification and attained our HIPAA compliance certification (&lt;a href="http://qdrant.to/trust-center" target="_blank" rel="noopener nofollow">link&lt;/a>). This continued achievement highlights our unwavering dedication to maintaining robust security, confidentiality, and compliance standards, especially critical in supporting &lt;a href="https://qdrant.tech/enterprise-solutions/" target="_blank" rel="noopener nofollow">enterprise-scale operations&lt;/a> and sensitive data management.&lt;/p>
&lt;h3 id="soc-2-type-ii-continuous-commitment-to-security">SOC 2 Type II: Continuous Commitment to Security&lt;/h3>
&lt;p>Building on our initial SOC 2 Type II certification from 2024, Qdrant sustained our rigorous security and operational practices over a full 12-month observation period. SOC 2 Type II audits meticulously assess the practical implementation of security measures aligned with the American Institute of Certified Public Accountants (AICPA) Trust Services criteria:&lt;/p></description></item><item><title>​​Introducing the Official Qdrant Node for n8n</title><link>https://qdrant.tech/blog/n8n-node/</link><pubDate>Mon, 09 Jun 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/n8n-node/</guid><description>&lt;h2 id="introducing-the-official-qdrant-node-for-n8n">​​Introducing the Official Qdrant Node for n8n&lt;/h2>
&lt;p>Amazing news for n8n builders working with semantic search: Qdrant now has an &lt;a href="https://www.npmjs.com/package/n8n-nodes-qdrant" target="_blank" rel="noopener nofollow">official, team-supported node for n8n&lt;/a>, an early adopter of n8n&amp;rsquo;s new &lt;a href="https://docs.n8n.io/integrations/creating-nodes/deploy/submit-community-nodes/#submit-your-node-for-verification-by-n8n" target="_blank" rel="noopener nofollow">verified community nodes&lt;/a> feature!&lt;/p>
&lt;p>This new integration brings the full power of Qdrant directly into your n8n workflows: no more wrestling with HTTP nodes ever again!
Whether you’re building RAG systems, agentic pipelines, or advanced data analysis tools, this node is designed to make your life easier and your solutions more robust.&lt;/p></description></item><item><title>Qdrant + DataTalks.Club: Free 10-Week Course on LLM Applications</title><link>https://qdrant.tech/blog/datatalks-course/</link><pubDate>Thu, 05 Jun 2025 23:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/datatalks-course/</guid><description>&lt;p>Want to learn how to build an AI system that answers questions about your knowledge base?&lt;/p>
&lt;p>We’re excited to announce our partnership with Alexey Grigorev and DataTalks.Club to bring you a free, hands-on, 10-week course focused on building real-life applications of LLMs.&lt;/p>
&lt;p>Gain hands-on experience with LLMs, RAG, vector search, evaluation, monitoring, and more.&lt;/p>
&lt;h2 id="learn-rag-and-vector-search">Learn RAG and Vector Search&lt;/h2>
&lt;p>In this course, you&amp;rsquo;ll learn how to create an AI system that can answer questions about your own knowledge base using LLMs and RAG.&lt;/p></description></item><item><title>How Qovery Accelerated Developer Autonomy with Qdrant</title><link>https://qdrant.tech/blog/case-study-qovery/</link><pubDate>Tue, 27 May 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-qovery/</guid><description>&lt;h2 id="qovery-scales-real-time-devops-automation-with-qdrant">Qovery Scales Real-Time DevOps Automation with Qdrant&lt;/h2>
&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-qovery/case-study-qovery-summary-dark.png" alt="How Qovery Accelerated Developer Autonomy with Qdrant">&lt;/p>
&lt;h3 id="empowering-developers-with-autonomous-infrastructure-management">Empowering Developers with Autonomous Infrastructure Management&lt;/h3>
&lt;p>Qovery, trusted by over 200 companies including Alan, Talkspace, GetSafe, and RxVantage, empowers software engineering teams to autonomously manage their infrastructure through its robust DevOps automation platform. As their platform evolved, Qovery recognized an opportunity to enhance developer autonomy further by integrating an AI-powered DevOps Copilot. To achieve real-time accuracy and rapid responses, Qovery selected Qdrant as the backbone of their vector database infrastructure.&lt;/p></description></item><item><title>How Tripadvisor Drives 2 to 3x More Revenue with Qdrant-Powered AI</title><link>https://qdrant.tech/blog/case-study-tripadvisor/</link><pubDate>Tue, 13 May 2025 23:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-tripadvisor/</guid><description>&lt;h1 id="how-tripadvisor-is-reimagining-travel-with-qdrant">How Tripadvisor Is Reimagining Travel with Qdrant&lt;/h1>
&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-tripadvisor/case-study-tripadvisor-summary-dark.jpg" alt="How Tripadvisor Drives 2–3x More Revenue with Qdrant-Powered AI">&lt;/p>
&lt;p>Tripadvisor, the world’s largest travel guidance platform, is undergoing a deep transformation. With hundreds of millions of monthly users and over a billion reviews and contributions, it holds one of the richest datasets in the travel industry. And until recently, that data, particularly its unstructured content, had incredible untapped potential. Now, with the rise of generative AI and the adoption of tools like Qdrant’s vector database, Tripadvisor is unlocking its full potential to deliver intelligent, personalized, and high-impact travel experiences.&lt;/p></description></item><item><title>Precision at Scale: How Aracor Accelerated Legal Due Diligence with Hybrid Vector Search</title><link>https://qdrant.tech/blog/case-study-aracor/</link><pubDate>Tue, 13 May 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-aracor/</guid><description>&lt;h2 id="precision-at-scale-how-aracor-uses-qdrant-to-accelerate-legal-due-diligence-resulting-in-90-faster-workflows">Precision at Scale: How Aracor Uses Qdrant to Accelerate Legal Due Diligence Resulting in 90% Faster Workflows&lt;/h2>
&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-aracor/case-study-aracor-bento-dark.jpg" alt="How Aracor Sped Up Due Diligence Workflows by 90%">&lt;/p>
&lt;h3 id="how-aracor-accelerated-legal-due-diligence-with-qdrant-vector-search">How Aracor Accelerated Legal Due Diligence with Qdrant Vector Search&lt;/h3>
&lt;p>The world of mergers and acquisitions (M&amp;amp;A) is notoriously painstaking, slow, expensive and error-prone. Lawyers spend weeks combing through thousands of documents—validating signatures, comparing versions, and flagging risks.&lt;/p>
&lt;p>Lawyers and dealmakers sift through mountains of documents—often numbering into the thousands—to validate every detail, from validating signatures, comparing the documents involved in the deal transaction, flagging risks to to patent validity. This meticulous process typically drains weeks or even months of productivity from highly trained professionals. &lt;a href="https://aracor.ai/" target="_blank" rel="noopener nofollow">Aracor AI&lt;/a> set out to change that and to solve the M&amp;amp;A transparency gap. The Miami-based AI platform is laser-focused on transforming this painstaking due diligence into an automated, accurate, and dramatically faster operation.&lt;/p></description></item><item><title>How Garden Scaled Patent Intelligence with Qdrant</title><link>https://qdrant.tech/blog/case-study-garden-intel/</link><pubDate>Fri, 09 May 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-garden-intel/</guid><description>&lt;h2 id="garden-accelerates-patent-intelligence-with-qdrants-filterable-vector-search">Garden Accelerates Patent Intelligence with Qdrant’s Filterable Vector Search&lt;/h2>
&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-garden/case-study-garden-bento-dark.jpg" alt="How Garden Unlocked AI Patent Analysis">&lt;/p>
&lt;p>For more than a century, patent litigation has been a slow, people-powered business. Analysts read page after page—sometimes tens of thousands of pages—hunting for the smoking-gun paragraph that proves infringement or invalidity. Garden, a New York-based startup, set out to change that by applying large-scale AI to the entire global patent corpus—more than 200 million patents—in conjunction with terabytes of real world data.&lt;/p></description></item><item><title>Exploring Qdrant Cloud Just Got Easier</title><link>https://qdrant.tech/blog/product-ui-changes/</link><pubDate>Tue, 06 May 2025 00:02:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/product-ui-changes/</guid><description>&lt;h1 id="exploring-qdrant-cloud-just-got-easier">Exploring Qdrant Cloud just got easier&lt;/h1>
&lt;p>We always aim to simplify our product for developers, platform teams, and enterprises.&lt;/p>
&lt;p>Here’s a quick overview of recent improvements designed to simplify your journey from login, creating your first cluster, prototyping, and going to production.&lt;/p>
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/J75pNicPEo8?si=1HznwER1Kqx5ZrLG" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen>&lt;/iframe>
&lt;h2 id="simplified-login">Simplified Login&lt;/h2>
&lt;p>We&amp;rsquo;ve reduced the steps to create and access your account, and also simplified navigation between login and registration.&lt;/p></description></item><item><title>How Pariti Doubled Its Fill Rate with Qdrant</title><link>https://qdrant.tech/blog/case-study-pariti/</link><pubDate>Thu, 01 May 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-pariti/</guid><description>&lt;h2 id="from-manual-bottlenecks-to-millisecond-matching-connecting-africas-best-talent">From Manual Bottlenecks to Millisecond Matching: Connecting Africa’s Best Talent&lt;/h2>
&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-pariti/case-study-pariti-summary-dark.jpg" alt="Pariti slashes vetting time and boosted candidate placement success.">&lt;/p>
&lt;p>Pariti’s mission is bold: connect Africa’s best talent with the continent’s most-promising startups—fast. Its referral-driven marketplace lets anyone nominate a great candidate, but viral growth triggered an avalanche of data. A single job post now attracts more than 300 applicants within 72 hours, yet Pariti still promises clients an interview-ready shortlist inside those same five days.&lt;/p></description></item><item><title>Vector Search in Production</title><link>https://qdrant.tech/articles/vector-search-production/</link><pubDate>Wed, 30 Apr 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/vector-search-production/</guid><description>&lt;h2 id="what-does-it-take-to-run-search-in-production">What Does it Take to Run Search in Production?&lt;/h2>
&lt;p>A mid-sized e-commerce company launched a vector search pilot to improve product discovery. During testing, everything ran smoothly. But in production, their queries began failing intermittently: memory errors, disk I/O spikes, and search delays sprang up unexpectedly.&lt;/p>
&lt;p>It turned out the team hadn&amp;rsquo;t adjusted the default configuration settings or reserved dedicated paths for write-ahead logs. Their vector index was too large to fit comfortably in RAM, and it frequently spilled to disk, causing slowdowns.&lt;/p></description></item><item><title>How Dust Scaled to 5,000+ Data Sources with Qdrant</title><link>https://qdrant.tech/blog/case-study-dust-v2/</link><pubDate>Tue, 29 Apr 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-dust-v2/</guid><description>&lt;h2 id="inside-dusts-vector-stack-overhaul-scaling-to-5000-data-sources-with-qdrant">Inside Dust’s Vector Stack Overhaul: Scaling to 5,000+ Data Sources with Qdrant&lt;/h2>
&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-dust-v2/case-study-dust-v2-v2-bento-dark.jpg" alt="How Dust Scaled to 5,000+ Data Sources with Qdrant">&lt;/p>
&lt;h3 id="the-challenge-scaling-ai-infrastructure-for-thousands-of-data-sources">The Challenge: Scaling AI Infrastructure for Thousands of Data Sources&lt;/h3>
&lt;p>Dust, an OS for AI-native companies enabling users to build AI agents powered by actions and company knowledge, faced a set of growing technical hurdles as it scaled its operations. The company&amp;rsquo;s core product enables users to give AI agents secure access to internal and external data resources, enabling enhanced workflows and faster access to information. However, this mission hit bottlenecks when their infrastructure began to strain under the weight of thousands of data sources and increasingly demanding user queries.&lt;/p></description></item><item><title>How SayOne Enhanced Government AI Services with Qdrant</title><link>https://qdrant.tech/blog/case-study-sayone/</link><pubDate>Mon, 28 Apr 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-sayone/</guid><description>&lt;h2 id="how-sayone-enhanced-government-ai-services-with-qdrant">How SayOne Enhanced Government AI Services with Qdrant&lt;/h2>
&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-sayone/case-study-sayone-summary-dark.jpg" alt="SayOne Enhanced Government AI Services">&lt;/p>
&lt;h3 id="the-challenge">The Challenge&lt;/h3>
&lt;p>SayOne is an information technology and digital services company headquartered in India. They create end-to-end customized digital solutions, and have completed over 200 projects for clients worldwide. When SayOne embarked on building advanced AI solutions for government institutions, their initial choice was Pinecone, primarily due to its prevalence within AI documentation. However, SayOne soon discovered significant limitations impacting their projects. Key challenges included escalating costs, restrictive customization options, and considerable scalability issues. Furthermore, reliance on external cloud infrastructure posed critical data privacy concerns, especially since governmental entities demanded stringent data sovereignty and privacy controls.&lt;/p></description></item><item><title>Beyond Multimodal Vectors: Hotel Search With Superlinked and Qdrant</title><link>https://qdrant.tech/blog/superlinked-multimodal-search/</link><pubDate>Thu, 24 Apr 2025 00:00:00 -0800</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/superlinked-multimodal-search/</guid><description>&lt;h2 id="more-than-just-multimodal-search">More Than Just Multimodal Search?&lt;/h2>
&lt;p>AI has transformed how we find products, services, and content. Now users express needs in &lt;strong>natural language&lt;/strong> and expect precise, tailored results.&lt;/p>
&lt;p>For example, you might search for hotels in Paris with specific criteria:&lt;/p>
&lt;p>&lt;img src="https://qdrant.tech/blog/superlinked-multimodal-search/superlinked-search.png" alt="superlinked-search">&lt;/p>
&lt;p>&lt;em>&amp;ldquo;Affordable luxury hotels near Eiffel Tower with lots of good reviews and free parking.&amp;rdquo;&lt;/em> This isn&amp;rsquo;t just a search query—it&amp;rsquo;s a complex set of interrelated preferences spanning multiple data types.&lt;/p></description></item><item><title>Qdrant 1.14 - Reranking Support &amp; Extensive Resource Optimizations</title><link>https://qdrant.tech/blog/qdrant-1.14.x/</link><pubDate>Tue, 22 Apr 2025 00:00:00 -0800</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-1.14.x/</guid><description>&lt;p>&lt;a href="https://github.com/qdrant/qdrant/releases/tag/v1.14.0" target="_blank" rel="noopener nofollow">&lt;strong>Qdrant 1.14.0 is out!&lt;/strong>&lt;/a> Let&amp;rsquo;s look at the main features for this version:&lt;/p>
&lt;p>&lt;strong>Score-Boosting Reranker:&lt;/strong> Blend vector similarity with custom rules and context.&lt;/br>
&lt;strong>Improved Resource Utilization:&lt;/strong> CPU and disk IO optimization for faster processing.&lt;/br>&lt;/p>
&lt;p>&lt;strong>Incremental HNSW Indexing:&lt;/strong> Build indexes gradually as data arrives.&lt;/br>
&lt;strong>Batch Search:&lt;/strong> Optimized parallel processing for batch queries.&lt;/br>&lt;/p>
&lt;p>&lt;strong>Memory Optimization:&lt;/strong> Reduced usage for large datasets with improved ID tracking.&lt;/br>&lt;/p>
&lt;h2 id="score-boosting-reranker">Score-Boosting Reranker&lt;/h2>
&lt;p>&lt;img src="https://qdrant.tech/blog/qdrant-1.14.x/reranking.jpg" alt="reranking">&lt;/p>
&lt;p>When integrating vector search into specific applications, you can now tweak the final result list using domain or business logic. For example, if you are building a &lt;strong>chatbot or search on website content&lt;/strong>, you can rank results with &lt;code>title&lt;/code> metadata higher than &lt;code>body_text&lt;/code> in your results.&lt;/p></description></item><item><title>Pathwork Optimizes Life Insurance Underwriting with Precision Vector Search</title><link>https://qdrant.tech/blog/case-study-pathwork/</link><pubDate>Tue, 22 Apr 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-pathwork/</guid><description>&lt;h2 id="pathwork-optimizes-life-insurance-underwriting-with-precision-vector-search">&lt;strong>Pathwork Optimizes Life Insurance Underwriting with Precision Vector Search&lt;/strong>&lt;/h2>
&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-pathwork/case-study-pathwork-summary-dark-b.jpg" alt="Pathwork Optimizes Life Insurance Underwriting with Precision Vector Search">&lt;/p>
&lt;h3 id="about-pathwork">&lt;strong>About Pathwork&lt;/strong>&lt;/h3>
&lt;p>Pathwork is redesigning life and health insurance workflows for the age of AI. Brokerages and insurance carriers utilize Pathwork&amp;rsquo;s advanced agentic system to automate their underwriting processes and enhance back-office sales operations. Pathwork&amp;rsquo;s solution drastically reduces errors, completes tasks up to 70 times faster, and significantly conserves human capital.&lt;/p>
&lt;h3 id="the-challenge-accuracy-above-all">&lt;strong>The Challenge: Accuracy Above All&lt;/strong>&lt;/h3>
&lt;p>Life insurance underwriting demands exceptional accuracy. Traditionally, underwriting involves extensive manual input, subjective judgment, and frequent errors. These errors, such as misclassifying risk based on incomplete or misunderstood health data, often result in lost sales and customer dissatisfaction due to sudden premium changes.&lt;/p></description></item><item><title>How Lyzr Supercharged AI Agent Performance with Qdrant</title><link>https://qdrant.tech/blog/case-study-lyzr/</link><pubDate>Tue, 15 Apr 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-lyzr/</guid><description>&lt;h1 id="how-lyzr-supercharged-ai-agent-performance-with-qdrant">How Lyzr Supercharged AI Agent Performance with Qdrant&lt;/h1>
&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-lyzr/case-study-lyzr-summary-dark.png" alt="How Lyzr Supercharged AI Agent Performance with Qdrant">&lt;/p>
&lt;h2 id="scaling-intelligent-agents-how-lyzr-supercharged-performance-with-qdrant">Scaling Intelligent Agents: How Lyzr Supercharged Performance with Qdrant&lt;/h2>
&lt;p>As AI agents become more capable and pervasive, the infrastructure behind them must evolve to handle rising concurrency, low-latency demands, and ever-growing knowledge bases. At Lyzr Agent Studio—where over 100 agents are deployed across industries—these challenges arrived quickly and at scale.&lt;/p>
&lt;p>When their existing vector database infrastructure began to buckle under pressure, the engineering team needed a solution that could do more than just keep up. It had to accelerate them forward.&lt;/p></description></item><item><title>How Mixpeek Uses Qdrant for Efficient Multimodal Feature Stores</title><link>https://qdrant.tech/blog/case-study-mixpeek/</link><pubDate>Tue, 08 Apr 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-mixpeek/</guid><description>&lt;h1 id="how-mixpeek-uses-qdrant-for-efficient-multimodal-feature-stores">How Mixpeek Uses Qdrant for Efficient Multimodal Feature Stores&lt;/h1>
&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-mixpeek/Case-Study-Mixpeek-Summary-Dark.jpg" alt="How Mixpeek Uses Qdrant for Efficient Multimodal Feature Stores">&lt;/p>
&lt;h2 id="about-mixpeek">About Mixpeek&lt;/h2>
&lt;p>&lt;a href="http://mixpeek.com" target="_blank" rel="noopener nofollow">Mixpeek&lt;/a> is a multimodal data processing and retrieval platform designed for developers and data teams. Founded by Ethan Steininger, a former MongoDB search specialist, Mixpeek enables efficient ingestion, feature extraction, and retrieval across diverse media types including video, images, audio, and text.&lt;/p>
&lt;h2 id="the-challenge-optimizing-feature-stores-for-complex-retrievers">The Challenge: Optimizing Feature Stores for Complex Retrievers&lt;/h2>
&lt;p>As Mixpeek&amp;rsquo;s multimodal data warehouse evolved, their feature stores needed to support increasingly complex retrieval patterns. Initially using MongoDB Atlas&amp;rsquo;s vector search, they encountered limitations when implementing &lt;a href="https://docs.mixpeek.com/retrieval/retrievers" target="_blank" rel="noopener nofollow">&lt;strong>hybrid retrievers&lt;/strong>&lt;/a> &lt;strong>combining dense and sparse vectors with metadata pre-filtering&lt;/strong>.&lt;/p></description></item><item><title>Satellite Vector Broadcasting: Near-Zero Latency Retrieval from Space</title><link>https://qdrant.tech/blog/satellite-vector-broadcasting/</link><pubDate>Tue, 01 Apr 2025 00:00:00 -0800</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/satellite-vector-broadcasting/</guid><description>&lt;h2 id="-qdrant-launches-satellite-vector-broadcasting-for-near-zero-latency-retrieval">📡 Qdrant Launches Satellite Vector Broadcasting for Near-Zero Latency Retrieval&lt;/h2>
&lt;p>&lt;strong>CAPE CANAVERAL, FL&lt;/strong> — Qdrant today announced the successful deployment of &lt;strong>Satellite Vector Broadcasting&lt;/strong>, an ambitious new system for high-speed vector search that uses &lt;strong>actual satellites&lt;/strong> to transmit, shard, and retrieve embeddings — bypassing Earth entirely.&lt;/p>
&lt;blockquote>
&lt;p>“Cloud is old news. Space is the new infrastructure,” said orbital software lead Luna Hertz. “We&amp;rsquo;re proud to say we&amp;rsquo;ve finally untethered cosine similarity from the bonds of gravity and Wi-Fi.”&lt;/p></description></item><item><title>HubSpot &amp; Qdrant: Scaling an Intelligent AI Assistant</title><link>https://qdrant.tech/blog/case-study-hubspot/</link><pubDate>Mon, 24 Mar 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-hubspot/</guid><description>&lt;p>HubSpot, a global leader in CRM solutions, continuously enhances its product suite with powerful AI-driven features. To optimize Breeze AI, its flagship intelligent assistant, HubSpot chose Qdrant as its vector database.&lt;/p>
&lt;h2 id="challenges-scaling-an-intelligent-ai">&lt;strong>Challenges Scaling an Intelligent AI&lt;/strong>&lt;/h2>
&lt;p>As HubSpot expanded its AI capabilities, it faced several critical challenges in scaling Breeze AI to meet growing user demands:&lt;/p>
&lt;ul>
&lt;li>Delivering highly personalized, context-aware responses required a robust vector search solution that could retrieve data quickly while maintaining accuracy.&lt;/li>
&lt;li>With increasing user interactions, HubSpot needed a scalable system capable of handling rapid data growth without performance degradation.&lt;/li>
&lt;li>Integration with HubSpot’s existing AI infrastructure had to be swift and easy to support fast-paced development cycles.&lt;/li>
&lt;li>HubSpot sought a future-proof vector search solution that could adapt to emerging AI advancements while maintaining high availability.&lt;/li>
&lt;/ul>
&lt;p>These challenges made it essential to find a high-performance, developer-friendly vector database that could power Breeze AI efficiently.&lt;/p></description></item><item><title>Vibe Coding RAG with our MCP server</title><link>https://qdrant.tech/blog/webinar-vibe-coding-rag/</link><pubDate>Fri, 21 Mar 2025 12:02:00 +0100</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/webinar-vibe-coding-rag/</guid><description>&lt;p>Another month means another webinar! This time &lt;a href="https://www.linkedin.com/in/kacperlukawski/" target="_blank" rel="noopener nofollow">Kacper Łukawski&lt;/a> put some of the popular AI coding agents to the
test. There is a lot of excitement around tools such as Cursor, GitHub Copilot, Aider and Claude Code, so we wanted to
see how they perform in implementing something more complex than a simple frontend application. Wouldn&amp;rsquo;t it be awesome
if LLMs could code Retrieval Augmented Generation on their own?&lt;/p>
&lt;h2 id="vibe-coding">Vibe coding&lt;/h2>
&lt;p>&lt;strong>Vibe coding&lt;/strong> is a development approach introduced by Andrej Karpathy where developers surrender to intuition rather
than control. It leverages AI coding assistants for implementation while developers focus on outcomes. Through voice
interfaces and complete trust in AI suggestions, the process prioritizes results over code comprehension.&lt;/p></description></item><item><title>How Deutsche Telekom Built a Multi-Agent Enterprise Platform Leveraging Qdrant</title><link>https://qdrant.tech/blog/case-study-deutsche-telekom/</link><pubDate>Fri, 07 Mar 2025 08:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-deutsche-telekom/</guid><description>&lt;p>&lt;strong>How Deutsche Telekom Built a Scalable, Multi-Agent Enterprise Platform Leveraging Qdrant—Powering Over 2 Million Conversations Across Europe&lt;/strong>&lt;/p>
&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-deutsche-telekom/dtag-team.jpg" alt="Deutsche Telekom&amp;rsquo;s AI Competence Center team leading the LMOS platform development">&lt;/p>
&lt;p>&lt;a href="https://www.linkedin.com/in/arun-joseph-ab47102a/" target="_blank" rel="noopener nofollow">Arun Joseph&lt;/a>, who leads engineering and architecture for &lt;a href="https://www.telekom.com/en/company/digital-responsibility/details/artificial-intelligence-at-deutsche-telekom-1055154" target="_blank" rel="noopener nofollow">Deutsche Telekom&amp;rsquo;s AI Competence Center (AICC)&lt;/a>, faced a critical challenge: how do you efficiently and scalably deploy AI-powered assistants across a vast enterprise ecosystem? The goal was to deploy GenAI for customer sales and service operations to resolve customer queries faster across the 10 countries where Deutsche Telekom operates in Europe.&lt;/p></description></item><item><title>Introducing Qdrant Cloud’s New Enterprise-Ready Vector Search</title><link>https://qdrant.tech/blog/enterprise-vector-search/</link><pubDate>Tue, 04 Mar 2025 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/enterprise-vector-search/</guid><description>&lt;p>At Qdrant, we enable developers to power AI workloads - not only securely, but at any scale. That’s why we are excited to introduce Qdrant Cloud’s new suite of enterprise-grade features. With &lt;strong>our Cloud API, Cloud RBAC&lt;/strong>, &lt;strong>Single Sign-On (SSO)&lt;/strong>, granular &lt;strong>Database API Keys&lt;/strong>, and &lt;strong>Advanced Monitoring &amp;amp; Observability&lt;/strong>, you now have the control and visibility needed to operate at scale.&lt;/p>
&lt;h2 id="securely-scale-your-ai-workloads">Securely Scale Your AI Workloads&lt;/h2>
&lt;p>Your enterprise-grade AI applications demand more than just a powerful vector database—they need to meet compliance, performance, and scalability requirements. To do that, you need simplified management, secure access &amp;amp; authentication, and real-time monitoring &amp;amp; observability. Now, Qdrant’s new enterprise-grade features address these needs, giving your team the tools to reduce operational overhead, simplify authentication, enforce access policies, and have deep visibility into performance.&lt;/p></description></item><item><title>Metadata automation and optimization - Reece Griffiths | Vector Space Talks</title><link>https://qdrant.tech/blog/metadata-deasy-labs/</link><pubDate>Mon, 24 Feb 2025 18:29:51 -0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/metadata-deasy-labs/</guid><description>&lt;blockquote>
&lt;p>&lt;em>&amp;ldquo;Metadata is one of the key unlocks to both segmentation and file organization, setting up the right knowledge base, and enriching it to hit that last mile of accuracy and speed.”&lt;/em>&lt;br>
&lt;strong>— Reece Griffiths&lt;/strong>&lt;/p>
&lt;/blockquote>
&lt;p>&lt;a href="https://www.linkedin.com/in/reece-william-griffiths/" target="_blank" rel="noopener nofollow">Reece Griffiths&lt;/a> is the CEO and co-founder of &lt;a href="https://www.deasylabs.com/" target="_blank" rel="noopener nofollow">Deasy Labs&lt;/a>, a metadata automation platform that helps companies optimize their vector databases for retrieval accuracy. Previously part of Y Combinator, Deasy Labs focuses on improving metadata extraction, classification, and enrichment at scale.&lt;/p></description></item><item><title>How to Build Intelligent Agentic RAG with CrewAI and Qdrant</title><link>https://qdrant.tech/blog/webinar-crewai-qdrant-obsidian/</link><pubDate>Fri, 24 Jan 2025 09:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/webinar-crewai-qdrant-obsidian/</guid><description>&lt;p>In a recent live session, we teamed up with &lt;a href="https://crewai.com/" target="_blank" rel="noopener nofollow">CrewAI&lt;/a>, a framework for building intelligent,
multi-agent applications. If you missed it, &lt;a href="https://www.linkedin.com/in/kacperlukawski/" target="_blank" rel="noopener nofollow">Kacper Łukawski&lt;/a> from Qdrant
and &lt;a href="https://www.linkedin.com/in/tonykipkemboi" target="_blank" rel="noopener nofollow">Tony Kipkemboi&lt;/a> from &lt;a href="https://crewai.com/" target="_blank" rel="noopener nofollow">CrewAI&lt;/a> gave an insightful
overview of CrewAI’s capabilities and demonstrated how to leverage Qdrant for creating an agentic RAG
(Retrieval-Augmented Generation) system. The focus was on semi-automating email communication, using
&lt;a href="https://obsidian.md/" target="_blank" rel="noopener nofollow">Obsidian&lt;/a> as the knowledge base.&lt;/p>
&lt;p>In this article, we’ll guide you through the process of setting up an AI-powered system that connects directly to your
email inbox and knowledge base, enabling it to analyze incoming messages and existing content to generate contextually
relevant response suggestions.&lt;/p></description></item><item><title>Qdrant 1.13 - GPU Indexing, Strict Mode &amp; New Storage Engine</title><link>https://qdrant.tech/blog/qdrant-1.13.x/</link><pubDate>Thu, 23 Jan 2025 00:00:00 -0800</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-1.13.x/</guid><description>&lt;p>&lt;a href="https://github.com/qdrant/qdrant/releases/tag/v1.13.0" target="_blank" rel="noopener nofollow">&lt;strong>Qdrant 1.13.0 is out!&lt;/strong>&lt;/a> Let&amp;rsquo;s look at the main features for this version:&lt;/p>
&lt;p>&lt;strong>GPU Accelerated Indexing:&lt;/strong> Fast HNSW indexing with architecture-free GPU support.&lt;/br>
&lt;strong>Strict Mode:&lt;/strong> Enforce operation restrictions on collections for enhanced control.&lt;/br>&lt;/p>
&lt;p>&lt;strong>HNSW Graph Compression:&lt;/strong> Reduce storage use via HNSW Delta Encoding.&lt;/br>
&lt;strong>Named Vector Filtering:&lt;/strong> New &lt;code>has_vector&lt;/code> filtering condition for named vectors.&lt;/br>
&lt;strong>Custom Storage:&lt;/strong> For constant-time reads/writes of payloads and sparse vectors.&lt;/br>&lt;/p>
&lt;h2 id="gpu-accelerated-indexing">GPU Accelerated Indexing&lt;/h2>
&lt;p>&lt;img src="https://qdrant.tech/blog/qdrant-1.13.x/image_6.png" alt="gpu-accelerated-indexing">&lt;/p>
&lt;p>We are making it easier for you to handle even &lt;strong>the most demanding workloads&lt;/strong>.&lt;/p></description></item><item><title>Voiceflow &amp; Qdrant: Powering No-Code AI Agent Creation with Scalable Vector Search</title><link>https://qdrant.tech/blog/case-study-voiceflow/</link><pubDate>Tue, 10 Dec 2024 00:02:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-voiceflow/</guid><description>&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-voiceflow/image1.png" alt="voiceflow/image2.png">&lt;/p>
&lt;p>&lt;a href="https://www.voiceflow.com/" target="_blank" rel="noopener nofollow">Voiceflow&lt;/a> enables enterprises to create AI agents in a no-code environment by designing workflows through a drag-and-drop interface. The platform allows developers to host and customize chatbot interfaces without needing to build their own RAG pipeline, working out of the box and being easily adaptable to specific use cases. “Powered by technologies like Natural Language Understanding (NLU), Large Language Models (LLM), and Qdrant as a vector search engine, Voiceflow serves a diverse range of customers, including enterprises that develop chatbots for internal and external AI use cases,” says &lt;a href="https://www.linkedin.com/in/xavierportillaedo/" target="_blank" rel="noopener nofollow">Xavier Portillo Edo&lt;/a>, Head of Cloud Infrastructure at Voiceflow.&lt;/p></description></item><item><title>Building a Facial Recognition System with Qdrant</title><link>https://qdrant.tech/blog/facial-recognition/</link><pubDate>Tue, 03 Dec 2024 00:00:00 -0800</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/facial-recognition/</guid><description>&lt;h1 id="the-twin-celebrity-app">The Twin Celebrity App&lt;/h1>
&lt;p>In the era of personalization, combining cutting-edge technology with fun can create engaging applications that resonate with users. One such project is the &lt;a href="https://github.com/neural-maze/vector-twin" target="_blank" rel="noopener nofollow">&lt;strong>Twin Celebrity app&lt;/strong>&lt;/a>, a tool that matches users with their celebrity look-alikes using facial recognition embeddings and &lt;a href="https://qdrant.tech/advanced-search/">&lt;strong>vector search&lt;/strong>&lt;/a> powered by Qdrant. This blog post dives into the architecture, tools, and practical advice for developers who want to build this app—or something similar.&lt;/p>
&lt;p>The &lt;a href="https://github.com/neural-maze/vector-twin" target="_blank" rel="noopener nofollow">&lt;strong>Twin Celebrity app&lt;/strong>&lt;/a> identifies which celebrity a user resembles by analyzing a selfie. The app utilizes:&lt;/p></description></item><item><title>Optimizing ColPali for Retrieval at Scale, 13x Faster Results</title><link>https://qdrant.tech/blog/colpali-qdrant-optimization/</link><pubDate>Wed, 27 Nov 2024 00:40:24 -0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/colpali-qdrant-optimization/</guid><description>&lt;p>ColPali is a fascinating leap in document retrieval. Its precision in handling visually rich PDFs is phenomenal, but scaling it to handle real-world datasets comes with its share of computational challenges.&lt;/p>
&lt;p>Here&amp;rsquo;s how we solved these challenges to make ColPali 13x faster without sacrificing the precision it’s known for.&lt;/p>
&lt;h2 id="the-scaling-dilemma">The Scaling Dilemma&lt;/h2>
&lt;p>ColPali generates &lt;strong>1,030 vectors for just one page of a PDF.&lt;/strong> While this is manageable for small-scale tasks, in a real-world production setting where you may need to store hundreds od thousands of PDFs, the challenge of scaling becomes significant.&lt;/p></description></item><item><title>Best Practices in RAG Evaluation: A Comprehensive Guide</title><link>https://qdrant.tech/blog/rag-evaluation-guide/</link><pubDate>Sun, 24 Nov 2024 00:00:00 -0800</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/rag-evaluation-guide/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>This guide will teach you how to evaluate a RAG system for both &lt;strong>accuracy&lt;/strong> and &lt;strong>quality&lt;/strong>. You will learn to maintain RAG performance by testing for search precision, recall, contextual relevance, and response accuracy.&lt;/p>
&lt;p>&lt;strong>Building a RAG application is just the beginning;&lt;/strong> it is crucial to test its usefulness for the end-user and calibrate its components for long-term stability.&lt;/p>
&lt;p>RAG systems can encounter errors at any of the three crucial stages: retrieving relevant information, augmenting that information, and generating the final response. By systematically assessing and fine-tuning each component, you will be able to maintain a reliable and contextually relevant GenAI application that meets user needs.&lt;/p></description></item><item><title>Empowering QA.tech’s Testing Agents with Real-Time Precision and Scale</title><link>https://qdrant.tech/blog/case-study-qatech/</link><pubDate>Thu, 21 Nov 2024 00:02:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-qatech/</guid><description>&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-qatech/qdrant-qatech-1.png" alt="qdrant-qatech-1">&lt;/p>
&lt;p>&lt;a href="https://qa.tech/" target="_blank" rel="noopener nofollow">QA.tech&lt;/a>, a company specializing in AI-driven automated testing solutions, found that building and &lt;strong>fully testing web applications, especially end-to-end, can be complex and time-consuming&lt;/strong>. Unlike unit tests, end-to-end tests reveal what’s actually happening in the browser, often uncovering issues that other methods miss.&lt;/p>
&lt;p>Traditional solutions like hard-coded tests are not only labor-intensive to set up but also challenging to maintain over time. Alternatively, hiring QA testers can be a solution, but for startups, it quickly becomes a bottleneck. With every release, more testers are needed, and if testing is outsourced, managing timelines and ensuring quality becomes even harder.&lt;/p></description></item><item><title>Advanced Retrieval with ColPali &amp; Qdrant Vector Database</title><link>https://qdrant.tech/blog/qdrant-colpali/</link><pubDate>Tue, 05 Nov 2024 00:02:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-colpali/</guid><description>&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 30 min&lt;/th>
 &lt;th>Level: Advanced&lt;/th>
 &lt;th>Notebook: &lt;a href="https://github.com/qdrant/examples/blob/master/colpali-and-binary-quantization/colpali_demo_binary.ipynb" target="_blank" rel="noopener nofollow">GitHub&lt;/a>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;/tbody>
&lt;/table>
&lt;p>It’s no secret that even the most modern document retrieval systems have a hard time handling visually rich documents like &lt;strong>PDFs, containing tables, images, and complex layouts.&lt;/strong>&lt;/p>
&lt;p>ColPali introduces a multimodal retrieval approach that uses &lt;strong>Vision Language Models (VLMs)&lt;/strong> instead of the traditional OCR and text-based extraction.&lt;/p>
&lt;p>By processing document images directly, it creates &lt;strong>multi-vector embeddings&lt;/strong> from both the visual and textual content, capturing the document&amp;rsquo;s structure and context more effectively. This method outperforms traditional techniques, as demonstrated by the &lt;a href="https://huggingface.co/vidore" target="_blank" rel="noopener nofollow">&lt;strong>Visual Document Retrieval Benchmark (ViDoRe)&lt;/strong>&lt;/a>.&lt;/p></description></item><item><title>How Sprinklr Leverages Qdrant to Enhance AI-Driven Customer Experience Solutions</title><link>https://qdrant.tech/blog/case-study-sprinklr/</link><pubDate>Thu, 17 Oct 2024 00:02:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-sprinklr/</guid><description>&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-sprinklr/image1.png" alt="case-study-sprinklr-1">&lt;/p>
&lt;p>&lt;a href="https://www.sprinklr.com/" target="_blank" rel="noopener nofollow">Sprinklr&lt;/a>, a leader in unified customer experience management (Unified-CXM), helps global brands engage customers meaningfully across more than 30 digital channels. To achieve this, Sprinklr needed a scalable solution for AI-powered search to support their AI applications, particularly in handling the vast data requirements of customer interactions.&lt;/p>
&lt;p>Raghav Sonavane, Associate Director of Machine Learning Engineering at Sprinklr, leads the Applied AI team, focusing on Generative AI (GenAI) and Retrieval-Augmented Generation (RAG). His team is responsible for training and fine-tuning in-house models and deploying advanced retrieval and generation systems for customer-facing applications like FAQ bots and other &lt;a href="https://www.sprinklr.com/blog/how-sprinklr-uses-RAG/" target="_blank" rel="noopener nofollow">GenAI-driven services&lt;/a>. The team provides all of these capabilities in a centralized platform to the Sprinklr product engineering teams.&lt;/p></description></item><item><title>Qdrant 1.12 - Distance Matrix, Facet Counting &amp; On-Disk Indexing</title><link>https://qdrant.tech/blog/qdrant-1.12.x/</link><pubDate>Tue, 08 Oct 2024 00:00:00 -0800</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-1.12.x/</guid><description>&lt;p>&lt;a href="https://github.com/qdrant/qdrant/releases/tag/v1.12.0" target="_blank" rel="noopener nofollow">&lt;strong>Qdrant 1.12.0 is out!&lt;/strong>&lt;/a> Let&amp;rsquo;s look at major new features and a few minor additions:&lt;/p>
&lt;p>&lt;strong>Distance Matrix API:&lt;/strong> Efficiently calculate pairwise distances between vectors.&lt;/br>
&lt;strong>GUI Data Exploration&lt;/strong> Visually navigate your dataset and analyze vector relationships.&lt;/br>
&lt;strong>Faceting API:&lt;/strong> Dynamically aggregate and count unique values in specific fields.&lt;/br>&lt;/p>
&lt;p>&lt;strong>Text Index on disk:&lt;/strong> Reduce memory usage by storing text indexing data on disk.&lt;/br>
&lt;strong>Geo Index on disk:&lt;/strong> Offload indexed geographic data on disk for memory efficiency.&lt;/p></description></item><item><title>New DeepLearning.AI Course on Retrieval Optimization: From Tokenization to Vector Quantization</title><link>https://qdrant.tech/blog/qdrant-deeplearning-ai-course/</link><pubDate>Sun, 06 Oct 2024 00:02:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-deeplearning-ai-course/</guid><description>&lt;p>We’re excited to announce a new course on DeepLearning.AI&amp;rsquo;s platform: &lt;a href="https://www.deeplearning.ai/short-courses/retrieval-optimization-from-tokenization-to-vector-quantization/?utm_campaign=qdrant-launch&amp;amp;utm_medium=qdrant&amp;amp;utm_source=partner-promo" target="_blank" rel="noopener nofollow">Retrieval Optimization: From Tokenization to Vector Quantization&lt;/a>. This collaboration between Qdrant and DeepLearning.AI aims to empower developers and data enthusiasts with the skills needed to enhance &lt;a href="https://qdrant.tech/advanced-search/">vector search&lt;/a> capabilities in their applications.&lt;/p>
&lt;p>Led by Qdrant’s Kacper Łukawski, this free, one-hour course is designed for beginners eager to delve into the world of retrieval optimization.&lt;/p>
&lt;h2 id="why-this-collaboration-matters">Why This Collaboration Matters&lt;/h2>
&lt;p>At Qdrant, we believe in the power of effective search to transform user experiences. Partnering with DeepLearning.AI allows us to combine our cutting-edge vector search technology with their educational expertise, providing learners with a comprehensive understanding of how to build and optimize &lt;a href="https://qdrant.tech/rag/rag-evaluation-guide/">Retrieval-Augmented Generation (RAG)&lt;/a> applications. This course is part of our commitment to equip the community with practical skills that leverage advanced machine learning techniques.&lt;/p></description></item><item><title>Introducing Qdrant for Startups</title><link>https://qdrant.tech/blog/qdrant-for-startups-launch/</link><pubDate>Wed, 02 Oct 2024 00:02:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-for-startups-launch/</guid><description>&lt;h1 id="supporting-early-stage-startups">Supporting Early-Stage Startups&lt;/h1>
&lt;p>Over the past few years, we’ve witnessed some of the most innovative AI applications being built on Qdrant. A significant number of these have come from startups pushing the boundaries of what’s possible in AI. To ensure these pioneering teams have access to the right resources at the right time, we&amp;rsquo;re introducing &lt;strong>Qdrant for Startups&lt;/strong>. This initiative is designed to provide startups with the technical support, guidance, and infrastructure they need to scale their AI innovations quickly and effectively.&lt;/p></description></item><item><title>Qdrant and Shakudo: Secure &amp; Performant Vector Search in VPC Environments</title><link>https://qdrant.tech/blog/case-study-shakudo/</link><pubDate>Mon, 23 Sep 2024 00:02:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-shakudo/</guid><description>&lt;p>We are excited to announce that Qdrant has partnered with &lt;a href="https://www.shakudo.io/" target="_blank" rel="noopener nofollow">Shakudo&lt;/a>, bringing &lt;a href="https://qdrant.tech/hybrid-cloud/" target="_blank" rel="noopener nofollow">Qdrant Hybrid Cloud&lt;/a> to Shakudo’s virtual private cloud (VPC) deployments. This collaboration allows Shakudo clients to seamlessly integrate Qdrant’s high-performance vector database as a managed service into their private infrastructure, ensuring data sovereignty, scalability, and low-latency vector search for enterprise AI applications.&lt;/p>
&lt;h2 id="data-sovereignty-and-compliance-with-secure-vector-search">Data Sovereignty and Compliance with Secure Vector Search&lt;/h2>
&lt;p>Shakudo’s VPC deployments ensure that client data remains within their infrastructure, providing strict control over sensitive information while leveraging a fully managed AI toolset. Qdrant Hybrid Cloud is tailored for environments where data privacy and regulatory compliance are paramount. It keeps the data plane inside the customer&amp;rsquo;s infrastructure, with only essential telemetry shared externally, guaranteeing database isolation and security, while providing a fully managed service.&lt;/p></description></item><item><title>Data-Driven RAG Evaluation: Testing Qdrant Apps with Relari AI</title><link>https://qdrant.tech/blog/qdrant-relari/</link><pubDate>Mon, 16 Sep 2024 00:02:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-relari/</guid><description>&lt;h1 id="using-performance-metrics-to-evaluate-rag-systems">Using Performance Metrics to Evaluate RAG Systems&lt;/h1>
&lt;p>Evaluating the performance of a &lt;a href="https://qdrant.tech/rag/">Retrieval-Augmented Generation (RAG)&lt;/a> application can be a complex task for developers.&lt;/p>
&lt;p>To help simplify this, Qdrant has partnered with &lt;a href="https://www.relari.ai" target="_blank" rel="noopener nofollow">Relari&lt;/a> to provide an in-depth &lt;a href="https://qdrant.tech/articles/rapid-rag-optimization-with-qdrant-and-quotient/">RAG evaluation&lt;/a> process.&lt;/p>
&lt;p>As a &lt;a href="https://qdrant.tech" target="_blank" rel="noopener nofollow">vector database&lt;/a>, Qdrant handles the data storage and retrieval, while Relari enables you to run experiments to assess how well your RAG app performs in real-world scenarios. Together, they allow for fast, iterative testing and evaluation, making it easier to keep up with your app&amp;rsquo;s development pace.&lt;/p></description></item><item><title>Nyris &amp; Qdrant: How Vectors are the Future of Visual Search</title><link>https://qdrant.tech/blog/case-study-nyris/</link><pubDate>Tue, 10 Sep 2024 00:02:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-nyris/</guid><description>&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-nyris/nyris-case-study.png" alt="nyris-case-study">&lt;/p>
&lt;h2 id="about-nyris">About Nyris&lt;/h2>
&lt;p>Founded in 2015 by CTO Markus Lukasson and his sister Anna Lukasson-Herzig, &lt;a href="https://www.nyris.io/" target="_blank" rel="noopener nofollow">Nyris&lt;/a> offers advanced visual search solutions for companies, positioning itself as the &amp;ldquo;Google Lens&amp;rdquo; for corporate data. Their technology powers use cases such as visual search on websites of large retailers and machine manufacturing companies that require visual identification of spare parts. The primary goal is to identify items in a product catalog or spare parts as quickly as possible. With a strong foundation in e-commerce and nearly a decade of experience in vector search, Nyris is at the forefront of visual search innovation.&lt;/p></description></item><item><title>Kern AI &amp; Qdrant: Precision AI Solutions for Finance and Insurance</title><link>https://qdrant.tech/blog/case-study-kern/</link><pubDate>Wed, 28 Aug 2024 00:02:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-kern/</guid><description>&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-kern/kern-case-study.png" alt="kern-case-study">&lt;/p>
&lt;h2 id="about-kern-ai">About Kern AI&lt;/h2>
&lt;p>&lt;a href="https://kern.ai/" target="_blank" rel="noopener nofollow">Kern AI&lt;/a> specializes in data-centric AI. Originally an AI consulting firm, the team led by Co-Founder and CEO Johannes Hötter quickly realized that developers spend 80% of their time reviewing data instead of focusing on model development. This inefficiency significantly reduces the speed of development and adoption of AI. To tackle this challenge, Kern AI developed a low-code platform that enables developers to quickly analyze their datasets and identify outliers using vector search. This innovation led to enhanced data accuracy and streamlined workflows for the rapid deployment of AI applications.&lt;/p></description></item><item><title>Qdrant 1.11 - The Vector Stronghold: Optimizing Data Structures for Scale and Efficiency</title><link>https://qdrant.tech/blog/qdrant-1.11.x/</link><pubDate>Mon, 12 Aug 2024 00:00:00 -0800</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-1.11.x/</guid><description>&lt;p>&lt;a href="https://github.com/qdrant/qdrant/releases/tag/v1.11.0" target="_blank" rel="noopener nofollow">Qdrant 1.11.0 is out!&lt;/a> This release largely focuses on features that improve memory usage and optimize segments. However, there are a few cool minor features, so let&amp;rsquo;s look at the whole list:&lt;/p>
&lt;p>Optimized Data Structures:&lt;/br>
&lt;strong>Defragmentation:&lt;/strong> Storage for multitenant workloads is more optimized and scales better.&lt;/br>
&lt;strong>On-Disk Payload Index:&lt;/strong> Store less frequently used data on disk, rather than in RAM.&lt;/br>
&lt;strong>UUID for Payload Index:&lt;/strong> Additional data types for payload can result in big memory savings.&lt;/p></description></item><item><title>Kairoswealth &amp; Qdrant: Transforming Wealth Management with AI-Driven Insights and Scalable Vector Search</title><link>https://qdrant.tech/blog/case-study-kairoswealth/</link><pubDate>Wed, 10 Jul 2024 00:02:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-kairoswealth/</guid><description>&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-kairoswealth/image2.png" alt="Kairoswealth overview">&lt;/p>
&lt;h2 id="about-kairoswealth">&lt;strong>About Kairoswealth&lt;/strong>&lt;/h2>
&lt;p>&lt;a href="https://kairoswealth.com/" target="_blank" rel="noopener nofollow">Kairoswealth&lt;/a> is a comprehensive wealth management platform designed to provide users with a holistic view of their financial portfolio. The platform offers access to unique financial products and automates back-office operations through its AI assistant, Gaia.&lt;/p>
&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-kairoswealth/image3.png" alt="Dashboard Kairoswealth">&lt;/p>
&lt;h2 id="motivations-for-adopting-a-vector-database">&lt;strong>Motivations for Adopting a Vector Database&lt;/strong>&lt;/h2>
&lt;p>“At Kairoswealth we encountered several use cases necessitating the ability to run similarity queries on large datasets. Key applications included product recommendations and retrieval-augmented generation (RAG),” says &lt;a href="https://www.linkedin.com/in/vincent-teyssier/" target="_blank" rel="noopener nofollow">Vincent Teyssier&lt;/a>, Chief Technology &amp;amp; AI Officer at Kairoswealth. These needs drove the search for a more robust and scalable vector database solution.&lt;/p></description></item><item><title>Qdrant 1.10 - Universal Query, Built-in IDF &amp; ColBERT Support</title><link>https://qdrant.tech/blog/qdrant-1.10.x/</link><pubDate>Mon, 01 Jul 2024 00:00:00 -0800</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-1.10.x/</guid><description>&lt;p>&lt;a href="https://github.com/qdrant/qdrant/releases/tag/v1.10.0" target="_blank" rel="noopener nofollow">Qdrant 1.10.0 is out!&lt;/a> This version introduces some major changes, so let&amp;rsquo;s dive right in:&lt;/p>
&lt;p>&lt;strong>Universal Query API:&lt;/strong> All search APIs, including Hybrid Search, are now in one Query endpoint.&lt;/br>
&lt;strong>Built-in IDF:&lt;/strong> We added the IDF mechanism to Qdrant&amp;rsquo;s core search and indexing processes.&lt;/br>
&lt;strong>Multivector Support:&lt;/strong> Native support for late interaction ColBERT is accessible via Query API.&lt;/p>
&lt;h2 id="one-endpoint-for-all-queries">One Endpoint for All Queries&lt;/h2>
&lt;p>&lt;strong>Query API&lt;/strong> will consolidate all search APIs into a single request. Previously, you had to work outside of the API to combine different search requests. Now these approaches are reduced to parameters of a single request, so you can avoid merging individual results.&lt;/p></description></item><item><title>Community Highlights #1</title><link>https://qdrant.tech/blog/community-highlights-1/</link><pubDate>Thu, 20 Jun 2024 11:57:37 -0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/community-highlights-1/</guid><description>&lt;p>Welcome to the very first edition of Community Highlights, where we celebrate the most impactful contributions and achievements of our vector search community! 🎉&lt;/p>
&lt;h2 id="content-highlights-">Content Highlights 🚀&lt;/h2>
&lt;p>Here are some standout projects and articles from our community this past month. If you&amp;rsquo;re looking to learn more about vector search or build some great projects, we recommend you to check these guides:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://towardsdev.com/implementing-advanced-agentic-vector-search-a-comprehensive-guide-to-crewai-and-qdrant-ca214ca4d039" target="_blank" rel="noopener nofollow">Implementing Advanced Agentic Vector Search&lt;/a>: A Comprehensive Guide to CrewAI and Qdrant by &lt;a href="https://www.linkedin.com/in/kameshwara-pavan-kumar-mantha-91678b21/" target="_blank" rel="noopener nofollow">Pavan Kumar&lt;/a>&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Build Your Own RAG Using &lt;a href="https://www.youtube.com/watch?v=m_3q3XnLlTI" target="_blank" rel="noopener nofollow">Unstructured, Llama3 via Groq, Qdrant &amp;amp; LangChain&lt;/a> by &lt;a href="https://www.linkedin.com/in/sudarshan-koirala/" target="_blank" rel="noopener nofollow">Sudarshan Koirala&lt;/a>&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Qdrant filtering and &lt;a href="https://www.youtube.com/watch?v=iaXFggqqGD0" target="_blank" rel="noopener nofollow">self-querying retriever&lt;/a> retrieval with LangChain by &lt;a href="https://www.linkedin.com/in/infoslack/" target="_blank" rel="noopener nofollow">Daniel Romero&lt;/a>&lt;/strong>&lt;/li>
&lt;li>&lt;strong>RAG Evaluation with &lt;a href="https://superlinked.com/vectorhub/articles/retrieval-augmented-generation-eval-qdrant-arize" target="_blank" rel="noopener nofollow">Arize Phoenix&lt;/a> by &lt;a href="https://www.linkedin.com/in/atitaarora/" target="_blank" rel="noopener nofollow">Atita Arora&lt;/a>&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Building a Serverless Application with &lt;a href="https://medium.com/@benitomartin/building-a-serverless-application-with-aws-lambda-and-qdrant-for-semantic-search-ddb7646d4c2f" target="_blank" rel="noopener nofollow">AWS Lambda and Qdrant&lt;/a> for Semantic Search by &lt;a href="https://www.linkedin.com/in/benitomzh/" target="_blank" rel="noopener nofollow">Benito Martin&lt;/a>&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Production ready Secure and &lt;a href="https://towardsdev.com/production-ready-secure-and-powerful-ai-implementations-with-azure-services-671b68631212" target="_blank" rel="noopener nofollow">Powerful AI Implementations with Azure Services&lt;/a> by &lt;a href="https://www.linkedin.com/in/kameshwara-pavan-kumar-mantha-91678b21/" target="_blank" rel="noopener nofollow">Pavan Kumar&lt;/a>&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Building &lt;a href="https://medium.com/@joshmo_dev/building-agentic-rag-with-rust-openai-qdrant-d3a0bb85a267" target="_blank" rel="noopener nofollow">Agentic RAG with Rust, OpenAI &amp;amp; Qdrant&lt;/a> by &lt;a href="https://www.linkedin.com/in/joshua-mo-4146aa220/" target="_blank" rel="noopener nofollow">Joshua Mo&lt;/a>&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Qdrant &lt;a href="https://medium.com/@nickprock/qdrant-hybrid-search-under-the-hood-using-haystack-355841225ac6" target="_blank" rel="noopener nofollow">Hybrid Search&lt;/a> under the hood using Haystack by &lt;a href="https://www.linkedin.com/in/nicolaprocopio/" target="_blank" rel="noopener nofollow">Nicola Procopio&lt;/a>&lt;/strong>&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://medium.com/@datadrifters/llama-3-powered-voice-assistant-integrating-local-rag-with-qdrant-whisper-and-langchain-b4d075b00ac5" target="_blank" rel="noopener nofollow">Llama 3 Powered Voice Assistant&lt;/a>: Integrating Local RAG with Qdrant, Whisper, and LangChain by &lt;a href="https://medium.com/@datadrifters" target="_blank" rel="noopener nofollow">Datadrifters&lt;/a>&lt;/strong>&lt;/li>
&lt;li>&lt;strong>&lt;a href="https://medium.com/@vardhanam.daga/distributed-deployment-of-qdrant-cluster-with-sharding-replicas-e7923d483ebc" target="_blank" rel="noopener nofollow">Distributed deployment&lt;/a> of Qdrant cluster with sharding &amp;amp; replicas by &lt;a href="https://www.linkedin.com/in/vardhanam-daga/overlay/about-this-profile/" target="_blank" rel="noopener nofollow">Vardhanam Daga&lt;/a>&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Private &lt;a href="https://medium.com/aimpact-all-things-ai/building-private-healthcare-ai-assistant-for-clinics-using-qdrant-hybrid-cloud-jwt-rbac-dspy-and-089a772e08ae" target="_blank" rel="noopener nofollow">Healthcare AI Assistant&lt;/a> using Qdrant Hybrid Cloud, DSPy, and Groq by &lt;a href="https://www.linkedin.com/in/sachink1729/" target="_blank" rel="noopener nofollow">Sachin Khandewal&lt;/a>&lt;/strong>&lt;/li>
&lt;/ul>
&lt;h2 id="creator-of-the-month-">Creator of the Month 🌟&lt;/h2>
&lt;img src="https://qdrant.tech/blog/community-highlights-1/creator-of-the-month-pavan.png" alt="Picture of Pavan Kumar with over 6 content contributions for the Creator of the Month" style="width: 70%;" />
&lt;p>Congratulations to Pavan Kumar for being awarded &lt;strong>Creator of the Month!&lt;/strong> Check out what were Pavan&amp;rsquo;s most valuable contributions to the Qdrant vector search community this past month:&lt;/p></description></item><item><title>Response to CVE-2024-3829: Arbitrary file upload vulnerability</title><link>https://qdrant.tech/blog/cve-2024-3829-response/</link><pubDate>Mon, 10 Jun 2024 17:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/cve-2024-3829-response/</guid><description>&lt;h3 id="summary">Summary&lt;/h3>
&lt;p>A security vulnerability has been discovered in Qdrant affecting all versions
prior to v1.9, described in &lt;a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-3829" target="_blank" rel="noopener nofollow">CVE-2024-3829&lt;/a>.
The vulnerability allows an attacker to upload arbitrary files to the
filesystem, which can be used to gain remote code execution. This is a different but similar vulnerability to CVE-2024-2221, announced in April 2024.&lt;/p>
&lt;p>The vulnerability does not materially affect Qdrant cloud deployments, as that
filesystem is read-only and authentication is enabled by default. At worst,
the vulnerability could be used by an authenticated user to crash a cluster,
which is already possible, such as by uploading more vectors than can fit in RAM.&lt;/p></description></item><item><title>Qdrant Attains SOC 2 Type II Audit Report</title><link>https://qdrant.tech/blog/qdrant-soc2-type2-audit/</link><pubDate>Thu, 23 May 2024 20:26:20 -0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-soc2-type2-audit/</guid><description>&lt;p>At Qdrant, we are happy to announce the successful completion our the SOC 2 Type II Audit. This achievement underscores our unwavering commitment to upholding the highest standards of security, availability, and confidentiality for our services and our customers’ data.&lt;/p>
&lt;h2 id="soc-2-type-ii-what-is-it">SOC 2 Type II: What Is It?&lt;/h2>
&lt;p>SOC 2 Type II certification is an examination of an organization&amp;rsquo;s controls in reference to the American Institute of Certified Public Accountants &lt;a href="https://www.aicpa-cima.com/resources/download/2017-trust-services-criteria-with-revised-points-of-focus-2022" target="_blank" rel="noopener nofollow">(AICPA) Trust Services criteria&lt;/a>. It evaluates not only our written policies but also their practical implementation, ensuring alignment between our stated objectives and operational practices. Unlike Type I, which is a snapshot in time, Type II verifies over several months that the company has lived up to those controls. The report represents thorough auditing of our security procedures throughout this examination period: January 1, 2024 to April 7, 2024.&lt;/p></description></item><item><title>Introducing Qdrant Stars: Join Our Ambassador Program!</title><link>https://qdrant.tech/blog/qdrant-stars-announcement/</link><pubDate>Sun, 19 May 2024 11:57:37 -0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-stars-announcement/</guid><description>&lt;p>We&amp;rsquo;re excited to introduce &lt;strong>Qdrant Stars&lt;/strong>, our new ambassador program created to recognize and support Qdrant users making a strong impact in the AI and vector search space.&lt;/p>
&lt;p>Whether through innovative content, real-world applications tutorials, educational events, or engaging discussions, they are constantly making vector search more accessible and interesting to explore.&lt;/p>
&lt;h3 id="-say-hello-to-the-first-qdrant-stars">👋 Say hello to the first Qdrant Stars!&lt;/h3>
&lt;p>Our inaugural Qdrant Stars are a diverse and talented lineup who have shown exceptional dedication to our community. You might recognize some of their names:&lt;/p></description></item><item><title>Intel’s New CPU Powers Faster Vector Search</title><link>https://qdrant.tech/blog/qdrant-cpu-intel-benchmark/</link><pubDate>Fri, 10 May 2024 00:00:00 -0800</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-cpu-intel-benchmark/</guid><description>&lt;h4 id="new-generation-silicon-is-a-game-changer-for-aiml-applications">New generation silicon is a game-changer for AI/ML applications&lt;/h4>
&lt;p>&lt;img src="https://qdrant.tech/blog/qdrant-cpu-intel-benchmark/qdrant-cpu-intel-benchmark.png" alt="qdrant cpu intel benchmark report">&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>Intel’s 5th gen Xeon processor is made for enterprise-scale operations in vector space.&lt;/em>&lt;/p>
&lt;/blockquote>
&lt;p>Vector search is surging in popularity with institutional customers, and Intel is ready to support the emerging industry. Their latest generation CPU performed exceptionally with Qdrant, a leading vector database used for enterprise AI applications.&lt;/p>
&lt;p>Intel just released the latest Xeon processor (&lt;strong>codename: Emerald Rapids&lt;/strong>) for data centers, a market which is expected to grow to $45 billion. Emerald Rapids offers higher-performance computing and significant energy efficiency over previous generations. Compared to the 4th generation Sapphire Rapids, Emerald boosts AI inference performance by up to 42% and makes vector search 38% faster.&lt;/p></description></item><item><title>QSoC 2024: Announcing Our Interns!</title><link>https://qdrant.tech/blog/qsoc24-interns-announcement/</link><pubDate>Wed, 08 May 2024 16:44:22 -0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qsoc24-interns-announcement/</guid><description>&lt;p>We are excited to announce the interns selected for the inaugural Qdrant Summer of Code (QSoC) program! After receiving many impressive applications, we have chosen two talented individuals to work on the following projects:&lt;/p>
&lt;p>&lt;strong>&lt;a href="https://www.linkedin.com/in/j16n/" target="_blank" rel="noopener nofollow">Jishan Bhattacharya&lt;/a>: WASM-based Dimension Reduction Visualization&lt;/strong>&lt;/p>
&lt;p>Jishan will be implementing a dimension reduction algorithm in Rust, compiling it to WebAssembly (WASM), and integrating it with the Qdrant Web UI. This project aims to provide a more efficient and smoother visualization experience, enabling the handling of more data points and higher dimensions efficiently.&lt;/p></description></item><item><title>Semantic Cache: Accelerating AI with Lightning-Fast Data Retrieval</title><link>https://qdrant.tech/articles/semantic-cache-ai-data-retrieval/</link><pubDate>Tue, 07 May 2024 00:00:00 -0800</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/semantic-cache-ai-data-retrieval/</guid><description>&lt;h2 id="what-is-semantic-cache">What is Semantic Cache?&lt;/h2>
&lt;p>&lt;strong>Semantic cache&lt;/strong> is a method of retrieval optimization, where similar queries instantly retrieve the same appropriate response from a knowledge base.&lt;/p>
&lt;p>Semantic cache differs from traditional caching methods. In computing, &lt;strong>cache&lt;/strong> refers to high-speed memory that efficiently stores frequently accessed data. In the context of &lt;a href="https://qdrant.tech/articles/what-is-a-vector-database/">vector databases&lt;/a>, a &lt;strong>semantic cache&lt;/strong> improves AI application performance by storing previously retrieved results along with the conditions under which they were computed. This allows the application to reuse those results when the same or similar conditions occur again, rather than finding them from scratch.&lt;/p></description></item><item><title>Are You Vendor Locked?</title><link>https://qdrant.tech/blog/are-you-vendor-locked/</link><pubDate>Sun, 05 May 2024 00:00:00 -0800</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/are-you-vendor-locked/</guid><description>&lt;p>We all are.&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>“There is no use fighting it. Pick a vendor and go all in. Everything else is a mirage.”&lt;/em>
The last words of a seasoned IT professional&lt;/p>
&lt;/blockquote>
&lt;p>As long as we are using any product, our solution’s infrastructure will depend on its vendors. Many say that building custom infrastructure will hurt velocity. &lt;strong>Is this true in the age of AI?&lt;/strong>&lt;/p>
&lt;p>It depends on where your company is at. Most startups don’t survive more than five years, so putting too much effort into infrastructure is not the best use of their resources. You first need to survive and demonstrate product viability.&lt;/p></description></item><item><title>Visua and Qdrant: Vector Search in Computer Vision</title><link>https://qdrant.tech/blog/case-study-visua/</link><pubDate>Wed, 01 May 2024 00:02:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-visua/</guid><description>&lt;p>&lt;img src="https://qdrant.tech/blog/case-study-visua/image1.png" alt="visua/image1.png">&lt;/p>
&lt;p>For over a decade, &lt;a href="https://visua.com/" target="_blank" rel="noopener nofollow">VISUA&lt;/a> has been a leader in precise, high-volume computer vision data analysis, developing a robust platform that caters to a wide range of use cases, from startups to large enterprises. Starting with social media monitoring, where it excels in analyzing vast data volumes to detect company logos, VISUA has built a diverse ecosystem of customers, including names in social media monitoring, like &lt;strong>Brandwatch&lt;/strong>, cybersecurity like &lt;strong>Mimecast&lt;/strong>, trademark protection like &lt;strong>Ebay&lt;/strong> and several sports agencies like &lt;strong>Vision Insights&lt;/strong> for sponsorship evaluation.&lt;/p></description></item><item><title>Qdrant 1.9.0 - Heighten Your Security With Role-Based Access Control Support</title><link>https://qdrant.tech/blog/qdrant-1.9.x/</link><pubDate>Wed, 24 Apr 2024 00:00:00 -0800</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-1.9.x/</guid><description>&lt;p>&lt;a href="https://github.com/qdrant/qdrant/releases/tag/v1.9.0" target="_blank" rel="noopener nofollow">Qdrant 1.9.0 is out!&lt;/a> This version complements the release of our new managed product &lt;a href="https://qdrant.tech/hybrid-cloud/">Qdrant Hybrid Cloud&lt;/a> with key security features valuable to our enterprise customers, and all those looking to productionize large-scale Generative AI. &lt;strong>Data privacy, system stability and resource optimizations&lt;/strong> are always on our mind - so let&amp;rsquo;s see what&amp;rsquo;s new:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Granular access control:&lt;/strong> You can further specify access control levels by using JSON Web Tokens.&lt;/li>
&lt;li>&lt;strong>Optimized shard transfers:&lt;/strong> The synchronization of shards between nodes is now significantly faster!&lt;/li>
&lt;li>&lt;strong>Support for byte embeddings:&lt;/strong> Reduce the memory footprint of Qdrant with official &lt;code>uint8&lt;/code> support.&lt;/li>
&lt;/ul>
&lt;h2 id="new-access-control-options-via-json-web-tokens">New access control options via JSON Web Tokens&lt;/h2>
&lt;p>Historically, our API key supported basic read and write operations. However, recognizing the evolving needs of our user base, especially large organizations, we&amp;rsquo;ve implemented additional options for finer control over data access within internal environments.&lt;/p></description></item><item><title>Qdrant's Trusted Partners for Hybrid Cloud Deployment</title><link>https://qdrant.tech/blog/hybrid-cloud-launch-partners/</link><pubDate>Mon, 15 Apr 2024 00:02:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/hybrid-cloud-launch-partners/</guid><description>&lt;p>With the launch of &lt;a href="https://qdrant.tech/hybrid-cloud/">Qdrant Hybrid Cloud&lt;/a> we provide developers the ability to deploy Qdrant as a managed vector database in any desired environment, be it &lt;em>in the cloud, on premise, or on the edge&lt;/em>.&lt;/p>
&lt;p>We are excited to have trusted industry players support the launch of Qdrant Hybrid Cloud, allowing developers to unlock best-in-class advantages for building production-ready AI applications:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Deploy In Your Own Environment:&lt;/strong> Deploy the Qdrant vector database as a managed service on the infrastructure of choice, such as our launch partner solutions &lt;a href="https://blogs.oracle.com/cloud-infrastructure/post/qdrant-hybrid-cloud-now-available-oci-customers" target="_blank" rel="noopener nofollow">Oracle Cloud Infrastructure (OCI)&lt;/a>, &lt;a href="https://qdrant.tech/blog/hybrid-cloud-red-hat-openshift/">Red Hat OpenShift&lt;/a>, &lt;a href="https://qdrant.tech/blog/hybrid-cloud-vultr/">Vultr&lt;/a>, &lt;a href="https://qdrant.tech/blog/hybrid-cloud-digitalocean/">DigitalOcean&lt;/a>, &lt;a href="https://qdrant.tech/blog/hybrid-cloud-ovhcloud/">OVHcloud&lt;/a>, &lt;a href="https://qdrant.tech/blog/hybrid-cloud-scaleway/">Scaleway&lt;/a>, &lt;a href="https://qdrant.tech/documentation/hybrid-cloud/platform-deployment-options/#civo">Civo&lt;/a>, and &lt;a href="https://qdrant.tech/blog/hybrid-cloud-stackit/">STACKIT&lt;/a>.&lt;/p></description></item><item><title>Qdrant Hybrid Cloud: the First Managed Vector Database You Can Run Anywhere</title><link>https://qdrant.tech/blog/hybrid-cloud/</link><pubDate>Mon, 15 Apr 2024 00:01:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/hybrid-cloud/</guid><description>&lt;p>We are excited to announce the official launch of &lt;a href="https://qdrant.tech/hybrid-cloud/">Qdrant Hybrid Cloud&lt;/a> today, a significant leap forward in the field of vector search and enterprise AI. Rooted in our open-source origin, we are committed to offering our users and customers unparalleled control and sovereignty over their data and vector search workloads. Qdrant Hybrid Cloud stands as &lt;strong>the industry&amp;rsquo;s first managed vector database that can be deployed in any environment&lt;/strong> - be it cloud, on-premise, or the edge.&lt;/p></description></item><item><title>Advancements and Challenges in RAG Systems - Syed Asad | Vector Space Talks</title><link>https://qdrant.tech/blog/rag-advancements-challenges/</link><pubDate>Thu, 11 Apr 2024 22:25:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/rag-advancements-challenges/</guid><description>&lt;blockquote>
&lt;p>&lt;em>&amp;ldquo;The problem with many of the vector databases is that they work fine, they are scalable. This is common. The problem is that they are not easy to use. So that is why I always use Qdrant.”&lt;/em>&lt;br>
— Syed Asad&lt;/p>
&lt;/blockquote>
&lt;p>Syed Asad is an accomplished AI/ML Professional, specializing in LLM Operations and RAGs. With a focus on Image Processing and Massive Scale Vector Search Operations, he brings a wealth of expertise to the field. His dedication to advancing artificial intelligence and machine learning technologies has been instrumental in driving innovation and solving complex challenges. Syed continues to push the boundaries of AI/ML applications, contributing significantly to the ever-evolving landscape of the industry.&lt;/p></description></item><item><title>Building Search/RAG for an OpenAPI spec - Nick Khami | Vector Space Talks</title><link>https://qdrant.tech/blog/building-search-rag-open-api/</link><pubDate>Thu, 11 Apr 2024 22:23:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/building-search-rag-open-api/</guid><description>&lt;blockquote>
&lt;p>&lt;em>&amp;ldquo;It&amp;rsquo;s very, very simple to build search over an Open API specification with a tool like Trieve and Qdrant. I think really there&amp;rsquo;s something to highlight here and how awesome it is to work with a group based system if you&amp;rsquo;re using Qdrant.”&lt;/em>&lt;br>
— Nick Khami&lt;/p>
&lt;/blockquote>
&lt;p>Nick Khami, a seasoned full-stack engineer, has been deeply involved in the development of vector search and RAG applications since the inception of Qdrant v0.11.0 back in October 2022. His expertise and passion for innovation led him to establish Trieve, a company dedicated to facilitating businesses in embracing cutting-edge vector search and RAG technologies.&lt;/p></description></item><item><title>Iveta Lohovska on Gen AI and Vector Search | Qdrant</title><link>https://qdrant.tech/blog/gen-ai-and-vector-search/</link><pubDate>Thu, 11 Apr 2024 22:12:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/gen-ai-and-vector-search/</guid><description>&lt;h1 id="exploring-gen-ai-and-vector-search-insights-from-iveta-lohovska">Exploring Gen AI and Vector Search: Insights from Iveta Lohovska&lt;/h1>
&lt;blockquote>
&lt;p>&lt;em>&amp;ldquo;In the generative AI context of AI, all foundational models have been trained on some foundational data sets that are distributed in different ways. Some are very conversational, some are very technical, some are on, let&amp;rsquo;s say very strict taxonomy like healthcare or chemical structures. We call them modalities, and they have different representations.”&lt;/em>&lt;br>
— Iveta Lohovska&lt;/p>
&lt;/blockquote>
&lt;p>Iveta Lohovska serves as the Chief Technologist and Principal Data Scientist for AI and Supercomputing at &lt;a href="https://www.hpe.com/us/en/home.html" target="_blank" rel="noopener nofollow">Hewlett Packard Enterprise (HPE)&lt;/a>, where she champions the democratization of decision intelligence and the development of ethical AI solutions. An industry leader, her multifaceted expertise encompasses natural language processing, computer vision, and data mining. Committed to leveraging technology for societal benefit, Iveta is a distinguished technical advisor to the United Nations&amp;rsquo; AI for Good program and a Data Science lecturer at the Vienna University of Applied Sciences. Her career also includes impactful roles with the World Bank Group, focusing on open data initiatives and Sustainable Development Goals (SDGs), as well as collaborations with USAID and the Gates Foundation.&lt;/p></description></item><item><title>Teaching Vector Databases at Scale - Alfredo Deza | Vector Space Talks</title><link>https://qdrant.tech/blog/teaching-vector-db-at-scale/</link><pubDate>Tue, 09 Apr 2024 03:06:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/teaching-vector-db-at-scale/</guid><description>&lt;blockquote>
&lt;p>&lt;em>&amp;ldquo;So usually I get asked, why are you using Qdrant? What&amp;rsquo;s the big deal? Why are you picking these over all of the other ones? And to me it boils down to, aside from being renowned or recognized, that it works fairly well. There&amp;rsquo;s one core component that is critical here, and that is it has to be very straightforward, very easy to set up so that I can teach it, because if it&amp;rsquo;s easy, well, sort of like easy to or straightforward to teach, then you can take the next step and you can make it a little more complex, put other things around it, and that creates a great development experience and a learning experience as well.”&lt;/em>&lt;br>
— Alfredo Deza&lt;/p></description></item><item><title>How to meow on the long tail with Cheshire Cat AI? - Piero and Nicola | Vector Space Talks</title><link>https://qdrant.tech/blog/meow-with-cheshire-cat/</link><pubDate>Tue, 09 Apr 2024 03:05:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/meow-with-cheshire-cat/</guid><description>&lt;blockquote>
&lt;p>&lt;em>&amp;ldquo;We love Qdrant! It is our default DB. We support it in three different forms, file based, container based, and cloud based as well.”&lt;/em>&lt;br>
— Piero Savastano&lt;/p>
&lt;/blockquote>
&lt;p>Piero Savastano is the Founder and Maintainer of the open-source project, Cheshire Cat AI. He started in Deep Learning pure research. He wrote his first neural network from scratch at the age of 19. After a period as a researcher at La Sapienza and CNR, he provides international consulting, training, and mentoring services in the field of machine and deep learning. He spreads Artificial Intelligence awareness on YouTube and TikTok.&lt;/p></description></item><item><title>Response to CVE-2024-2221: Arbitrary file upload vulnerability</title><link>https://qdrant.tech/blog/cve-2024-2221-response/</link><pubDate>Fri, 05 Apr 2024 13:00:00 -0700</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/cve-2024-2221-response/</guid><description>&lt;h3 id="summary">Summary&lt;/h3>
&lt;p>A security vulnerability has been discovered in Qdrant affecting all versions
prior to v1.9, described in &lt;a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-2221" target="_blank" rel="noopener nofollow">CVE-2024-2221&lt;/a>.
The vulnerability allows an attacker to upload arbitrary files to the
filesystem, which can be used to gain remote code execution.&lt;/p>
&lt;p>The vulnerability does not materially affect Qdrant cloud deployments, as that
filesystem is read-only and authentication is enabled by default. At worst,
the vulnerability could be used by an authenticated user to crash a cluster,
which is already possible, such as by uploading more vectors than can fit in RAM.&lt;/p></description></item><item><title>Introducing FastLLM: Qdrant’s Revolutionary LLM</title><link>https://qdrant.tech/blog/fastllm-announcement/</link><pubDate>Mon, 01 Apr 2024 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/fastllm-announcement/</guid><description>&lt;p>Today, we&amp;rsquo;re happy to announce that &lt;strong>FastLLM (FLLM)&lt;/strong>, our lightweight Language Model tailored specifically for Retrieval Augmented Generation (RAG) use cases, has officially entered Early Access!&lt;/p>
&lt;p>Developed to seamlessly integrate with Qdrant, &lt;strong>FastLLM&lt;/strong> represents a significant leap forward in AI-driven content generation. Up to this point, LLM’s could only handle up to a few million tokens.&lt;/p>
&lt;p>&lt;strong>As of today, FLLM offers a context window of 1 billion tokens.&lt;/strong>&lt;/p>
&lt;p>However, what sets FastLLM apart is its optimized architecture, making it the ideal choice for RAG applications. With minimal effort, you can combine FastLLM and Qdrant to launch applications that process vast amounts of data. Leveraging the power of Qdrant&amp;rsquo;s scalability features, FastLLM promises to revolutionize how enterprise AI applications generate and retrieve content at massive scale.&lt;/p></description></item><item><title>VirtualBrain: Best RAG to unleash the real power of AI - Guillaume Marquis | Vector Space Talks</title><link>https://qdrant.tech/blog/virtualbrain-best-rag/</link><pubDate>Wed, 27 Mar 2024 12:41:51 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/virtualbrain-best-rag/</guid><description>&lt;blockquote>
&lt;p>&lt;em>&amp;ldquo;It&amp;rsquo;s like mandatory to have a vector database that is scalable, that is fast, that has low latencies, that can under parallel request a large amount of requests. So you have really this need and Qdrant was like an obvious choice.”&lt;/em>&lt;br>
— Guillaume Marquis&lt;/p>
&lt;/blockquote>
&lt;p>Guillaume Marquis, a dedicated Engineer and AI enthusiast, serves as the Chief Technology Officer and Co-Founder of VirtualBrain, an innovative AI company. He is committed to exploring novel approaches to integrating artificial intelligence into everyday life, driven by a passion for advancing the field and its applications.&lt;/p></description></item><item><title>Talk with YouTube without paying a cent - Francesco Saverio Zuppichini | Vector Space Talks</title><link>https://qdrant.tech/blog/youtube-without-paying-cent/</link><pubDate>Wed, 27 Mar 2024 12:37:55 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/youtube-without-paying-cent/</guid><description>&lt;blockquote>
&lt;p>&lt;em>&amp;ldquo;Now I do believe that Qdrant, I&amp;rsquo;m not sponsored by Qdrant, but I do believe it&amp;rsquo;s the best one for a couple of reasons. And we&amp;rsquo;re going to see them mostly because I can just run it on my computer so it&amp;rsquo;s full private and I&amp;rsquo;m in charge of my data.”&lt;/em>&lt;br>
&amp;ndash; Francesco Saverio Zuppichini&lt;/p>
&lt;/blockquote>
&lt;p>Francesco Saverio Zuppichini is a Senior Full Stack Machine Learning Engineer at Zurich Insurance with experience in both large corporations and startups of various sizes. He is passionate about sharing knowledge, and building communities, and is known as a skilled practitioner in computer vision. He is proud of the community he built because of all the amazing people he got to know.&lt;/p></description></item><item><title>Qdrant is Now Available on Azure Marketplace!</title><link>https://qdrant.tech/blog/azure-marketplace/</link><pubDate>Tue, 26 Mar 2024 10:30:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/azure-marketplace/</guid><description>&lt;p>We&amp;rsquo;re thrilled to announce that Qdrant is now &lt;a href="https://azuremarketplace.microsoft.com/en-en/marketplace/apps/qdrantsolutionsgmbh1698769709989.qdrant-db" target="_blank" rel="noopener nofollow">officially available on Azure Marketplace&lt;/a>, bringing enterprise-level vector search directly to Azure&amp;rsquo;s vast community of users. This integration marks a significant milestone in our journey to make Qdrant more accessible and convenient for businesses worldwide.&lt;/p>
&lt;blockquote>
&lt;p>&lt;em>With the landscape of AI being complex for most customers, Qdrant&amp;rsquo;s ease of use provides an easy approach for customers&amp;rsquo; implementation of RAG patterns for Generative AI solutions and additional choices in selecting AI components on Azure,&lt;/em> - Tara Walker, Principal Software Engineer at Microsoft.&lt;/p></description></item><item><title>Production-scale RAG for Real-Time News Distillation - Robert Caulk | Vector Space Talks</title><link>https://qdrant.tech/blog/real-time-news-distillation-rag/</link><pubDate>Mon, 25 Mar 2024 08:49:22 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/real-time-news-distillation-rag/</guid><description>&lt;blockquote>
&lt;p>&lt;em>&amp;ldquo;We&amp;rsquo;ve got a lot of fun challenges ahead of us in the industry, I think, and the industry is establishing best practices. Like you said, everybody&amp;rsquo;s just trying to figure out what&amp;rsquo;s going on. And some of these base layer tools like Qdrant really enable products and enable companies and they enable us.”&lt;/em>&lt;br>
&amp;ndash; Robert Caulk&lt;/p>
&lt;/blockquote>
&lt;p>Robert, Founder of Emergent Methods is a scientist by trade, dedicating his career to a variety of open-source projects that range from large-scale artificial intelligence to discrete element modeling. He is currently working with a team at Emergent Methods to adaptively model over 1 million news articles per day, with a goal of reducing media bias and improving news awareness.&lt;/p></description></item><item><title>Insight Generation Platform for LifeScience Corporation - Hooman Sedghamiz | Vector Space Talks</title><link>https://qdrant.tech/blog/insight-generation-platform/</link><pubDate>Mon, 25 Mar 2024 08:46:28 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/insight-generation-platform/</guid><description>&lt;blockquote>
&lt;p>&lt;em>&amp;ldquo;There is this really great vector db comparison that came out recently. I saw there are like maybe more than 40 vector stores in 2024. When we started back in 2023, there were only a few. What I see, which is really lacking in this pipeline of retrieval augmented generation is major innovation around data pipeline.”&lt;/em>&lt;br>
&amp;ndash; Hooman Sedghamiz&lt;/p>
&lt;/blockquote>
&lt;p>Hooman Sedghamiz, Sr. Director AI/ML - Insights at Bayer AG is a distinguished figure in AI and ML in the life sciences field. With years of experience, he has led teams and projects that have greatly advanced medical products, including implantable and wearable devices. Notably, he served as the Generative AI product owner and Senior Director at Bayer Pharmaceuticals, where he played a pivotal role in developing a GPT-based central platform for precision medicine.&lt;/p></description></item><item><title>The challenges in using LLM-as-a-Judge - Sourabh Agrawal | Vector Space Talks</title><link>https://qdrant.tech/blog/llm-as-a-judge/</link><pubDate>Tue, 19 Mar 2024 15:05:02 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/llm-as-a-judge/</guid><description>&lt;blockquote>
&lt;p>&amp;ldquo;&lt;em>You don&amp;rsquo;t want to use an expensive model like GPT 4 for evaluation, because then the cost adds up and it does not work out. If you are spending more on evaluating the responses, you might as well just do something else, like have a human to generate the responses.&lt;/em>”&lt;br>
&amp;ndash; Sourabh Agrawal&lt;/p>
&lt;/blockquote>
&lt;p>Sourabh Agrawal, CEO &amp;amp; Co-Founder at UpTrain AI is a seasoned entrepreneur and AI/ML expert with a diverse background. He began his career at Goldman Sachs, where he developed machine learning models for financial markets. Later, he contributed to the autonomous driving team at Bosch/Mercedes, focusing on computer vision modules for scene understanding. In 2020, Sourabh ventured into entrepreneurship, founding an AI-powered fitness startup that gained over 150,000 users. Throughout his career, he encountered challenges in evaluating AI models, particularly Generative AI models. To address this issue, Sourabh is developing UpTrain, an open-source LLMOps tool designed to evaluate, test, and monitor LLM applications. UpTrain provides scores and offers insights to enhance LLM applications by performing root-cause analysis, identifying common patterns among failures, and providing automated suggestions for resolution.&lt;/p></description></item><item><title>Vector Search for Content-Based Video Recommendation - Gladys and Samuel from Dailymotion</title><link>https://qdrant.tech/blog/vector-search-vector-recommendation/</link><pubDate>Tue, 19 Mar 2024 14:08:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/vector-search-vector-recommendation/</guid><description>&lt;blockquote>
&lt;p>&amp;ldquo;&lt;em>The vector search engine that we chose is Qdrant, but why did we choose it? Actually, it answers all the load constraints and the technical needs that we had. It allows us to do a fast neighbor search. It has a python API which matches the recommender tag that we have.&lt;/em>”&lt;br>
&amp;ndash; Gladys Roch&lt;/p>
&lt;/blockquote>
&lt;p>Gladys Roch is a French Machine Learning Engineer at Dailymotion working on recommender systems for video content.&lt;/p></description></item><item><title>Integrating Qdrant and LangChain for Advanced Vector Similarity Search</title><link>https://qdrant.tech/blog/using-qdrant-and-langchain/</link><pubDate>Tue, 12 Mar 2024 09:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/using-qdrant-and-langchain/</guid><description>&lt;blockquote>
&lt;p>&lt;em>&amp;ldquo;Building AI applications doesn&amp;rsquo;t have to be complicated. You can leverage pre-trained models and support complex pipelines with a few lines of code. LangChain provides a unified interface, so that you can avoid writing boilerplate code and focus on the value you want to bring.&amp;rdquo;&lt;/em> Kacper Lukawski, Developer Advocate, Qdrant&lt;/p>
&lt;/blockquote>
&lt;h2 id="long-term-memory-for-your-genai-app">Long-Term Memory for Your GenAI App&lt;/h2>
&lt;p>Qdrant&amp;rsquo;s vector database quickly grew due to its ability to make Generative AI more effective. On its own, an LLM can be used to build a process-altering invention. With Qdrant, you can turn this invention into a production-level app that brings real business value.&lt;/p></description></item><item><title>IrisAgent and Qdrant: Redefining Customer Support with AI</title><link>https://qdrant.tech/blog/iris-agent-qdrant/</link><pubDate>Wed, 06 Mar 2024 07:45:34 -0800</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/iris-agent-qdrant/</guid><description>&lt;p>Artificial intelligence is evolving customer support, offering unprecedented capabilities for automating interactions, understanding user needs, and enhancing the overall customer experience. &lt;a href="https://irisagent.com/" target="_blank" rel="noopener nofollow">IrisAgent&lt;/a>, founded by former Google product manager &lt;a href="https://www.linkedin.com/in/palakdalal/" target="_blank" rel="noopener nofollow">Palak Dalal Bhatia&lt;/a>, demonstrates the concrete impact of AI on customer support with its AI-powered customer support automation platform.&lt;/p>
&lt;p>Bhatia describes IrisAgent as “the system of intelligence which sits on top of existing systems of records like support tickets, engineering bugs, sales data, or product data,” with the main objective of leveraging AI and generative AI, to automatically detect the intent and tags behind customer support tickets, reply to a large number of support tickets chats improve the time to resolution and increase the deflection rate of support teams. Ultimately, IrisAgent enables support teams to more with less and be more effective in helping customers.&lt;/p></description></item><item><title>Dailymotion's Journey to Crafting the Ultimate Content-Driven Video Recommendation Engine with Qdrant Vector Search</title><link>https://qdrant.tech/blog/case-study-dailymotion/</link><pubDate>Tue, 27 Feb 2024 13:22:31 +0100</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-dailymotion/</guid><description>&lt;h2 id="dailymotions-journey-to-crafting-the-ultimate-content-driven-video-recommendation-engine-with-qdrant-vector-search">Dailymotion&amp;rsquo;s Journey to Crafting the Ultimate Content-Driven Video Recommendation Engine with Qdrant Vector Search&lt;/h2>
&lt;p>In today&amp;rsquo;s digital age, the consumption of video content has become ubiquitous, with an overwhelming abundance of options available at our fingertips. However, amidst this vast sea of videos, the challenge lies not in finding content, but in discovering the content that truly resonates with individual preferences and interests and yet is diverse enough to not throw users into their own filter bubble. As viewers, we seek meaningful and relevant videos that enrich our experiences, provoke thought, and spark inspiration.&lt;/p></description></item><item><title>Qdrant vs Pinecone: Vector Databases for AI Apps</title><link>https://qdrant.tech/blog/comparing-qdrant-vs-pinecone-vector-databases/</link><pubDate>Sun, 25 Feb 2024 00:00:00 -0800</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/comparing-qdrant-vs-pinecone-vector-databases/</guid><description>&lt;h1 id="qdrant-vs-pinecone-an-analysis-of-vector-databases-for-ai-applications">Qdrant vs Pinecone: An Analysis of Vector Databases for AI Applications&lt;/h1>
&lt;p>Data forms the foundation upon which AI applications are built. Data can exist in both structured and unstructured formats. Structured data typically has well-defined schemas or inherent relationships. However, unstructured data, such as text, image, audio, or video, must first be converted into numerical representations known as &lt;a href="https://qdrant.tech/articles/what-are-embeddings/" target="_blank" rel="noopener nofollow">vector embeddings&lt;/a>. These embeddings encapsulate the semantic meaning or features of unstructured data and are in the form of high-dimensional vectors.&lt;/p></description></item><item><title>What is Vector Similarity? Understanding its Role in AI Applications.</title><link>https://qdrant.tech/blog/what-is-vector-similarity/</link><pubDate>Sat, 24 Feb 2024 00:00:00 -0800</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/what-is-vector-similarity/</guid><description>&lt;h1 id="understanding-vector-similarity-powering-next-gen-ai-applications">Understanding Vector Similarity: Powering Next-Gen AI Applications&lt;/h1>
&lt;p>A core function of a wide range of AI applications is to first understand the &lt;em>meaning&lt;/em> behind a user query, and then provide &lt;em>relevant&lt;/em> answers to the questions that the user is asking. With increasingly advanced interfaces and applications, this query can be in the form of language, or an image, an audio, video, or other forms of &lt;em>unstructured&lt;/em> data.&lt;/p>
&lt;p>On an ecommerce platform, a user can, for instance, try to find ‘clothing for a trek’, when they actually want results around ‘waterproof jackets’, or ‘winter socks’. Keyword, or full-text, or even synonym search would fail to provide any response to such a query. Similarly, on a music app, a user might be looking for songs that sound similar to an audio clip they have heard. Or, they might want to look up furniture that has a similar look as the one they saw on a trip.&lt;/p></description></item><item><title>DSPy vs LangChain: A Comprehensive Framework Comparison</title><link>https://qdrant.tech/blog/dspy-vs-langchain/</link><pubDate>Fri, 23 Feb 2024 08:00:00 -0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/dspy-vs-langchain/</guid><description>&lt;h1 id="the-evolving-landscape-of-ai-frameworks">The Evolving Landscape of AI Frameworks&lt;/h1>
&lt;p>As Large Language Models (LLMs) and vector stores have become steadily more powerful, a new generation of frameworks has appeared which can streamline the development of AI applications by leveraging LLMs and vector search technology. These frameworks simplify the process of building everything from Retrieval Augmented Generation (RAG) applications to complex chatbots with advanced conversational abilities, and even sophisticated reasoning-driven AI applications.&lt;/p>
&lt;p>The most well-known of these frameworks is possibly &lt;a href="https://github.com/langchain-ai/langchain" target="_blank" rel="noopener nofollow">LangChain&lt;/a>. &lt;a href="https://en.wikipedia.org/wiki/LangChain" target="_blank" rel="noopener nofollow">Launched in October 2022&lt;/a> as an open-source project by Harrison Chase, the project quickly gained popularity, attracting contributions from hundreds of developers on GitHub. LangChain excels in its broad support for documents, data sources, and APIs. This, along with seamless integration with vector stores like Qdrant and the ability to chain multiple LLMs, has allowed developers to build complex AI applications without reinventing the wheel.&lt;/p></description></item><item><title>Qdrant Summer of Code 24</title><link>https://qdrant.tech/blog/qdrant-summer-of-code-24/</link><pubDate>Wed, 21 Feb 2024 00:39:53 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-summer-of-code-24/</guid><description>&lt;p>Google Summer of Code (#GSoC) is celebrating its 20th anniversary this year with the 2024 program. Over the past 20 years, 19K new contributors were introduced to #opensource through the program under the guidance of thousands of mentors from over 800 open-source organizations in various fields. Qdrant participated successfully in the program last year. Both projects, the UI Dashboard with unstructured data visualization and the advanced Geo Filtering, were completed in time and are now a part of the engine. One of the two young contributors joined the team and continues working on the project.&lt;/p></description></item><item><title>Dust and Qdrant: Using AI to Unlock Company Knowledge and Drive Employee Productivity</title><link>https://qdrant.tech/blog/dust-and-qdrant/</link><pubDate>Tue, 06 Feb 2024 07:03:26 -0800</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/dust-and-qdrant/</guid><description>&lt;p>One of the major promises of artificial intelligence is its potential to
accelerate efficiency and productivity within businesses, empowering employees
and teams in their daily tasks. The French company &lt;a href="https://dust.tt/" target="_blank" rel="noopener nofollow">Dust&lt;/a>, co-founded by former
Open AI Research Engineer &lt;a href="https://www.linkedin.com/in/spolu/" target="_blank" rel="noopener nofollow">Stanislas Polu&lt;/a>, set out to deliver on this promise by
providing businesses and teams with an expansive platform for building
customizable and secure AI assistants.&lt;/p>
&lt;h2 id="challenge">Challenge&lt;/h2>
&lt;p>&amp;ldquo;The past year has shown that large language models (LLMs) are very useful but
complicated to deploy,&amp;rdquo; Polu says, especially in the context of their
application across business functions. This is why he believes that the goal of
augmenting human productivity at scale is especially a product unlock and not
only a research unlock, with the goal to identify the best way for companies to
leverage these models. Therefore, Dust is creating a product that sits between
humans and the large language models, with the focus on supporting the work of
a team within the company to ultimately enhance employee productivity.&lt;/p></description></item><item><title>The Bitter Lesson of Retrieval in Generative Language Model Workflows - Mikko Lehtimäki | Vector Space Talks</title><link>https://qdrant.tech/blog/bitter-lesson-generative-language-model/</link><pubDate>Mon, 29 Jan 2024 16:31:02 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/bitter-lesson-generative-language-model/</guid><description>&lt;blockquote>
&lt;p>&lt;em>&amp;ldquo;If you haven&amp;rsquo;t heard of the bitter lesson, it&amp;rsquo;s actually a theorem. It&amp;rsquo;s based on a blog post by Ricard Sutton, and it states basically that based on what we have learned from the development of machine learning and artificial intelligence systems in the previous decades, the methods that can leverage data and compute tends to or will eventually outperform the methods that are designed or handcrafted by humans.”&lt;/em>&lt;br>
&amp;ndash; Mikko Lehtimäki&lt;/p></description></item><item><title>Indexify Unveiled - Diptanu Gon Choudhury | Vector Space Talks</title><link>https://qdrant.tech/blog/indexify-content-extraction-engine/</link><pubDate>Fri, 26 Jan 2024 16:40:55 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/indexify-content-extraction-engine/</guid><description>&lt;blockquote>
&lt;p>&lt;em>&amp;ldquo;We have something like Qdrant, which is very geared towards doing Vector search. And so we understand the shape of the storage system now.”&lt;/em>&lt;br>
— Diptanu Gon Choudhury&lt;/p>
&lt;/blockquote>
&lt;p>Diptanu Gon Choudhury is the founder of Tensorlake. They are building Indexify - an open-source scalable structured extraction engine for unstructured data to build near-real-time knowledgebase for AI/agent-driven workflows and query engines. Before building Indexify, Diptanu created the Nomad cluster scheduler at Hashicorp, inventor of the Titan/Titus cluster scheduler at Netflix, led the FBLearner machine learning platform, and built the real-time speech inference engine at Facebook.&lt;/p></description></item><item><title>Unlocking AI Potential: Insights from Stanislas Polu</title><link>https://qdrant.tech/blog/qdrant-x-dust-vector-search/</link><pubDate>Fri, 26 Jan 2024 16:22:37 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-x-dust-vector-search/</guid><description>&lt;h1 id="qdrant-x-dust-how-vector-search-helps-make-work-better-with-stanislas-polu">Qdrant x Dust: How Vector Search Helps Make Work Better with Stanislas Polu&lt;/h1>
&lt;blockquote>
&lt;p>&lt;em>&amp;ldquo;We ultimately chose Qdrant due to its open-source nature, strong performance, being written in Rust, comprehensive documentation, and the feeling of control.”&lt;/em>&lt;br>
&amp;ndash; Stanislas Polu&lt;/p>
&lt;/blockquote>
&lt;p>Stanislas Polu is the Co-Founder and an Engineer at Dust. He had previously sold a company to Stripe and spent 5 years there, seeing them grow from 80 to 3000 people. Then pivoted to research at OpenAI on large language models and mathematical reasoning capabilities. He started Dust 6 months ago to make work work better with LLMs.&lt;/p></description></item><item><title>Announcing Qdrant's $28M Series A Funding Round</title><link>https://qdrant.tech/blog/series-a-funding-round/</link><pubDate>Tue, 23 Jan 2024 09:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/series-a-funding-round/</guid><description>&lt;p>Today, we are excited to announce our $28M Series A funding round, which is led by Spark Capital with participation from our existing investors Unusual Ventures and 42CAP.&lt;/p>
&lt;p>We have seen incredible user growth and support from our open-source community in the past two years - recently exceeding 5M downloads. This is a testament to our mission to build the most efficient, scalable, high-performance vector database on the market. We are excited to further accelerate this trajectory with our new partner and investor, Spark Capital, and the continued support of Unusual Ventures and 42CAP. This partnership uniquely positions us to empower enterprises with cutting edge vector search technology to build truly differentiating, next-gen AI applications at scale.&lt;/p></description></item><item><title>Introducing Qdrant Cloud on Microsoft Azure</title><link>https://qdrant.tech/blog/qdrant-cloud-on-microsoft-azure/</link><pubDate>Wed, 17 Jan 2024 08:40:42 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-cloud-on-microsoft-azure/</guid><description>&lt;p>Great news! We&amp;rsquo;ve expanded Qdrant&amp;rsquo;s managed vector database offering — &lt;a href="https://cloud.qdrant.io/" target="_blank" rel="noopener nofollow">Qdrant Cloud&lt;/a> — to be available on Microsoft Azure.
You can now effortlessly set up your environment on Azure, which reduces deployment time, so you can hit the ground running.&lt;/p>
&lt;p>&lt;a href="https://cloud.qdrant.io/" target="_blank" rel="noopener nofollow">Get started&lt;/a>&lt;/p>
&lt;p>What this means for you:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Rapid application development&lt;/strong>: Deploy your own cluster through the Qdrant Cloud Console within seconds and scale your resources as needed.&lt;/li>
&lt;li>&lt;strong>Billion vector scale&lt;/strong>: Seamlessly grow and handle large-scale datasets with billions of vectors. Leverage Qdrant features like horizontal scaling and binary quantization with Microsoft Azure&amp;rsquo;s scalable infrastructure.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>&amp;ldquo;With Qdrant, we found the missing piece to develop our own provider independent multimodal generative AI platform at enterprise scale.&amp;rdquo;&lt;/strong> &amp;ndash; Jeremy Teichmann (AI Squad Technical Lead &amp;amp; Generative AI Expert), Daly Singh (AI Squad Lead &amp;amp; Product Owner) - Bosch Digital.&lt;/p></description></item><item><title>Qdrant Updated Benchmarks 2024</title><link>https://qdrant.tech/blog/qdrant-benchmarks-2024/</link><pubDate>Mon, 15 Jan 2024 09:29:33 -0300</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-benchmarks-2024/</guid><description>&lt;p>It&amp;rsquo;s time for an update to Qdrant&amp;rsquo;s benchmarks!&lt;/p>
&lt;p>We&amp;rsquo;ve compared how Qdrant performs against the other vector search engines to give you a thorough performance analysis. Let&amp;rsquo;s get into what&amp;rsquo;s new and what remains the same in our approach.&lt;/p>
&lt;h3 id="whats-changed">What&amp;rsquo;s Changed?&lt;/h3>
&lt;h4 id="all-engines-have-improved">All engines have improved&lt;/h4>
&lt;p>Since the last time we ran our benchmarks, we received a bunch of suggestions on how to run other engines more efficiently, and we applied them.&lt;/p></description></item><item><title>Navigating challenges and innovations in search technologies</title><link>https://qdrant.tech/blog/navigating-challenges-innovations/</link><pubDate>Fri, 12 Jan 2024 15:39:53 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/navigating-challenges-innovations/</guid><description>&lt;h2 id="navigating-challenges-and-innovations-in-search-technologies">Navigating challenges and innovations in search technologies&lt;/h2>
&lt;p>We participated in a &lt;a href="#podcast-discussion-recap">podcast&lt;/a> on search technologies, specifically with retrieval-augmented generation (RAG) in language models.&lt;/p>
&lt;p>RAG is a cutting-edge approach in natural language processing (NLP). It uses information retrieval and language generation models. We describe how it can enhance what AI can do to understand, retrieve, and generate human-like text.&lt;/p>
&lt;h3 id="more-about-rag">More about RAG&lt;/h3>
&lt;p>Think of RAG as a system that finds relevant knowledge from a vast database. It takes your query, finds the best available information, and then provides an answer.&lt;/p></description></item><item><title>Optimizing an Open Source Vector Database with Andrey Vasnetsov</title><link>https://qdrant.tech/blog/open-source-vector-search-engine-vector-database/</link><pubDate>Wed, 10 Jan 2024 16:04:57 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/open-source-vector-search-engine-vector-database/</guid><description>&lt;h1 id="optimizing-open-source-vector-search-strategies-from-andrey-vasnetsov-at-qdrant">Optimizing Open Source Vector Search: Strategies from Andrey Vasnetsov at Qdrant&lt;/h1>
&lt;blockquote>
&lt;p>&lt;em>&amp;ldquo;For systems like Qdrant, scalability and performance in my opinion, is much more important than transactional consistency, so it should be treated as a search engine rather than database.&amp;rdquo;&lt;/em>&lt;br>
&amp;ndash; Andrey Vasnetsov&lt;/p>
&lt;/blockquote>
&lt;p>Discussing core differences between search engines and databases, Andrey underlined the importance of application needs and scalability in database selection for vector search tasks.&lt;/p>
&lt;p>Andrey Vasnetsov, CTO at Qdrant is an enthusiast of &lt;a href="https://qdrant.tech/" target="_blank" rel="noopener nofollow">Open Source&lt;/a>, machine learning, and vector search. He works on Open Source projects related to &lt;a href="https://qdrant.tech/articles/vector-similarity-beyond-search/" target="_blank" rel="noopener nofollow">Vector Similarity Search&lt;/a> and Similarity Learning. He prefers practical over theoretical, working demo over arXiv paper.&lt;/p></description></item><item><title>Vector Search Complexities: Insights from Projects in Image Search and RAG - Noé Achache | Vector Space Talks</title><link>https://qdrant.tech/blog/vector-image-search-rag/</link><pubDate>Tue, 09 Jan 2024 13:51:26 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/vector-image-search-rag/</guid><description>&lt;blockquote>
&lt;p>&lt;em>&amp;ldquo;I really think it&amp;rsquo;s something the technology is ready for and would really help this kind of embedding model jumping onto the text search projects.”&lt;/em>&lt;br>
&amp;ndash; Noé Achache on the future of image embedding&lt;/p>
&lt;/blockquote>
&lt;p>Exploring the depths of vector search? Want an analysis of its application in image search and document retrieval? Noé got you covered.&lt;/p>
&lt;p>Noé Achache is a Lead Data Scientist at Sicara, where he worked on a wide range of projects mostly related to computer vision, prediction with structured data, and more recently LLMs.&lt;/p></description></item><item><title>How to Superpower Your Semantic Search Using a Vector Database Vector Space Talks</title><link>https://qdrant.tech/blog/semantic-search-vector-database/</link><pubDate>Tue, 09 Jan 2024 12:27:18 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/semantic-search-vector-database/</guid><description>&lt;h1 id="how-to-superpower-your-semantic-search-using-a-vector-database-with-nicolas-mauti">How to Superpower Your Semantic Search Using a Vector Database with Nicolas Mauti&lt;/h1>
&lt;blockquote>
&lt;p>&lt;em>&amp;ldquo;We found a trade off between performance and precision in Qdrant’s that were better for us than what we can found on Elasticsearch.”&lt;/em>&lt;br>
&amp;ndash; Nicolas Mauti&lt;/p>
&lt;/blockquote>
&lt;p>Want precision &amp;amp; performance in freelancer search? Malt&amp;rsquo;s move to the Qdrant database is a masterstroke, offering geospatial filtering &amp;amp; seamless scaling. How did Nicolas Mauti and the team at Malt identify the need to transition to a retriever-ranker architecture for their freelancer matching app?&lt;/p></description></item><item><title>Building LLM Powered Applications in Production - Hamza Farooq | Vector Space Talks</title><link>https://qdrant.tech/blog/llm-complex-search-copilot/</link><pubDate>Tue, 09 Jan 2024 12:16:22 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/llm-complex-search-copilot/</guid><description>&lt;blockquote>
&lt;p>&lt;em>&amp;ldquo;There are 10 billion search queries a day, estimated half of them go unanswered. Because people don&amp;rsquo;t actually use search as what we used.”&lt;/em>&lt;br>
&amp;ndash; Hamza Farooq&lt;/p>
&lt;/blockquote>
&lt;p>How do you think Hamza&amp;rsquo;s background in machine learning and previous experiences at Google and Walmart Labs have influenced his approach to building LLM-powered applications?&lt;/p>
&lt;p>Hamza Farooq, an accomplished educator and AI enthusiast, is the founder of Traversaal.ai. His journey is marked by a relentless passion for AI exploration, particularly in building Large Language Models. As an adjunct professor at UCLA Anderson, Hamza shapes the future of AI by teaching cutting-edge technology courses. At Traversaal.ai, he empowers businesses with domain-specific AI solutions, focusing on conversational search and recommendation systems to deliver personalized experiences. With a diverse career spanning academia, industry, and entrepreneurship, Hamza brings a wealth of experience from time at Google. His overarching goal is to bridge the gap between AI innovation and real-world applications, introducing transformative solutions to the market. Hamza eagerly anticipates the dynamic challenges and opportunities in the ever-evolving field of AI and machine learning.&lt;/p></description></item><item><title>Building a High-Performance Entity Matching Solution with Qdrant - Rishabh Bhardwaj | Vector Space Talks</title><link>https://qdrant.tech/blog/entity-matching-qdrant/</link><pubDate>Tue, 09 Jan 2024 11:53:56 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/entity-matching-qdrant/</guid><description>&lt;blockquote>
&lt;p>&lt;em>&amp;ldquo;When we were building proof of concept for this solution, we initially started with Postgres. But after some experimentation, we realized that it basically does not perform very well in terms of recall and speed&amp;hellip; then we came to know that Qdrant performs a lot better as compared to other solutions that existed at the moment.”&lt;/em>&lt;br>
&amp;ndash; Rishabh Bhardwaj&lt;/p>
&lt;/blockquote>
&lt;p>How does the HNSW (Hierarchical Navigable Small World) algorithm benefit the solution built by Rishabh?&lt;/p></description></item><item><title>FastEmbed: Fast &amp; Lightweight Embedding Generation - Nirant Kasliwal | Vector Space Talks</title><link>https://qdrant.tech/blog/fast-embed-models/</link><pubDate>Tue, 09 Jan 2024 11:38:59 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/fast-embed-models/</guid><description>&lt;blockquote>
&lt;p>&lt;em>&amp;ldquo;When things are actually similar or how we define similarity. They are close to each other and if they are not, they&amp;rsquo;re far from each other. This is what a model or embedding model tries to do.”&lt;/em>&lt;br>
&amp;ndash; Nirant Kasliwal&lt;/p>
&lt;/blockquote>
&lt;p>Heard about FastEmbed? It&amp;rsquo;s a game-changer. Nirant shares tricks on how to improve your embedding models. You might want to give it a shot!&lt;/p>
&lt;p>Nirant Kasliwal, the creator and maintainer of FastEmbed, has made notable contributions to the Finetuning Cookbook at OpenAI Cookbook. His contributions extend to the field of Natural Language Processing (NLP), with over 5,000 copies of the NLP book sold.&lt;/p></description></item><item><title>When music just doesn't match our vibe, can AI help? - Filip Makraduli | Vector Space Talks</title><link>https://qdrant.tech/blog/human-language-ai-models/</link><pubDate>Tue, 09 Jan 2024 10:44:20 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/human-language-ai-models/</guid><description>&lt;blockquote>
&lt;p>&lt;em>&amp;ldquo;Was it possible to somehow maybe find a way to transfer this feeling that we have this vibe and get the help of AI to understand what exactly we need at that moment in terms of songs?”&lt;/em>&lt;br>
&amp;ndash; Filip Makraduli&lt;/p>
&lt;/blockquote>
&lt;p>Imagine if the recommendation system could understand spoken instructions or hummed melodies. This would greatly impact the user experience and accuracy of the recommendations.&lt;/p>
&lt;p>Filip Makraduli, an electrical engineering graduate from Skopje, Macedonia, expanded his academic horizons with a Master&amp;rsquo;s in Biomedical Data Science from Imperial College London.&lt;/p></description></item><item><title>Binary Quantization - Andrey Vasnetsov | Vector Space Talks</title><link>https://qdrant.tech/blog/binary-quantization/</link><pubDate>Tue, 09 Jan 2024 10:30:10 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/binary-quantization/</guid><description>&lt;blockquote>
&lt;p>&lt;em>&amp;ldquo;Everything changed when we actually tried binary quantization with OpenAI model.”&lt;/em>&lt;br>
&amp;ndash; Andrey Vasnetsov&lt;/p>
&lt;/blockquote>
&lt;p>Ever wonder why we need quantization for vector indexes? Andrey Vasnetsov explains the complexities and challenges of searching through proximity graphs. Binary quantization reduces storage size and boosts speed by 30x, but not all models are compatible.&lt;/p>
&lt;p>Andrey worked as a Machine Learning Engineer most of his career. He prefers practical over theoretical, working demo over arXiv paper. He is currently working as the CTO at Qdrant a Vector Similarity Search Engine, which can be used for semantic search, similarity matching of text, images or even videos, and also recommendations.&lt;/p></description></item><item><title>Loading Unstructured.io Data into Qdrant from the Terminal</title><link>https://qdrant.tech/blog/qdrant-unstructured/</link><pubDate>Tue, 09 Jan 2024 00:41:38 +0530</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-unstructured/</guid><description>&lt;p>Building powerful applications with Qdrant starts with loading vector representations into the system. Traditionally, this involves scraping or extracting data from sources, performing operations such as cleaning, chunking, and generating embeddings, and finally loading it into Qdrant. While this process can be complex, Unstructured.io includes Qdrant as an ingestion destination.&lt;/p>
&lt;p>In this blog post, we&amp;rsquo;ll demonstrate how to load data into Qdrant from the channels of a Discord server. You can use a similar process for the &lt;a href="https://unstructured-io.github.io/unstructured/ingest/source_connectors.html" target="_blank" rel="noopener nofollow">20+ vetted data sources&lt;/a> supported by Unstructured.&lt;/p></description></item><item><title>Chat with a codebase using Qdrant and N8N</title><link>https://qdrant.tech/blog/qdrant-n8n/</link><pubDate>Sat, 06 Jan 2024 04:09:05 +0530</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-n8n/</guid><description>&lt;p>n8n (pronounced n-eight-n) helps you connect any app with an API. You can then manipulate its data with little or no code. With the Qdrant node on n8n, you can build AI-powered workflows visually.&lt;/p>
&lt;p>Let&amp;rsquo;s go through the process of building a workflow. We&amp;rsquo;ll build a chat with a codebase service.&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ul>
&lt;li>A running Qdrant instance. If you need one, use our &lt;a href="https://qdrant.tech/documentation/quickstart/">Quick start guide&lt;/a> to set it up.&lt;/li>
&lt;li>An OpenAI API Key. Retrieve your key from the &lt;a href="https://platform.openai.com/account/api-keys" target="_blank" rel="noopener nofollow">OpenAI API page&lt;/a> for your account.&lt;/li>
&lt;li>A GitHub access token. If you need to generate one, start at the &lt;a href="https://github.com/settings/tokens/" target="_blank" rel="noopener nofollow">GitHub Personal access tokens page&lt;/a>.&lt;/li>
&lt;/ul>
&lt;h2 id="building-the-app">Building the App&lt;/h2>
&lt;p>Our workflow has two components. Refer to the &lt;a href="https://docs.n8n.io/workflows/create/" target="_blank" rel="noopener nofollow">n8n quick start guide&lt;/a> to get acquainted with workflow semantics.&lt;/p></description></item><item><title>"Vector search and applications" by Andrey Vasnetsov, CTO at Qdrant</title><link>https://qdrant.tech/blog/vector-search-and-applications-record/</link><pubDate>Mon, 11 Dec 2023 12:16:42 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/vector-search-and-applications-record/</guid><description>&lt;!--StartFragment-->
&lt;p>Andrey Vasnetsov, Co-founder and CTO at Qdrant has shared about vector search and applications with Learn NLP Academy. &lt;/p>
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/MVUkbMYPYTE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>&lt;/iframe>
&lt;p>He covered the following topics:&lt;/p>
&lt;ul>
&lt;li>Qdrant search engine and Quaterion similarity learning framework;&lt;/li>
&lt;li>Similarity learning to multimodal settings;&lt;/li>
&lt;li>Elastic search embeddings vs vector search engines;&lt;/li>
&lt;li>Support for multiple embeddings;&lt;/li>
&lt;li>Fundraising and VC discussions;&lt;/li>
&lt;li>Vision for vector search evolution;&lt;/li>
&lt;li>Finetuning for out of domain.&lt;/li>
&lt;/ul>
&lt;!--EndFragment--></description></item><item><title>From Content Quality to Compression: The Evolution of Embedding Models at Cohere with Nils Reimers</title><link>https://qdrant.tech/blog/cohere-embedding-v3/</link><pubDate>Sun, 19 Nov 2023 12:48:36 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/cohere-embedding-v3/</guid><description>&lt;p>For the second edition of our Vector Space Talks we were joined by none other than Cohere’s Head of Machine Learning Nils Reimers.&lt;/p>
&lt;h2 id="key-takeaways">Key Takeaways&lt;/h2>
&lt;p>Let&amp;rsquo;s dive right into the five key takeaways from Nils&amp;rsquo; talk:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Content Quality Estimation: Nils explained how embeddings have traditionally focused on measuring topic match, but content quality is just as important. He demonstrated how their model can differentiate between informative and non-informative documents.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Compression-Aware Training: He shared how they&amp;rsquo;ve tackled the challenge of reducing the memory footprint of embeddings, making it more cost-effective to run vector databases on platforms like &lt;a href="https://cloud.qdrant.io/login" target="_blank" rel="noopener nofollow">Qdrant&lt;/a>.&lt;/p></description></item><item><title>Pienso &amp; Qdrant: Future Proofing Generative AI for Enterprise-Level Customers</title><link>https://qdrant.tech/blog/case-study-pienso/</link><pubDate>Tue, 28 Feb 2023 09:48:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-pienso/</guid><description>&lt;p>The partnership between Pienso and Qdrant is set to revolutionize interactive deep learning, making it practical, efficient, and scalable for global customers. Pienso&amp;rsquo;s low-code platform provides a streamlined and user-friendly process for deep learning tasks. This exceptional level of convenience is augmented by Qdrant’s scalable and cost-efficient high vector computation capabilities, which enable reliable retrieval of similar vectors from high-dimensional spaces.&lt;/p>
&lt;p>Together, Pienso and Qdrant will empower enterprises to harness the full potential of generative AI on a large scale. By combining the technologies of both companies, organizations will be able to train their own large language models and leverage them for downstream tasks that demand data sovereignty and model autonomy. This collaboration will help customers unlock new possibilities and achieve advanced AI-driven solutions.
Strengthening LLM Performance&lt;/p></description></item><item><title>Powering Bloop semantic code search</title><link>https://qdrant.tech/blog/case-study-bloop/</link><pubDate>Tue, 28 Feb 2023 09:48:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/case-study-bloop/</guid><description>&lt;p>Founded in early 2021, &lt;a href="https://bloop.ai/" target="_blank" rel="noopener nofollow">bloop&lt;/a> was one of the first companies to tackle semantic
search for codebases. A fast, reliable Vector Search Database is a core component of a semantic
search engine, and bloop surveyed the field of available solutions and even considered building
their own. They found Qdrant to be the top contender and now use it in production.&lt;/p>
&lt;p>This document is intended as a guide for people who intend to introduce semantic search to a novel
field and want to find out if Qdrant is a good solution for their use case.&lt;/p></description></item><item><title>Full-text filter and index are already available!</title><link>https://qdrant.tech/articles/qdrant-introduces-full-text-filters-and-indexes/</link><pubDate>Wed, 16 Nov 2022 00:00:00 -0800</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/qdrant-introduces-full-text-filters-and-indexes/</guid><description>&lt;p>Qdrant is designed as an efficient vector database, allowing for a quick search of the nearest neighbours. But, you may find yourself in need of applying some extra filtering on top of the semantic search. Up to version 0.10, Qdrant was offering support for keywords only. Since 0.10, there is a possibility to apply full-text constraints as well. There is a new type of filter that you can use to do that, also combined with every other filter type.&lt;/p></description></item><item><title>Optimizing Semantic Search by Managing Multiple Vectors</title><link>https://qdrant.tech/articles/storing-multiple-vectors-per-object-in-qdrant/</link><pubDate>Wed, 05 Oct 2022 00:00:00 -0800</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/storing-multiple-vectors-per-object-in-qdrant/</guid><description>&lt;h1 id="how-to-optimize-vector-storage-by-storing-multiple-vectors-per-object">How to Optimize Vector Storage by Storing Multiple Vectors Per Object&lt;/h1>
&lt;p>In a real case scenario, a single object might be described in several different ways. If you run an e-commerce business, then your items will typically have a name, longer textual description and also a bunch of photos. While cooking, you may care about the list of ingredients, and description of the taste but also the recipe and the way your meal is going to look. Up till now, if you wanted to enable &lt;a href="https://qdrant.tech/documentation/tutorials/search-beginners/" target="_blank" rel="noopener nofollow">semantic search&lt;/a> with multiple vectors per object, Qdrant would require you to create separate collections for each vector type, even though they could share some other attributes in a payload. However, since Qdrant 0.10 you are able to store all those vectors together in the same collection and share a single copy of the payload!&lt;/p></description></item><item><title>Mastering Batch Search for Vector Optimization</title><link>https://qdrant.tech/articles/batch-vector-search-with-qdrant/</link><pubDate>Mon, 26 Sep 2022 00:00:00 -0800</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/articles/batch-vector-search-with-qdrant/</guid><description>&lt;h1 id="how-to-optimize-vector-search-using-batch-search-in-qdrant-0100">How to Optimize Vector Search Using Batch Search in Qdrant 0.10.0&lt;/h1>
&lt;p>The latest release of Qdrant 0.10.0 has introduced a lot of functionalities that simplify some common tasks. Those new possibilities come with some slightly modified interfaces of the client library. One of the recently introduced features is the possibility to query the collection with &lt;a href="https://qdrant.tech/blog/storing-multiple-vectors-per-object-in-qdrant/" target="_blank" rel="noopener nofollow">multiple vectors&lt;/a> at once — a batch search mechanism.&lt;/p>
&lt;p>There are a lot of scenarios in which you may need to perform multiple non-related tasks at the same time. Previously, you only could send several requests to Qdrant API on your own. But multiple parallel requests may cause significant network overhead and slow down the process, especially in case of poor connection speed.&lt;/p></description></item><item><title>Qdrant supports ARM architecture!</title><link>https://qdrant.tech/blog/qdrant-supports-arm-architecture/</link><pubDate>Wed, 21 Sep 2022 09:49:53 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-supports-arm-architecture/</guid><description>&lt;p>The processor architecture is a thing that the end-user typically does not care much about, as long as all the applications they use run smoothly. If you use a PC then chances are you have an x86-based device, while your smartphone rather runs on an ARM processor. In 2020 Apple introduced their ARM-based M1 chip which is used in modern Mac devices, including notebooks. The main differences between those two architectures are the set of supported instructions and energy consumption. ARM’s processors have a way better energy efficiency and are cheaper than their x86 counterparts. That’s why they became available as an affordable alternative in the hosting providers, including the cloud.&lt;/p></description></item><item><title>Qdrant has joined NVIDIA Inception Program</title><link>https://qdrant.tech/blog/qdrant-joined-nvidia-inception-program/</link><pubDate>Mon, 04 Apr 2022 12:06:36 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/blog/qdrant-joined-nvidia-inception-program/</guid><description>&lt;p>Recently we&amp;rsquo;ve become a member of the NVIDIA Inception. It is a program that helps boost the evolution of technology startups through access to their cutting-edge technology and experts, connects startups with venture capitalists, and provides marketing support.&lt;/p>
&lt;p>Along with the various opportunities it gives, we are the most excited about GPU support since it is an essential feature in Qdrant&amp;rsquo;s roadmap.
Stay tuned for our new updates.&lt;/p></description></item><item><title/><link>https://qdrant.tech/about-us/about-us-values/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/about-us/about-us-values/</guid><description/></item><item><title/><link>https://qdrant.tech/about-us/carousel/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/about-us/carousel/</guid><description/></item><item><title/><link>https://qdrant.tech/about-us/mission/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/about-us/mission/</guid><description/></item><item><title>Agno</title><link>https://qdrant.tech/documentation/frameworks/agno/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/agno/</guid><description>&lt;h1 id="agno">Agno&lt;/h1>
&lt;p>&lt;a href="https://github.com/agno-agi/agno" target="_blank" rel="noopener nofollow">Agno&lt;/a> is an incredibly fast multi-agent framework, runtime and UI. It enables you to build multi-agent systems with memory, knowledge, human-in-the-loop capabilities, and Model Context Protocol (MCP) support.&lt;/p>
&lt;p>You can orchestrate agents as multi-agent teams (providing more autonomy) or step-based agentic workflows (offering more control). Agno works seamlessly with Qdrant as a vector database for knowledge bases, enabling efficient storage and retrieval of information for your AI agents.&lt;/p></description></item><item><title>Airbyte</title><link>https://qdrant.tech/documentation/data-management/airbyte/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/data-management/airbyte/</guid><description>&lt;h1 id="airbyte">Airbyte&lt;/h1>
&lt;p>&lt;a href="https://airbyte.com/" target="_blank" rel="noopener nofollow">Airbyte&lt;/a> is an open-source data integration platform that helps you replicate your data
between different systems. It has a &lt;a href="https://docs.airbyte.io/integrations" target="_blank" rel="noopener nofollow">growing list of connectors&lt;/a> that can
be used to ingest data from multiple sources. Building data pipelines is also crucial for managing the data in
Qdrant, and Airbyte is a great tool for this purpose.&lt;/p>
&lt;p>Airbyte may take care of the data ingestion from a selected source, while Qdrant will help you to build a search
engine on top of it. There are three supported modes of how the data can be ingested into Qdrant:&lt;/p></description></item><item><title>Aleph Alpha</title><link>https://qdrant.tech/documentation/embeddings/aleph-alpha/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/embeddings/aleph-alpha/</guid><description>&lt;h1 id="using-aleph-alpha-embeddings-with-qdrant">Using Aleph Alpha Embeddings with Qdrant&lt;/h1>
&lt;p>Aleph Alpha is a multimodal and multilingual embeddings&amp;rsquo; provider. Their API allows creating the embeddings for text and images, both
in the same latent space. They maintain an &lt;a href="https://github.com/Aleph-Alpha/aleph-alpha-client" target="_blank" rel="noopener nofollow">official Python client&lt;/a> that might be
installed with pip:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install aleph-alpha-client
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>There is both synchronous and asynchronous client available. Obtaining the embeddings for an image and storing it into Qdrant might
be done in the following way:&lt;/p></description></item><item><title>Apache Airflow</title><link>https://qdrant.tech/documentation/data-management/airflow/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/data-management/airflow/</guid><description>&lt;h1 id="apache-airflow">Apache Airflow&lt;/h1>
&lt;p>&lt;a href="https://airflow.apache.org/" target="_blank" rel="noopener nofollow">Apache Airflow&lt;/a> is an open-source platform for authoring, scheduling and monitoring data and computing workflows. Airflow uses Python to create workflows that can be easily scheduled and monitored.&lt;/p>
&lt;p>Qdrant is available as a &lt;a href="https://airflow.apache.org/docs/apache-airflow-providers-qdrant/stable/index.html" target="_blank" rel="noopener nofollow">provider&lt;/a> in Airflow to interface with the database.&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;p>Before configuring Airflow, you need:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>A Qdrant instance to connect to. You can set one up in our &lt;a href="https://qdrant.tech/documentation/operations/installation/">installation guide&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>A running Airflow instance. You can use their &lt;a href="https://airflow.apache.org/docs/apache-airflow/stable/start.html" target="_blank" rel="noopener nofollow">Quick Start Guide&lt;/a>.&lt;/p></description></item><item><title>Apache Spark</title><link>https://qdrant.tech/documentation/data-management/spark/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/data-management/spark/</guid><description>&lt;h1 id="apache-spark">Apache Spark&lt;/h1>
&lt;p>&lt;a href="https://spark.apache.org/" target="_blank" rel="noopener nofollow">Spark&lt;/a> is a distributed computing framework designed for big data processing and analytics. The &lt;a href="https://github.com/qdrant/qdrant-spark" target="_blank" rel="noopener nofollow">Qdrant-Spark connector&lt;/a> enables Qdrant to be a storage destination in Spark.&lt;/p>
&lt;h2 id="installation">Installation&lt;/h2>
&lt;p>To integrate the connector into your Spark environment, get the JAR file from one of the sources listed below.&lt;/p>
&lt;ul>
&lt;li>GitHub Releases&lt;/li>
&lt;/ul>
&lt;p>The packaged &lt;code>jar&lt;/code> file with all the required dependencies can be found &lt;a href="https://github.com/qdrant/qdrant-spark/releases" target="_blank" rel="noopener nofollow">here&lt;/a>.&lt;/p>
&lt;ul>
&lt;li>Building from Source&lt;/li>
&lt;/ul>
&lt;p>To build the &lt;code>jar&lt;/code> from source, you need &lt;a href="https://www.azul.com/downloads/#zulu" target="_blank" rel="noopener nofollow">JDK@8&lt;/a> and &lt;a href="https://maven.apache.org/" target="_blank" rel="noopener nofollow">Maven&lt;/a> installed. Once the requirements have been satisfied, run the following command in the &lt;a href="https://github.com/qdrant/qdrant-spark" target="_blank" rel="noopener nofollow">project root&lt;/a>.&lt;/p></description></item><item><title>Apify</title><link>https://qdrant.tech/documentation/platforms/apify/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/platforms/apify/</guid><description>&lt;h1 id="apify">Apify&lt;/h1>
&lt;p>&lt;a href="https://apify.com/" target="_blank" rel="noopener nofollow">Apify&lt;/a> is a web scraping and browser automation platform featuring an &lt;a href="https://apify.com/store" target="_blank" rel="noopener nofollow">app store&lt;/a> with over 1,500 pre-built micro-apps known as Actors. These serverless cloud programs, which are essentially dockers under the hood, are designed for various web automation applications, including data collection.&lt;/p>
&lt;p>One such Actor, built especially for AI and RAG applications, is &lt;a href="https://apify.com/apify/website-content-crawler" target="_blank" rel="noopener nofollow">Website Content Crawler&lt;/a>.&lt;/p>
&lt;p>It&amp;rsquo;s ideal for this purpose because it has built-in HTML processing and data-cleaning functions. That means you can easily remove fluff, duplicates, and other things on a web page that aren&amp;rsquo;t relevant, and provide only the necessary data to the language model.&lt;/p></description></item><item><title>AutoGen</title><link>https://qdrant.tech/documentation/frameworks/autogen/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/autogen/</guid><description>&lt;h1 id="microsoft-autogen">Microsoft AutoGen&lt;/h1>
&lt;p>&lt;a href="https://github.com/microsoft/autogen/tree/0.2" target="_blank" rel="noopener nofollow">AutoGen&lt;/a> is an open-source programming framework for building AI agents and facilitating cooperation among multiple agents to solve tasks.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Multi-agent conversations: AutoGen agents can communicate with each other to solve tasks. This allows for more complex and sophisticated applications than would be possible with a single LLM.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Customization: AutoGen agents can be customized to meet the specific needs of an application. This includes the ability to choose the LLMs to use, the types of human input to allow, and the tools to employ.&lt;/p></description></item><item><title>AWS Bedrock</title><link>https://qdrant.tech/documentation/embeddings/bedrock/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/embeddings/bedrock/</guid><description>&lt;h1 id="bedrock-embeddings">Bedrock Embeddings&lt;/h1>
&lt;p>You can use &lt;a href="https://aws.amazon.com/bedrock/" target="_blank" rel="noopener nofollow">AWS Bedrock&lt;/a> with Qdrant. AWS Bedrock supports multiple &lt;a href="https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html" target="_blank" rel="noopener nofollow">embedding model providers&lt;/a>.&lt;/p>
&lt;p>You&amp;rsquo;ll need the following information from your AWS account:&lt;/p>
&lt;ul>
&lt;li>Region&lt;/li>
&lt;li>Access key ID&lt;/li>
&lt;li>Secret key&lt;/li>
&lt;/ul>
&lt;p>To configure your credentials, review the following AWS article: &lt;a href="https://repost.aws/knowledge-center/create-access-key" target="_blank" rel="noopener nofollow">How do I create an AWS access key&lt;/a>.&lt;/p>
&lt;p>With the following code sample, you can generate embeddings using the &lt;a href="https://docs.aws.amazon.com/bedrock/latest/userguide/titan-embedding-models.html" target="_blank" rel="noopener nofollow">Titan Embeddings G1 - Text model&lt;/a> which produces sentence embeddings of size 1536.&lt;/p></description></item><item><title>AWS Lakechain</title><link>https://qdrant.tech/documentation/frameworks/lakechain/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/lakechain/</guid><description>&lt;h1 id="aws-lakechain">AWS Lakechain&lt;/h1>
&lt;p>&lt;a href="https://awslabs.github.io/project-lakechain/" target="_blank" rel="noopener nofollow">Project Lakechain&lt;/a> is a framework based on the AWS Cloud Development Kit (CDK), allowing to express and deploy scalable document processing pipelines on AWS using infrastructure-as-code. It emphasizes on modularity and extensibility of pipelines, and provides 60+ ready to use components for prototyping complex processing pipelines that scale out of the box to millions of documents.&lt;/p>
&lt;p>The Qdrant storage connector available with Lakechain enables uploading vector embeddings produced by other middlewares to a Qdrant collection.&lt;/p></description></item><item><title>Brand Resources</title><link>https://qdrant.tech/about-us/about-us-resources/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/about-us/about-us-resources/</guid><description/></item><item><title>Bug Bounty Program</title><link>https://qdrant.tech/security/bug-bounty-program/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/security/bug-bounty-program/</guid><description>&lt;h1 id="bug-bounty-program-overview">Bug Bounty Program Overview&lt;/h1>
&lt;p>We prioritize user trust and adhere to the highest privacy and security standards. This is why we actively invite security experts to identify vulnerabilities and commit to collaborating with them to resolve issues swiftly and effectively.
Qdrant values the security research community and supports the responsible disclosure of vulnerabilities in our products and services. Through our bug bounty program, we reward researchers who help enhance the security of our platform.&lt;/p></description></item><item><title>BuildShip</title><link>https://qdrant.tech/documentation/platforms/buildship/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/platforms/buildship/</guid><description>&lt;h1 id="buildship">BuildShip&lt;/h1>
&lt;p>&lt;a href="https://buildship.com/" target="_blank" rel="noopener nofollow">BuildShip&lt;/a> is a low-code visual builder to create APIs, scheduled jobs, and backend workflows with AI assistance.&lt;/p>
&lt;p>You can use the &lt;a href="https://buildship.com/integrations/qdrant" target="_blank" rel="noopener nofollow">Qdrant integration&lt;/a> to development workflows with semantic-search capabilities.&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ol>
&lt;li>A Qdrant instance to connect to. You can get a free cloud instance at &lt;a href="https://cloud.qdrant.io/" target="_blank" rel="noopener nofollow">cloud.qdrant.io&lt;/a>.&lt;/li>
&lt;li>A &lt;a href="https://buildship.app/" target="_blank" rel="noopener nofollow">BuildsShip&lt;/a> for developing workflows.&lt;/li>
&lt;/ol>
&lt;h2 id="nodes">Nodes&lt;/h2>
&lt;p>Nodes are are fundamental building blocks of BuildShip. Each responsible for an operation in your workflow.&lt;/p>
&lt;p>The Qdrant integration includes the following nodes with extensibility if required.&lt;/p></description></item><item><title>CamelAI</title><link>https://qdrant.tech/documentation/frameworks/camel/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/camel/</guid><description>&lt;h1 id="camel">Camel&lt;/h1>
&lt;p>&lt;a href="https://www.camel-ai.org" target="_blank" rel="noopener nofollow">Camel&lt;/a> is a Python framework to build and use LLM-based agents for real-world task solving.&lt;/p>
&lt;p>Qdrant is available as a storage mechanism in Camel for ingesting and retrieving semantically similar data.&lt;/p>
&lt;h2 id="usage-with-qdrant">Usage With Qdrant&lt;/h2>
&lt;ul>
&lt;li>Install Camel with the &lt;code>vector-databases&lt;/code> extra.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install &lt;span class="s2">&amp;#34;camel[vector-databases]&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>Configure the &lt;code>QdrantStorage&lt;/code> class.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">camel.storages&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">QdrantStorage&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">VectorDBQuery&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">VectorRecord&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">camel.types&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">VectorDistance&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">qdrant_storage&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">QdrantStorage&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">url_and_api_key&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;https://xyz-example.eu-central.aws.cloud.qdrant.io:6333&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;&amp;lt;provide-your-own-key&amp;gt;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">collection_name&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="si">{collection_name}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">distance&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">VectorDistance&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">COSINE&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">vector_dim&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">384&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The &lt;code>QdrantStorage&lt;/code> class implements methods to read and write to a Qdrant instance. An instance of this class can now be passed to retrievers for interfacing with your Qdrant collections.&lt;/p></description></item><item><title>Cheshire Cat</title><link>https://qdrant.tech/documentation/frameworks/cheshire-cat/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/cheshire-cat/</guid><description>&lt;h1 id="cheshire-cat">Cheshire Cat&lt;/h1>
&lt;p>&lt;a href="https://cheshirecat.ai/" target="_blank" rel="noopener nofollow">Cheshire Cat&lt;/a> is an open-source framework that allows you to develop intelligent agents on top of many Large Language Models (LLM). You can develop your custom AI architecture to assist you in a wide range of tasks.&lt;/p>
&lt;p>&lt;img src="https://qdrant.tech/documentation/frameworks/cheshire-cat/cat.jpg" alt="Cheshire cat">&lt;/p>
&lt;h2 id="cheshire-cat-and-qdrant">Cheshire Cat and Qdrant&lt;/h2>
&lt;p>Cheshire Cat uses Qdrant as the default &lt;a href="https://cheshire-cat-ai.github.io/docs/faq/llm-concepts/vector-memory/" target="_blank" rel="noopener nofollow">Vector Memory&lt;/a> for ingesting and retrieving documents.&lt;/p>
&lt;pre tabindex="0">&lt;code># Decide host and port for your Cat. Default will be localhost:1865
CORE_HOST=localhost
CORE_PORT=1865

# Qdrant server
# QDRANT_HOST=localhost
# QDRANT_PORT=6333
&lt;/code>&lt;/pre>&lt;p>Cheshire Cat takes great advantage of the following features of Qdrant:&lt;/p></description></item><item><title>Chonkie</title><link>https://qdrant.tech/documentation/data-management/chonkie/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/data-management/chonkie/</guid><description>&lt;h1 id="chonkie">Chonkie&lt;/h1>
&lt;p>&lt;a href="https://github.com/chonkie-inc/chonkie" target="_blank" rel="noopener nofollow">Chonkie&lt;/a> is a no-nonsense, ultra-light, and lightning-fast chunking library designed for RAG (Retrieval-Augmented Generation) applications.&lt;/p>
&lt;p>Chonkie integrates seamlessly with Qdrant through the &lt;strong>QdrantHandshake&lt;/strong> class, allowing you to chunk, embed, and store text data without ever leaving the Chonkie SDK.&lt;/p>
&lt;h2 id="setup">Setup&lt;/h2>
&lt;p>Install Chonkie with Qdrant support:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install &lt;span class="s2">&amp;#34;chonkie[qdrant]&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="basic-usage">Basic Usage&lt;/h2>
&lt;p>The &lt;code>QdrantHandshake&lt;/code> provides a simple interface for storing and searching chunks:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">chonkie&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">QdrantHandshake&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">SemanticChunker&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Initialize handshake with custom embedding model&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">handshake&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">QdrantHandshake&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">url&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;http://localhost:6333&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">collection_name&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;my_documents&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">embedding_model&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;sentence-transformers/all-MiniLM-L6-v2&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Create and write chunks&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">chunker&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">SemanticChunker&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">chunks&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">chunker&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">chunk&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;Your text content here...&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">handshake&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">write&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">chunks&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Search using natural language&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">results&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">handshake&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">search&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">query&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;your search query&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">limit&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">5&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">for&lt;/span> &lt;span class="n">result&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">results&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">result&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;score&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">result&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s1">&amp;#39;text&amp;#39;&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="qdrant-cloud">Qdrant Cloud&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">handshake&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">QdrantHandshake&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">url&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;https://your-cluster.qdrant.io&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">api_key&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;your-api-key&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">collection_name&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;my_collection&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">embedding_model&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;BAAI/bge-small-en-v1.5&amp;#34;&lt;/span> &lt;span class="c1"># Change to your preferred model&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="complete-rag-pipeline">Complete RAG Pipeline&lt;/h2>
&lt;p>Build end-to-end RAG pipelines using Chonkie&amp;rsquo;s fluent Pipeline API:&lt;/p></description></item><item><title>CocoIndex</title><link>https://qdrant.tech/documentation/data-management/cocoindex/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/data-management/cocoindex/</guid><description>&lt;h1 id="cocoindex">CocoIndex&lt;/h1>
&lt;p>&lt;a href="https://cocoindex.io" target="_blank" rel="noopener nofollow">CocoIndex&lt;/a> is a high performance ETL framework to transform data for AI, with real-time incremental processing.&lt;/p>
&lt;p>Qdrant is available as a native built-in vector database to store and retrieve embeddings.&lt;/p>
&lt;p>Install CocoIndex:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install -U cocoindex
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Install Postgres with &lt;a href="https://docs.docker.com/compose/install/" target="_blank" rel="noopener nofollow">Docker Compose&lt;/a>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">docker compose -f &amp;lt;&lt;span class="o">(&lt;/span>curl -L https://raw.githubusercontent.com/cocoindex-io/cocoindex/refs/heads/main/dev/postgres.yaml&lt;span class="o">)&lt;/span> up -d
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>CocoIndex is a stateful ETL framework and only processes data that has changed. It uses Postgres as a metadata store to track the state of the data.&lt;/p></description></item><item><title>Cognee</title><link>https://qdrant.tech/documentation/frameworks/cognee/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/cognee/</guid><description>&lt;h1 id="cognee">Cognee&lt;/h1>
&lt;p>Embeddings make it easy to retrieve similar chunks of information — but most agent tasks require more: structure, temporal context, and cross-document reasoning. That&amp;rsquo;s where Cognee comes in: it turns raw data sources into AI memory —a semantic data layer based on a modular, queryable knowledge graph backed by embeddings, so agents can retrieve, reason, and remember with structure.&lt;/p>
&lt;h2 id="why-qdrant-for-the-memory-layer">Why Qdrant For The Memory Layer&lt;/h2>
&lt;p>At runtime, &lt;a href="https://www.cognee.ai/" target="_blank" rel="noopener nofollow">Cognee&lt;/a>&amp;rsquo;s semantic memory layer requires fast and predictable lookups to surface candidates for graph reasoning, as well as tight control over metadata to ground multi-hop traversals. Qdrant&amp;rsquo;s design aligns with those needs with its:&lt;/p></description></item><item><title>Cohere</title><link>https://qdrant.tech/documentation/embeddings/cohere/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/embeddings/cohere/</guid><description>&lt;h1 id="cohere">Cohere&lt;/h1>
&lt;p>Qdrant is compatible with Cohere &lt;a href="https://docs.cohere.ai/reference/embed" target="_blank" rel="noopener nofollow">co.embed API&lt;/a> and its official Python SDK that
might be installed as any other package:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install cohere
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The embeddings returned by co.embed API might be used directly in the Qdrant client&amp;rsquo;s calls:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">cohere&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">qdrant_client&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qdrant_client.models&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">Batch&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">cohere_client&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">cohere&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Client&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;&amp;lt;&amp;lt; your_api_key &amp;gt;&amp;gt;&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">qdrant_client&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">qdrant_client&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">QdrantClient&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">qdrant_client&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">upsert&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">collection_name&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;MyCollection&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">points&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">Batch&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">ids&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">vectors&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">cohere_client&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">embed&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">model&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;large&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">texts&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;The best vector database&amp;#34;&lt;/span>&lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">embeddings&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>If you are interested in seeing an end-to-end project created with co.embed API and Qdrant, please check out the
&amp;ldquo;&lt;a href="https://qdrant.tech/articles/qa-with-cohere-and-qdrant/">Question Answering as a Service with Cohere and Qdrant&lt;/a>&amp;rdquo; article.&lt;/p></description></item><item><title>Compare all Qdrant Cloud capabilities</title><link>https://qdrant.tech/pricing/comparison/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/pricing/comparison/</guid><description/></item><item><title>Confluent Kafka</title><link>https://qdrant.tech/documentation/data-management/confluent/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/data-management/confluent/</guid><description>&lt;p>&lt;img src="https://qdrant.tech/documentation/frameworks/confluent/confluent-logo.png" alt="Confluent Logo">&lt;/p>
&lt;p>Built by the original creators of Apache Kafka®, &lt;a href="https://www.confluent.io/confluent-cloud/?utm_campaign=tm.pmm_cd.cwc_partner_Qdrant_generic&amp;amp;utm_source=Qdrant&amp;amp;utm_medium=partnerref" target="_blank" rel="noopener nofollow">Confluent Cloud&lt;/a> is a cloud-native and complete data streaming platform available on AWS, Azure, and Google Cloud. The platform includes a fully managed, elastically scaling Kafka engine, 120+ connectors, serverless Apache Flink®, enterprise-grade security controls, and a robust governance suite.&lt;/p>
&lt;p>With our &lt;a href="https://github.com/qdrant/qdrant-kafka" target="_blank" rel="noopener nofollow">Qdrant-Kafka Sink Connector&lt;/a>, Qdrant is part of the &lt;a href="https://www.confluent.io/partners/connect/" target="_blank" rel="noopener nofollow">Connect with Confluent&lt;/a> technology partner program. It brings fully managed data streams directly to organizations from Confluent Cloud, making it easier for organizations to stream any data to Qdrant with a fully managed Apache Kafka service.&lt;/p></description></item><item><title>Credits</title><link>https://qdrant.tech/legal/credits/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/legal/credits/</guid><description>&lt;p>Icons made by &lt;a href="https://www.flaticon.com/authors/srip" target="_blank" rel="noopener nofollow">srip&lt;/a> from &lt;a href="https://www.flaticon.com/" target="_blank" rel="noopener nofollow">flaticon.com&lt;/a>&lt;/p>
&lt;p>Email Marketing Vector created by &lt;a href="https://de.freepik.com/vektoren/geschaeft" target="_blank" rel="noopener nofollow">storyset&lt;/a> from &lt;a href="https://www.freepik.com/" target="_blank" rel="noopener nofollow">freepik.com&lt;/a>&lt;/p></description></item><item><title>CrewAI</title><link>https://qdrant.tech/documentation/frameworks/crewai/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/crewai/</guid><description>&lt;h1 id="crewai">CrewAI&lt;/h1>
&lt;p>&lt;a href="https://www.crewai.com" target="_blank" rel="noopener nofollow">CrewAI&lt;/a> is a framework for orchestrating role-playing, autonomous AI agents. By leveraging collaborative intelligence, CrewAI allows agents to work together seamlessly, tackling complex tasks.&lt;/p>
&lt;p>The framework has a sophisticated memory system designed to significantly enhance the capabilities of AI agents. This system aids agents to remember, reason, and learn from past interactions. You can use Qdrant to store short-term memory and entity memories of CrewAI agents.&lt;/p>
&lt;ul>
&lt;li>Short-Term Memory&lt;/li>
&lt;/ul>
&lt;p>Temporarily stores recent interactions and outcomes using RAG, enabling agents to recall and utilize information relevant to their current context during the current executions.&lt;/p></description></item><item><title>Dagster</title><link>https://qdrant.tech/documentation/frameworks/dagster/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/dagster/</guid><description>&lt;h1 id="dagster">Dagster&lt;/h1>
&lt;p>&lt;a href="https://dagster.io" target="_blank" rel="noopener nofollow">Dagster&lt;/a> is a Python framework for data orchestration built for data engineers, with integrated lineage, observability, a declarative programming model, and best-in-class testability.&lt;/p>
&lt;p>The &lt;code>dagster-qdrant&lt;/code> library lets you integrate Qdrant&amp;rsquo;s vector database with Dagster, making it easy to build AI-driven data pipelines. You can run vector searches and manage data directly within Dagster.&lt;/p>
&lt;h3 id="installation">Installation&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install dagster dagster-qdrant
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="example">Example&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-py" data-lang="py">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">dagster_qdrant&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">QdrantConfig&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">QdrantResource&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">dagster&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">dg&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nd">@dg.asset&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">my_table&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">qdrant_resource&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">QdrantResource&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">with&lt;/span> &lt;span class="n">qdrant_resource&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get_client&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="n">qdrant&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">qdrant&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">collection_name&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;test_collection&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">documents&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;This is a document about oranges&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;This is a document about pineapples&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;This is a document about strawberries&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;This is a document about cucumbers&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">results&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">qdrant&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">query&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">collection_name&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;test_collection&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">query_text&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;hawaii&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">limit&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">3&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">defs&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">dg&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Definitions&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">assets&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">my_table&lt;/span>&lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">resources&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;qdrant_resource&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">QdrantResource&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">config&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">QdrantConfig&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">host&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;xyz-example.eu-central.aws.cloud.qdrant.io&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">api_key&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;&amp;lt;your-api-key&amp;gt;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="next-steps">Next steps&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>Dagster &lt;a href="https://docs.dagster.io" target="_blank" rel="noopener nofollow">documentation&lt;/a>&lt;/p></description></item><item><title>Datadog</title><link>https://qdrant.tech/documentation/observability/datadog/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/observability/datadog/</guid><description>&lt;p>&lt;img src="https://qdrant.tech/documentation/observability/datadog/datadog-cover.jpg" alt="Datadog Cover">&lt;/p>
&lt;p>&lt;a href="https://www.datadoghq.com/" target="_blank" rel="noopener nofollow">Datadog&lt;/a> is a cloud-based monitoring and analytics platform that offers real-time monitoring of servers, databases, and numerous other tools and services. It provides visibility into the performance of applications and enables businesses to detect issues before they affect users.&lt;/p>
&lt;p>You can install the &lt;a href="https://docs.datadoghq.com/integrations/qdrant/" target="_blank" rel="noopener nofollow">Qdrant integration&lt;/a> to get real-time metrics to monitor your Qdrant deployment within Datadog including:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>The performance of REST and gRPC interfaces with metrics such as total requests, total failures, and time to serve to identify potential bottlenecks and mitigate them.&lt;/p></description></item><item><title>DeepEval</title><link>https://qdrant.tech/documentation/frameworks/deepeval/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/deepeval/</guid><description>&lt;h1 id="deepeval">DeepEval&lt;/h1>
&lt;p>&lt;a href="https://deepeval.com" target="_blank" rel="noopener nofollow">DeepEval&lt;/a> by Confident AI is an open-source framework for testing large language model systems. Similar to Pytest but designed for LLM outputs, it evaluates metrics like G-Eval, hallucination, answer relevancy.&lt;/p>
&lt;p>DeepEval can be integrated with Qdrant to evaluate RAG pipelines — ensuring your LLM applications return relevant, grounded, and faithful responses based on retrieved vector search context.&lt;/p>
&lt;h2 id="how-it-works">How it works&lt;/h2>
&lt;p>A test case is a blueprint provided by DeepEval to unit test LLM outputs. There are two types of test cases in DeepEval:&lt;/p></description></item><item><title>DLT</title><link>https://qdrant.tech/documentation/data-management/dlt/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/data-management/dlt/</guid><description>&lt;h1 id="dltdata-load-tool">DLT(Data Load Tool)&lt;/h1>
&lt;p>&lt;a href="https://dlthub.com/" target="_blank" rel="noopener nofollow">DLT&lt;/a> is an open-source library that you can add to your Python scripts to load data from various and often messy data sources into well-structured, live datasets.&lt;/p>
&lt;p>With the DLT-Qdrant integration, you can now select Qdrant as a DLT destination to load data into.&lt;/p>
&lt;p>&lt;strong>DLT Enables&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Automated maintenance - with schema inference, alerts and short declarative code, maintenance becomes simple.&lt;/li>
&lt;li>Run it where Python runs - on Airflow, serverless functions, notebooks. Scales on micro and large infrastructure alike.&lt;/li>
&lt;li>User-friendly, declarative interface that removes knowledge obstacles for beginners while empowering senior professionals.&lt;/li>
&lt;/ul>
&lt;h2 id="usage">Usage&lt;/h2>
&lt;p>To get started, install &lt;code>dlt&lt;/code> with the &lt;code>qdrant&lt;/code> extra.&lt;/p></description></item><item><title>Dynamiq</title><link>https://qdrant.tech/documentation/frameworks/dynamiq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/dynamiq/</guid><description>&lt;h1 id="dynamiq">Dynamiq&lt;/h1>
&lt;p>Dynamiq is your all-in-one Gen AI framework, designed to streamline the development of AI-powered applications. Dynamiq specializes in orchestrating retrieval-augmented generation (RAG) and large language model (LLM) agents.&lt;/p>
&lt;p>Qdrant is a vector database available in Dynamiq, capable of serving multiple roles. It can be used for writing and retrieving documents, acting as memory for agent interactions, and functioning as a retrieval tool that agents can call when needed.&lt;/p>
&lt;h2 id="installing">Installing&lt;/h2>
&lt;p>First, ensure you have the &lt;code>dynamiq&lt;/code> library installed:&lt;/p></description></item><item><title>Explore the Qdrant Ecosystem</title><link>https://qdrant.tech/documentation/ecosystem/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/ecosystem/</guid><description/></item><item><title>Feast</title><link>https://qdrant.tech/documentation/frameworks/feast/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/feast/</guid><description>&lt;h2 id="feast">Feast&lt;/h2>
&lt;p>&lt;a href="https://docs.feast.dev" target="_blank" rel="noopener nofollow">Feast (&lt;strong>Fe&lt;/strong>ature &lt;strong>St&lt;/strong>ore)&lt;/a> is an open-source feature store that helps teams operate production ML systems at scale by allowing them to define, manage, validate, and serve features for production AI/ML.&lt;/p>
&lt;p>Qdrant is available as a supported vectorstore in Feast to integrate in your workflows.&lt;/p>
&lt;h2 id="insatallation">Insatallation&lt;/h2>
&lt;p>To use the Qdrant online store, you need to install Feast with the &lt;code>qdrant&lt;/code> extra.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install &lt;span class="s1">&amp;#39;feast[qdrant]&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="usage">Usage&lt;/h2>
&lt;p>An example config with Qdrant could look like:&lt;/p></description></item><item><title>FiftyOne</title><link>https://qdrant.tech/documentation/frameworks/fifty-one/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/fifty-one/</guid><description>&lt;h1 id="fiftyone">FiftyOne&lt;/h1>
&lt;p>&lt;a href="https://voxel51.com/" target="_blank" rel="noopener nofollow">FiftyOne&lt;/a> is an open-source toolkit designed to enhance computer vision workflows by optimizing dataset quality
and providing valuable insights about your models. FiftyOne 0.20, which includes a native integration with Qdrant, supporting workflows
like &lt;a href="https://docs.voxel51.com/user_guide/brain.html#image-similarity" target="_blank" rel="noopener nofollow">image similarity search&lt;/a> and
&lt;a href="https://docs.voxel51.com/user_guide/brain.html#text-similarity" target="_blank" rel="noopener nofollow">text search&lt;/a>.&lt;/p>
&lt;p>Qdrant helps FiftyOne to find the most similar images in the dataset using vector embeddings.&lt;/p>
&lt;p>FiftyOne is available as a Python package that might be installed in the following way:&lt;/p></description></item><item><title>Firebase Genkit</title><link>https://qdrant.tech/documentation/frameworks/genkit/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/genkit/</guid><description>&lt;h1 id="firebase-genkit">Firebase Genkit&lt;/h1>
&lt;p>&lt;a href="https://firebase.google.com/products/genkit" target="_blank" rel="noopener nofollow">Genkit&lt;/a> is a framework to build, deploy, and monitor production-ready AI-powered apps.&lt;/p>
&lt;p>You can build apps that generate custom content, use semantic search, handle unstructured inputs, answer questions with your business data, autonomously make decisions, orchestrate tool calls, and more.&lt;/p>
&lt;p>You can use Qdrant for indexing/semantic retrieval of data in your Genkit applications via the &lt;a href="https://github.com/qdrant/qdrant-genkit" target="_blank" rel="noopener nofollow">Qdrant-Genkit plugin&lt;/a>.&lt;/p>
&lt;p>Genkit currently supports server-side development in JavaScript/TypeScript (Node.js) with Go support in active development.&lt;/p></description></item><item><title>Gemini</title><link>https://qdrant.tech/documentation/embeddings/gemini/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/embeddings/gemini/</guid><description>&lt;h1 id="gemini">Gemini&lt;/h1>
&lt;p>&lt;a href="https://ai.google.dev/gemini-api/docs/embeddings" target="_blank" rel="noopener nofollow">Google Gemini&lt;/a> provides embedding models that are capable of mapping text, image, video, audio, and PDFs and their interleaved combinations thereof into a single, unified vector space. Built on the Gemini architecture, it supports 100+ languages.&lt;/p>
&lt;p>The following example shows how to integrate Gemini embeddings with Qdrant:&lt;/p>
&lt;h2 id="setup">Setup&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Install the packages from PyPI&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># pip install google-genai qdrant-client&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-typescript" data-lang="typescript">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Install the packages from npm
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// npm install @google/genai @qdrant/js-client-rest
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Let&amp;rsquo;s see how to use the Embedding Model API to embed documents for retrieval.&lt;/p></description></item><item><title>Google ADK</title><link>https://qdrant.tech/documentation/frameworks/google-adk/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/google-adk/</guid><description>&lt;h1 id="google-adk">Google ADK&lt;/h1>
&lt;p>&lt;a href="https://github.com/google/adk-python" target="_blank" rel="noopener nofollow">Agent Development Kit (ADK)&lt;/a> is an open-source, code-first Python framework from Google for building, evaluating, and deploying sophisticated AI agents. While optimized for Gemini, ADK is model-agnostic and compatible with other frameworks.&lt;/p>
&lt;p>You can connect ADK agents to Qdrant using the &lt;a href="https://github.com/qdrant/mcp-server-qdrant/" target="_blank" rel="noopener nofollow">Qdrant MCP Server&lt;/a>, giving your agent the ability to store and retrieve information using semantic search.&lt;/p>
&lt;h2 id="installation">Installation&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install google-adk
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="usage">Usage&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">google.adk.agents&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">Agent&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">google.adk.tools.mcp_tool&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">McpToolset&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">google.adk.tools.mcp_tool.mcp_session_manager&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">StdioConnectionParams&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">mcp&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">StdioServerParameters&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">QDRANT_URL&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;http://localhost:6333&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">COLLECTION_NAME&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;my_collection&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">root_agent&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Agent&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">model&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;gemini-2.5-pro&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">name&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;qdrant_agent&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">instruction&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;Help users store and retrieve information using semantic search&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">tools&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">McpToolset&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">connection_params&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">StdioConnectionParams&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">server_params&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">StdioServerParameters&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">command&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;uvx&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">args&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;mcp-server-qdrant&amp;#34;&lt;/span>&lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">env&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;QDRANT_URL&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">QDRANT_URL&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;COLLECTION_NAME&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">COLLECTION_NAME&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">timeout&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">30&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">],&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>For available tools and configuration options, see the &lt;a href="https://github.com/qdrant/mcp-server-qdrant/" target="_blank" rel="noopener nofollow">Qdrant MCP Server documentation&lt;/a>.&lt;/p></description></item><item><title>Haystack</title><link>https://qdrant.tech/documentation/frameworks/haystack/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/haystack/</guid><description>&lt;h1 id="haystack">Haystack&lt;/h1>
&lt;p>&lt;a href="https://haystack.deepset.ai/" target="_blank" rel="noopener nofollow">Haystack&lt;/a> serves as a comprehensive NLP framework, offering a modular methodology for constructing
cutting-edge generative AI, QA, and semantic knowledge base search systems. A critical element in contemporary NLP systems is an
efficient database for storing and retrieving extensive text data. Vector databases excel in this role, as they house vector
representations of text and implement effective methods for swift retrieval. Thus, we are happy to announce the integration
with Haystack - &lt;code>QdrantDocumentStore&lt;/code>. This document store is unique, as it is maintained externally by the Qdrant team.&lt;/p></description></item><item><title>HoneyHive</title><link>https://qdrant.tech/documentation/frameworks/honeyhive/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/honeyhive/</guid><description>&lt;h1 id="honeyhive">HoneyHive&lt;/h1>
&lt;p>&lt;a href="https://www.honeyhive.ai/" target="_blank" rel="noopener nofollow">HoneyHive&lt;/a> is an AI evaluation and observability platform for Generative AI applications. HoneyHive’s platform gives developers enterprise-grade tools to debug complex retrieval pipelines, evaluate performance over large test suites, monitor usage in real-time, and manage prompts within a shared workspace. Teams use HoneyHive to iterate faster, detect failures at scale, and deliver exceptional AI products.&lt;/p>
&lt;p>By integrating Qdrant with HoneyHive, you can:&lt;/p>
&lt;ul>
&lt;li>Trace vector database operations&lt;/li>
&lt;li>Monitor latency, embedding quality, and context relevance&lt;/li>
&lt;li>Evaluate retrieval performance in your RAG pipelines&lt;/li>
&lt;li>Optimize parameters such as &lt;code>chunk_size&lt;/code> or &lt;code>chunk_overlap&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ul>
&lt;li>A HoneyHive account and API key&lt;/li>
&lt;li>Python 3.8+&lt;/li>
&lt;/ul>
&lt;h2 id="installation">Installation&lt;/h2>
&lt;p>Install the required packages:&lt;/p></description></item><item><title>Impressum</title><link>https://qdrant.tech/legal/impressum/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/legal/impressum/</guid><description>&lt;h1 id="impressum">Impressum&lt;/h1>
&lt;p>Angaben gemäß § 5 TMG&lt;/p>
&lt;p>Qdrant Solutions GmbH&lt;/p>
&lt;p>Chausseestraße 86&lt;br>
10115 Berlin&lt;/p>
&lt;h4 id="vertreten-durch">Vertreten durch:&lt;/h4>
&lt;p>André Zayarni&lt;/p>
&lt;h4 id="kontakt">Kontakt:&lt;/h4>
&lt;p>Telefon: +49 30 120 201 01&lt;/p>
&lt;p>E-Mail: &lt;a href="mailto:info@qdrant.com">info@qdrant.com&lt;/a>&lt;/p>
&lt;h4 id="registereintrag">Registereintrag:&lt;/h4>
&lt;p>Eintragung im Registergericht: Berlin Charlottenburg&lt;br>
Registernummer: HRB 235335 B&lt;/p>
&lt;h4 id="umsatzsteuer-id">Umsatzsteuer-ID:&lt;/h4>
&lt;p>Umsatzsteuer-Identifikationsnummer gemäß §27a Umsatzsteuergesetz: DE347779324&lt;/p>
&lt;h3 id="verantwortlich-für-den-inhalt-nach--55-abs-2-rstv">Verantwortlich für den Inhalt nach § 55 Abs. 2 RStV:&lt;/h3>
&lt;p>André Zayarni&lt;br>
Chausseestraße 86&lt;br>
10115 Berlin&lt;/p>
&lt;h2 id="haftungsausschluss">Haftungsausschluss:&lt;/h2>
&lt;h3 id="haftung-für-inhalte">Haftung für Inhalte&lt;/h3>
&lt;p>Die Inhalte unserer Seiten wurden mit größter Sorgfalt erstellt. Für die Richtigkeit, Vollständigkeit und Aktualität der Inhalte können wir jedoch keine Gewähr übernehmen. Als Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen. Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. Bei Bekanntwerden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.&lt;/p></description></item><item><title>InfinyOn Fluvio</title><link>https://qdrant.tech/documentation/data-management/fluvio/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/data-management/fluvio/</guid><description>&lt;p>&lt;img src="https://qdrant.tech/documentation/data-management/fluvio/fluvio-logo.png" alt="Fluvio Logo">&lt;/p>
&lt;p>&lt;a href="https://www.fluvio.io/" target="_blank" rel="noopener nofollow">InfinyOn Fluvio&lt;/a> is an open-source platform written in Rust for high speed, real-time data processing. It is cloud native, designed to work with any infrastructure type, from bare metal hardware to containerized platforms.&lt;/p>
&lt;h2 id="usage-with-qdrant">Usage with Qdrant&lt;/h2>
&lt;p>With the &lt;a href="https://github.com/qdrant/qdrant-fluvio" target="_blank" rel="noopener nofollow">Qdrant Fluvio Connector&lt;/a>, you can stream records from Fluvio topics to Qdrant collections, leveraging Fluvio&amp;rsquo;s delivery guarantees and high-throughput.&lt;/p>
&lt;h3 id="pre-requisites">Pre-requisites&lt;/h3>
&lt;ul>
&lt;li>A Fluvio installation. You can refer to the &lt;a href="https://www.fluvio.io/docs/fluvio/quickstart/" target="_blank" rel="noopener nofollow">Fluvio Quickstart&lt;/a> for instructions.&lt;/li>
&lt;li>Qdrant server to connect to. You can set up a &lt;a href="https://qdrant.tech/documentation/quickstart/">local instance&lt;/a> or a free cloud instance at &lt;a href="https://cloud.qdrant.io/" target="_blank" rel="noopener nofollow">cloud.qdrant.io&lt;/a>.&lt;/li>
&lt;/ul>
&lt;h3 id="downloading-the-connector">Downloading the connector&lt;/h3>
&lt;p>Run the following commands after &lt;a href="https://www.fluvio.io/docs/fluvio/quickstart" target="_blank" rel="noopener nofollow">setting up Fluvio&lt;/a>.&lt;/p></description></item><item><title>Jina Embeddings</title><link>https://qdrant.tech/documentation/embeddings/jina-embeddings/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/embeddings/jina-embeddings/</guid><description>&lt;h1 id="jina-embeddings">Jina Embeddings&lt;/h1>
&lt;p>Qdrant is compatible with &lt;a href="https://jina.ai/" target="_blank" rel="noopener nofollow">Jina AI&lt;/a> embeddings. You can get a free trial key from &lt;a href="https://jina.ai/embeddings/" target="_blank" rel="noopener nofollow">Jina Embeddings&lt;/a> to get embeddings.&lt;/p>
&lt;p>Qdrant users can receive a 10% discount on Jina AI APIs by using the code &lt;strong>QDRANT&lt;/strong>.&lt;/p>
&lt;h2 id="technical-summary">Technical Summary&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: center">Model&lt;/th>
 &lt;th style="text-align: center">Dimension&lt;/th>
 &lt;th style="text-align: center">Language&lt;/th>
 &lt;th style="text-align: center">MRL (matryoshka)&lt;/th>
 &lt;th style="text-align: center">Context&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: center">&lt;strong>jina-embeddings-v4&lt;/strong>&lt;/td>
 &lt;td style="text-align: center">&lt;strong>2048 (single-vector), 128 (multi-vector)&lt;/strong>&lt;/td>
 &lt;td style="text-align: center">&lt;strong>Multilingual (30+)&lt;/strong>&lt;/td>
 &lt;td style="text-align: center">&lt;strong>Yes&lt;/strong>&lt;/td>
 &lt;td style="text-align: center">&lt;strong>32768 + Text/Image&lt;/strong>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: center">jina-clip-v2&lt;/td>
 &lt;td style="text-align: center">1024&lt;/td>
 &lt;td style="text-align: center">Multilingual (100+, focus on 30)&lt;/td>
 &lt;td style="text-align: center">Yes&lt;/td>
 &lt;td style="text-align: center">Text/Image&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: center">jina-embeddings-v3&lt;/td>
 &lt;td style="text-align: center">1024&lt;/td>
 &lt;td style="text-align: center">Multilingual (89 languages)&lt;/td>
 &lt;td style="text-align: center">Yes&lt;/td>
 &lt;td style="text-align: center">8192&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: center">jina-embeddings-v2-base-en&lt;/td>
 &lt;td style="text-align: center">768&lt;/td>
 &lt;td style="text-align: center">English&lt;/td>
 &lt;td style="text-align: center">No&lt;/td>
 &lt;td style="text-align: center">8192&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: center">jina-embeddings-v2-base-de&lt;/td>
 &lt;td style="text-align: center">768&lt;/td>
 &lt;td style="text-align: center">German &amp;amp; English&lt;/td>
 &lt;td style="text-align: center">No&lt;/td>
 &lt;td style="text-align: center">8192&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: center">jina-embeddings-v2-base-es&lt;/td>
 &lt;td style="text-align: center">768&lt;/td>
 &lt;td style="text-align: center">Spanish &amp;amp; English&lt;/td>
 &lt;td style="text-align: center">No&lt;/td>
 &lt;td style="text-align: center">8192&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: center">jina-embeddings-v2-base-zh&lt;/td>
 &lt;td style="text-align: center">768&lt;/td>
 &lt;td style="text-align: center">Chinese &amp;amp; English&lt;/td>
 &lt;td style="text-align: center">No&lt;/td>
 &lt;td style="text-align: center">8192&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;blockquote>
&lt;p>Jina recommends using &lt;code>jina-embeddings-v4&lt;/code> for all tasks.&lt;/p></description></item><item><title>Join our team</title><link>https://qdrant.tech/about-us/about-us-get-started/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/about-us/about-us-get-started/</guid><description/></item><item><title>Keboola</title><link>https://qdrant.tech/documentation/platforms/keboola/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/platforms/keboola/</guid><description>&lt;h1 id="keboola">Keboola&lt;/h1>
&lt;p>&lt;a href="https://www.keboola.com/" target="_blank" rel="noopener nofollow">Keboola&lt;/a> is a data operations platform that integrates data engineering, analytics, and machine learning tools into a single environment. It helps businesses unify their data sources, transform data, and deploy ML models to production.&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ol>
&lt;li>A Qdrant instance to connect to. You can get a free cloud instance at &lt;a href="https://cloud.qdrant.io/" target="_blank" rel="noopener nofollow">cloud.qdrant.io&lt;/a>.&lt;/li>
&lt;li>A &lt;a href="https://www.keboola.com/" target="_blank" rel="noopener nofollow">Keboola&lt;/a> account to develop your data workflows.&lt;/li>
&lt;/ol>
&lt;h2 id="setting-up">Setting Up&lt;/h2>
&lt;ul>
&lt;li>In your Keboola platform, navigate to the Components section.&lt;/li>
&lt;li>Find and add the Qdrant component from the component marketplace.&lt;/li>
&lt;li>Configure the connection to your Qdrant instance using your URL and API key.&lt;/li>
&lt;/ul>
&lt;h2 id="using-qdrant-in-keboola">Using Qdrant in Keboola&lt;/h2>
&lt;p>With Keboola&amp;rsquo;s Qdrant integration, you can:&lt;/p></description></item><item><title>Kotaemon</title><link>https://qdrant.tech/documentation/platforms/kotaemon/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/platforms/kotaemon/</guid><description>&lt;h1 id="kotaemon">Kotaemon&lt;/h1>
&lt;p>&lt;a href="https://github.com/Cinnamon/kotaemon" target="_blank" rel="noopener nofollow">Kotaemon&lt;/a> is open-source clean &amp;amp; customizable RAG UI for chatting with your documents. Built with both end users and developers in mind.&lt;/p>
&lt;p>Qdrant is supported as a vectorstore in Kotaemon for ingesting and retrieving documents.&lt;/p>
&lt;h2 id="configuration">Configuration&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>Refer to &lt;a href="https://cinnamon.github.io/kotaemon/" target="_blank" rel="noopener nofollow">Getting started&lt;/a> guide to set up Kotaemon.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>To configure Kotaemon to use Qdrant as the vector store, update the &lt;code>flowsettings.py&lt;/code> as follows.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="n">KH_VECTORSTORE&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;__type__&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;kotaemon.storages.QdrantVectorStore&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;url&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;https://xyz-example.eu-central.aws.cloud.qdrant.io:6333&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;api_key&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;&amp;lt;provide-your-own-key&amp;gt;&amp;#39;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;client_kwargs&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{}&lt;/span> &lt;span class="c1"># Additional options to pass to qdrant_client.QdrantClient&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>Restart Kotaemon for the changes to take effect.&lt;/li>
&lt;/ul>
&lt;p>The reference for all the Qdrant client options can be found &lt;a href="https://python-client.qdrant.tech/qdrant_client.qdrant_client" target="_blank" rel="noopener nofollow">here&lt;/a>&lt;/p></description></item><item><title>LangChain</title><link>https://qdrant.tech/documentation/frameworks/langchain/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/langchain/</guid><description>&lt;h1 id="langchain">LangChain&lt;/h1>
&lt;p>LangChain is a library that makes developing Large Language Model-based applications much easier. It unifies the interfaces
to different libraries, including major embedding providers and Qdrant. Using LangChain, you can focus on the business value instead of writing the boilerplate.&lt;/p>
&lt;p>LangChain distributes the Qdrant integration as a partner package.&lt;/p>
&lt;p>It might be installed with pip:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install langchain-qdrant
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The integration supports searching for relevant documents using dense/sparse and hybrid retrieval.&lt;/p></description></item><item><title>LangChain4j</title><link>https://qdrant.tech/documentation/frameworks/langchain4j/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/langchain4j/</guid><description>&lt;h1 id="langchain-for-java">LangChain for Java&lt;/h1>
&lt;p>LangChain for Java, also known as &lt;a href="https://github.com/langchain4j/langchain4j" target="_blank" rel="noopener nofollow">Langchain4J&lt;/a>, is a community port of &lt;a href="https://www.langchain.com/" target="_blank" rel="noopener nofollow">Langchain&lt;/a> for building context-aware AI applications in Java&lt;/p>
&lt;p>You can use Qdrant as a vector store in LangChain4j through the &lt;a href="https://central.sonatype.com/artifact/dev.langchain4j/langchain4j-qdrant" target="_blank" rel="noopener nofollow">&lt;code>langchain4j-qdrant&lt;/code>&lt;/a> module.&lt;/p>
&lt;h2 id="setup">Setup&lt;/h2>
&lt;p>Add the &lt;code>langchain4j-qdrant&lt;/code> to your project dependencies.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-xml" data-lang="xml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;dependency&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;groupId&amp;gt;&lt;/span>dev.langchain4j&lt;span class="nt">&amp;lt;/groupId&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;artifactId&amp;gt;&lt;/span>langchain4j-qdrant&lt;span class="nt">&amp;lt;/artifactId&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;version&amp;gt;&lt;/span>VERSION&lt;span class="nt">&amp;lt;/version&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;/dependency&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="usage">Usage&lt;/h2>
&lt;p>Before you use the following code sample, customize the following values for your configuration:&lt;/p>
&lt;ul>
&lt;li>&lt;code>YOUR_COLLECTION_NAME&lt;/code>: Use our &lt;a href="https://qdrant.tech/documentation/manage-data/collections/">Collections&lt;/a> guide to create or
list collections.&lt;/li>
&lt;li>&lt;code>YOUR_HOST_URL&lt;/code>: Use the GRPC URL for your system. If you used the &lt;a href="https://qdrant.tech/documentation/quickstart/">Quick Start&lt;/a> guide,
it may be http://localhost:6334. If you&amp;rsquo;ve deployed in the &lt;a href="https://qdrant.tech/documentation/cloud/">Qdrant Cloud&lt;/a>, you may have a
longer URL such as &lt;code>https://example.location.cloud.qdrant.io:6334&lt;/code>.&lt;/li>
&lt;li>&lt;code>YOUR_API_KEY&lt;/code>: Substitute the API key associated with your configuration.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-java" data-lang="java">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nn">dev.langchain4j.store.embedding.EmbeddingStore&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="kn">import&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nn">dev.langchain4j.store.embedding.qdrant.QdrantEmbeddingStore&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="n">EmbeddingStore&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">TextSegment&lt;/span>&lt;span class="o">&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">embeddingStore&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">QdrantEmbeddingStore&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">builder&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c1">// Ensure the collection is configured with the appropriate dimensions&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c1">// of the embedding model.&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c1">// Reference: https://qdrant.tech/documentation/manage-data/collections/&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">collectionName&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;YOUR_COLLECTION_NAME&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">host&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;YOUR_HOST_URL&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c1">// GRPC port of the Qdrant server&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">port&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">6334&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">apiKey&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;YOUR_API_KEY&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="na">build&lt;/span>&lt;span class="p">();&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>QdrantEmbeddingStore&lt;/code> supports all the semantic features of LangChain4j.&lt;/p></description></item><item><title>LangGraph</title><link>https://qdrant.tech/documentation/frameworks/langgraph/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/langgraph/</guid><description>&lt;h1 id="langgraph">LangGraph&lt;/h1>
&lt;p>&lt;a href="https://github.com/langchain-ai/langgraph" target="_blank" rel="noopener nofollow">LangGraph&lt;/a> is a library for building stateful, multi-actor applications, ideal for creating agentic workflows. It provides fine-grained control over both the flow and state of your application, crucial for creating reliable agents.&lt;/p>
&lt;p>You can define flows that involve cycles, essential for most agentic architectures, differentiating it from DAG-based solutions. Additionally, LangGraph includes built-in persistence, enabling advanced human-in-the-loop and memory features.&lt;/p>
&lt;p>LangGraph works seamlessly with all the components of LangChain. This means we can utilize Qdrant&amp;rsquo;s &lt;a href="https://qdrant.tech/documentation/frameworks/langchain/">Langchain integration&lt;/a> to create retrieval nodes in LangGraph, available in both Python and Javascript!&lt;/p></description></item><item><title>Leadership</title><link>https://qdrant.tech/about-us/leadership/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/about-us/leadership/</guid><description/></item><item><title>LlamaIndex</title><link>https://qdrant.tech/documentation/frameworks/llama-index/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/llama-index/</guid><description>&lt;h1 id="llamaindex">LlamaIndex&lt;/h1>
&lt;p>Llama Index acts as an interface between your external data and Large Language Models. So you can bring your
private data and augment LLMs with it. LlamaIndex simplifies data ingestion and indexing, integrating Qdrant as a vector index.&lt;/p>
&lt;p>Installing Llama Index is straightforward if we use pip as a package manager. Qdrant is not installed by default, so we need to
install it separately. The integration of both tools also comes as another package.&lt;/p></description></item><item><title>Make.com</title><link>https://qdrant.tech/documentation/platforms/make/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/platforms/make/</guid><description>&lt;h1 id="makecom">Make.com&lt;/h1>
&lt;p>&lt;a href="https://www.make.com/" target="_blank" rel="noopener nofollow">Make&lt;/a> is a platform for anyone to design, build, and automate anything—from tasks and workflows to apps and systems without code.&lt;/p>
&lt;p>Find the comprehensive list of available Make apps &lt;a href="https://www.make.com/en/integrations" target="_blank" rel="noopener nofollow">here&lt;/a>.&lt;/p>
&lt;p>Qdrant is available as an &lt;a href="https://www.make.com/en/integrations/qdrant" target="_blank" rel="noopener nofollow">app&lt;/a> within Make to add to your scenarios.&lt;/p>
&lt;p>&lt;img src="https://qdrant.tech/documentation/frameworks/make/hero-page.png" alt="Qdrant Make hero">&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;p>Before you start, make sure you have the following:&lt;/p>
&lt;ol>
&lt;li>A Qdrant instance to connect to. You can get free cloud instance &lt;a href="https://cloud.qdrant.io/" target="_blank" rel="noopener nofollow">cloud.qdrant.io&lt;/a>.&lt;/li>
&lt;li>An account at Make.com. You can register yourself &lt;a href="https://www.make.com/en/register" target="_blank" rel="noopener nofollow">here&lt;/a>.&lt;/li>
&lt;/ol>
&lt;h2 id="setting-up-a-connection">Setting up a connection&lt;/h2>
&lt;p>Navigate to your scenario on the Make dashboard and select a Qdrant app module to start a connection.
&lt;img src="https://qdrant.tech/documentation/frameworks/make/connection.png" alt="Qdrant Make connection">&lt;/p></description></item><item><title>Mastra</title><link>https://qdrant.tech/documentation/frameworks/mastra/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/mastra/</guid><description>&lt;h1 id="mastra">Mastra&lt;/h1>
&lt;p>&lt;a href="https://mastra.ai/" target="_blank" rel="noopener nofollow">Mastra&lt;/a> is a Typescript framework to build AI applications and features quickly. It gives you the set of primitives you need: workflows, agents, RAG, integrations, syncs and evals. You can run Mastra on your local machine, or deploy to a serverless cloud.&lt;/p>
&lt;p>Qdrant is available as a vector store in Mastra node to augment application with retrieval capabilities.&lt;/p>
&lt;h2 id="setup">Setup&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">npm install @mastra/core
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="usage">Usage&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-typescript" data-lang="typescript">&lt;span class="line">&lt;span class="cl">&lt;span class="kr">import&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nx">QdrantVector&lt;/span> &lt;span class="p">}&lt;/span> &lt;span class="kr">from&lt;/span> &lt;span class="s2">&amp;#34;@mastra/rag&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">const&lt;/span> &lt;span class="nx">qdrant&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="nx">QdrantVector&lt;/span>&lt;span class="p">({&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">url&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s2">&amp;#34;https://xyz-example.eu-central.aws.cloud.qdrant.io:6333&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">apiKey&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s2">&amp;#34;&amp;lt;YOUR_API_KEY&amp;gt;&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nx">https&lt;/span>: &lt;span class="kt">true&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="constructor-options">Constructor Options&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Name&lt;/th>
 &lt;th>Type&lt;/th>
 &lt;th>Description&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;code>url&lt;/code>&lt;/td>
 &lt;td>&lt;code>string&lt;/code>&lt;/td>
 &lt;td>REST URL of the Qdrant instance. Eg. &lt;a href="https://xyz-example.eu-central.aws.cloud.qdrant.io:6333" target="_blank" rel="noopener nofollow">https://xyz-example.eu-central.aws.cloud.qdrant.io:6333&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>apiKey&lt;/code>&lt;/td>
 &lt;td>&lt;code>string&lt;/code>&lt;/td>
 &lt;td>Optional Qdrant API key&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>https&lt;/code>&lt;/td>
 &lt;td>&lt;code>boolean&lt;/code>&lt;/td>
 &lt;td>Whether to use TLS when setting up the connection. Recommended.&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="methods">Methods&lt;/h2>
&lt;h3 id="createindex">&lt;code>createIndex()&lt;/code>&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Name&lt;/th>
 &lt;th>Type&lt;/th>
 &lt;th>Description&lt;/th>
 &lt;th>Default Value&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;code>indexName&lt;/code>&lt;/td>
 &lt;td>&lt;code>string&lt;/code>&lt;/td>
 &lt;td>Name of the index to create&lt;/td>
 &lt;td>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>dimension&lt;/code>&lt;/td>
 &lt;td>&lt;code>number&lt;/code>&lt;/td>
 &lt;td>Vector dimension size&lt;/td>
 &lt;td>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>metric&lt;/code>&lt;/td>
 &lt;td>&lt;code>string&lt;/code>&lt;/td>
 &lt;td>Distance metric for similarity search&lt;/td>
 &lt;td>&lt;code>cosine&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="upsert">&lt;code>upsert()&lt;/code>&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Name&lt;/th>
 &lt;th>Type&lt;/th>
 &lt;th>Description&lt;/th>
 &lt;th>Default Value&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;code>vectors&lt;/code>&lt;/td>
 &lt;td>&lt;code>number[][]&lt;/code>&lt;/td>
 &lt;td>Array of embedding vectors&lt;/td>
 &lt;td>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>metadata&lt;/code>&lt;/td>
 &lt;td>&lt;code>Record&amp;lt;string, any&amp;gt;[]&lt;/code>&lt;/td>
 &lt;td>Metadata for each vector (optional)&lt;/td>
 &lt;td>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>namespace&lt;/code>&lt;/td>
 &lt;td>&lt;code>string&lt;/code>&lt;/td>
 &lt;td>Optional namespace for organization&lt;/td>
 &lt;td>&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="query">&lt;code>query()&lt;/code>&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Name&lt;/th>
 &lt;th>Type&lt;/th>
 &lt;th>Description&lt;/th>
 &lt;th>Default Value&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;code>vector&lt;/code>&lt;/td>
 &lt;td>&lt;code>number[]&lt;/code>&lt;/td>
 &lt;td>Query vector to find similar vectors&lt;/td>
 &lt;td>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>topK&lt;/code>&lt;/td>
 &lt;td>&lt;code>number&lt;/code>&lt;/td>
 &lt;td>Number of results to return (optional)&lt;/td>
 &lt;td>&lt;code>10&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>filter&lt;/code>&lt;/td>
 &lt;td>&lt;code>Record&amp;lt;string, any&amp;gt;&lt;/code>&lt;/td>
 &lt;td>Metadata filters for the query (optional)&lt;/td>
 &lt;td>&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="listindexes">&lt;code>listIndexes()&lt;/code>&lt;/h3>
&lt;p>Returns an array of index names as strings.&lt;/p></description></item><item><title>Mem0</title><link>https://qdrant.tech/documentation/frameworks/mem0/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/mem0/</guid><description>&lt;p>&lt;img src="https://qdrant.tech/documentation/frameworks/mem0/mem0-banner.png" alt="Mem0 Logo">&lt;/p>
&lt;p>&lt;a href="https://mem0.ai" target="_blank" rel="noopener nofollow">Mem0&lt;/a> is a self-improving memory layer for LLM applications, enabling personalized AI experiences that save costs and delight users. Mem0 remembers user preferences, adapts to individual needs, and continuously improves over time, ideal for chatbots and AI systems.&lt;/p>
&lt;p>Mem0 supports various vector store providers, including Qdrant, for efficient data handling and search capabilities.&lt;/p>
&lt;h2 id="installation">Installation&lt;/h2>
&lt;p>To install Mem0 with Qdrant support, use the following command:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sh" data-lang="sh">&lt;span class="line">&lt;span class="cl">pip install mem0ai
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="usage">Usage&lt;/h2>
&lt;p>Here&amp;rsquo;s a basic example of how to use Mem0 with Qdrant:&lt;/p></description></item><item><title>Microsoft GraphRAG</title><link>https://qdrant.tech/documentation/frameworks/microsoft-graphrag/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/microsoft-graphrag/</guid><description>&lt;h1 id="microsoft-graphrag">Microsoft GraphRAG&lt;/h1>
&lt;p>&lt;a href="https://github.com/microsoft/graphrag" target="_blank" rel="noopener nofollow">Microsoft GraphRAG&lt;/a> is a Python library for building knowledge graphs from unstructured text and using them for retrieval-augmented generation. It combines graph-based indexing with vector search to improve the quality and relevance of LLM responses.&lt;/p>
&lt;p>Qdrant can be used as a custom vector store backend for GraphRAG, enabling you to leverage Qdrant&amp;rsquo;s performance and scalability for storing and searching document embeddings.&lt;/p>
&lt;h2 id="installation">Installation&lt;/h2>
&lt;p>Install the required packages:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install graphrag qdrant-client
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="custom-vector-store-implementation">Custom Vector Store Implementation&lt;/h2>
&lt;p>GraphRAG allows you to register custom vector stores by extending the &lt;code>VectorStore&lt;/code> base class:&lt;/p></description></item><item><title>Microsoft NLWeb</title><link>https://qdrant.tech/documentation/frameworks/nlweb/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/nlweb/</guid><description>&lt;h1 id="nlweb">NLWeb&lt;/h1>
&lt;p>Microsoft&amp;rsquo;s &lt;a href="https://github.com/nlweb-ai/NLWeb" target="_blank" rel="noopener nofollow">NLWeb&lt;/a> is a proposed framework that enables natural language interfaces for websites, using Schema.org, formats like RSS and the emerging &lt;a href="https://github.com/nlweb-ai/NLWeb/blob/main/docs/nlweb-rest-api.md" target="_blank" rel="noopener nofollow">MCP protocol&lt;/a>.&lt;/p>
&lt;p>Qdrant is supported as a vector store backend within NLWeb for embedding storage and context retrieval.&lt;/p>
&lt;h2 id="usage">Usage&lt;/h2>
&lt;p>NLWeb includes Qdrant integration by default. You can install and configure it to use Qdrant as the retrieval engine.&lt;/p>
&lt;h3 id="installation">Installation&lt;/h3>
&lt;p>Clone the repo and set up your environment:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">git clone https://github.com/microsoft/NLWeb
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> NLWeb
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">python -m venv .venv
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">source&lt;/span> venv/bin/activate &lt;span class="c1"># or `venv\Scripts\activate` on Windows&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> code
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">pip install -r requirements.txt
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="configuring-qdrant">Configuring Qdrant&lt;/h3>
&lt;p>To use &lt;strong>Qdrant&lt;/strong>, update your configuration.&lt;/p></description></item><item><title>Mistral</title><link>https://qdrant.tech/documentation/embeddings/mistral/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/embeddings/mistral/</guid><description>&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 10 min&lt;/th>
 &lt;th>Level: Beginner&lt;/th>
 &lt;th>&lt;a href="https://githubtocolab.com/qdrant/examples/blob/mistral-getting-started/mistral-embed-getting-started/mistral_qdrant_getting_started.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;h1 id="mistral">Mistral&lt;/h1>
&lt;p>Qdrant is compatible with the new released Mistral Embed and its official Python SDK that can be installed as any other package:&lt;/p>
&lt;h2 id="setup">Setup&lt;/h2>
&lt;h3 id="install-the-client">Install the client&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install mistralai
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>And then we set this up:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">mistralai.client&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">MistralClient&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qdrant_client&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">QdrantClient&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qdrant_client.models&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">PointStruct&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">VectorParams&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">Distance&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">collection_name&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;example_collection&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">MISTRAL_API_KEY&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;your_mistral_api_key&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">client&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">QdrantClient&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;:memory:&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">mistral_client&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">MistralClient&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">api_key&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">MISTRAL_API_KEY&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">texts&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Qdrant is the best vector search engine!&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Loved by Enterprises and everyone building for low latency, high performance, and scale.&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Let&amp;rsquo;s see how to use the Embedding Model API to embed a document for retrieval.&lt;/p></description></item><item><title>MixedBread</title><link>https://qdrant.tech/documentation/embeddings/mixedbread/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/embeddings/mixedbread/</guid><description>&lt;h1 id="using-mixedbread-with-qdrant">Using MixedBread with Qdrant&lt;/h1>
&lt;p>MixedBread is a unique provider offering embeddings across multiple domains. Their models are versatile for various search tasks when integrated with Qdrant. MixedBread is creating state-of-the-art models and tools that make search smarter, faster, and more relevant. Whether you&amp;rsquo;re building a next-gen search engine or RAG (Retrieval Augmented Generation) systems, or whether you&amp;rsquo;re enhancing your existing search solution, they&amp;rsquo;ve got the ingredients to make it happen.&lt;/p></description></item><item><title>Mixpeek</title><link>https://qdrant.tech/documentation/embeddings/mixpeek/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/embeddings/mixpeek/</guid><description>&lt;h1 id="mixpeek-video-embeddings">Mixpeek Video Embeddings&lt;/h1>
&lt;p>Mixpeek&amp;rsquo;s video processing capabilities allow you to chunk and embed videos, while Qdrant provides efficient storage and retrieval of these embeddings.&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ul>
&lt;li>Python 3.7+&lt;/li>
&lt;li>Mixpeek API key&lt;/li>
&lt;li>Mixpeek client installed (&lt;code>pip install mixpeek&lt;/code>)&lt;/li>
&lt;li>Qdrant client installed (&lt;code>pip install qdrant-client&lt;/code>)&lt;/li>
&lt;/ul>
&lt;h2 id="installation">Installation&lt;/h2>
&lt;ol>
&lt;li>Install the required packages:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install mixpeek qdrant-client
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="2">
&lt;li>Set up your Mixpeek API key:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">mixpeek&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">Mixpeek&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">mixpeek&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Mixpeek&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;your_api_key_here&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ol start="3">
&lt;li>Initialize the Qdrant client:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qdrant_client&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">QdrantClient&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">client&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">QdrantClient&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;localhost&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">port&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">6333&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="usage">Usage&lt;/h2>
&lt;h3 id="1-create-qdrant-collection">1. Create Qdrant Collection&lt;/h3>
&lt;p>Make sure to create a Qdrant collection before inserting vectors. You can create a collection with the appropriate vector size (768 for &amp;ldquo;vuse-generic-v1&amp;rdquo; model) using:&lt;/p></description></item><item><title>N8N</title><link>https://qdrant.tech/documentation/platforms/n8n/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/platforms/n8n/</guid><description>&lt;h1 id="n8n">N8N&lt;/h1>
&lt;p>&lt;a href="https://n8n.io/" target="_blank" rel="noopener nofollow">N8N&lt;/a> is an automation platform that allows you to build flexible workflows focused on deep data integration.&lt;/p>
&lt;p>&lt;a href="https://github.com/qdrant/n8n-nodes-qdrant" target="_blank" rel="noopener nofollow">Qdrant&amp;rsquo;s official node&lt;/a> for n8n enables semantic search capabilities in your workflows.&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ol>
&lt;li>A Qdrant instance to connect to. You can get a free cloud instance at &lt;a href="https://cloud.qdrant.io/" target="_blank" rel="noopener nofollow">cloud.qdrant.io&lt;/a>.&lt;/li>
&lt;li>A running N8N instance. You can learn more about using the N8N cloud or self-hosting &lt;a href="https://docs.n8n.io/choose-n8n/" target="_blank" rel="noopener nofollow">here&lt;/a>.&lt;/li>
&lt;/ol>
&lt;h2 id="setting-up-the-node">Setting up the node&lt;/h2>
&lt;ul>
&lt;li>Select and install the official Qdrant node from the list of nodes in your workflow editor.&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://qdrant.tech/documentation/frameworks/n8n/node.png" alt="Qdrant n8n node">&lt;/p></description></item><item><title>Neo4j GraphRAG</title><link>https://qdrant.tech/documentation/frameworks/neo4j-graphrag/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/neo4j-graphrag/</guid><description>&lt;h1 id="neo4j-graphrag">Neo4j GraphRAG&lt;/h1>
&lt;p>&lt;a href="https://neo4j.com/docs/neo4j-graphrag-python/current/" target="_blank" rel="noopener nofollow">Neo4j GraphRAG&lt;/a> is a Python package to build graph retrieval augmented generation (GraphRAG) applications using Neo4j and Python. As a first-party library, it offers a robust, feature-rich, and high-performance solution, with the added assurance of long-term support and maintenance directly from Neo4j. It offers a Qdrant retriever natively to search for vectors stored in a Qdrant collection.&lt;/p>
&lt;h2 id="installation">Installation&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install neo4j-graphrag&lt;span class="o">[&lt;/span>qdrant&lt;span class="o">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="usage">Usage&lt;/h2>
&lt;p>A vector query with Neo4j and Qdrant could look like:&lt;/p></description></item><item><title>Nomic</title><link>https://qdrant.tech/documentation/embeddings/nomic/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/embeddings/nomic/</guid><description>&lt;h1 id="nomic">Nomic&lt;/h1>
&lt;p>The &lt;code>nomic-embed-text-v1&lt;/code> model is an open source &lt;a href="https://github.com/nomic-ai/contrastors" target="_blank" rel="noopener nofollow">8192 context length&lt;/a> text encoder.
While you can find it on the &lt;a href="https://huggingface.co/nomic-ai/nomic-embed-text-v1" target="_blank" rel="noopener nofollow">Hugging Face Hub&lt;/a>,
you may find it easier to obtain them through the &lt;a href="https://docs.nomic.ai/reference/endpoints/nomic-embed-text" target="_blank" rel="noopener nofollow">Nomic Text Embeddings&lt;/a>.
Once installed, you can configure it with the official Python client, FastEmbed or through direct HTTP requests.&lt;/p>
&lt;aside role="status">Using Nomic Embeddings via the Nomic API/SDK requires configuring the &lt;a href="https://atlas.nomic.ai/cli-login">Nomic API token&lt;/a>.&lt;/aside>
&lt;p>You can use Nomic embeddings directly in Qdrant client calls. There is a difference in the way the embeddings
are obtained for documents and queries.&lt;/p></description></item><item><title>Nvidia</title><link>https://qdrant.tech/documentation/embeddings/nvidia/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/embeddings/nvidia/</guid><description>&lt;h1 id="nvidia">Nvidia&lt;/h1>
&lt;p>Qdrant supports working with &lt;a href="https://build.nvidia.com/explore/retrieval" target="_blank" rel="noopener nofollow">Nvidia embeddings&lt;/a>.&lt;/p>
&lt;p>You can generate an API key to authenticate the requests from the &lt;a href="https://build.nvidia.com/nvidia/embed-qa-4" target="_blank" rel="noopener nofollow">Nvidia Playground&lt;/a>.&lt;/p>
&lt;h3 id="setting-up-the-qdrant-client-and-nvidia-session">Setting up the Qdrant client and Nvidia session&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">requests&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qdrant_client&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">QdrantClient&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">NVIDIA_BASE_URL&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;https://ai.api.nvidia.com/v1/retrieval/nvidia/embeddings&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">NVIDIA_API_KEY&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;&amp;lt;YOUR_API_KEY&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">nvidia_session&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">requests&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Session&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">client&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">QdrantClient&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;:memory:&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">headers&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Authorization&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;Bearer &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">NVIDIA_API_KEY&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Accept&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;application/json&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">texts&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Qdrant is the best vector search engine!&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Loved by Enterprises and everyone building for low latency, high performance, and scale.&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-typescript" data-lang="typescript">&lt;span class="line">&lt;span class="cl">&lt;span class="kr">import&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nx">QdrantClient&lt;/span> &lt;span class="p">}&lt;/span> &lt;span class="kr">from&lt;/span> &lt;span class="s1">&amp;#39;@qdrant/js-client-rest&amp;#39;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">const&lt;/span> &lt;span class="nx">NVIDIA_BASE_URL&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;https://ai.api.nvidia.com/v1/retrieval/nvidia/embeddings&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">const&lt;/span> &lt;span class="nx">NVIDIA_API_KEY&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;&amp;lt;YOUR_API_KEY&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">const&lt;/span> &lt;span class="nx">client&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="nx">QdrantClient&lt;/span>&lt;span class="p">({&lt;/span> &lt;span class="nx">url&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s1">&amp;#39;http://localhost:6333&amp;#39;&lt;/span> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">const&lt;/span> &lt;span class="nx">headers&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Authorization&amp;#34;&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s2">&amp;#34;Bearer &amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="nx">NVIDIA_API_KEY&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Accept&amp;#34;&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s2">&amp;#34;application/json&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Content-Type&amp;#34;&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s2">&amp;#34;application/json&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">const&lt;/span> &lt;span class="nx">texts&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Qdrant is the best vector search engine!&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Loved by Enterprises and everyone building for low latency, high performance, and scale.&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The following example shows how to embed documents with the &lt;code>embed-qa-4&lt;/code> model that generates sentence embeddings of size 1024.&lt;/p></description></item><item><title>Ollama</title><link>https://qdrant.tech/documentation/embeddings/ollama/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/embeddings/ollama/</guid><description>&lt;h1 id="using-ollama-with-qdrant">Using Ollama with Qdrant&lt;/h1>
&lt;p>&lt;a href="https://ollama.com" target="_blank" rel="noopener nofollow">Ollama&lt;/a> provides specialized embeddings for niche applications. Ollama supports a &lt;a href="https://ollama.com/search?c=embedding" target="_blank" rel="noopener nofollow">variety of embedding models&lt;/a>, making it possible to build retrieval augmented generation (RAG) applications that combine text prompts with existing documents or other data in specialized areas.&lt;/p>
&lt;h2 id="installation">Installation&lt;/h2>
&lt;p>You can install the required packages using the following pip command:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install ollama qdrant-client
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="integration-example">Integration Example&lt;/h2>
&lt;p>The following code assumes Ollama is accessible at port &lt;code>11434&lt;/code> and Qdrant at port &lt;code>6333&lt;/code>.&lt;/p></description></item><item><title>OpenAI</title><link>https://qdrant.tech/documentation/embeddings/openai/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/embeddings/openai/</guid><description>&lt;h1 id="openai">OpenAI&lt;/h1>
&lt;p>Qdrant supports working with &lt;a href="https://platform.openai.com/docs/guides/embeddings/embeddings" target="_blank" rel="noopener nofollow">OpenAI embeddings&lt;/a>.&lt;/p>
&lt;p>There is an official OpenAI Python package that simplifies obtaining them, and it can be installed with pip:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install openai
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="setting-up-the-openai-and-qdrant-clients">Setting up the OpenAI and Qdrant clients&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">openai&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">qdrant_client&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">openai_client&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">openai&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Client&lt;/span>&lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">api_key&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;&amp;lt;YOUR_API_KEY&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">client&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">qdrant_client&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">QdrantClient&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;:memory:&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">texts&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Qdrant is the best vector search engine!&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Loved by Enterprises and everyone building for low latency, high performance, and scale.&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The following example shows how to embed a document with the &lt;code>text-embedding-3-small&lt;/code> model that generates sentence embeddings of size 1536. You can find the list of all supported models &lt;a href="https://platform.openai.com/docs/models/embeddings" target="_blank" rel="noopener nofollow">here&lt;/a>.&lt;/p></description></item><item><title>Our Engineering Culture</title><link>https://qdrant.tech/about-us/about-us-engineering-culture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/about-us/about-us-engineering-culture/</guid><description/></item><item><title>Our Investors</title><link>https://qdrant.tech/about-us/investors/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/about-us/investors/</guid><description/></item><item><title>Our story</title><link>https://qdrant.tech/about-us/our-story/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/about-us/our-story/</guid><description/></item><item><title>Pipedream</title><link>https://qdrant.tech/documentation/platforms/pipedream/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/platforms/pipedream/</guid><description>&lt;h1 id="pipedream">Pipedream&lt;/h1>
&lt;p>&lt;a href="https://pipedream.com/" target="_blank" rel="noopener nofollow">Pipedream&lt;/a> is a development platform that allows developers to connect many different applications, data sources, and APIs in order to build automated cross-platform workflows. It also offers code-level control with Node.js, Python, Go, or Bash if required.&lt;/p>
&lt;p>You can use the &lt;a href="https://pipedream.com/apps/qdrant" target="_blank" rel="noopener nofollow">Qdrant app&lt;/a> in Pipedream to add vector search capabilities to your workflows.&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ol>
&lt;li>A Qdrant instance to connect to. You can get a free cloud instance at &lt;a href="https://cloud.qdrant.io/" target="_blank" rel="noopener nofollow">cloud.qdrant.io&lt;/a>.&lt;/li>
&lt;li>A &lt;a href="https://pipedream.com/" target="_blank" rel="noopener nofollow">Pipedream project&lt;/a> to develop your workflows.&lt;/li>
&lt;/ol>
&lt;h2 id="setting-up">Setting Up&lt;/h2>
&lt;p>Search for the Qdrant app in your workflow apps.&lt;/p></description></item><item><title>POMA</title><link>https://qdrant.tech/documentation/data-management/poma/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/data-management/poma/</guid><description>&lt;h1 id="poma--qdrant-structure-preserving-retrieval">POMA + Qdrant: Structure-Preserving Retrieval&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 15 min&lt;/th>
 &lt;th>Level: Beginner/Intermediate&lt;/th>
 &lt;th>&lt;a href="https://colab.research.google.com/github/poma-ai/.github/blob/main/notebooks/qdrant/poma_meets_qdrant.ipynb" target="_blank" rel="noopener nofollow">Complete Notebook&lt;/a>&lt;/th>
 &lt;th>&lt;a href="https://github.com/poma-ai/.github/blob/main/notebooks/qdrant/poma_meets_qdrant.ipynb" target="_blank" rel="noopener nofollow">Notebook Source&lt;/a>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="overview">Overview&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>POMA&lt;/strong>, as &lt;em>document chunking engine&lt;/em>, is built around simplicity for operators: process files into structure-aware chunksets and send them to Qdrant with minimal boilerplate and a patented chunking approach.&lt;/li>
&lt;li>&lt;strong>Qdrant&lt;/strong> as your preferred &lt;em>vector search engine&lt;/em>.&lt;/li>
&lt;/ul>
&lt;p>Together, they combine individual simplicity into one streamlined workflow.&lt;/p>
&lt;p>This guide walks through the current &lt;a href="https://www.poma-ai.com/" target="_blank" rel="noopener nofollow">POMA AI&lt;/a> for Qdrant SDK flow: process documents, upsert chunksets, retrieve structure-preserving cheatsheets, and understand where convenience defaults end and advanced knobs begin.&lt;/p></description></item><item><title>Power Apps</title><link>https://qdrant.tech/documentation/platforms/powerapps/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/platforms/powerapps/</guid><description>&lt;h1 id="power-apps">Power Apps&lt;/h1>
&lt;p>Microsoft &lt;a href="https://www.microsoft.com/en-us/power-platform/products/power-apps" target="_blank" rel="noopener nofollow">Power Apps&lt;/a> is a suite of apps, services, and connectors that provides a rapid development environment to build custom apps for your business needs. You can quickly build custom business apps that connect to your data stored in many online and on-premises data sources.&lt;/p>
&lt;p>You can use the &lt;a href="https://learn.microsoft.com/en-us/connectors/qdrant/" target="_blank" rel="noopener nofollow">Qdrant Connector&lt;/a> in Power Apps to add vector search capabilities to your flows.&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ol>
&lt;li>A Qdrant instance to connect to. You can get a free cloud instance at &lt;a href="https://cloud.qdrant.io/" target="_blank" rel="noopener nofollow">cloud.qdrant.io&lt;/a>.&lt;/li>
&lt;li>A &lt;a href="https://www.microsoft.com/en-in/power-platform/products/power-apps/" target="_blank" rel="noopener nofollow">Power Apps account&lt;/a> to develop your flows.&lt;/li>
&lt;/ol>
&lt;h2 id="setting-up">Setting Up&lt;/h2>
&lt;p>Search for the Qdrant connector when adding a new action in a Power Apps flow. The connector offers an exhaustive list of pre-built Qdrant actions.&lt;/p></description></item><item><title>Prem AI</title><link>https://qdrant.tech/documentation/embeddings/premai/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/embeddings/premai/</guid><description>&lt;h1 id="prem-ai">Prem AI&lt;/h1>
&lt;p>&lt;a href="https://premai.io/" target="_blank" rel="noopener nofollow">PremAI&lt;/a> is a unified generative AI development platform for fine-tuning deploying, and monitoring AI models.&lt;/p>
&lt;p>Qdrant is compatible with PremAI APIs.&lt;/p>
&lt;h3 id="installing-the-sdks">Installing the SDKs&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install premai qdrant-client
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>To install the npm package:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">npm install @premai/prem-sdk @qdrant/js-client-rest
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="import-all-required-packages">Import all required packages&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">premai&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">Prem&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qdrant_client&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">QdrantClient&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qdrant_client.models&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">Distance&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">VectorParams&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-typescript" data-lang="typescript">&lt;span class="line">&lt;span class="cl">&lt;span class="kr">import&lt;/span> &lt;span class="nx">Prem&lt;/span> &lt;span class="kr">from&lt;/span> &lt;span class="s1">&amp;#39;@premai/prem-sdk&amp;#39;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">import&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nx">QdrantClient&lt;/span> &lt;span class="p">}&lt;/span> &lt;span class="kr">from&lt;/span> &lt;span class="s1">&amp;#39;@qdrant/js-client-rest&amp;#39;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="define-all-the-constants">Define all the constants&lt;/h3>
&lt;p>We need to define the project ID and the embedding model to use. You can learn more about obtaining these in the PremAI &lt;a href="https://docs.premai.io/quick-start" target="_blank" rel="noopener nofollow">docs&lt;/a>.&lt;/p></description></item><item><title>Privacy Policy</title><link>https://qdrant.tech/legal/privacy-policy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/legal/privacy-policy/</guid><description>&lt;h1 id="privacy-policy">Privacy Policy&lt;/h1>
&lt;h2 id="1-introduction">&lt;strong>1. Introduction&lt;/strong>&lt;/h2>
&lt;p>In the following, we provide information about the collection of personal data when using:&lt;/p>
&lt;ul>
&lt;li>our website (&lt;a href="https://qdrant.tech" target="_blank" rel="noopener nofollow">https://qdrant.tech&lt;/a>)&lt;/li>
&lt;li>our Cloud Panel (&lt;a href="https://cloud.qdrant.io/" target="_blank" rel="noopener nofollow">https://cloud.qdrant.io/&lt;/a>)&lt;/li>
&lt;li>Qdrant’s social media profiles.&lt;/li>
&lt;/ul>
&lt;p>Personal data is any data that can be related to a specific natural person, such as their name or IP address.&lt;/p>
&lt;h3 id="11-contact-details">&lt;strong>1.1. Contact details&lt;/strong>&lt;/h3>
&lt;p>The controller within the meaning of Art. 4 para. 7 EU General Data Protection Regulation (GDPR) is Qdrant Solutions GmbH, Chausseestraße 86, 10115 Berlin, Germany, email: &lt;a href="mailto:info@qdrant.com">info@qdrant.com&lt;/a>. We are legally represented by André Zayarni.&lt;/p></description></item><item><title>PrivateGPT</title><link>https://qdrant.tech/documentation/platforms/privategpt/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/platforms/privategpt/</guid><description>&lt;h1 id="privategpt">PrivateGPT&lt;/h1>
&lt;p>&lt;a href="https://docs.privategpt.dev/" target="_blank" rel="noopener nofollow">PrivateGPT&lt;/a> is a production-ready AI project that allows you to inquire about your documents using Large Language Models (LLMs) with offline support.&lt;/p>
&lt;p>PrivateGPT uses Qdrant as the default vectorstore for ingesting and retrieving documents.&lt;/p>
&lt;h2 id="configuration">Configuration&lt;/h2>
&lt;p>Qdrant settings can be configured by setting values to the qdrant property in the &lt;code>settings.yaml&lt;/code> file. By default, Qdrant tries to connect to an instance at http://localhost:3000.&lt;/p>
&lt;p>Example:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">qdrant&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">url&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;https://xyz-example.eu-central.aws.cloud.qdrant.io:6333&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">api_key&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;&amp;lt;your-api-key&amp;gt;&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The available &lt;a href="https://docs.privategpt.dev/manual/storage/vector-stores#qdrant-configuration" target="_blank" rel="noopener nofollow">configuration options&lt;/a> are:&lt;/p></description></item><item><title>Pulumi</title><link>https://qdrant.tech/documentation/cloud-tools/pulumi/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/cloud-tools/pulumi/</guid><description>&lt;p>&lt;img src="https://qdrant.tech/documentation/platforms/pulumi/pulumi-logo.png" alt="Pulumi Logo">&lt;/p>
&lt;p>Pulumi is an open source infrastructure as code tool for creating, deploying, and managing cloud infrastructure.&lt;/p>
&lt;p>A Qdrant SDK in any of Pulumi&amp;rsquo;s supported languages can be generated based on the &lt;a href="https://registry.terraform.io/providers/qdrant/qdrant-cloud/latest" target="_blank" rel="noopener nofollow">Qdrant Terraform Provider&lt;/a>.&lt;/p>
&lt;h2 id="pre-requisites">Pre-requisites&lt;/h2>
&lt;ol>
&lt;li>A &lt;a href="https://www.pulumi.com/docs/install/" target="_blank" rel="noopener nofollow">Pulumi Installation&lt;/a>.&lt;/li>
&lt;li>An &lt;a href="https://qdrant.tech/documentation/cloud-api/#authentication-connecting-to-cloud-api">API key&lt;/a> to access the Qdrant cloud API.&lt;/li>
&lt;/ol>
&lt;h2 id="setup">Setup&lt;/h2>
&lt;ul>
&lt;li>Create a Pulumi project in any of the &lt;a href="https://www.pulumi.com/docs/languages-sdks/" target="_blank" rel="noopener nofollow">supported languages&lt;/a> by running&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">mkdir qdrant-pulumi &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="nb">cd&lt;/span> qdrant-pulumi
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">pulumi new &lt;span class="s2">&amp;#34;&amp;lt;LANGUAGE&amp;gt;&amp;#34;&lt;/span> -y
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>Generate a Pulumi SDK for Qdrant by running the following in your Pulumi project directory.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pulumi package add terraform-provider registry.terraform.io/qdrant/qdrant-cloud
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>Set the Qdrant cloud API as a config value.&lt;/li>
&lt;/ul>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pulumi config &lt;span class="nb">set&lt;/span> qdrant-cloud:apiKey &lt;span class="s2">&amp;#34;&amp;lt;QDRANT_CLOUD_API_KEY&amp;gt;&amp;#34;&lt;/span> --secret
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="example-usage">Example Usage&lt;/h2>
&lt;p>The following example creates a new Qdrant cluster in Google Cloud Platform (GCP) and returns the URL of the cluster.&lt;/p></description></item><item><title>RAG Evaluation guide</title><link>https://qdrant.tech/rag/rag-evaluation-guide/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/rag/rag-evaluation-guide/</guid><description/></item><item><title>Redpanda Connect</title><link>https://qdrant.tech/documentation/data-management/redpanda/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/data-management/redpanda/</guid><description>&lt;p>&lt;img src="https://qdrant.tech/documentation/data-management/redpanda/redpanda-cover.png" alt="Redpanda Cover">&lt;/p>
&lt;p>&lt;a href="https://www.redpanda.com/connect" target="_blank" rel="noopener nofollow">Redpanda Connect&lt;/a> is a declarative data-agnostic streaming service designed for efficient, stateless processing steps. It offers transaction-based resiliency with back pressure, ensuring at-least-once delivery when connecting to at-least-once sources with sinks, without the need to persist messages during transit.&lt;/p>
&lt;p>Connect pipelines are configured using a YAML file, which organizes components hierarchically. Each section represents a different component type, such as inputs, processors and outputs, and these can have nested child components and &lt;a href="https://docs.redpanda.com/redpanda-connect/configuration/interpolation/" target="_blank" rel="noopener nofollow">dynamic values&lt;/a>.&lt;/p></description></item><item><title>Rig-rs</title><link>https://qdrant.tech/documentation/frameworks/rig-rs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/rig-rs/</guid><description>&lt;h1 id="rig-rs">Rig-rs&lt;/h1>
&lt;p>&lt;a href="http://rig.rs" target="_blank" rel="noopener nofollow">Rig&lt;/a> is a Rust library for building scalable, modular, and ergonomic LLM-powered applications. It has full support for LLM completion and embedding workflows with minimal boiler plate.&lt;/p>
&lt;p>Rig supports Qdrant as a vectorstore to ingest and search for documents semantically.&lt;/p>
&lt;h2 id="installation">Installation&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">cargo add rig-core rig-qdrant qdrant-client
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="usage">Usage&lt;/h2>
&lt;p>Here&amp;rsquo;s an example ingest and retrieve flow using Rig and Qdrant.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-rust" data-lang="rust">&lt;span class="line">&lt;span class="cl">&lt;span class="k">use&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">qdrant_client&lt;/span>::&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">qdrant&lt;/span>::&lt;span class="p">{&lt;/span>&lt;span class="n">PointStruct&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">QueryPointsBuilder&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">UpsertPointsBuilder&lt;/span>&lt;span class="p">},&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">Payload&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">Qdrant&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">};&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">use&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">rig&lt;/span>::&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">embeddings&lt;/span>::&lt;span class="n">EmbeddingsBuilder&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">providers&lt;/span>::&lt;span class="n">openai&lt;/span>::&lt;span class="p">{&lt;/span>&lt;span class="n">Client&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">TEXT_EMBEDDING_3_SMALL&lt;/span>&lt;span class="p">},&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">vector_store&lt;/span>::&lt;span class="n">VectorStoreIndex&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">};&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">use&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">rig_qdrant&lt;/span>::&lt;span class="n">QdrantVectorStore&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">use&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">serde_json&lt;/span>::&lt;span class="n">json&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">const&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="no">COLLECTION_NAME&lt;/span>: &lt;span class="kp">&amp;amp;&lt;/span>&lt;span class="kt">str&lt;/span> &lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s">&amp;#34;rig-collection&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c1">// Initialize Qdrant client.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">client&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">Qdrant&lt;/span>::&lt;span class="n">from_url&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;http://localhost:6334&amp;#34;&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">build&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="o">?&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c1">// Initialize OpenAI client.
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">openai_client&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">Client&lt;/span>::&lt;span class="n">new&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;&amp;lt;OPENAI_API_KEY&amp;gt;&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">model&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">openai_client&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">embedding_model&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="no">TEXT_EMBEDDING_3_SMALL&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">documents&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">EmbeddingsBuilder&lt;/span>::&lt;span class="n">new&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">model&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">clone&lt;/span>&lt;span class="p">())&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">simple_document&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;0981d983-a5f8-49eb-89ea-f7d3b2196d2e&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s">&amp;#34;Definition of a *flurbo*: A flurbo is a green alien that lives on cold planets&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">simple_document&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;62a36d43-80b6-4fd6-990c-f75bb02287d1&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s">&amp;#34;Definition of a *glarb-glarb*: A glarb-glarb is a ancient tool used by the ancestors of the inhabitants of planet Jiro to farm the land.&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">simple_document&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;f9e17d59-32e5-440c-be02-b2759a654824&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s">&amp;#34;Definition of a *linglingdong*: A term used by inhabitants of the far side of the moon to describe humans.&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">build&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="k">await&lt;/span>&lt;span class="o">?&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">points&lt;/span>: &lt;span class="nb">Vec&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">PointStruct&lt;/span>&lt;span class="o">&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">documents&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">into_iter&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">map&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">|&lt;/span>&lt;span class="n">d&lt;/span>&lt;span class="o">|&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">vec&lt;/span>: &lt;span class="nb">Vec&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">f32&lt;/span>&lt;span class="o">&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">d&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">embeddings&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">].&lt;/span>&lt;span class="n">vec&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">iter&lt;/span>&lt;span class="p">().&lt;/span>&lt;span class="n">map&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">|&amp;amp;&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="o">|&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">as&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kt">f32&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">collect&lt;/span>&lt;span class="p">();&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">PointStruct&lt;/span>::&lt;span class="n">new&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">d&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">id&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">vec&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">Payload&lt;/span>::&lt;span class="n">try_from&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="fm">json!&lt;/span>&lt;span class="p">({&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="s">&amp;#34;document&amp;#34;&lt;/span>: &lt;span class="nc">d&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">document&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">}))&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">unwrap&lt;/span>&lt;span class="p">(),&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">})&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">collect&lt;/span>&lt;span class="p">();&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="n">client&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">upsert_points&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">UpsertPointsBuilder&lt;/span>::&lt;span class="n">new&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="no">COLLECTION_NAME&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">points&lt;/span>&lt;span class="p">))&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="k">await&lt;/span>&lt;span class="o">?&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">query_params&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">QueryPointsBuilder&lt;/span>::&lt;span class="n">new&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="no">COLLECTION_NAME&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="n">with_payload&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">vector_store&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">QdrantVectorStore&lt;/span>::&lt;span class="n">new&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">client&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">model&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">query_params&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">build&lt;/span>&lt;span class="p">());&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="kd">let&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">results&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">vector_store&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">top_n&lt;/span>::&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">serde_json&lt;/span>::&lt;span class="n">Value&lt;/span>&lt;span class="o">&amp;gt;&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Define a glarb-glarb?&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="k">await&lt;/span>&lt;span class="o">?&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="fm">println!&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;Results: &lt;/span>&lt;span class="si">{:?}&lt;/span>&lt;span class="s">&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">results&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="further-reading">Further reading&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://rig.rs" target="_blank" rel="noopener nofollow">Rig-rs Documentation&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://github.com/0xPlaygrounds/rig" target="_blank" rel="noopener nofollow">Source Code&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Salesforce Mulesoft</title><link>https://qdrant.tech/documentation/platforms/mulesoft/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/platforms/mulesoft/</guid><description>&lt;h1 id="salesforce-mulesoft">Salesforce Mulesoft&lt;/h1>
&lt;p>&lt;a href="https://www.salesforce.com/in/mulesoft/anypoint-platform/" target="_blank" rel="noopener nofollow">MuleSoft Anypoint&lt;/a> is an integration platform to connect applications, data, and devices across on-premises and cloud environments. It provides a unified platform to build, manage, and secure APIs and integrations, making digital transformation smoother and more scalable.&lt;/p>
&lt;p>&lt;a href="https://mac-project.ai" target="_blank" rel="noopener nofollow">MAC Project&lt;/a> is an open-source initiative to bring AI capabilities into the MuleSoft ecosystem. It provides connectors to add AI capabilities to an Anypoint project by integrating LLMs, vector databases including Qdrant.&lt;/p></description></item><item><title>Semantic Search 101</title><link>https://qdrant.tech/documentation/tutorials-basics/search-beginners-local/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/tutorials-basics/search-beginners-local/</guid><description>&lt;h1 id="build-a-semantic-search-engine-in-5-minutes">Build a Semantic Search Engine in 5 Minutes&lt;/h1>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Time: 5 - 15 min&lt;/th>
 &lt;th>Level: Beginner&lt;/th>
 &lt;th>&lt;/th>
 &lt;th>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;/tbody>
&lt;/table>
&lt;blockquote>
&lt;p>There are two versions of this tutorial:&lt;/p>
&lt;ul>
&lt;li>With the version on this page, you&amp;rsquo;ll run Qdrant on your own machine. This requires you to manage your own cluster and vector embedding infrastructure.&lt;/li>
&lt;li>Alternatively, you can use Qdrant Cloud to deploy a cluster and generate vector embeddings using Qdrant Cloud&amp;rsquo;s &lt;strong>forever free&lt;/strong> tier (no credit card required). If you prefer this option, check out the &lt;a href="https://qdrant.tech/documentation/tutorials-basics/search-beginners/">Qdrant Cloud version of this tutorial&lt;/a>.&lt;/li>
&lt;/ul>
&lt;/blockquote>
&lt;p align="center">&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/AASiqmtKo54" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen>&lt;/iframe>&lt;/p></description></item><item><title>Semantic-Router</title><link>https://qdrant.tech/documentation/frameworks/semantic-router/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/semantic-router/</guid><description>&lt;h1 id="semantic-router">Semantic-Router&lt;/h1>
&lt;p>&lt;a href="https://www.aurelio.ai/semantic-router/" target="_blank" rel="noopener nofollow">Semantic-Router&lt;/a> is a library to build decision-making layers for your LLMs and agents. It uses vector embeddings to make tool-use decisions rather than LLM generations, routing our requests using semantic meaning.&lt;/p>
&lt;p>Qdrant is available as a supported index in Semantic-Router for you to ingest route data and perform retrievals.&lt;/p>
&lt;h2 id="installation">Installation&lt;/h2>
&lt;p>To use Semantic-Router with Qdrant, install the &lt;code>qdrant&lt;/code> extra:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-console" data-lang="console">&lt;span class="line">&lt;span class="cl">&lt;span class="go">pip install semantic-router[qdrant]
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="usage">Usage&lt;/h2>
&lt;p>Set up &lt;code>QdrantIndex&lt;/code> with the appropriate configurations:&lt;/p></description></item><item><title>SmolAgents</title><link>https://qdrant.tech/documentation/frameworks/smolagents/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/smolagents/</guid><description>&lt;h1 id="smolagents">SmolAgents&lt;/h1>
&lt;p>HuggingFace &lt;a href="https://github.com/huggingface/smolagents" target="_blank" rel="noopener nofollow">SmolAgents&lt;/a> is a Python library for building AI agents. These agents write Python code to call tools and orchestrate other agents.&lt;/p>
&lt;p>It uses &lt;code>CodeAgent&lt;/code>. An LLM engine that writes its actions in code. SmolAgents suggests that this approach is demonstrated to work better than the current industry practice of letting the LLM output a dictionary of the tools it wants to call: &lt;a href="https://huggingface.co/papers/2402.01030" target="_blank" rel="noopener nofollow">uses 30% fewer steps&lt;/a> (thus 30% fewer LLM calls)
and &lt;a href="https://huggingface.co/papers/2411.01747" target="_blank" rel="noopener nofollow">reaches higher performance on difficult benchmarks&lt;/a>.&lt;/p></description></item><item><title>Snowflake Models</title><link>https://qdrant.tech/documentation/embeddings/snowflake/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/embeddings/snowflake/</guid><description>&lt;h1 id="snowflake">Snowflake&lt;/h1>
&lt;p>Qdrant supports working with &lt;a href="https://www.snowflake.com/blog/introducing-snowflake-arctic-embed-snowflakes-state-of-the-art-text-embedding-family-of-models/" target="_blank" rel="noopener nofollow">Snowflake&lt;/a> text embedding models. You can find all the available models on &lt;a href="https://huggingface.co/Snowflake" target="_blank" rel="noopener nofollow">HuggingFace&lt;/a>.&lt;/p>
&lt;h3 id="setting-up-the-qdrant-and-snowflake-models">Setting up the Qdrant and Snowflake models&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qdrant_client&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">QdrantClient&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">fastembed&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">TextEmbedding&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">qclient&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">QdrantClient&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;:memory:&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">embedding_model&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">TextEmbedding&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;snowflake/snowflake-arctic-embed-s&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">texts&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Qdrant is the best vector search engine!&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Loved by Enterprises and everyone building for low latency, high performance, and scale.&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-typescript" data-lang="typescript">&lt;span class="line">&lt;span class="cl">&lt;span class="kr">import&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="nx">QdrantClient&lt;/span>&lt;span class="p">}&lt;/span> &lt;span class="kr">from&lt;/span> &lt;span class="s1">&amp;#39;@qdrant/js-client-rest&amp;#39;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">import&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nx">pipeline&lt;/span> &lt;span class="p">}&lt;/span> &lt;span class="kr">from&lt;/span> &lt;span class="s1">&amp;#39;@xenova/transformers&amp;#39;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">const&lt;/span> &lt;span class="nx">client&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="nx">QdrantClient&lt;/span>&lt;span class="p">({&lt;/span> &lt;span class="nx">url&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s1">&amp;#39;http://localhost:6333&amp;#39;&lt;/span> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">const&lt;/span> &lt;span class="nx">extractor&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">await&lt;/span> &lt;span class="nx">pipeline&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;feature-extraction&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s1">&amp;#39;Snowflake/snowflake-arctic-embed-s&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">const&lt;/span> &lt;span class="nx">texts&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Qdrant is the best vector search engine!&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Loved by Enterprises and everyone building for low latency, high performance, and scale.&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The following example shows how to embed documents with the &lt;a href="https://huggingface.co/Snowflake/snowflake-arctic-embed-s" target="_blank" rel="noopener nofollow">&lt;code>snowflake-arctic-embed-s&lt;/code>&lt;/a> model that generates sentence embeddings of size 384.&lt;/p></description></item><item><title>Spring AI</title><link>https://qdrant.tech/documentation/frameworks/spring-ai/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/spring-ai/</guid><description>&lt;h1 id="spring-ai">Spring AI&lt;/h1>
&lt;p>&lt;a href="https://docs.spring.io/spring-ai/reference/" target="_blank" rel="noopener nofollow">Spring AI&lt;/a> is a Java framework that provides a &lt;a href="https://spring.io/" target="_blank" rel="noopener nofollow">Spring-friendly&lt;/a> API and abstractions for developing AI applications.&lt;/p>
&lt;p>Qdrant is available as supported vector database for use within your Spring AI projects.&lt;/p>
&lt;h2 id="installation">Installation&lt;/h2>
&lt;p>You can find the Spring AI installation instructions &lt;a href="https://docs.spring.io/spring-ai/reference/getting-started.html" target="_blank" rel="noopener nofollow">here&lt;/a>.&lt;/p>
&lt;p>Add the Qdrant boot starter package.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-xml" data-lang="xml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;dependency&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;groupId&amp;gt;&lt;/span>org.springframework.ai&lt;span class="nt">&amp;lt;/groupId&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nt">&amp;lt;artifactId&amp;gt;&lt;/span>spring-ai-qdrant-store-spring-boot-starter&lt;span class="nt">&amp;lt;/artifactId&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nt">&amp;lt;/dependency&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="usage">Usage&lt;/h2>
&lt;p>Configure Qdrant with Spring Boot’s &lt;code>application.properties&lt;/code>.&lt;/p>
&lt;pre tabindex="0">&lt;code>spring.ai.vectorstore.qdrant.host=&amp;lt;host of your qdrant instance&amp;gt;
spring.ai.vectorstore.qdrant.port=&amp;lt;the GRPC port of your qdrant instance&amp;gt;
spring.ai.vectorstore.qdrant.api-key=&amp;lt;your api key&amp;gt;
spring.ai.vectorstore.qdrant.collection-name=&amp;lt;The name of the collection to use in Qdrant&amp;gt;
&lt;/code>&lt;/pre>&lt;p>Learn more about these options in the &lt;a href="https://docs.spring.io/spring-ai/reference/api/vectordbs/qdrant.html#qdrant-vectorstore-properties" target="_blank" rel="noopener nofollow">configuration reference&lt;/a>.&lt;/p></description></item><item><title>Stanford DSPy</title><link>https://qdrant.tech/documentation/frameworks/dspy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/dspy/</guid><description>&lt;h1 id="stanford-dspy">Stanford DSPy&lt;/h1>
&lt;p>&lt;a href="https://github.com/stanfordnlp/dspy" target="_blank" rel="noopener nofollow">DSPy&lt;/a> is the framework for solving advanced tasks with language models (LMs) and retrieval models (RMs). It unifies techniques for prompting and fine-tuning LMs — and approaches for reasoning, self-improvement, and augmentation with retrieval and tools.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Provides composable and declarative modules for instructing LMs in a familiar Pythonic syntax.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Introduces an automatic compiler that teaches LMs how to conduct the declarative steps in your program.&lt;/p>
&lt;/li>
&lt;/ul>
&lt;p>Qdrant can be used as a retrieval mechanism in the DSPy flow.&lt;/p></description></item><item><title>Swiftide</title><link>https://qdrant.tech/documentation/frameworks/swiftide/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/swiftide/</guid><description>&lt;h1 id="swiftide">Swiftide&lt;/h1>
&lt;p>Swiftide is a Rust library for building LLM applications. It supports everything from simple prompt completions to fast, streaming indexing and querying pipelines, and building composable agents that use tools or call other agents.&lt;/p>
&lt;h2 id="high-level-features">High level features&lt;/h2>
&lt;ul>
&lt;li>Simple primitives for common LLM tasks&lt;/li>
&lt;li>Streaming indexing and querying pipelines&lt;/li>
&lt;li>Composable agents and pipelines&lt;/li>
&lt;li>Modular, extendable API with minimal abstractions&lt;/li>
&lt;li>Integrations with popular LLMs and storage providers&lt;/li>
&lt;li>Built-in pipeline transformations (or bring your own)&lt;/li>
&lt;li>Graph-like workflows with Tasks&lt;/li>
&lt;li>&lt;a href="https://langfuse.com" target="_blank" rel="noopener nofollow">Langfuse&lt;/a> support&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="installation">Installation&lt;/h2>
&lt;p>Install Swiftide with Qdrant, OpenAI, and Redis support:&lt;/p></description></item><item><title>Sycamore</title><link>https://qdrant.tech/documentation/frameworks/sycamore/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/sycamore/</guid><description>&lt;h2 id="sycamore">Sycamore&lt;/h2>
&lt;p>&lt;a href="https://sycamore.readthedocs.io/en/stable/" target="_blank" rel="noopener nofollow">Sycamore&lt;/a> is an LLM-powered data preparation, processing, and analytics system for complex, unstructured documents like PDFs, HTML, presentations, and more. With Aryn, you can prepare data for GenAI and RAG applications, power high-quality document processing workflows, and run analytics on large document collections with natural language.&lt;/p>
&lt;p>You can use the Qdrant connector to write into and read documents from Qdrant collections.&lt;/p>
&lt;aside role="status">You can find an end-to-end example usage of the Qdrant connector &lt;a a target="_blank" href="https://github.com/aryn-ai/sycamore/blob/main/examples/simple_qdrant.py">here.&lt;/a>&lt;/aside>
&lt;h2 id="writing-to-qdrant">Writing to Qdrant&lt;/h2>
&lt;p>To write a Docset to a Qdrant collection in Sycamore, use the &lt;code>docset.write.qdrant(....)&lt;/code> function. The Qdrant writer accepts the following arguments:&lt;/p></description></item><item><title>Talk to Sales</title><link>https://qdrant.tech/lp/lucene/calendar/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/lp/lucene/calendar/</guid><description>&lt;div class="meetings-iframe-container" data-src="https://meetings-eu1.hubspot.com/seamus-deely/new-elastic-discovery-call-booked?embed=true">&lt;/div>
&lt;script type="text/javascript" src="https://static.hsappstatic.net/MeetingsEmbed/ex/MeetingsEmbedCode.js">&lt;/script></description></item><item><title>Terms and Conditions</title><link>https://qdrant.tech/legal/terms_and_conditions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/legal/terms_and_conditions/</guid><description>&lt;h2 id="terms-and-conditions">Terms and Conditions&lt;/h2>
&lt;p>Last updated: December 10, 2021&lt;/p>
&lt;p>Please read these terms and conditions carefully before using Our Service.&lt;/p>
&lt;h3 id="interpretation-and-definitions">Interpretation and Definitions&lt;/h3>
&lt;h4 id="interpretation">Interpretation&lt;/h4>
&lt;p>The words of which the initial letter is capitalized have meanings defined under the following conditions. The following definitions shall have the same meaning regardless of whether they appear in singular or in plural.&lt;/p>
&lt;h4 id="definitions">Definitions&lt;/h4>
&lt;p>For the purposes of these Terms and Conditions:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Affiliate&lt;/strong> means an entity that controls, is controlled by or is under common control with a party, where &amp;ldquo;control&amp;rdquo; means ownership of 50% or more of the shares, equity interest or other securities entitled to vote for election of directors or other managing authority.&lt;/p></description></item><item><title>Terraform</title><link>https://qdrant.tech/documentation/cloud-tools/terraform/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/cloud-tools/terraform/</guid><description>&lt;p>&lt;img src="https://qdrant.tech/documentation/platforms/terraform/terraform.png" alt="Terraform Logo">&lt;/p>
&lt;p>HashiCorp Terraform is an infrastructure as code tool that lets you define both cloud and on-prem resources in human-readable configuration files that you can version, reuse, and share. You can then use a consistent workflow to provision and manage all of your infrastructure throughout its lifecycle.&lt;/p>
&lt;p>With the &lt;a href="https://registry.terraform.io/providers/qdrant/qdrant-cloud/latest" target="_blank" rel="noopener nofollow">Qdrant Terraform Provider&lt;/a>, you can manage the Qdrant cloud lifecycle leveraging all the goodness of Terraform.&lt;/p>
&lt;h2 id="pre-requisites">Pre-requisites&lt;/h2>
&lt;p>To use the Qdrant Terraform Provider, you&amp;rsquo;ll need:&lt;/p></description></item><item><title>Testcontainers</title><link>https://qdrant.tech/documentation/frameworks/testcontainers/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/testcontainers/</guid><description>&lt;h1 id="testcontainers">Testcontainers&lt;/h1>
&lt;p>&lt;a href="https://testcontainers.com/" target="_blank" rel="noopener nofollow">Testcontainers&lt;/a> is a testing library that provides easy and lightweight APIs for bootstrapping integration tests with real services wrapped in Docker containers.&lt;/p>
&lt;p>Qdrant is available as a &lt;a href="https://testcontainers.com/modules/qdrant/" target="_blank" rel="noopener nofollow">Testcontainers module&lt;/a> in multiple languages. It facilitates the spawning of a Qdrant instance for end-to-end testing.&lt;/p>
&lt;h2 id="usage">Usage&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-java" data-lang="java">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nn">org.testcontainers.qdrant.QdrantContainer&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="n">QdrantContainer&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">qdrantContainer&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">new&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">QdrantContainer&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;qdrant/qdrant&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="p">(&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;github.com/testcontainers/testcontainers-go&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s">&amp;#34;github.com/testcontainers/testcontainers-go/modules/qdrant&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nx">qdrantContainer&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">err&lt;/span> &lt;span class="o">:=&lt;/span> &lt;span class="nx">qdrant&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">RunContainer&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nx">ctx&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="nx">testcontainers&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="nf">WithImage&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;qdrant/qdrant&amp;#34;&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-typescript" data-lang="typescript">&lt;span class="line">&lt;span class="cl">&lt;span class="kr">import&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nx">QdrantContainer&lt;/span> &lt;span class="p">}&lt;/span> &lt;span class="kr">from&lt;/span> &lt;span class="s2">&amp;#34;@testcontainers/qdrant&amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">const&lt;/span> &lt;span class="nx">qdrantContainer&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">await&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="nx">QdrantContainer&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;qdrant/qdrant&amp;#34;&lt;/span>&lt;span class="p">).&lt;/span>&lt;span class="nx">start&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">testcontainers.qdrant&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">QdrantContainer&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">qdrant_container&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">QdrantContainer&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;qdrant/qdrant&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">start&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-csharp" data-lang="csharp">&lt;span class="line">&lt;span class="cl">&lt;span class="kt">var&lt;/span> &lt;span class="n">qdrantContainer&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="n">QdrantBuilder&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="n">WithImage&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;qdrant/qdrant&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">.&lt;/span>&lt;span class="n">Build&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">await&lt;/span> &lt;span class="n">qdrantContainer&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">StartAsync&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Testcontainers modules provide options/methods to configure ENVs, volumes, and virtually everything you can configure in a Docker container.&lt;/p></description></item><item><title>ToolJet</title><link>https://qdrant.tech/documentation/platforms/tooljet/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/platforms/tooljet/</guid><description>&lt;h1 id="tooljet">ToolJet&lt;/h1>
&lt;p>&lt;a href="https://www.tooljet.com" target="_blank" rel="noopener nofollow">ToolJet&lt;/a> is a low-code platform for building business applications. Connect to databases, cloud storages, GraphQL, API endpoints, Airtable, Google sheets, OpenAI, etc and build apps using drag and drop application builder.&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;ol>
&lt;li>A Qdrant instance to connect to. You can get a free cloud instance at &lt;a href="https://cloud.qdrant.io/" target="_blank" rel="noopener nofollow">cloud.qdrant.io&lt;/a>.&lt;/li>
&lt;li>A &lt;a href="https://www.tooljet.com" target="_blank" rel="noopener nofollow">ToolJet instance&lt;/a> to develop your workflows.&lt;/li>
&lt;/ol>
&lt;h2 id="setting-up">Setting Up&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>Search for the Qdrant plugin in the Tooljet &lt;a href="https://docs.tooljet.ai/docs/marketplace/plugins/marketplace-plugin-qdrant/" target="_blank" rel="noopener nofollow">plugins marketplace&lt;/a>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Set up the connection to Qdrant using your instance credentials.&lt;/p></description></item><item><title>Twelve Labs</title><link>https://qdrant.tech/documentation/embeddings/twelvelabs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/embeddings/twelvelabs/</guid><description>&lt;h1 id="twelve-labs">Twelve Labs&lt;/h1>
&lt;p>&lt;a href="https://twelvelabs.io" target="_blank" rel="noopener nofollow">Twelve Labs&lt;/a> Embed API provides powerful embeddings that represent videos, texts, images, and audio in a unified vector space. This space enables any-to-any searches across different types of content.&lt;/p>
&lt;p>By natively processing all modalities, it captures interactions like visual expressions, speech, and context, enabling advanced applications such as sentiment analysis, anomaly detection, and recommendation systems with precision and efficiency.&lt;/p>
&lt;p>We&amp;rsquo;ll look at how to work with Twelve Labs embeddings in Qdrant via the Python and Node SDKs.&lt;/p></description></item><item><title>txtai</title><link>https://qdrant.tech/documentation/frameworks/txtai/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/txtai/</guid><description>&lt;h1 id="txtai">txtai&lt;/h1>
&lt;p>Qdrant might be also used as an embedding backend in &lt;a href="https://neuml.github.io/txtai/" target="_blank" rel="noopener nofollow">txtai&lt;/a> semantic applications.&lt;/p>
&lt;p>txtai simplifies building AI-powered semantic search applications using Transformers. It leverages the neural embeddings and their
properties to encode high-dimensional data in a lower-dimensional space and allows to find similar objects based on their embeddings'
proximity.&lt;/p>
&lt;p>Qdrant is not built-in txtai backend and requires installing an additional dependency:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install qdrant-txtai
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The examples and some more information might be found in &lt;a href="https://github.com/qdrant/qdrant-txtai" target="_blank" rel="noopener nofollow">qdrant-txtai repository&lt;/a>.&lt;/p></description></item><item><title>Unstructured</title><link>https://qdrant.tech/documentation/data-management/unstructured/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/data-management/unstructured/</guid><description>&lt;h1 id="unstructured">Unstructured&lt;/h1>
&lt;p>&lt;a href="https://unstructured.io/" target="_blank" rel="noopener nofollow">Unstructured&lt;/a> is a library designed to help preprocess, structure unstructured text documents for downstream machine learning tasks.&lt;/p>
&lt;p>Qdrant can be used as an ingestion destination in Unstructured.&lt;/p>
&lt;h2 id="setup">Setup&lt;/h2>
&lt;p>Install Unstructured with the &lt;code>qdrant&lt;/code> extra.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install &lt;span class="s2">&amp;#34;unstructured-ingest[qdrant]&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="usage">Usage&lt;/h2>
&lt;p>Depending on the use case you can prefer the command line or using it within your application.&lt;/p>
&lt;h3 id="cli">CLI&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">unstructured-ingest &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> &lt;span class="nb">local&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --input-path &lt;span class="nv">$LOCAL_FILE_INPUT_DIR&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --chunking-strategy by_title &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --embedding-provider huggingface &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --partition-by-api &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --api-key &lt;span class="nv">$UNSTRUCTURED_API_KEY&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --partition-endpoint &lt;span class="nv">$UNSTRUCTURED_API_URL&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --additional-partition-args&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;{\&amp;#34;split_pdf_page\&amp;#34;:\&amp;#34;true\&amp;#34;, \&amp;#34;split_pdf_allow_failed\&amp;#34;:\&amp;#34;true\&amp;#34;, \&amp;#34;split_pdf_concurrency_level\&amp;#34;: 15}&amp;#34;&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> qdrant-cloud &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --url &lt;span class="nv">$QDRANT_URL&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --api-key &lt;span class="nv">$QDRANT_API_KEY&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --collection-name &lt;span class="nv">$QDRANT_COLLECTION&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --batch-size &lt;span class="m">50&lt;/span> &lt;span class="se">\
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="se">&lt;/span> --num-processes &lt;span class="m">1&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>For a full list of the options the CLI accepts, run &lt;code>unstructured-ingest &amp;lt;upstream connector&amp;gt; qdrant --help&lt;/code>&lt;/p></description></item><item><title>Upstage</title><link>https://qdrant.tech/documentation/embeddings/upstage/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/embeddings/upstage/</guid><description>&lt;h1 id="upstage">Upstage&lt;/h1>
&lt;p>Qdrant supports working with the Solar Embeddings API from &lt;a href="https://upstage.ai/" target="_blank" rel="noopener nofollow">Upstage&lt;/a>.&lt;/p>
&lt;p>&lt;a href="https://developers.upstage.ai/docs/apis/embeddings" target="_blank" rel="noopener nofollow">Solar Embeddings&lt;/a> API features dual models for user queries and document embedding, within a unified vector space, designed for performant text processing.&lt;/p>
&lt;p>You can generate an API key to authenticate the requests from the &lt;a href="https://console.upstage.ai/api-keys" target="_blank" rel="noopener nofollow">Upstage Console&lt;/a>.&lt;/p>
&lt;h3 id="setting-up-the-qdrant-client-and-upstage-session">Setting up the Qdrant client and Upstage session&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">requests&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qdrant_client&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">QdrantClient&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">UPSTAGE_BASE_URL&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;https://api.upstage.ai/v1/solar/embeddings&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">UPSTAGE_API_KEY&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;&amp;lt;YOUR_API_KEY&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">upstage_session&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">requests&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Session&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">client&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">QdrantClient&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">url&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;http://localhost:6333&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">headers&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Authorization&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;Bearer &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">UPSTAGE_API_KEY&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Accept&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;application/json&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">texts&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Qdrant is the best vector search engine!&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Loved by Enterprises and everyone building for low latency, high performance, and scale.&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-typescript" data-lang="typescript">&lt;span class="line">&lt;span class="cl">&lt;span class="kr">import&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="nx">QdrantClient&lt;/span> &lt;span class="p">}&lt;/span> &lt;span class="kr">from&lt;/span> &lt;span class="s1">&amp;#39;@qdrant/js-client-rest&amp;#39;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">const&lt;/span> &lt;span class="nx">UPSTAGE_BASE_URL&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;https://api.upstage.ai/v1/solar/embeddings&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">const&lt;/span> &lt;span class="nx">UPSTAGE_API_KEY&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;&amp;lt;YOUR_API_KEY&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">const&lt;/span> &lt;span class="nx">client&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="nx">QdrantClient&lt;/span>&lt;span class="p">({&lt;/span> &lt;span class="nx">url&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s1">&amp;#39;http://localhost:6333&amp;#39;&lt;/span> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">const&lt;/span> &lt;span class="nx">headers&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Authorization&amp;#34;&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s2">&amp;#34;Bearer &amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="nx">UPSTAGE_API_KEY&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Accept&amp;#34;&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s2">&amp;#34;application/json&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Content-Type&amp;#34;&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s2">&amp;#34;application/json&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">const&lt;/span> &lt;span class="nx">texts&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Qdrant is the best vector search engine!&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Loved by Enterprises and everyone building for low latency, high performance, and scale.&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The following example shows how to embed documents with the recommended &lt;code>solar-embedding-1-large-passage&lt;/code> and &lt;code>solar-embedding-1-large-query&lt;/code> models that generates sentence embeddings of size 4096.&lt;/p></description></item><item><title>Vanna.AI</title><link>https://qdrant.tech/documentation/frameworks/vanna-ai/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/vanna-ai/</guid><description>&lt;h1 id="vannaai">Vanna.AI&lt;/h1>
&lt;p>&lt;a href="https://vanna.ai/" target="_blank" rel="noopener nofollow">Vanna&lt;/a> is a Python package that uses retrieval augmentation to help you generate accurate SQL queries for your database using LLMs.&lt;/p>
&lt;p>Vanna works in two easy steps - train a RAG &amp;ldquo;model&amp;rdquo; on your data, and then ask questions which will return SQL queries that can be set up to automatically run on your database.&lt;/p>
&lt;p>Qdrant is available as a support vector store for ingesting and retrieving your RAG data.&lt;/p></description></item><item><title>VectaX - Mirror Security</title><link>https://qdrant.tech/documentation/frameworks/mirror-security/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/mirror-security/</guid><description>&lt;p>&lt;img src="https://qdrant.tech/documentation/frameworks/mirror-security/vectax-logo.png" alt="VectaX Logo">&lt;/p>
&lt;p>&lt;a href="https://mirrorsecurity.io/vectax" target="_blank" rel="noopener nofollow">VectaX&lt;/a> by Mirror Security is an AI-centric access control and encryption system designed for managing and protecting vector embeddings. It combines similarity-preserving encryption with fine-grained RBAC to enable secure storage, retrieval, and operations on vector data.&lt;/p>
&lt;p>It can be integrated with Qdrant to secure vector searches.&lt;/p>
&lt;p>We&amp;rsquo;ll see how to do so using basic VectaX vector encryption and the sophisticated RBAC mechanism. You can obtain an API key and the Mirror SDK from the &lt;a href="https://platform.mirrorsecurity.io/en/login" target="_blank" rel="noopener nofollow">Mirror Security Platform&lt;/a>.&lt;/p></description></item><item><title>Vectorize.io</title><link>https://qdrant.tech/documentation/platforms/vectorize/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/platforms/vectorize/</guid><description>&lt;h1 id="vectorizeio">Vectorize.io&lt;/h1>
&lt;p>&lt;a href="https://vectorize.io/" target="_blank" rel="noopener nofollow">Vectorize&lt;/a> is a SaaS platform that automates data extraction from &lt;a href="https://docs.vectorize.io/integrations/source-connectors" target="_blank" rel="noopener nofollow">several sources&lt;/a> and lets you quickly deploy real-time RAG pipelines for your unstructured data. It also includes evaluation to help figure out the best strategies for the RAG system.&lt;/p>
&lt;p>Vectorize pipelines natively integrate with Qdrant by converting unstructured data into vector embeddings and storing them in a collection. When a pipeline is running, any new change in the source data is immediately processed, keeping the vector index up-to-date.&lt;/p></description></item><item><title>VoltAgent</title><link>https://qdrant.tech/documentation/frameworks/voltagent/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/frameworks/voltagent/</guid><description>&lt;h1 id="voltagent">VoltAgent&lt;/h1>
&lt;p>&lt;a href="https://github.com/VoltAgent/voltagent" target="_blank" rel="noopener nofollow">VoltAgent&lt;/a> is a TypeScript-based open-source framework designed for developing AI agents that support modular tool integration, LLM coordination, and adaptable multi-agent architectures. The framework includes an integrated observability dashboard similar to n8n, enabling visual monitoring of agent operations, action tracking, and streamlined debugging capabilities.&lt;/p>
&lt;h2 id="installation">Installation&lt;/h2>
&lt;p>Create a new VoltAgent project with Qdrant integration:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">npm create voltagent-app@latest -- --example with-qdrant
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">cd&lt;/span> with-qdrant
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This command generates a fully configured project combining VoltAgent and Qdrant, including example data and two distinct agent implementation patterns.&lt;/p></description></item><item><title>Voyage AI</title><link>https://qdrant.tech/documentation/embeddings/voyage/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/embeddings/voyage/</guid><description>&lt;h1 id="voyage-ai">Voyage AI&lt;/h1>
&lt;p>Qdrant supports working with &lt;a href="https://voyageai.com/" target="_blank" rel="noopener nofollow">Voyage AI&lt;/a> embeddings. The supported models&amp;rsquo; list can be found &lt;a href="https://docs.voyageai.com/docs/embeddings" target="_blank" rel="noopener nofollow">here&lt;/a>.&lt;/p>
&lt;p>You can generate an API key from the &lt;a href="https://dash.voyageai.com/" target="_blank" rel="noopener nofollow">Voyage AI dashboard&lt;/a> to authenticate the requests.&lt;/p>
&lt;h3 id="setting-up-the-qdrant-and-voyage-clients">Setting up the Qdrant and Voyage clients&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qdrant_client&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">QdrantClient&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">voyageai&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">VOYAGE_API_KEY&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;&amp;lt;YOUR_VOYAGEAI_API_KEY&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">qclient&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">QdrantClient&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;:memory:&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">vclient&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">voyageai&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">Client&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">api_key&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">VOYAGE_API_KEY&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">texts&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Qdrant is the best vector search engine!&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Loved by Enterprises and everyone building for low latency, high performance, and scale.&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-typescript" data-lang="typescript">&lt;span class="line">&lt;span class="cl">&lt;span class="kr">import&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="nx">QdrantClient&lt;/span>&lt;span class="p">}&lt;/span> &lt;span class="kr">from&lt;/span> &lt;span class="s1">&amp;#39;@qdrant/js-client-rest&amp;#39;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">const&lt;/span> &lt;span class="nx">VOYAGEAI_BASE_URL&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;https://api.voyageai.com/v1/embeddings&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">const&lt;/span> &lt;span class="nx">VOYAGEAI_API_KEY&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;&amp;lt;YOUR_VOYAGEAI_API_KEY&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">const&lt;/span> &lt;span class="nx">client&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="k">new&lt;/span> &lt;span class="nx">QdrantClient&lt;/span>&lt;span class="p">({&lt;/span> &lt;span class="nx">url&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s1">&amp;#39;http://localhost:6333&amp;#39;&lt;/span> &lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">const&lt;/span> &lt;span class="nx">headers&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Authorization&amp;#34;&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s2">&amp;#34;Bearer &amp;#34;&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="nx">VOYAGEAI_API_KEY&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Content-Type&amp;#34;&lt;/span>&lt;span class="o">:&lt;/span> &lt;span class="s2">&amp;#34;application/json&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kr">const&lt;/span> &lt;span class="nx">texts&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Qdrant is the best vector search engine!&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;Loved by Enterprises and everyone building for low latency, high performance, and scale.&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The following example shows how to embed documents with the &lt;a href="https://docs.voyageai.com/docs/embeddings#model-choices" target="_blank" rel="noopener nofollow">&lt;code>voyage-large-2&lt;/code>&lt;/a> model that generates sentence embeddings of size 1536.&lt;/p></description></item><item><title>Welcome to Qdrant Cloud</title><link>https://qdrant.tech/documentation/cloud-intro/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>info@qdrant.tech (Andrey Vasnetsov)</author><guid>https://qdrant.tech/documentation/cloud-intro/</guid><description/></item></channel></rss>