From 59932985483b6c8a75ec7eec3b15f4042503a1d5 Mon Sep 17 00:00:00 2001 From: kanungle Date: Mon, 22 Dec 2025 15:03:47 -0800 Subject: [PATCH] Initial draft of tutorials restructure --- .../advanced-tutorials/_index.md | 19 -- .../using-multivector-representations.md | 196 ------------------ .../beginner-tutorials/_index.md | 20 -- .../database-tutorials/_index.md | 22 -- .../tutorials-ecosystem/_index.md | 22 ++ .../huggingface-datasets.md | 0 .../migration.md | 0 .../tutorials-operations/_index.md | 22 ++ .../async-api.md | 0 .../bulk-upload.md | 0 .../create-snapshot.md | 0 .../large-scale-search.md | 0 .../tutorials-overview/_index.md | 80 +++++++ .../tutorials-quickstart/_index.md | 18 ++ .../rag-deepseek.md | 0 .../search-beginners.md | 0 .../tutorials-rag-and-agents/_index.md | 20 ++ .../tutorials-search-engineering/_index.md | 24 +++ .../code-search.md | 0 .../collaborative-filtering.md | 0 .../hybrid-search-fastembed.md | 0 .../neural-search.md | 0 .../pdf-retrieval-at-scale.md | 0 .../reranking-hybrid-search.md | 0 .../retrieval-quality.md | 0 .../static-embeddings.md | 0 26 files changed, 186 insertions(+), 257 deletions(-) delete mode 100644 qdrant-landing/content/documentation/advanced-tutorials/_index.md delete mode 100644 qdrant-landing/content/documentation/advanced-tutorials/using-multivector-representations.md delete mode 100644 qdrant-landing/content/documentation/beginner-tutorials/_index.md delete mode 100644 qdrant-landing/content/documentation/database-tutorials/_index.md create mode 100644 qdrant-landing/content/documentation/tutorials-ecosystem/_index.md rename qdrant-landing/content/documentation/{database-tutorials => tutorials-ecosystem}/huggingface-datasets.md (100%) rename qdrant-landing/content/documentation/{database-tutorials => tutorials-ecosystem}/migration.md (100%) create mode 100644 qdrant-landing/content/documentation/tutorials-operations/_index.md rename qdrant-landing/content/documentation/{database-tutorials => tutorials-operations}/async-api.md (100%) rename qdrant-landing/content/documentation/{database-tutorials => tutorials-operations}/bulk-upload.md (100%) rename qdrant-landing/content/documentation/{database-tutorials => tutorials-operations}/create-snapshot.md (100%) rename qdrant-landing/content/documentation/{database-tutorials => tutorials-operations}/large-scale-search.md (100%) create mode 100644 qdrant-landing/content/documentation/tutorials-overview/_index.md create mode 100644 qdrant-landing/content/documentation/tutorials-quickstart/_index.md rename qdrant-landing/content/documentation/{ => tutorials-quickstart}/rag-deepseek.md (100%) rename qdrant-landing/content/documentation/{beginner-tutorials => tutorials-quickstart}/search-beginners.md (100%) create mode 100644 qdrant-landing/content/documentation/tutorials-rag-and-agents/_index.md create mode 100644 qdrant-landing/content/documentation/tutorials-search-engineering/_index.md rename qdrant-landing/content/documentation/{advanced-tutorials => tutorials-search-engineering}/code-search.md (100%) rename qdrant-landing/content/documentation/{advanced-tutorials => tutorials-search-engineering}/collaborative-filtering.md (100%) rename qdrant-landing/content/documentation/{beginner-tutorials => tutorials-search-engineering}/hybrid-search-fastembed.md (100%) rename qdrant-landing/content/documentation/{beginner-tutorials => tutorials-search-engineering}/neural-search.md (100%) rename qdrant-landing/content/documentation/{advanced-tutorials => tutorials-search-engineering}/pdf-retrieval-at-scale.md (100%) rename qdrant-landing/content/documentation/{advanced-tutorials => tutorials-search-engineering}/reranking-hybrid-search.md (100%) rename qdrant-landing/content/documentation/{beginner-tutorials => tutorials-search-engineering}/retrieval-quality.md (100%) rename qdrant-landing/content/documentation/{database-tutorials => tutorials-search-engineering}/static-embeddings.md (100%) diff --git a/qdrant-landing/content/documentation/advanced-tutorials/_index.md b/qdrant-landing/content/documentation/advanced-tutorials/_index.md deleted file mode 100644 index b2b396291..000000000 --- a/qdrant-landing/content/documentation/advanced-tutorials/_index.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Advanced Retrieval -weight: 17 -# If the index.md file is empty, the link to the section will be hidden from the sidebar -is_empty: false -aliases: - - how-to - - tutorials -partition: qdrant ---- - -# Advanced Tutorials - -| | -|----------------------------------------------------------| -| [Use Collaborative Filtering to Build a Movie Recommendation System with Qdrant](/documentation/advanced-tutorials/collaborative-filtering/) | -| [Build a Text/Image Multimodal Search System with Qdrant and FastEmbed](/documentation/advanced-tutorials/multimodal-search-fastembed/) | -| [Navigate Your Codebase with Semantic Search and Qdrant](/documentation/advanced-tutorials/code-search/) | -| [Ensure optimal large-scale PDF Retrieval with Qdrant and ColPali/ColQwen](/documentation/advanced-tutorials/pdf-retrieval-at-scale/) | \ No newline at end of file diff --git a/qdrant-landing/content/documentation/advanced-tutorials/using-multivector-representations.md b/qdrant-landing/content/documentation/advanced-tutorials/using-multivector-representations.md deleted file mode 100644 index 5d225fc2a..000000000 --- a/qdrant-landing/content/documentation/advanced-tutorials/using-multivector-representations.md +++ /dev/null @@ -1,196 +0,0 @@ ---- -title: How to Use Multivector Representations with Qdrant Effectively -weight: 2 -aliases: - - /documentation/search-precision/multivector-representations-with-Qdrant/ ---- -# How to Effectively Use Multivector Representations in Qdrant for Reranking -Multivector Representations are one of the most powerful features of Qdrant. However, most people don't use them effectively, resulting in massive RAM overhead, slow inserts, and wasted compute. - -In this tutorial, you'll discover how to effectively use multivector representations in Qdrant. - -## What are Multivector Representations? -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. - -Multivector representations offer a more fine-grained alternative where a single document is represented using multiple vectors, often at the token or phrase level. This enables more precise matching between specific query terms and relevant parts of the document. Matching is especially effective in Late Interaction models like [ColBERT](https://qdrant.tech/documentation/fastembed/fastembed-colbert/), which retain token-level embeddings and perform interaction during query time leading to relevance scoring. - -![Multivector Representations](/documentation/advanced-tutorials/multivectors.png) - -As you will see later in the tutorial, Qdrant supports multivectors and thus late interaction models natively. - -## Why Token-level Vectors are Useful - -With token-level vectors, models like ColBERT can match specific query tokens to the most relevant parts of a document, enabling high-accuracy retrieval through Late Interaction. - -In late interaction, each document is converted into multiple token-level vectors instead of a single vector. The query is also tokenized and embedded into various vectors. Then, the query and document vectors are matched using a similarity function: MaxSim. You can see how it is calculated [here](https://qdrant.tech/documentation/concepts/vectors/#multivectors). - -In traditional retrieval, the query and document are converted into single embeddings, after which similarity is computed. This is an early interaction because the information is compressed before retrieval. - -## What is Rescoring, and Why is it Used? -Rescoring is two-fold: -- Retrieve relevant documents using a fast model. -- Rerank them using a more accurate but slower model such as ColBERT. - -## Why Indexing Every Vector by Default is a Problem -In multivector representations (such as those used by Late Interaction models like ColBERT), a single logical document results in hundreds of token-level vectors. Indexing each of these vectors individually with HNSW in Qdrant can lead to: - -- High RAM usage -- Slow insert times due to the complexity of maintaining the HNSW graph - -However, because multivectors are typically used in the reranking stage (after a first-pass retrieval using dense vectors), there's often no need to index these token-level vectors with HNSW. - -Instead, they can be stored as multi-vector fields (without HNSW indexing) and used at query-time for reranking, which reduces resource overhead and improves performance. - -For more on this, check out Qdrant's detailed breakdown in our [Scaling PDF Retrieval with Qdrant tutorial](https://qdrant.tech/documentation/advanced-tutorials/pdf-retrieval-at-scale/#math-behind-the-scaling). - -With Qdrant, you have full control of how indexing works. You can disable indexing by setting the HNSW `m` parameter to `0`: -```python -from qdrant_client import QdrantClient, models - -client = QdrantClient("http://localhost:6333") -collection_name = "dense_multivector_demo" -client.create_collection( - collection_name=collection_name, - vectors_config={ - "dense": models.VectorParams( - size=384, - distance=models.Distance.COSINE - # Leave HNSW indexing ON for dense - ), - "colbert": models.VectorParams( - size=128, - distance=models.Distance.COSINE, - multivector_config=models.MultiVectorConfig( - comparator=models.MultiVectorComparator.MAX_SIM - ), - hnsw_config=models.HnswConfigDiff(m=0) # Disable HNSW for reranking - ) - } -) -``` -By disabling HNSW on multivectors, you: -- Save compute. -- Reduce memory usage. -- Speed up vector uploads. - -## How to Generate Multivectors Using FastEmbed -Let's demonstrate how to effectively use multivectors using [FastEmbed](https://github.com/qdrant/fastembed), which wraps ColBERT into a simple API. - -Install FastEmbed and Qdrant: - -```bash -pip install qdrant-client[fastembed]>=1.14.2 -``` - -## Step-by-Step: ColBERT + Qdrant Setup -Ensure that Qdrant is running and create a client: -```python -from qdrant_client import QdrantClient, models - -# 1. Connect to Qdrant server -client = QdrantClient("http://localhost:6333") -``` -## 1. Encode Documents -Next, encode your documents: -```python -from fastembed import TextEmbedding, LateInteractionTextEmbedding -# Example documents and query -documents = [ - "Artificial intelligence is used in hospitals for cancer diagnosis and treatment.", - "Self-driving cars use AI to detect obstacles and make driving decisions.", - "AI is transforming customer service through chatbots and automation.", - # ... -] -query_text = "How does AI help in medicine?" - -dense_documents = [ - models.Document(text=doc, model="BAAI/bge-small-en") - for doc in documents -] -dense_query = models.Document(text=query_text, model="BAAI/bge-small-en") - -colbert_documents = [ - models.Document(text=doc, model="colbert-ir/colbertv2.0") - for doc in documents -] -colbert_query = models.Document(text=query_text, model="colbert-ir/colbertv2.0") - -``` - -### 2. Create a Qdrant collection -Then create a Qdrant collection with both vector types. Note that we leave indexing on for the `dense` vector but turn it off for the `colbert` vector that will be used for reranking. -```python -collection_name = "dense_multivector_demo" -client.create_collection( - collection_name=collection_name, - vectors_config={ - "dense": models.VectorParams( - size=384, - distance=models.Distance.COSINE - # Leave HNSW indexing ON for dense - ), - "colbert": models.VectorParams( - size=128, - distance=models.Distance.COSINE, - multivector_config=models.MultiVectorConfig( - comparator=models.MultiVectorComparator.MAX_SIM - ), - hnsw_config=models.HnswConfigDiff(m=0) # Disable HNSW for reranking - ) - } -) - -``` - -### 3. Upload Documents (Dense + Multivector) -Now upload the vectors, with `batch_size=8`. We do not have many documents, but batching is always recommended. -```python -points = [ - models.PointStruct( - id=i, - vector={ - "dense": dense_documents[i], - "colbert": colbert_documents[i] - }, - payload={"text": documents[i]} - ) for i in range(len(documents)) -] -client.upload_points( - collection_name="dense_multivector_demo", - points=points, - batch_size=8 -) -``` - -### Query with Retrieval + Reranking in One Call -Now let’s run a search: - -```python -results = client.query_points( - collection_name="dense_multivector_demo", - prefetch=models.Prefetch( - query=dense_query, - using="dense", - ), - query=colbert_query, - using="colbert", - limit=3, - with_payload=True -) - -``` - -- The dense vector retrieves the top candidates quickly. -- The Colbert multivector reranks them using token-level `MaxSim` with fine-grained precision. -- Returns the top 3 results. - -## Conclusion -Multivector search is one of the most powerful features of a vector database when used correctly. With this functionality in Qdrant, you can: -- Store token-level embeddings natively. -- Disable indexing to reduce overhead. -- Run fast retrieval and accurate reranking in one API call. -- Efficiently scale late interaction. - -Combining FastEmbed and Qdrant leads to a production-ready pipeline for ColBERT-style reranking without wasting resources. You can do this locally or use Qdrant Cloud. Qdrant offers an easy-to-use API to get started with your search engine, so if you’re ready to dive in, sign up for free at [Qdrant Cloud](https://qdrant.tech/cloud/) and start building. - - diff --git a/qdrant-landing/content/documentation/beginner-tutorials/_index.md b/qdrant-landing/content/documentation/beginner-tutorials/_index.md deleted file mode 100644 index 6ab21ed6f..000000000 --- a/qdrant-landing/content/documentation/beginner-tutorials/_index.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Vector Search Basics -aliases: - - /documentation/tutorials/ - - how-to - - tutorials -weight: 16 -# If the index.md file is empty, the link to the section will be hidden from the sidebar -is_empty: false -partition: qdrant ---- - -# Beginner Tutorials - -| | -|----------------------------------------------------| -| [Build Your First Semantic Search Engine in 5 Minutes](/documentation/beginner-tutorials/search-beginners/) | -| [Build a Neural Search Service with Sentence Transformers and Qdrant](/documentation/beginner-tutorials/neural-search/) | -| [Build a Hybrid Search Service with FastEmbed and Qdrant](/documentation/beginner-tutorials/hybrid-search-fastembed/) | -| [Measure and Improve Retrieval Quality in Semantic Search](/documentation/beginner-tutorials/retrieval-quality/) | diff --git a/qdrant-landing/content/documentation/database-tutorials/_index.md b/qdrant-landing/content/documentation/database-tutorials/_index.md deleted file mode 100644 index 15f6c6a35..000000000 --- a/qdrant-landing/content/documentation/database-tutorials/_index.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Using the Database -weight: 18 -# If the index.md file is empty, the link to the section will be hidden from the sidebar -is_empty: false -aliases: - - how-to - - tutorials -partition: qdrant ---- - -# Database Tutorials - -| | -|--------------------------------------------| -| [Bulk Upload Vectors to a Qdrant Collection](/documentation/database-tutorials/bulk-upload/) | -| [Large Scale Search](/documentation/database-tutorials/large-scale-search/) | -| [Backup and Restore Qdrant Collections Using Snapshots](/documentation/database-tutorials/create-snapshot/) | -| [Load and Search Hugging Face Datasets with Qdrant](/documentation/database-tutorials/huggingface-datasets/) | -| [Using Qdrant’s Async API for Efficient Python Applications](/documentation/database-tutorials/async-api/) | -| [Qdrant Migration Guide](/documentation/database-tutorials/migration/) | -| [Static Embeddings. Should you pay attention?](/documentation/database-tutorials/static-embeddings/) | diff --git a/qdrant-landing/content/documentation/tutorials-ecosystem/_index.md b/qdrant-landing/content/documentation/tutorials-ecosystem/_index.md new file mode 100644 index 000000000..a6ee29459 --- /dev/null +++ b/qdrant-landing/content/documentation/tutorials-ecosystem/_index.md @@ -0,0 +1,22 @@ +--- +title: Ecosystem & Integrations +weight: 20 +is_empty: false +aliases: + - how-to + - tutorials +partition: qdrant +--- + +# Ecosystem & Integrations +*Connect Qdrant to cloud providers, data streams, and ETL tools.* + +| Tutorial | Objective | Stack | Time | Level | +| :--- | :--- | :--- | :--- | :--- | +| [Embedding Migration](https://qdrant.tech/documentation/tutorials-ecosystem/migration/) | Move dense and sparse embeddings to Qdrant. | CLI | 30m | Intermediate | +| [S3 Ingestion with LangChain](https://qdrant.tech/documentation/data-ingestion-beginners/) | Stream data from AWS S3 to vector store. | LangChain | 30m | Beginner | +| [Hugging Face Datasets](https://qdrant.tech/documentation/tutorials-ecosystem/huggingface-datasets/) | Load and search public ML datasets. | Python | 15m | Beginner | +| [Databricks Integration](https://qdrant.tech/documentation/send-data/databricks/) | Vectorize datasets using FastEmbed on Databricks. | Databricks | 30m | Intermediate | +| [Airflow & Astronomer](https://qdrant.tech/documentation/send-data/qdrant-airflow-astronomer/) | Orchestrate data engineering workflows. | Airflow | 45m | Intermediate | +| [Kafka Data Streaming](https://qdrant.tech/documentation/send-data/data-streaming-kafka-qdrant/) | Setup Qdrant Sink Connector for real-time data. | Kafka | 60m | Advanced | +| [No-Code Automation (n8n)](https://qdrant.tech/documentation/qdrant-n8n/) | Combine Qdrant with low-code n8n workflows. | n8n | 45m | Intermediate | \ No newline at end of file diff --git a/qdrant-landing/content/documentation/database-tutorials/huggingface-datasets.md b/qdrant-landing/content/documentation/tutorials-ecosystem/huggingface-datasets.md similarity index 100% rename from qdrant-landing/content/documentation/database-tutorials/huggingface-datasets.md rename to qdrant-landing/content/documentation/tutorials-ecosystem/huggingface-datasets.md diff --git a/qdrant-landing/content/documentation/database-tutorials/migration.md b/qdrant-landing/content/documentation/tutorials-ecosystem/migration.md similarity index 100% rename from qdrant-landing/content/documentation/database-tutorials/migration.md rename to qdrant-landing/content/documentation/tutorials-ecosystem/migration.md diff --git a/qdrant-landing/content/documentation/tutorials-operations/_index.md b/qdrant-landing/content/documentation/tutorials-operations/_index.md new file mode 100644 index 000000000..0c6e40726 --- /dev/null +++ b/qdrant-landing/content/documentation/tutorials-operations/_index.md @@ -0,0 +1,22 @@ +--- +title: Operations & Scale +weight: 21 +is_empty: false +aliases: + - how-to + - tutorials +partition: qdrant +--- + +# Operations & Scale Tutorials +*Production-grade management, monitoring, and high-volume optimization.* + +| Tutorial | Objective | Stack | Time | Level | +| :--- | :--- | :--- | :--- | :--- | +| [Bulk Data Uploads](https://qdrant.tech/documentation/tutorials-operations/bulk-upload/) | High-scale ingestion tricks for power users. | Python | 20m | Intermediate | +| [Snapshot & Backup](https://qdrant.tech/documentation/tutorials-operations/create-snapshot/) | Create and restore collection snapshots. | Python | 20m | Beginner | +| [Billion-Scale Search](https://qdrant.tech/documentation/tutorials-operations/large-scale-search/) | Cost-efficient search for LAION-400M datasets. | None | 2 days | Advanced | +| [Python Async API](https://qdrant.tech/documentation/tutorials-operations/async-api/) | Use Asynchronous programming for efficiency. | Python | 25m | Intermediate | +| [Cloud Inference Search](https://qdrant.tech/documentation/tutorials-and-examples/cloud-inference-hybrid-search/) | Hybrid search using Qdrant's built-in inference. | Any | 20m | Beginner | +| [Monitor Managed Cloud](https://qdrant.tech/documentation/tutorials-and-examples/managed-cloud-prometheus/) | Observability with Prometheus and Grafana. | Prometheus | 30m | Intermediate | +| [Monitor Private Cloud](https://qdrant.tech/documentation/tutorials-and-examples/hybrid-cloud-prometheus/) | Observability for hybrid/private cloud setups. | Prometheus | 30m | Intermediate | \ No newline at end of file diff --git a/qdrant-landing/content/documentation/database-tutorials/async-api.md b/qdrant-landing/content/documentation/tutorials-operations/async-api.md similarity index 100% rename from qdrant-landing/content/documentation/database-tutorials/async-api.md rename to qdrant-landing/content/documentation/tutorials-operations/async-api.md diff --git a/qdrant-landing/content/documentation/database-tutorials/bulk-upload.md b/qdrant-landing/content/documentation/tutorials-operations/bulk-upload.md similarity index 100% rename from qdrant-landing/content/documentation/database-tutorials/bulk-upload.md rename to qdrant-landing/content/documentation/tutorials-operations/bulk-upload.md diff --git a/qdrant-landing/content/documentation/database-tutorials/create-snapshot.md b/qdrant-landing/content/documentation/tutorials-operations/create-snapshot.md similarity index 100% rename from qdrant-landing/content/documentation/database-tutorials/create-snapshot.md rename to qdrant-landing/content/documentation/tutorials-operations/create-snapshot.md diff --git a/qdrant-landing/content/documentation/database-tutorials/large-scale-search.md b/qdrant-landing/content/documentation/tutorials-operations/large-scale-search.md similarity index 100% rename from qdrant-landing/content/documentation/database-tutorials/large-scale-search.md rename to qdrant-landing/content/documentation/tutorials-operations/large-scale-search.md diff --git a/qdrant-landing/content/documentation/tutorials-overview/_index.md b/qdrant-landing/content/documentation/tutorials-overview/_index.md new file mode 100644 index 000000000..93ad2e326 --- /dev/null +++ b/qdrant-landing/content/documentation/tutorials-overview/_index.md @@ -0,0 +1,80 @@ +--- +title: Overview +weight: 16 +is_empty: false +aliases: + - how-to + - tutorials +partition: qdrant +--- + +# Qdrant Tutorial Directory + +### Quickstart +*Get up and running with Qdrant in minutes.* + +| Tutorial | Objective | Stack | Time | Level | +| :--- | :--- | :--- | :--- | :--- | +| [Local Qdrant Setup](https://qdrant.tech/documentation/quickstart/) | Basic CRUD operations and local deployment. | Python | 10m | Beginner | +| [5-Minute Semantic Search](https://qdrant.tech/documentation/tutorials-quickstart/search-beginners/) | Build a search engine for science fiction books. | Python | 5m | Beginner | +| [5-Minute RAG with DeepSeek](https://qdrant.tech/documentation/tutorials-quickstart/rag-deepseek/) | Build a RAG pipeline with DeepSeek enrichment. | Python | 5m | Beginner | + +--- + +### Search Engineering +*Master vector search modalities, reranking, and retrieval quality.* + +| Tutorial | Objective | Stack | Time | Level | +| :--- | :--- | :--- | :--- | :--- | +| [Neural Search Service](https://qdrant.tech/documentation/tutorials-search-engineering/neural-search/) | Deploy a search service for company descriptions. | FastAPI | 30m | Beginner | +| [Hybrid Search with FastEmbed](https://qdrant.tech/documentation/tutorials-search-engineering/hybrid-search-fastembed/) | Combine dense and sparse search for startups. | FastAPI | 20m | Beginner | +| [Movie Recommendations](https://qdrant.tech/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | +| [Advanced PDF Retrieval](https://qdrant.tech/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | +| [Retrieval Quality Benchmarking](https://qdrant.tech/documentation/tutorials-search-engineering/retrieval-quality/) | Measure quality and tune HNSW parameters. | Python | 30m | Intermediate | +| [Multivector Reranking](https://qdrant.tech/documentation/search-precision/reranking-semantic-search/) | Use multivector representations for better ranking. | Python | 30m | Intermediate | +| [Hybrid Search Reranking](https://qdrant.tech/documentation/tutorials-search-engineering/reranking-hybrid-search/) | Implement late interaction and sparse reranking. | Python | 40m | Intermediate | +| [Semantic Code Search](https://qdrant.tech/documentation/tutorials-search-engineering/code-search/) | Navigate codebases using vector similarity. | Python | 45m | Intermediate | +| [Static Embeddings Analysis](https://qdrant.tech/documentation/tutorials-search-engineering/static-embeddings/) | Evaluate the renaissance of static embeddings. | Python | 20m | Intermediate | + +--- + +### RAG & AI Agents +*Build intelligent agents and complex LLM-driven applications.* + +| Tutorial | Objective | Stack | Time | Level | +| :--- | :--- | :--- | :--- | :--- | +| [Agentic RAG with CrewAI](https://qdrant.tech/documentation/agentic-rag-crewai-zoom/) | Step-by-step multi-agent RAG system. | CrewAI | 45m | Beginner | +| [Agentic RAG with LangGraph](https://qdrant.tech/documentation/agentic-rag-langgraph/) | Build AI agents to answer library documentation. | LangGraph | 45m | Intermediate | +| [Agentic Discord ChatBot](https://qdrant.tech/documentation/agentic-rag-camelai-discord/) | Develop a functional bot with CAMEL-AI. | OpenAI | 45m | Intermediate | +| [Multimodal Search (LlamaIndex)](https://qdrant.tech/documentation/multimodal-search/) | Search across image and text modalities. | LlamaIndex | 15m | Beginner | +| [Automate Metadata Filtering](https://qdrant.tech/documentation/search-precision/automate-filtering-with-llms/) | Use LLM structured output for dynamic filters. | Python | 30m | Intermediate | + +--- + +### Ecosystem & Integrations +*Connect Qdrant to cloud providers, data streams, and ETL tools.* + +| Tutorial | Objective | Stack | Time | Level | +| :--- | :--- | :--- | :--- | :--- | +| [Embedding Migration](https://qdrant.tech/documentation/tutorials-ecosystem/migration/) | Move dense and sparse embeddings to Qdrant. | CLI | 30m | Intermediate | +| [S3 Ingestion with LangChain](https://qdrant.tech/documentation/data-ingestion-beginners/) | Stream data from AWS S3 to vector store. | LangChain | 30m | Beginner | +| [Hugging Face Datasets](https://qdrant.tech/documentation/tutorials-ecosystem/huggingface-datasets/) | Load and search public ML datasets. | Python | 15m | Beginner | +| [Databricks Integration](https://qdrant.tech/documentation/send-data/databricks/) | Vectorize datasets using FastEmbed on Databricks. | Databricks | 30m | Intermediate | +| [Airflow & Astronomer](https://qdrant.tech/documentation/send-data/qdrant-airflow-astronomer/) | Orchestrate data engineering workflows. | Airflow | 45m | Intermediate | +| [Kafka Data Streaming](https://qdrant.tech/documentation/send-data/data-streaming-kafka-qdrant/) | Setup Qdrant Sink Connector for real-time data. | Kafka | 60m | Advanced | +| [No-Code Automation (n8n)](https://qdrant.tech/documentation/qdrant-n8n/) | Combine Qdrant with low-code n8n workflows. | n8n | 45m | Intermediate | + +--- + +### Operations & Scale +*Production-grade management, monitoring, and high-volume optimization.* + +| Tutorial | Objective | Stack | Time | Level | +| :--- | :--- | :--- | :--- | :--- | +| [Bulk Data Uploads](https://qdrant.tech/documentation/tutorials-operations/bulk-upload/) | High-scale ingestion tricks for power users. | Python | 20m | Intermediate | +| [Snapshot & Backup](https://qdrant.tech/documentation/tutorials-operations/create-snapshot/) | Create and restore collection snapshots. | Python | 20m | Beginner | +| [Billion-Scale Search](https://qdrant.tech/documentation/tutorials-operations/large-scale-search/) | Cost-efficient search for LAION-400M datasets. | None | 2 days | Advanced | +| [Python Async API](https://qdrant.tech/documentation/tutorials-operations/async-api/) | Use Asynchronous programming for efficiency. | Python | 25m | Intermediate | +| [Cloud Inference Search](https://qdrant.tech/documentation/tutorials-and-examples/cloud-inference-hybrid-search/) | Hybrid search using Qdrant's built-in inference. | Any | 20m | Beginner | +| [Monitor Managed Cloud](https://qdrant.tech/documentation/tutorials-and-examples/managed-cloud-prometheus/) | Observability with Prometheus and Grafana. | Prometheus | 30m | Intermediate | +| [Monitor Private Cloud](https://qdrant.tech/documentation/tutorials-and-examples/hybrid-cloud-prometheus/) | Observability for hybrid/private cloud setups. | Prometheus | 30m | Intermediate | \ No newline at end of file diff --git a/qdrant-landing/content/documentation/tutorials-quickstart/_index.md b/qdrant-landing/content/documentation/tutorials-quickstart/_index.md new file mode 100644 index 000000000..7ed82a709 --- /dev/null +++ b/qdrant-landing/content/documentation/tutorials-quickstart/_index.md @@ -0,0 +1,18 @@ +--- +title: Quickstart +weight: 17 +is_empty: false +aliases: + - how-to + - tutorials +partition: qdrant +--- + +# Quickstart Tutorials +*Get up and running with Qdrant in minutes.* + +| Tutorial | Objective | Stack | Time | Level | +| :--- | :--- | :--- | :--- | :--- | +| [Local Qdrant Setup](https://qdrant.tech/documentation/quickstart/) | Basic CRUD operations and local deployment. | Python | 10m | Beginner | +| [5-Minute Semantic Search](https://qdrant.tech/documentation/tutorials-quickstart/search-beginners/) | Build a search engine for science fiction books. | Python | 5m | Beginner | +| [5-Minute RAG with DeepSeek](https://qdrant.tech/documentation/tutorials-quickstart/rag-deepseek/) | Build a RAG pipeline with DeepSeek enrichment. | Python | 5m | Beginner | \ No newline at end of file diff --git a/qdrant-landing/content/documentation/rag-deepseek.md b/qdrant-landing/content/documentation/tutorials-quickstart/rag-deepseek.md similarity index 100% rename from qdrant-landing/content/documentation/rag-deepseek.md rename to qdrant-landing/content/documentation/tutorials-quickstart/rag-deepseek.md diff --git a/qdrant-landing/content/documentation/beginner-tutorials/search-beginners.md b/qdrant-landing/content/documentation/tutorials-quickstart/search-beginners.md similarity index 100% rename from qdrant-landing/content/documentation/beginner-tutorials/search-beginners.md rename to qdrant-landing/content/documentation/tutorials-quickstart/search-beginners.md diff --git a/qdrant-landing/content/documentation/tutorials-rag-and-agents/_index.md b/qdrant-landing/content/documentation/tutorials-rag-and-agents/_index.md new file mode 100644 index 000000000..90067a152 --- /dev/null +++ b/qdrant-landing/content/documentation/tutorials-rag-and-agents/_index.md @@ -0,0 +1,20 @@ +--- +title: RAG & AI Agents +weight: 19 +is_empty: false +aliases: + - how-to + - tutorials +partition: qdrant +--- + +# RAG & AI Agents Tutorials +*Build intelligent agents and complex LLM-driven applications.* + +| Tutorial | Objective | Stack | Time | Level | +| :--- | :--- | :--- | :--- | :--- | +| [Agentic RAG with CrewAI](https://qdrant.tech/documentation/agentic-rag-crewai-zoom/) | Step-by-step multi-agent RAG system. | CrewAI | 45m | Beginner | +| [Agentic RAG with LangGraph](https://qdrant.tech/documentation/agentic-rag-langgraph/) | Build AI agents to answer library documentation. | LangGraph | 45m | Intermediate | +| [Agentic Discord ChatBot](https://qdrant.tech/documentation/agentic-rag-camelai-discord/) | Develop a functional bot with CAMEL-AI. | OpenAI | 45m | Intermediate | +| [Multimodal Search (LlamaIndex)](https://qdrant.tech/documentation/multimodal-search/) | Search across image and text modalities. | LlamaIndex | 15m | Beginner | +| [Automate Metadata Filtering](https://qdrant.tech/documentation/search-precision/automate-filtering-with-llms/) | Use LLM structured output for dynamic filters. | Python | 30m | Intermediate | \ No newline at end of file diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/_index.md b/qdrant-landing/content/documentation/tutorials-search-engineering/_index.md new file mode 100644 index 000000000..1803ca930 --- /dev/null +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/_index.md @@ -0,0 +1,24 @@ +--- +title: Search Engineering +weight: 18 +is_empty: false +aliases: + - how-to + - tutorials +partition: qdrant +--- + +# Search Engineering Tutorials +*Master vector search modalities, reranking, and retrieval quality.* + +| Tutorial | Objective | Stack | Time | Level | +| :--- | :--- | :--- | :--- | :--- | +| [Neural Search Service](https://qdrant.tech/documentation/tutorials-search-engineering/neural-search/) | Deploy a search service for company descriptions. | FastAPI | 30m | Beginner | +| [Hybrid Search with FastEmbed](https://qdrant.tech/documentation/tutorials-search-engineering/hybrid-search-fastembed/) | Combine dense and sparse search for startups. | FastAPI | 20m | Beginner | +| [Movie Recommendations](https://qdrant.tech/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | +| [Advanced PDF Retrieval](https://qdrant.tech/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | +| [Retrieval Quality Benchmarking](https://qdrant.tech/documentation/tutorials-search-engineering/retrieval-quality/) | Measure quality and tune HNSW parameters. | Python | 30m | Intermediate | +| [Multivector Reranking](https://qdrant.tech/documentation/search-precision/reranking-semantic-search/) | Use multivector representations for better ranking. | Python | 30m | Intermediate | +| [Hybrid Search Reranking](https://qdrant.tech/documentation/tutorials-search-engineering/reranking-hybrid-search/) | Implement late interaction and sparse reranking. | Python | 40m | Intermediate | +| [Semantic Code Search](https://qdrant.tech/documentation/tutorials-search-engineering/code-search/) | Navigate codebases using vector similarity. | Python | 45m | Intermediate | +| [Static Embeddings Analysis](https://qdrant.tech/documentation/tutorials-search-engineering/static-embeddings/) | Evaluate the renaissance of static embeddings. | Python | 20m | Intermediate | \ No newline at end of file diff --git a/qdrant-landing/content/documentation/advanced-tutorials/code-search.md b/qdrant-landing/content/documentation/tutorials-search-engineering/code-search.md similarity index 100% rename from qdrant-landing/content/documentation/advanced-tutorials/code-search.md rename to qdrant-landing/content/documentation/tutorials-search-engineering/code-search.md diff --git a/qdrant-landing/content/documentation/advanced-tutorials/collaborative-filtering.md b/qdrant-landing/content/documentation/tutorials-search-engineering/collaborative-filtering.md similarity index 100% rename from qdrant-landing/content/documentation/advanced-tutorials/collaborative-filtering.md rename to qdrant-landing/content/documentation/tutorials-search-engineering/collaborative-filtering.md diff --git a/qdrant-landing/content/documentation/beginner-tutorials/hybrid-search-fastembed.md b/qdrant-landing/content/documentation/tutorials-search-engineering/hybrid-search-fastembed.md similarity index 100% rename from qdrant-landing/content/documentation/beginner-tutorials/hybrid-search-fastembed.md rename to qdrant-landing/content/documentation/tutorials-search-engineering/hybrid-search-fastembed.md diff --git a/qdrant-landing/content/documentation/beginner-tutorials/neural-search.md b/qdrant-landing/content/documentation/tutorials-search-engineering/neural-search.md similarity index 100% rename from qdrant-landing/content/documentation/beginner-tutorials/neural-search.md rename to qdrant-landing/content/documentation/tutorials-search-engineering/neural-search.md diff --git a/qdrant-landing/content/documentation/advanced-tutorials/pdf-retrieval-at-scale.md b/qdrant-landing/content/documentation/tutorials-search-engineering/pdf-retrieval-at-scale.md similarity index 100% rename from qdrant-landing/content/documentation/advanced-tutorials/pdf-retrieval-at-scale.md rename to qdrant-landing/content/documentation/tutorials-search-engineering/pdf-retrieval-at-scale.md diff --git a/qdrant-landing/content/documentation/advanced-tutorials/reranking-hybrid-search.md b/qdrant-landing/content/documentation/tutorials-search-engineering/reranking-hybrid-search.md similarity index 100% rename from qdrant-landing/content/documentation/advanced-tutorials/reranking-hybrid-search.md rename to qdrant-landing/content/documentation/tutorials-search-engineering/reranking-hybrid-search.md diff --git a/qdrant-landing/content/documentation/beginner-tutorials/retrieval-quality.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md similarity index 100% rename from qdrant-landing/content/documentation/beginner-tutorials/retrieval-quality.md rename to qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md diff --git a/qdrant-landing/content/documentation/database-tutorials/static-embeddings.md b/qdrant-landing/content/documentation/tutorials-search-engineering/static-embeddings.md similarity index 100% rename from qdrant-landing/content/documentation/database-tutorials/static-embeddings.md rename to qdrant-landing/content/documentation/tutorials-search-engineering/static-embeddings.md