From 59932985483b6c8a75ec7eec3b15f4042503a1d5 Mon Sep 17 00:00:00 2001 From: kanungle Date: Mon, 22 Dec 2025 15:03:47 -0800 Subject: [PATCH 01/11] 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 From 2da51fec7852a9f9b8f1a8da0ffcf593dc1d5653 Mon Sep 17 00:00:00 2001 From: kanungle Date: Mon, 22 Dec 2025 15:10:16 -0800 Subject: [PATCH 02/11] re-added a deleted tutorial --- .../using-multivector-representations.md | 196 ++++++++++++++++++ 1 file changed, 196 insertions(+) create mode 100644 qdrant-landing/content/documentation/tutorials-search-engineering/using-multivector-representations.md diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/using-multivector-representations.md b/qdrant-landing/content/documentation/tutorials-search-engineering/using-multivector-representations.md new file mode 100644 index 000000000..5d225fc2a --- /dev/null +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/using-multivector-representations.md @@ -0,0 +1,196 @@ +--- +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. + + From 03819a8a20272c544bf12ed9d26b30b4355c09e2 Mon Sep 17 00:00:00 2001 From: kanungle Date: Mon, 22 Dec 2025 18:35:17 -0800 Subject: [PATCH 03/11] update "learn" page --- qdrant-landing/content/learn/_index.md | 16 ++++++++-------- ...d-tutorials.md => ref-tutorials-ecosystem.md} | 4 ++-- ...-tutorials.md => ref-tutorials-operations.md} | 4 ++-- ...er-tutorials.md => ref-tutorials-overview.md} | 2 +- .../content/learn/ref-tutorials-quickstart.md | 11 +++++++++++ .../learn/ref-tutorials-rag-and-agents.md | 11 +++++++++++ .../learn/ref-tutorials-search-engineering.md | 11 +++++++++++ 7 files changed, 46 insertions(+), 13 deletions(-) rename qdrant-landing/content/learn/{ref-tutorials-advanced-tutorials.md => ref-tutorials-ecosystem.md} (77%) rename qdrant-landing/content/learn/{ref-tutorials-database-tutorials.md => ref-tutorials-operations.md} (76%) rename qdrant-landing/content/learn/{ref-tutorials-beginner-tutorials.md => ref-tutorials-overview.md} (82%) create mode 100644 qdrant-landing/content/learn/ref-tutorials-quickstart.md create mode 100644 qdrant-landing/content/learn/ref-tutorials-rag-and-agents.md create mode 100644 qdrant-landing/content/learn/ref-tutorials-search-engineering.md diff --git a/qdrant-landing/content/learn/_index.md b/qdrant-landing/content/learn/_index.md index af6808c99..1beb74916 100644 --- a/qdrant-landing/content/learn/_index.md +++ b/qdrant-landing/content/learn/_index.md @@ -59,17 +59,17 @@ content: title: Tutorials description: Step-by-step guides and video content for hands-on learning with practical examples and real-world applications. list: - title: "Tutorial levels:" + title: "Tutorial categories:" elements: - - "Vector Search Basics" - - "Advanced Retrieval" - - "Using the Database" + - "Search Engineering" + - "RAG and Agents" + - "Ecosystem and Integrations" link: - url: /documentation/database-tutorials/ + url: /documentation/tutorials-overview/ text: Explore Tutorials - partial: documentation/sections/cards-section - title: Quick Start + title: Quickstart description: cardsPartial: documentation/cards/docs-cards cardsPerRow: 2 @@ -82,7 +82,7 @@ content: description: Start with our beginner-friendly articles on vector embeddings and basic concepts. link: text: Start Learning - url: /documentation/beginner-tutorials/ + url: /documentation/tutorials-quickstart/ - id: 2 icon: src: /icons/outline/hacker-purple.svg @@ -91,6 +91,6 @@ content: description: Jump into practical examples and integration guides to implement Qdrant in your projects. link: text: View Examples - url: /documentation/advanced-tutorials/ + url: /documentation/tutorials-search-engineer/ --- diff --git a/qdrant-landing/content/learn/ref-tutorials-advanced-tutorials.md b/qdrant-landing/content/learn/ref-tutorials-ecosystem.md similarity index 77% rename from qdrant-landing/content/learn/ref-tutorials-advanced-tutorials.md rename to qdrant-landing/content/learn/ref-tutorials-ecosystem.md index 34430a1f9..3d5a8415b 100644 --- a/qdrant-landing/content/learn/ref-tutorials-advanced-tutorials.md +++ b/qdrant-landing/content/learn/ref-tutorials-ecosystem.md @@ -1,8 +1,8 @@ --- #Delimiter files are used to separate the list of documentation pages into sections. type: reference -reference: /documentation/advanced-tutorials -weight: 320 +reference: /documentation/tutorials-ecosystem +weight: 314 sitemapExclude: True _build: publishResources: false diff --git a/qdrant-landing/content/learn/ref-tutorials-database-tutorials.md b/qdrant-landing/content/learn/ref-tutorials-operations.md similarity index 76% rename from qdrant-landing/content/learn/ref-tutorials-database-tutorials.md rename to qdrant-landing/content/learn/ref-tutorials-operations.md index 9b7184520..ac7a6367f 100644 --- a/qdrant-landing/content/learn/ref-tutorials-database-tutorials.md +++ b/qdrant-landing/content/learn/ref-tutorials-operations.md @@ -1,8 +1,8 @@ --- #Delimiter files are used to separate the list of documentation pages into sections. type: reference -reference: /documentation/database-tutorials -weight: 330 +reference: /documentation/tutorials-operations +weight: 315 sitemapExclude: True _build: publishResources: false diff --git a/qdrant-landing/content/learn/ref-tutorials-beginner-tutorials.md b/qdrant-landing/content/learn/ref-tutorials-overview.md similarity index 82% rename from qdrant-landing/content/learn/ref-tutorials-beginner-tutorials.md rename to qdrant-landing/content/learn/ref-tutorials-overview.md index b458e8671..e6bc387b2 100644 --- a/qdrant-landing/content/learn/ref-tutorials-beginner-tutorials.md +++ b/qdrant-landing/content/learn/ref-tutorials-overview.md @@ -1,7 +1,7 @@ --- #Delimiter files are used to separate the list of documentation pages into sections. type: reference -reference: /documentation/beginner-tutorials +reference: /documentation/tutorials-overview weight: 310 sitemapExclude: True _build: diff --git a/qdrant-landing/content/learn/ref-tutorials-quickstart.md b/qdrant-landing/content/learn/ref-tutorials-quickstart.md new file mode 100644 index 000000000..c9efa0726 --- /dev/null +++ b/qdrant-landing/content/learn/ref-tutorials-quickstart.md @@ -0,0 +1,11 @@ +--- +#Delimiter files are used to separate the list of documentation pages into sections. +type: reference +reference: /documentation/tutorials-quickstart +weight: 311 +sitemapExclude: True +_build: + publishResources: false + render: never +partition: learn +--- \ No newline at end of file diff --git a/qdrant-landing/content/learn/ref-tutorials-rag-and-agents.md b/qdrant-landing/content/learn/ref-tutorials-rag-and-agents.md new file mode 100644 index 000000000..65fdd1907 --- /dev/null +++ b/qdrant-landing/content/learn/ref-tutorials-rag-and-agents.md @@ -0,0 +1,11 @@ +--- +#Delimiter files are used to separate the list of documentation pages into sections. +type: reference +reference: /documentation/tutorials-rag-and-agents +weight: 313 +sitemapExclude: True +_build: + publishResources: false + render: never +partition: learn +--- \ No newline at end of file diff --git a/qdrant-landing/content/learn/ref-tutorials-search-engineering.md b/qdrant-landing/content/learn/ref-tutorials-search-engineering.md new file mode 100644 index 000000000..674c30ee7 --- /dev/null +++ b/qdrant-landing/content/learn/ref-tutorials-search-engineering.md @@ -0,0 +1,11 @@ +--- +#Delimiter files are used to separate the list of documentation pages into sections. +type: reference +reference: /documentation/tutorials-search-engineering +weight: 312 +sitemapExclude: True +_build: + publishResources: false + render: never +partition: learn +--- \ No newline at end of file From 7b7a2d97165f44c27072d046efdba812dd4eb80b Mon Sep 17 00:00:00 2001 From: kanungle Date: Tue, 23 Dec 2025 13:18:14 -0800 Subject: [PATCH 04/11] updated aliases and relative links --- .../tutorials-ecosystem/_index.md | 14 ++--- .../huggingface-datasets.md | 1 + .../tutorials-ecosystem/migration.md | 2 + .../tutorials-operations/_index.md | 14 ++--- .../tutorials-operations/async-api.md | 1 + .../tutorials-operations/bulk-upload.md | 1 + .../tutorials-operations/create-snapshot.md | 1 + .../large-scale-search.md | 2 + .../tutorials-overview/_index.md | 62 +++++++++---------- .../tutorials-quickstart/_index.md | 6 +- .../tutorials-quickstart/search-beginners.md | 1 + .../tutorials-rag-and-agents/_index.md | 10 +-- .../tutorials-search-engineering/_index.md | 18 +++--- .../code-search.md | 1 + .../collaborative-filtering.md | 1 + .../hybrid-search-fastembed.md | 1 + .../neural-search.md | 1 + .../pdf-retrieval-at-scale.md | 1 + .../reranking-hybrid-search.md | 1 + .../retrieval-quality.md | 1 + .../static-embeddings.md | 1 + .../using-multivector-representations.md | 1 + 22 files changed, 80 insertions(+), 62 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-ecosystem/_index.md b/qdrant-landing/content/documentation/tutorials-ecosystem/_index.md index a6ee29459..31731ca43 100644 --- a/qdrant-landing/content/documentation/tutorials-ecosystem/_index.md +++ b/qdrant-landing/content/documentation/tutorials-ecosystem/_index.md @@ -13,10 +13,10 @@ partition: qdrant | 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 +| [Embedding Migration](/documentation/tutorials-ecosystem/migration/) | Move dense and sparse embeddings to Qdrant. | CLI | 30m | Intermediate | +| [S3 Ingestion with LangChain](/documentation/data-ingestion-beginners/) | Stream data from AWS S3 to vector store. | LangChain | 30m | Beginner | +| [Hugging Face Datasets](/documentation/tutorials-ecosystem/huggingface-datasets/) | Load and search public ML datasets. | Python | 15m | Beginner | +| [Databricks Integration](/documentation/send-data/databricks/) | Vectorize datasets using FastEmbed on Databricks. | Databricks | 30m | Intermediate | +| [Airflow & Astronomer](/documentation/send-data/qdrant-airflow-astronomer/) | Orchestrate data engineering workflows. | Airflow | 45m | Intermediate | +| [Kafka Data Streaming](/documentation/send-data/data-streaming-kafka-qdrant/) | Setup Qdrant Sink Connector for real-time data. | Kafka | 60m | Advanced | +| [No-Code Automation (n8n)](/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/tutorials-ecosystem/huggingface-datasets.md b/qdrant-landing/content/documentation/tutorials-ecosystem/huggingface-datasets.md index c43943d2e..a0f7bc865 100644 --- a/qdrant-landing/content/documentation/tutorials-ecosystem/huggingface-datasets.md +++ b/qdrant-landing/content/documentation/tutorials-ecosystem/huggingface-datasets.md @@ -2,6 +2,7 @@ title: Load a HuggingFace Dataset aliases: - /documentation/tutorials/huggingface-datasets/ + - /documentation/database-tutorials/huggingface-datasets/ weight: 3 --- diff --git a/qdrant-landing/content/documentation/tutorials-ecosystem/migration.md b/qdrant-landing/content/documentation/tutorials-ecosystem/migration.md index 4fdfc12c6..c8d94a99c 100644 --- a/qdrant-landing/content/documentation/tutorials-ecosystem/migration.md +++ b/qdrant-landing/content/documentation/tutorials-ecosystem/migration.md @@ -1,5 +1,7 @@ --- title: Migration to Qdrant +aliases: + - /documentation/database-tutorials/migration/ weight: 180 --- diff --git a/qdrant-landing/content/documentation/tutorials-operations/_index.md b/qdrant-landing/content/documentation/tutorials-operations/_index.md index 0c6e40726..dcf985e09 100644 --- a/qdrant-landing/content/documentation/tutorials-operations/_index.md +++ b/qdrant-landing/content/documentation/tutorials-operations/_index.md @@ -13,10 +13,10 @@ partition: qdrant | 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 +| [Bulk Data Uploads](/documentation/tutorials-operations/bulk-upload/) | High-scale ingestion tricks for power users. | Python | 20m | Intermediate | +| [Snapshot & Backup](/documentation/tutorials-operations/create-snapshot/) | Create and restore collection snapshots. | Python | 20m | Beginner | +| [Billion-Scale Search](/documentation/tutorials-operations/large-scale-search/) | Cost-efficient search for LAION-400M datasets. | None | 2 days | Advanced | +| [Python Async API](/documentation/tutorials-operations/async-api/) | Use Asynchronous programming for efficiency. | Python | 25m | Intermediate | +| [Cloud Inference Search](/documentation/tutorials-and-examples/cloud-inference-hybrid-search/) | Hybrid search using Qdrant's built-in inference. | Any | 20m | Beginner | +| [Monitor Managed Cloud](/documentation/tutorials-and-examples/managed-cloud-prometheus/) | Observability with Prometheus and Grafana. | Prometheus | 30m | Intermediate | +| [Monitor Private Cloud](/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-operations/async-api.md b/qdrant-landing/content/documentation/tutorials-operations/async-api.md index 537c3b16f..05673071b 100644 --- a/qdrant-landing/content/documentation/tutorials-operations/async-api.md +++ b/qdrant-landing/content/documentation/tutorials-operations/async-api.md @@ -2,6 +2,7 @@ title: Build With Async API aliases: - /documentation/tutorials/async-api/ + - /documentation/database-tutorials/async-api/ weight: 4 --- diff --git a/qdrant-landing/content/documentation/tutorials-operations/bulk-upload.md b/qdrant-landing/content/documentation/tutorials-operations/bulk-upload.md index 43c629fa2..d12c80476 100644 --- a/qdrant-landing/content/documentation/tutorials-operations/bulk-upload.md +++ b/qdrant-landing/content/documentation/tutorials-operations/bulk-upload.md @@ -2,6 +2,7 @@ title: Bulk Upload Vectors aliases: - /documentation/tutorials/bulk-upload/ + - /documentation/database-tutorials/bulk-upload/ weight: 1 --- diff --git a/qdrant-landing/content/documentation/tutorials-operations/create-snapshot.md b/qdrant-landing/content/documentation/tutorials-operations/create-snapshot.md index 877e9ffc6..a1491f508 100644 --- a/qdrant-landing/content/documentation/tutorials-operations/create-snapshot.md +++ b/qdrant-landing/content/documentation/tutorials-operations/create-snapshot.md @@ -2,6 +2,7 @@ title: Create & Restore Snapshots aliases: - /documentation/tutorials/create-snapshot/ + - /documentation/database-tutorials/create-snapshot/ weight: 2 --- diff --git a/qdrant-landing/content/documentation/tutorials-operations/large-scale-search.md b/qdrant-landing/content/documentation/tutorials-operations/large-scale-search.md index 782481d61..6e3fbfed7 100644 --- a/qdrant-landing/content/documentation/tutorials-operations/large-scale-search.md +++ b/qdrant-landing/content/documentation/tutorials-operations/large-scale-search.md @@ -1,5 +1,7 @@ --- title: Large Scale Search +aliases: + - /documentation/database-tutorials/large-scale-search/ weight: 2 --- diff --git a/qdrant-landing/content/documentation/tutorials-overview/_index.md b/qdrant-landing/content/documentation/tutorials-overview/_index.md index 93ad2e326..7b844b266 100644 --- a/qdrant-landing/content/documentation/tutorials-overview/_index.md +++ b/qdrant-landing/content/documentation/tutorials-overview/_index.md @@ -15,9 +15,9 @@ partition: qdrant | 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 | +| [Local Qdrant Setup](/documentation/quickstart/) | Basic CRUD operations and local deployment. | Python | 10m | Beginner | +| [5-Minute Semantic Search](/documentation/tutorials-quickstart/search-beginners/) | Build a search engine for science fiction books. | Python | 5m | Beginner | +| [5-Minute RAG with DeepSeek](/documentation/tutorials-quickstart/rag-deepseek/) | Build a RAG pipeline with DeepSeek enrichment. | Python | 5m | Beginner | --- @@ -26,15 +26,15 @@ partition: qdrant | 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 | +| [Neural Search Service](/documentation/tutorials-search-engineering/neural-search/) | Deploy a search service for company descriptions. | FastAPI | 30m | Beginner | +| [Hybrid Search with FastEmbed](/documentation/tutorials-search-engineering/hybrid-search-fastembed/) | Combine dense and sparse search for startups. | FastAPI | 20m | Beginner | +| [Movie Recommendations](/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | +| [Advanced PDF Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | +| [Retrieval Quality Benchmarking](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure quality and tune HNSW parameters. | Python | 30m | Intermediate | +| [Multivector Reranking](/documentation/search-precision/reranking-semantic-search/) | Use multivector representations for better ranking. | Python | 30m | Intermediate | +| [Hybrid Search Reranking](/documentation/tutorials-search-engineering/reranking-hybrid-search/) | Implement late interaction and sparse reranking. | Python | 40m | Intermediate | +| [Semantic Code Search](/documentation/tutorials-search-engineering/code-search/) | Navigate codebases using vector similarity. | Python | 45m | Intermediate | +| [Static Embeddings Analysis](/documentation/tutorials-search-engineering/static-embeddings/) | Evaluate the renaissance of static embeddings. | Python | 20m | Intermediate | --- @@ -43,11 +43,11 @@ partition: qdrant | 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 | +| [Agentic RAG with CrewAI](/documentation/agentic-rag-crewai-zoom/) | Step-by-step multi-agent RAG system. | CrewAI | 45m | Beginner | +| [Agentic RAG with LangGraph](/documentation/agentic-rag-langgraph/) | Build AI agents to answer library documentation. | LangGraph | 45m | Intermediate | +| [Agentic Discord ChatBot](/documentation/agentic-rag-camelai-discord/) | Develop a functional bot with CAMEL-AI. | OpenAI | 45m | Intermediate | +| [Multimodal Search (LlamaIndex)](/documentation/multimodal-search/) | Search across image and text modalities. | LlamaIndex | 15m | Beginner | +| [Automate Metadata Filtering](/documentation/search-precision/automate-filtering-with-llms/) | Use LLM structured output for dynamic filters. | Python | 30m | Intermediate | --- @@ -56,13 +56,13 @@ partition: qdrant | 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 | +| [Embedding Migration](/documentation/tutorials-ecosystem/migration/) | Move dense and sparse embeddings to Qdrant. | CLI | 30m | Intermediate | +| [S3 Ingestion with LangChain](/documentation/data-ingestion-beginners/) | Stream data from AWS S3 to vector store. | LangChain | 30m | Beginner | +| [Hugging Face Datasets](/documentation/tutorials-ecosystem/huggingface-datasets/) | Load and search public ML datasets. | Python | 15m | Beginner | +| [Databricks Integration](/documentation/send-data/databricks/) | Vectorize datasets using FastEmbed on Databricks. | Databricks | 30m | Intermediate | +| [Airflow & Astronomer](/documentation/send-data/qdrant-airflow-astronomer/) | Orchestrate data engineering workflows. | Airflow | 45m | Intermediate | +| [Kafka Data Streaming](/documentation/send-data/data-streaming-kafka-qdrant/) | Setup Qdrant Sink Connector for real-time data. | Kafka | 60m | Advanced | +| [No-Code Automation (n8n)](/documentation/qdrant-n8n/) | Combine Qdrant with low-code n8n workflows. | n8n | 45m | Intermediate | --- @@ -71,10 +71,10 @@ partition: qdrant | 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 +| [Bulk Data Uploads](/documentation/tutorials-operations/bulk-upload/) | High-scale ingestion tricks for power users. | Python | 20m | Intermediate | +| [Snapshot & Backup](/documentation/tutorials-operations/create-snapshot/) | Create and restore collection snapshots. | Python | 20m | Beginner | +| [Billion-Scale Search](/documentation/tutorials-operations/large-scale-search/) | Cost-efficient search for LAION-400M datasets. | None | 2 days | Advanced | +| [Python Async API](/documentation/tutorials-operations/async-api/) | Use Asynchronous programming for efficiency. | Python | 25m | Intermediate | +| [Cloud Inference Search](/documentation/tutorials-and-examples/cloud-inference-hybrid-search/) | Hybrid search using Qdrant's built-in inference. | Any | 20m | Beginner | +| [Monitor Managed Cloud](/documentation/tutorials-and-examples/managed-cloud-prometheus/) | Observability with Prometheus and Grafana. | Prometheus | 30m | Intermediate | +| [Monitor Private Cloud](/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 index 7ed82a709..6698bfb7f 100644 --- a/qdrant-landing/content/documentation/tutorials-quickstart/_index.md +++ b/qdrant-landing/content/documentation/tutorials-quickstart/_index.md @@ -13,6 +13,6 @@ partition: qdrant | 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 +| [Local Qdrant Setup](/documentation/quickstart/) | Basic CRUD operations and local deployment. | Python | 10m | Beginner | +| [5-Minute Semantic Search](/documentation/tutorials-quickstart/search-beginners/) | Build a search engine for science fiction books. | Python | 5m | Beginner | +| [5-Minute RAG with DeepSeek](/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/tutorials-quickstart/search-beginners.md b/qdrant-landing/content/documentation/tutorials-quickstart/search-beginners.md index 7e2d18b2a..82c05d8ae 100644 --- a/qdrant-landing/content/documentation/tutorials-quickstart/search-beginners.md +++ b/qdrant-landing/content/documentation/tutorials-quickstart/search-beginners.md @@ -4,6 +4,7 @@ weight: 1 aliases: - /documentation/tutorials/mighty.md/ - /documentation/tutorials/search-beginners/ + - /documentation/beginner-tutorials/search-beginners/ --- # Build Your First Semantic Search Engine in 5 Minutes diff --git a/qdrant-landing/content/documentation/tutorials-rag-and-agents/_index.md b/qdrant-landing/content/documentation/tutorials-rag-and-agents/_index.md index 90067a152..636873990 100644 --- a/qdrant-landing/content/documentation/tutorials-rag-and-agents/_index.md +++ b/qdrant-landing/content/documentation/tutorials-rag-and-agents/_index.md @@ -13,8 +13,8 @@ partition: qdrant | 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 +| [Agentic RAG with CrewAI](/documentation/agentic-rag-crewai-zoom/) | Step-by-step multi-agent RAG system. | CrewAI | 45m | Beginner | +| [Agentic RAG with LangGraph](/documentation/agentic-rag-langgraph/) | Build AI agents to answer library documentation. | LangGraph | 45m | Intermediate | +| [Agentic Discord ChatBot](/documentation/agentic-rag-camelai-discord/) | Develop a functional bot with CAMEL-AI. | OpenAI | 45m | Intermediate | +| [Multimodal Search (LlamaIndex)](/documentation/multimodal-search/) | Search across image and text modalities. | LlamaIndex | 15m | Beginner | +| [Automate Metadata Filtering](/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 index 1803ca930..414af321d 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/_index.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/_index.md @@ -13,12 +13,12 @@ partition: qdrant | 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 +| [Neural Search Service](/documentation/tutorials-search-engineering/neural-search/) | Deploy a search service for company descriptions. | FastAPI | 30m | Beginner | +| [Hybrid Search with FastEmbed](/documentation/tutorials-search-engineering/hybrid-search-fastembed/) | Combine dense and sparse search for startups. | FastAPI | 20m | Beginner | +| [Movie Recommendations](/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | +| [Advanced PDF Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | +| [Retrieval Quality Benchmarking](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure quality and tune HNSW parameters. | Python | 30m | Intermediate | +| [Multivector Reranking](/documentation/search-precision/reranking-semantic-search/) | Use multivector representations for better ranking. | Python | 30m | Intermediate | +| [Hybrid Search Reranking](/documentation/tutorials-search-engineering/reranking-hybrid-search/) | Implement late interaction and sparse reranking. | Python | 40m | Intermediate | +| [Semantic Code Search](/documentation/tutorials-search-engineering/code-search/) | Navigate codebases using vector similarity. | Python | 45m | Intermediate | +| [Static Embeddings Analysis](/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/tutorials-search-engineering/code-search.md b/qdrant-landing/content/documentation/tutorials-search-engineering/code-search.md index 44a7937d2..a6be36324 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/code-search.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/code-search.md @@ -2,6 +2,7 @@ title: Search Through Your Codebase aliases: - /documentation/tutorials/code-search/ + - /documentation/advanced-tutorials/code-search/ weight: 2 --- diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/collaborative-filtering.md b/qdrant-landing/content/documentation/tutorials-search-engineering/collaborative-filtering.md index 8e871f05c..db71fb55f 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/collaborative-filtering.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/collaborative-filtering.md @@ -2,6 +2,7 @@ title: Build a Recommendation System with Collaborative Filtering aliases: - /documentation/tutorials/collaborative-filtering/ + - /documentation/advanced-tutorials/collaborative-filtering/ short_description: "Build an effective movie recommendation system using collaborative filtering and Qdrant's similarity search." description: "Build an effective movie recommendation system using collaborative filtering and Qdrant's similarity search." preview_image: /blog/collaborative-filtering/social_preview.png diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/hybrid-search-fastembed.md b/qdrant-landing/content/documentation/tutorials-search-engineering/hybrid-search-fastembed.md index d7db0050a..7fbdcbf5b 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/hybrid-search-fastembed.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/hybrid-search-fastembed.md @@ -2,6 +2,7 @@ title: Setup Hybrid Search with FastEmbed aliases: - /documentation/tutorials/hybrid-search-fastembed/ + - /documentation/beginner-tutorials/hybrid-search-fastembed/ weight: 3 --- diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/neural-search.md b/qdrant-landing/content/documentation/tutorials-search-engineering/neural-search.md index 495e1273e..422912376 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/neural-search.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/neural-search.md @@ -2,6 +2,7 @@ title: Build a Neural Search Service aliases: - /documentation/tutorials/neural-search/ + - /documentation/beginner-tutorials/neural-search/ weight: 2 --- diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/pdf-retrieval-at-scale.md b/qdrant-landing/content/documentation/tutorials-search-engineering/pdf-retrieval-at-scale.md index e27655e0d..89f98bd55 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/pdf-retrieval-at-scale.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/pdf-retrieval-at-scale.md @@ -2,6 +2,7 @@ title: Scaling PDF Retrieval with Qdrant aliases: - /documentation/tutorials/pdf-retrieval-at-scale/ + - /documentation/advanced-tutorials/pdf-retrieval-at-scale/ short_description: "Optimizing PDF retrieval at scale with Qdrant and Vision Large Language Models (VLLMs) such as ColPali and ColQwen." description: "Optimizing PDF retrieval at scale with Qdrant and Vision Large Language Models (VLLMs) such as ColPali and ColQwen. Two-stage retrieval with multivector representations mean pooling." weight: 4 diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/reranking-hybrid-search.md b/qdrant-landing/content/documentation/tutorials-search-engineering/reranking-hybrid-search.md index 19b6bfe7c..c0a3516e2 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/reranking-hybrid-search.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/reranking-hybrid-search.md @@ -3,6 +3,7 @@ title: Reranking in Hybrid Search weight: 2 aliases: - /documentation/search-precision/reranking-hybrid-search/ + - /documentation/advanced-tutorials/reranking-hybrid-search/ --- # Reranking Hybrid Search Results with Qdrant Vector Database diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md index 2a9eee8bc..f1140aff4 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/retrieval-quality.md @@ -2,6 +2,7 @@ title: Measure Search Quality aliases: - /documentation/tutorials/retrieval-quality/ + - /documentation/beginner-tutorials/retrieval-quality/ weight: 4 --- diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/static-embeddings.md b/qdrant-landing/content/documentation/tutorials-search-engineering/static-embeddings.md index e062bad21..7181f4336 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/static-embeddings.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/static-embeddings.md @@ -3,6 +3,7 @@ title: Static Embeddings. Should you pay attention? weight: 181 aliases: - /blog/static-embeddings/ + - /documentation/database-tutorials/static-embeddings/ --- # Static Embeddings: should you pay attention? In the world of resource-constrained computing, a quiet revolution is taking place. While transformers dominate diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/using-multivector-representations.md b/qdrant-landing/content/documentation/tutorials-search-engineering/using-multivector-representations.md index 5d225fc2a..9087bcec7 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/using-multivector-representations.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/using-multivector-representations.md @@ -3,6 +3,7 @@ title: How to Use Multivector Representations with Qdrant Effectively weight: 2 aliases: - /documentation/search-precision/multivector-representations-with-Qdrant/ + - /documentation/advanced-tutorials/using-multivector-representations/ --- # 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. From 3957e665d02b7c0e4743c6a7d2854369cce587aa Mon Sep 17 00:00:00 2001 From: kanungle Date: Tue, 23 Dec 2025 13:36:33 -0800 Subject: [PATCH 05/11] changed page/section render and moved migration.md --- .../content/documentation/tutorials-ecosystem/_index.md | 1 - .../content/documentation/tutorials-operations/_index.md | 1 + .../{tutorials-ecosystem => tutorials-operations}/migration.md | 0 .../{tutorials-overview/_index.md => tutorials-overview.md} | 3 +-- 4 files changed, 2 insertions(+), 3 deletions(-) rename qdrant-landing/content/documentation/{tutorials-ecosystem => tutorials-operations}/migration.md (100%) rename qdrant-landing/content/documentation/{tutorials-overview/_index.md => tutorials-overview.md} (97%) diff --git a/qdrant-landing/content/documentation/tutorials-ecosystem/_index.md b/qdrant-landing/content/documentation/tutorials-ecosystem/_index.md index 31731ca43..a6953ffc9 100644 --- a/qdrant-landing/content/documentation/tutorials-ecosystem/_index.md +++ b/qdrant-landing/content/documentation/tutorials-ecosystem/_index.md @@ -13,7 +13,6 @@ partition: qdrant | Tutorial | Objective | Stack | Time | Level | | :--- | :--- | :--- | :--- | :--- | -| [Embedding Migration](/documentation/tutorials-ecosystem/migration/) | Move dense and sparse embeddings to Qdrant. | CLI | 30m | Intermediate | | [S3 Ingestion with LangChain](/documentation/data-ingestion-beginners/) | Stream data from AWS S3 to vector store. | LangChain | 30m | Beginner | | [Hugging Face Datasets](/documentation/tutorials-ecosystem/huggingface-datasets/) | Load and search public ML datasets. | Python | 15m | Beginner | | [Databricks Integration](/documentation/send-data/databricks/) | Vectorize datasets using FastEmbed on Databricks. | Databricks | 30m | Intermediate | diff --git a/qdrant-landing/content/documentation/tutorials-operations/_index.md b/qdrant-landing/content/documentation/tutorials-operations/_index.md index dcf985e09..68bba5493 100644 --- a/qdrant-landing/content/documentation/tutorials-operations/_index.md +++ b/qdrant-landing/content/documentation/tutorials-operations/_index.md @@ -13,6 +13,7 @@ partition: qdrant | Tutorial | Objective | Stack | Time | Level | | :--- | :--- | :--- | :--- | :--- | +| [Embedding Migration](/documentation/tutorials-operations/migration/) | Move dense and sparse embeddings to Qdrant. | CLI | 30m | Intermediate | | [Bulk Data Uploads](/documentation/tutorials-operations/bulk-upload/) | High-scale ingestion tricks for power users. | Python | 20m | Intermediate | | [Snapshot & Backup](/documentation/tutorials-operations/create-snapshot/) | Create and restore collection snapshots. | Python | 20m | Beginner | | [Billion-Scale Search](/documentation/tutorials-operations/large-scale-search/) | Cost-efficient search for LAION-400M datasets. | None | 2 days | Advanced | diff --git a/qdrant-landing/content/documentation/tutorials-ecosystem/migration.md b/qdrant-landing/content/documentation/tutorials-operations/migration.md similarity index 100% rename from qdrant-landing/content/documentation/tutorials-ecosystem/migration.md rename to qdrant-landing/content/documentation/tutorials-operations/migration.md diff --git a/qdrant-landing/content/documentation/tutorials-overview/_index.md b/qdrant-landing/content/documentation/tutorials-overview.md similarity index 97% rename from qdrant-landing/content/documentation/tutorials-overview/_index.md rename to qdrant-landing/content/documentation/tutorials-overview.md index 7b844b266..866eb5443 100644 --- a/qdrant-landing/content/documentation/tutorials-overview/_index.md +++ b/qdrant-landing/content/documentation/tutorials-overview.md @@ -1,7 +1,6 @@ --- title: Overview weight: 16 -is_empty: false aliases: - how-to - tutorials @@ -56,7 +55,6 @@ partition: qdrant | Tutorial | Objective | Stack | Time | Level | | :--- | :--- | :--- | :--- | :--- | -| [Embedding Migration](/documentation/tutorials-ecosystem/migration/) | Move dense and sparse embeddings to Qdrant. | CLI | 30m | Intermediate | | [S3 Ingestion with LangChain](/documentation/data-ingestion-beginners/) | Stream data from AWS S3 to vector store. | LangChain | 30m | Beginner | | [Hugging Face Datasets](/documentation/tutorials-ecosystem/huggingface-datasets/) | Load and search public ML datasets. | Python | 15m | Beginner | | [Databricks Integration](/documentation/send-data/databricks/) | Vectorize datasets using FastEmbed on Databricks. | Databricks | 30m | Intermediate | @@ -71,6 +69,7 @@ partition: qdrant | Tutorial | Objective | Stack | Time | Level | | :--- | :--- | :--- | :--- | :--- | +| [Embedding Migration](/documentation/tutorials-operations/migration/) | Move dense and sparse embeddings to Qdrant. | CLI | 30m | Intermediate | | [Bulk Data Uploads](/documentation/tutorials-operations/bulk-upload/) | High-scale ingestion tricks for power users. | Python | 20m | Intermediate | | [Snapshot & Backup](/documentation/tutorials-operations/create-snapshot/) | Create and restore collection snapshots. | Python | 20m | Beginner | | [Billion-Scale Search](/documentation/tutorials-operations/large-scale-search/) | Cost-efficient search for LAION-400M datasets. | None | 2 days | Advanced | From 402f9309566a5e1d640c62f566ef09acadd5aa97 Mon Sep 17 00:00:00 2001 From: kanungle Date: Mon, 5 Jan 2026 15:52:02 -0800 Subject: [PATCH 06/11] created 'develop' section, re-org tutorials, formatted tables with updated css --- .../documentation/tutorials-basics/_index.md | 18 + .../documentation/tutorials-develop/_index.md | 14 + .../async-api.md | 0 .../bulk-upload.md | 0 .../tutorials-ecosystem/_index.md | 14 +- .../tutorials-operations/_index.md | 16 +- .../documentation/tutorials-overview.md | 92 ++--- .../tutorials-quickstart/_index.md | 18 - .../tutorials-quickstart/rag-deepseek.md | 334 ------------------ .../tutorials-quickstart/search-beginners.md | 245 ------------- .../tutorials-rag-and-agents/_index.md | 10 +- .../tutorials-search-engineering/_index.md | 18 +- qdrant-landing/content/learn/_index.md | 2 +- ...-quickstart.md => ref-tutorials-basics.md} | 2 +- .../content/learn/ref-tutorials-develop.md | 11 + .../content/learn/ref-tutorials-ecosystem.md | 2 +- .../content/learn/ref-tutorials-operations.md | 2 +- .../qdrant-2024/assets/css/documentation.scss | 65 ++++ 18 files changed, 190 insertions(+), 673 deletions(-) create mode 100644 qdrant-landing/content/documentation/tutorials-basics/_index.md create mode 100644 qdrant-landing/content/documentation/tutorials-develop/_index.md rename qdrant-landing/content/documentation/{tutorials-operations => tutorials-develop}/async-api.md (100%) rename qdrant-landing/content/documentation/{tutorials-operations => tutorials-develop}/bulk-upload.md (100%) delete mode 100644 qdrant-landing/content/documentation/tutorials-quickstart/_index.md delete mode 100644 qdrant-landing/content/documentation/tutorials-quickstart/rag-deepseek.md delete mode 100644 qdrant-landing/content/documentation/tutorials-quickstart/search-beginners.md rename qdrant-landing/content/learn/{ref-tutorials-quickstart.md => ref-tutorials-basics.md} (81%) create mode 100644 qdrant-landing/content/learn/ref-tutorials-develop.md diff --git a/qdrant-landing/content/documentation/tutorials-basics/_index.md b/qdrant-landing/content/documentation/tutorials-basics/_index.md new file mode 100644 index 000000000..b92a70681 --- /dev/null +++ b/qdrant-landing/content/documentation/tutorials-basics/_index.md @@ -0,0 +1,18 @@ +--- +title: Basics +weight: 17 +is_empty: false +aliases: + - how-to + - tutorials +partition: qdrant +--- + +# Basic Tutorials +*Get up and running with Qdrant in minutes.* + +| Tutorial | Objective | Stack | Time | Level | +| :--- | :--- | :--- | :--- | :--- | +| [Local Qdrant Setup](/documentation/quickstart/) | Basic CRUD operations and local deployment. | Python | 10m | Beginner | +| [5-Minute Semantic Search](/documentation/tutorials-basics/search-beginners/) | Build a search engine for science fiction books. | Python | 5m | Beginner | +| [5-Minute RAG with DeepSeek](/documentation/tutorials-basics/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/tutorials-develop/_index.md b/qdrant-landing/content/documentation/tutorials-develop/_index.md new file mode 100644 index 000000000..110e7417f --- /dev/null +++ b/qdrant-landing/content/documentation/tutorials-develop/_index.md @@ -0,0 +1,14 @@ +--- +title: Develop & Implement +weight: 21 +is_empty: false +partition: qdrant +--- + +# Develop & Implement Tutorials +*Core tools and APIs for building with Qdrant.* + +| Tutorial | Objective | Stack | Time | Level | +| :--- | :--- | :--- | :--- | :--- | +| [Bulk Data Uploads](/documentation/tutorials-develop/bulk-upload/) | High-scale ingestion tricks for power users. | Python | 20m | Intermediate | +| [Python Async API](/documentation/tutorials-develop/async-api/) | Use Asynchronous programming for efficiency. | Python | 25m | Intermediate | diff --git a/qdrant-landing/content/documentation/tutorials-operations/async-api.md b/qdrant-landing/content/documentation/tutorials-develop/async-api.md similarity index 100% rename from qdrant-landing/content/documentation/tutorials-operations/async-api.md rename to qdrant-landing/content/documentation/tutorials-develop/async-api.md diff --git a/qdrant-landing/content/documentation/tutorials-operations/bulk-upload.md b/qdrant-landing/content/documentation/tutorials-develop/bulk-upload.md similarity index 100% rename from qdrant-landing/content/documentation/tutorials-operations/bulk-upload.md rename to qdrant-landing/content/documentation/tutorials-develop/bulk-upload.md diff --git a/qdrant-landing/content/documentation/tutorials-ecosystem/_index.md b/qdrant-landing/content/documentation/tutorials-ecosystem/_index.md index a6953ffc9..f5581ebb8 100644 --- a/qdrant-landing/content/documentation/tutorials-ecosystem/_index.md +++ b/qdrant-landing/content/documentation/tutorials-ecosystem/_index.md @@ -1,6 +1,6 @@ --- title: Ecosystem & Integrations -weight: 20 +weight: 22 is_empty: false aliases: - how-to @@ -13,9 +13,9 @@ partition: qdrant | Tutorial | Objective | Stack | Time | Level | | :--- | :--- | :--- | :--- | :--- | -| [S3 Ingestion with LangChain](/documentation/data-ingestion-beginners/) | Stream data from AWS S3 to vector store. | LangChain | 30m | Beginner | -| [Hugging Face Datasets](/documentation/tutorials-ecosystem/huggingface-datasets/) | Load and search public ML datasets. | Python | 15m | Beginner | -| [Databricks Integration](/documentation/send-data/databricks/) | Vectorize datasets using FastEmbed on Databricks. | Databricks | 30m | Intermediate | -| [Airflow & Astronomer](/documentation/send-data/qdrant-airflow-astronomer/) | Orchestrate data engineering workflows. | Airflow | 45m | Intermediate | -| [Kafka Data Streaming](/documentation/send-data/data-streaming-kafka-qdrant/) | Setup Qdrant Sink Connector for real-time data. | Kafka | 60m | Advanced | -| [No-Code Automation (n8n)](/documentation/qdrant-n8n/) | Combine Qdrant with low-code n8n workflows. | n8n | 45m | Intermediate | \ No newline at end of file +| [S3 Ingestion with LangChain](/documentation/data-ingestion-beginners/) | Stream data from AWS S3 to vector store. | LangChain | 30m | Beginner | +| [Hugging Face Datasets](/documentation/tutorials-ecosystem/huggingface-datasets/) | Load and search public ML datasets. | Python | 15m | Beginner | +| [Databricks Integration](/documentation/send-data/databricks/) | Vectorize datasets using FastEmbed on Databricks. | Databricks | 30m | Intermediate | +| [Airflow & Astronomer](/documentation/send-data/qdrant-airflow-astronomer/) | Orchestrate data engineering workflows. | Airflow | 45m | Intermediate | +| [No-Code Automation (n8n)](/documentation/qdrant-n8n/) | Combine Qdrant with low-code n8n workflows. | n8n | 45m | Intermediate | +| [Kafka Data Streaming](/documentation/send-data/data-streaming-kafka-qdrant/) | Setup Qdrant Sink Connector for real-time data. | Kafka | 60m | Advanced | \ No newline at end of file diff --git a/qdrant-landing/content/documentation/tutorials-operations/_index.md b/qdrant-landing/content/documentation/tutorials-operations/_index.md index 68bba5493..512c4297e 100644 --- a/qdrant-landing/content/documentation/tutorials-operations/_index.md +++ b/qdrant-landing/content/documentation/tutorials-operations/_index.md @@ -1,6 +1,6 @@ --- title: Operations & Scale -weight: 21 +weight: 20 is_empty: false aliases: - how-to @@ -13,11 +13,9 @@ partition: qdrant | Tutorial | Objective | Stack | Time | Level | | :--- | :--- | :--- | :--- | :--- | -| [Embedding Migration](/documentation/tutorials-operations/migration/) | Move dense and sparse embeddings to Qdrant. | CLI | 30m | Intermediate | -| [Bulk Data Uploads](/documentation/tutorials-operations/bulk-upload/) | High-scale ingestion tricks for power users. | Python | 20m | Intermediate | -| [Snapshot & Backup](/documentation/tutorials-operations/create-snapshot/) | Create and restore collection snapshots. | Python | 20m | Beginner | -| [Billion-Scale Search](/documentation/tutorials-operations/large-scale-search/) | Cost-efficient search for LAION-400M datasets. | None | 2 days | Advanced | -| [Python Async API](/documentation/tutorials-operations/async-api/) | Use Asynchronous programming for efficiency. | Python | 25m | Intermediate | -| [Cloud Inference Search](/documentation/tutorials-and-examples/cloud-inference-hybrid-search/) | Hybrid search using Qdrant's built-in inference. | Any | 20m | Beginner | -| [Monitor Managed Cloud](/documentation/tutorials-and-examples/managed-cloud-prometheus/) | Observability with Prometheus and Grafana. | Prometheus | 30m | Intermediate | -| [Monitor Private Cloud](/documentation/tutorials-and-examples/hybrid-cloud-prometheus/) | Observability for hybrid/private cloud setups. | Prometheus | 30m | Intermediate | \ No newline at end of file +| [Snapshot & Backup](/documentation/tutorials-operations/create-snapshot/) | Create and restore collection snapshots. | Python | 20m | Beginner | +| [Cloud Inference Search](/documentation/tutorials-and-examples/cloud-inference-hybrid-search/) | Hybrid search using Qdrant's built-in inference. | Any | 20m | Beginner | +| [Embedding Migration](/documentation/tutorials-operations/migration/) | Move dense and sparse embeddings to Qdrant. | CLI | 30m | Intermediate | +| [Monitor Managed Cloud](/documentation/tutorials-and-examples/managed-cloud-prometheus/) | Observability with Prometheus and Grafana. | Prometheus | 30m | Intermediate | +| [Monitor Private Cloud](/documentation/tutorials-and-examples/hybrid-cloud-prometheus/) | Observability for hybrid/private cloud setups. | Prometheus | 30m | Intermediate | +| [Billion-Scale Search](/documentation/tutorials-operations/large-scale-search/) | Cost-efficient search for LAION-400M datasets. | None | 2 days | Advanced | \ No newline at end of file diff --git a/qdrant-landing/content/documentation/tutorials-overview.md b/qdrant-landing/content/documentation/tutorials-overview.md index 866eb5443..dec273016 100644 --- a/qdrant-landing/content/documentation/tutorials-overview.md +++ b/qdrant-landing/content/documentation/tutorials-overview.md @@ -1,22 +1,22 @@ --- title: Overview weight: 16 +is_empty: false aliases: - how-to - tutorials partition: qdrant --- +# Qdrant Tutorial Repository -# Qdrant Tutorial Directory - -### Quickstart +### Basic Tutorials *Get up and running with Qdrant in minutes.* | Tutorial | Objective | Stack | Time | Level | | :--- | :--- | :--- | :--- | :--- | -| [Local Qdrant Setup](/documentation/quickstart/) | Basic CRUD operations and local deployment. | Python | 10m | Beginner | -| [5-Minute Semantic Search](/documentation/tutorials-quickstart/search-beginners/) | Build a search engine for science fiction books. | Python | 5m | Beginner | -| [5-Minute RAG with DeepSeek](/documentation/tutorials-quickstart/rag-deepseek/) | Build a RAG pipeline with DeepSeek enrichment. | Python | 5m | Beginner | +| [Local Qdrant Setup](/documentation/quickstart/) | Basic CRUD operations and local deployment. | Python | 10m | Beginner | +| [5-Minute Semantic Search](/documentation/tutorials-basics/search-beginners/) | Build a search engine for science fiction books. | Python | 5m | Beginner | +| [5-Minute RAG with DeepSeek](/documentation/tutorials-basics/rag-deepseek/) | Build a RAG pipeline with DeepSeek enrichment. | Python | 5m | Beginner | --- @@ -25,15 +25,15 @@ partition: qdrant | Tutorial | Objective | Stack | Time | Level | | :--- | :--- | :--- | :--- | :--- | -| [Neural Search Service](/documentation/tutorials-search-engineering/neural-search/) | Deploy a search service for company descriptions. | FastAPI | 30m | Beginner | -| [Hybrid Search with FastEmbed](/documentation/tutorials-search-engineering/hybrid-search-fastembed/) | Combine dense and sparse search for startups. | FastAPI | 20m | Beginner | -| [Movie Recommendations](/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | -| [Advanced PDF Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | -| [Retrieval Quality Benchmarking](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure quality and tune HNSW parameters. | Python | 30m | Intermediate | -| [Multivector Reranking](/documentation/search-precision/reranking-semantic-search/) | Use multivector representations for better ranking. | Python | 30m | Intermediate | -| [Hybrid Search Reranking](/documentation/tutorials-search-engineering/reranking-hybrid-search/) | Implement late interaction and sparse reranking. | Python | 40m | Intermediate | -| [Semantic Code Search](/documentation/tutorials-search-engineering/code-search/) | Navigate codebases using vector similarity. | Python | 45m | Intermediate | -| [Static Embeddings Analysis](/documentation/tutorials-search-engineering/static-embeddings/) | Evaluate the renaissance of static embeddings. | Python | 20m | Intermediate | +| [Hybrid Search with FastEmbed](/documentation/tutorials-search-engineering/hybrid-search-fastembed/) | Combine dense and sparse search for startups. | FastAPI | 20m | Beginner | +| [Neural Search Service](/documentation/tutorials-search-engineering/neural-search/) | Deploy a search service for company descriptions. | FastAPI | 30m | Beginner | +| [Movie Recommendations](/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | +| [Advanced PDF Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | +| [Retrieval Quality Benchmarking](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure quality and tune HNSW parameters. | Python | 30m | Intermediate | +| [Multivector Reranking](/documentation/search-precision/reranking-semantic-search/) | Use multivector representations for better ranking. | Python | 30m | Intermediate | +| [Hybrid Search Reranking](/documentation/tutorials-search-engineering/reranking-hybrid-search/) | Implement late interaction and sparse reranking. | Python | 40m | Intermediate | +| [Semantic Code Search](/documentation/tutorials-search-engineering/code-search/) | Navigate codebases using vector similarity. | Python | 45m | Intermediate | +| [Static Embeddings Analysis](/documentation/tutorials-search-engineering/static-embeddings/) | Evaluate the renaissance of static embeddings. | Python | 20m | Intermediate | --- @@ -42,25 +42,11 @@ partition: qdrant | Tutorial | Objective | Stack | Time | Level | | :--- | :--- | :--- | :--- | :--- | -| [Agentic RAG with CrewAI](/documentation/agentic-rag-crewai-zoom/) | Step-by-step multi-agent RAG system. | CrewAI | 45m | Beginner | -| [Agentic RAG with LangGraph](/documentation/agentic-rag-langgraph/) | Build AI agents to answer library documentation. | LangGraph | 45m | Intermediate | -| [Agentic Discord ChatBot](/documentation/agentic-rag-camelai-discord/) | Develop a functional bot with CAMEL-AI. | OpenAI | 45m | Intermediate | -| [Multimodal Search (LlamaIndex)](/documentation/multimodal-search/) | Search across image and text modalities. | LlamaIndex | 15m | Beginner | -| [Automate Metadata Filtering](/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 | -| :--- | :--- | :--- | :--- | :--- | -| [S3 Ingestion with LangChain](/documentation/data-ingestion-beginners/) | Stream data from AWS S3 to vector store. | LangChain | 30m | Beginner | -| [Hugging Face Datasets](/documentation/tutorials-ecosystem/huggingface-datasets/) | Load and search public ML datasets. | Python | 15m | Beginner | -| [Databricks Integration](/documentation/send-data/databricks/) | Vectorize datasets using FastEmbed on Databricks. | Databricks | 30m | Intermediate | -| [Airflow & Astronomer](/documentation/send-data/qdrant-airflow-astronomer/) | Orchestrate data engineering workflows. | Airflow | 45m | Intermediate | -| [Kafka Data Streaming](/documentation/send-data/data-streaming-kafka-qdrant/) | Setup Qdrant Sink Connector for real-time data. | Kafka | 60m | Advanced | -| [No-Code Automation (n8n)](/documentation/qdrant-n8n/) | Combine Qdrant with low-code n8n workflows. | n8n | 45m | Intermediate | +| [Multimodal Search (LlamaIndex)](/documentation/multimodal-search/) | Search across image and text modalities. | LlamaIndex | 15m | Beginner | +| [Agentic RAG with CrewAI](/documentation/agentic-rag-crewai-zoom/) | Step-by-step multi-agent RAG system. | CrewAI | 45m | Beginner | +| [Agentic RAG with LangGraph](/documentation/agentic-rag-langgraph/) | Build AI agents to answer library documentation. | LangGraph | 45m | Intermediate | +| [Agentic Discord ChatBot](/documentation/agentic-rag-camelai-discord/) | Develop a functional bot with CAMEL-AI. | OpenAI | 45m | Intermediate | +| [Automate Metadata Filtering](/documentation/search-precision/automate-filtering-with-llms/) | Use LLM structured output for dynamic filters. | Python | 30m | Intermediate | --- @@ -69,11 +55,33 @@ partition: qdrant | Tutorial | Objective | Stack | Time | Level | | :--- | :--- | :--- | :--- | :--- | -| [Embedding Migration](/documentation/tutorials-operations/migration/) | Move dense and sparse embeddings to Qdrant. | CLI | 30m | Intermediate | -| [Bulk Data Uploads](/documentation/tutorials-operations/bulk-upload/) | High-scale ingestion tricks for power users. | Python | 20m | Intermediate | -| [Snapshot & Backup](/documentation/tutorials-operations/create-snapshot/) | Create and restore collection snapshots. | Python | 20m | Beginner | -| [Billion-Scale Search](/documentation/tutorials-operations/large-scale-search/) | Cost-efficient search for LAION-400M datasets. | None | 2 days | Advanced | -| [Python Async API](/documentation/tutorials-operations/async-api/) | Use Asynchronous programming for efficiency. | Python | 25m | Intermediate | -| [Cloud Inference Search](/documentation/tutorials-and-examples/cloud-inference-hybrid-search/) | Hybrid search using Qdrant's built-in inference. | Any | 20m | Beginner | -| [Monitor Managed Cloud](/documentation/tutorials-and-examples/managed-cloud-prometheus/) | Observability with Prometheus and Grafana. | Prometheus | 30m | Intermediate | -| [Monitor Private Cloud](/documentation/tutorials-and-examples/hybrid-cloud-prometheus/) | Observability for hybrid/private cloud setups. | Prometheus | 30m | Intermediate | \ No newline at end of file +| [Snapshot & Backup](/documentation/tutorials-operations/create-snapshot/) | Create and restore collection snapshots. | Python | 20m | Beginner | +| [Cloud Inference Search](/documentation/tutorials-and-examples/cloud-inference-hybrid-search/) | Hybrid search using Qdrant's built-in inference. | Any | 20m | Beginner | +| [Embedding Migration](/documentation/tutorials-operations/migration/) | Move dense and sparse embeddings to Qdrant. | CLI | 30m | Intermediate | +| [Monitor Managed Cloud](/documentation/tutorials-and-examples/managed-cloud-prometheus/) | Observability with Prometheus and Grafana. | Prometheus | 30m | Intermediate | +| [Monitor Private Cloud](/documentation/tutorials-and-examples/hybrid-cloud-prometheus/) | Observability for hybrid/private cloud setups. | Prometheus | 30m | Intermediate | +| [Billion-Scale Search](/documentation/tutorials-operations/large-scale-search/) | Cost-efficient search for LAION-400M datasets. | None | 2 days | Advanced | + +--- + +### Develop & Implement +*Core tools and APIs for building with Qdrant.* + +| Tutorial | Objective | Stack | Time | Level | +| :--- | :--- | :--- | :--- | :--- | +| [Bulk Data Uploads](/documentation/tutorials-develop/bulk-upload/) | High-scale ingestion tricks for power users. | Python | 20m | Intermediate | +| [Python Async API](/documentation/tutorials-develop/async-api/) | Use Asynchronous programming for efficiency. | Python | 25m | Intermediate | + +--- + +### Ecosystem & Integrations +*Connect Qdrant to cloud providers, data streams, and ETL tools.* + +| Tutorial | Objective | Stack | Time | Level | +| :--- | :--- | :--- | :--- | :--- | +| [S3 Ingestion with LangChain](/documentation/data-ingestion-beginners/) | Stream data from AWS S3 to vector store. | LangChain | 30m | Beginner | +| [Hugging Face Datasets](/documentation/tutorials-ecosystem/huggingface-datasets/) | Load and search public ML datasets. | Python | 15m | Beginner | +| [Databricks Integration](/documentation/send-data/databricks/) | Vectorize datasets using FastEmbed on Databricks. | Databricks | 30m | Intermediate | +| [Airflow & Astronomer](/documentation/send-data/qdrant-airflow-astronomer/) | Orchestrate data engineering workflows. | Airflow | 45m | Intermediate | +| [No-Code Automation (n8n)](/documentation/qdrant-n8n/) | Combine Qdrant with low-code n8n workflows. | n8n | 45m | Intermediate | +| [Kafka Data Streaming](/documentation/send-data/data-streaming-kafka-qdrant/) | Setup Qdrant Sink Connector for real-time data. | Kafka | 60m | Advanced | \ 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 deleted file mode 100644 index 6698bfb7f..000000000 --- a/qdrant-landing/content/documentation/tutorials-quickstart/_index.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -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](/documentation/quickstart/) | Basic CRUD operations and local deployment. | Python | 10m | Beginner | -| [5-Minute Semantic Search](/documentation/tutorials-quickstart/search-beginners/) | Build a search engine for science fiction books. | Python | 5m | Beginner | -| [5-Minute RAG with DeepSeek](/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/tutorials-quickstart/rag-deepseek.md b/qdrant-landing/content/documentation/tutorials-quickstart/rag-deepseek.md deleted file mode 100644 index fb870586f..000000000 --- a/qdrant-landing/content/documentation/tutorials-quickstart/rag-deepseek.md +++ /dev/null @@ -1,334 +0,0 @@ ---- -title: 5 Minute RAG with Qdrant and DeepSeek -weight: 6 -partition: build -social_preview_image: /documentation/examples/rag-deepseek/social_preview.png ---- - -![deepseek-rag-qdrant](/documentation/examples/rag-deepseek/deepseek.png) - -# 5 Minute RAG with Qdrant and DeepSeek - -| Time: 5 min | Level: Beginner | Output: [GitHub](https://github.com/qdrant/examples/blob/master/rag-with-qdrant-deepseek/deepseek-qdrant.ipynb) | -| --- | ----------- | ----------- |----------- | - -This tutorial demonstrates how to build a **Retrieval-Augmented Generation (RAG)** 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. - -## Overview -In this tutorial, we will: -1. Take sample text and turn it into vectors with FastEmbed. -2. Send the vectors to a Qdrant collection. -3. Connect Qdrant and DeepSeek into a minimal RAG pipeline. -4. Ask DeepSeek different questions and test answer accuracy. -5. Enrich DeepSeek prompts with content retrieved from Qdrant. -6. Evaluate answer accuracy before and after. - -#### Architecture: - -![deepseek-rag-architecture](/documentation/examples/rag-deepseek/architecture.png) - ---- - -## Prerequisites - -Ensure you have the following: -- Python environment (3.9+) -- Access to [Qdrant Cloud](https://qdrant.tech) -- A DeepSeek API key from [DeepSeek Platform](https://platform.deepseek.com/api_keys) - -## Setup Qdrant - - -```python -pip install "qdrant-client[fastembed]>=1.14.1" -``` - -[Qdrant](https://qdrant.tech) will act as a knowledge base providing the context information for the prompts we'll be sending to the LLM. - -You can get a free-forever Qdrant cloud instance at http://cloud.qdrant.io. Learn about setting up your instance from the [Quickstart](https://qdrant.tech/documentation/quickstart-cloud/). - - -```python -QDRANT_URL = "https://xyz-example.eu-central.aws.cloud.qdrant.io:6333" -QDRANT_API_KEY = "" -``` - -### Instantiating Qdrant Client - - -```python -from qdrant_client import QdrantClient, models - -client = QdrantClient(url=QDRANT_URL, api_key=QDRANT_API_KEY) -``` - -### Building the knowledge base - -Qdrant will use vector embeddings of our facts to enrich the original prompt with some context. Thus, we need to store the vector embeddings and the facts used to generate them. - -We'll be using the [bge-base-en-v1.5](https://huggingface.co/BAAI/bge-small-en-v1.5) model via [FastEmbed](https://github.com/qdrant/fastembed/) - A lightweight, fast, Python library for embeddings generation. - -The Qdrant client provides a handy integration with FastEmbed that makes building a knowledge base very straighforward. - -First, we need to create a collection, so Qdrant would know what vectors it will be dealing with, and then, we just pass our raw documents -wrapped into `models.Document` to compute and upload the embeddings. - -```python -collection_name = "knowledge_base" -model_name = "BAAI/bge-small-en-v1.5" -client.create_collection( - collection_name=collection_name, - vectors_config=models.VectorParams(size=384, distance=models.Distance.COSINE) -) -``` - -```python -documents = [ - "Qdrant is a vector database & vector similarity search engine. It deploys as an API service providing search for the nearest high-dimensional vectors. With Qdrant, embeddings or neural network encoders can be turned into full-fledged applications for matching, searching, recommending, and much more!", - "Docker helps developers build, share, and run applications anywhere — without tedious environment configuration or management.", - "PyTorch is a machine learning framework based on the Torch library, used for applications such as computer vision and natural language processing.", - "MySQL is an open-source relational database management system (RDBMS). A relational database organizes data into one or more data tables in which data may be related to each other; these relations help structure the data. SQL is a language that programmers use to create, modify and extract data from the relational database, as well as control user access to the database.", - "NGINX is a free, open-source, high-performance HTTP server and reverse proxy, as well as an IMAP/POP3 proxy server. NGINX is known for its high performance, stability, rich feature set, simple configuration, and low resource consumption.", - "FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.7+ based on standard Python type hints.", - "SentenceTransformers is a Python framework for state-of-the-art sentence, text and image embeddings. You can use this framework to compute sentence / text embeddings for more than 100 languages. These embeddings can then be compared e.g. with cosine-similarity to find sentences with a similar meaning. This can be useful for semantic textual similar, semantic search, or paraphrase mining.", - "The cron command-line utility is a job scheduler on Unix-like operating systems. Users who set up and maintain software environments use cron to schedule jobs (commands or shell scripts), also known as cron jobs, to run periodically at fixed times, dates, or intervals.", -] -client.upsert( - collection_name=collection_name, - points=[ - models.PointStruct( - id=idx, - vector=models.Document(text=document, model=model_name), - payload={"document": document}, - ) - for idx, document in enumerate(documents) - ], -) -``` - -## Setup DeepSeek - -RAG changes the way we interact with Large Language Models. We're converting a knowledge-oriented task, in which the model may create a counterfactual answer, into a language-oriented task. The latter expects the model to extract meaningful information and generate an answer. LLMs, when implemented correctly, are supposed to be carrying out language-oriented tasks. - -The task starts with the original prompt sent by the user. The same prompt is then vectorized and used as a search query for the most relevant facts. Those facts are combined with the original prompt to build a longer prompt containing more information. - -But let's start simply by asking our question directly. - - -```python -prompt = """ -What tools should I need to use to build a web service using vector embeddings for search? -""" -``` - -Using the Deepseek API requires providing the API key. You can obtain it from the [DeepSeek platform](https://platform.deepseek.com/api_keys). - -Now we can finally call the completion API. - - -```python -import requests -import json - -# Fill the environmental variable with your own Deepseek API key -# See: https://platform.deepseek.com/api_keys -API_KEY = "" - -HEADERS = { - "Authorization": f"Bearer {API_KEY}", - "Content-Type": "application/json", -} - - -def query_deepseek(prompt): - data = { - "model": "deepseek-chat", - "messages": [{"role": "user", "content": prompt}], - "stream": False, - } - - response = requests.post( - "https://api.deepseek.com/chat/completions", headers=HEADERS, data=json.dumps(data) - ) - - if response.ok: - result = response.json() - return result["choices"][0]["message"]["content"] - else: - raise Exception(f"Error {response.status_code}: {response.text}") - -``` - -and also the query - -```python -query_deepseek(prompt) -``` - -The response is: - -```bash -"Building a web service that uses vector embeddings for search involves several components, including data processing, embedding generation, storage, search, and serving the service via an API. Below is a list of tools and technologies you can use for each step:\n\n---\n\n### 1. **Data Processing**\n - **Python**: For general data preprocessing and scripting.\n - **Pandas**: For handling tabular data.\n - **NumPy**: For numerical operations.\n - **NLTK/Spacy**: For text preprocessing (tokenization, stemming, etc.).\n - **LLM models**: For generating embeddings if you're using pre-trained models.\n\n---\n\n### 2. **Embedding Generation**\n - **Pre-trained Models**:\n - Embeddings (e.g., `text-embedding-ada-002`).\n - Hugging Face Transformers (e.g., `Sentence-BERT`, `all-MiniLM-L6-v2`).\n - Google's Universal Sentence Encoder.\n - **Custom Models**:\n - TensorFlow/PyTorch: For training custom embedding models.\n - **Libraries**:\n - `sentence-transformers`: For generating sentence embeddings.\n - `transformers`: For using Hugging Face models.\n\n---\n\n### 3. **Vector Storage**\n - **Vector Databases**:\n - Pinecone: Managed vector database for similarity search.\n - Weaviate: Open-source vector search engine.\n - Milvus: Open-source vector database.\n - FAISS (Facebook AI Similarity Search): Library for efficient similarity search.\n - Qdrant: Open-source vector search engine.\n - Redis with RedisAI: For storing and querying vectors.\n - **Traditional Databases with Vector Support**:\n - PostgreSQL with pgvector extension.\n - Elasticsearch with dense vector support.\n\n---\n\n### 4. **Search and Retrieval**\n - **Similarity Search Algorithms**:\n - Cosine similarity, Euclidean distance, or dot product for comparing vectors.\n - **Libraries**:\n - FAISS: For fast nearest-neighbor search.\n - Annoy (Approximate Nearest Neighbors Oh Yeah): For approximate nearest neighbor search.\n - **Vector Databases**: Most vector databases (e.g., Pinecone, Weaviate) come with built-in search capabilities.\n\n---\n\n### 5. **Web Service Framework**\n - **Backend Frameworks**:\n - Flask/Django/FastAPI (Python): For building RESTful APIs.\n - Node.js/Express: If you prefer JavaScript.\n - **API Documentation**:\n - Swagger/OpenAPI: For documenting your API.\n - **Authentication**:\n - OAuth2, JWT: For securing your API.\n\n---\n\n### 6. **Deployment**\n - **Containerization**:\n - Docker: For packaging your application.\n - **Orchestration**:\n - Kubernetes: For managing containers at scale.\n - **Cloud Platforms**:\n - AWS (EC2, Lambda, S3).\n - Google Cloud (Compute Engine, Cloud Functions).\n - Azure (App Service, Functions).\n - **Serverless**:\n - AWS Lambda, Google Cloud Functions, or Vercel for serverless deployment.\n\n---\n\n### 7. **Monitoring and Logging**\n - **Monitoring**:\n - Prometheus + Grafana: For monitoring performance.\n - **Logging**:\n - ELK Stack (Elasticsearch, Logstash, Kibana).\n - Fluentd.\n - **Error Tracking**:\n - Sentry.\n\n---\n\n### 8. **Frontend (Optional)**\n - **Frontend Frameworks**:\n - React, Vue.js, or Angular: For building a user interface.\n - **Libraries**:\n - Axios: For making API calls from the frontend.\n\n---\n\n### Example Workflow\n1. Preprocess your data (e.g., clean text, tokenize).\n2. Generate embeddings using a pre-trained model (e.g., Hugging Face).\n3. Store embeddings in a vector database (e.g., Pinecone or FAISS).\n4. Build a REST API using FastAPI or Flask to handle search queries.\n5. Deploy the service using Docker and Kubernetes or a serverless platform.\n6. Monitor and scale the service as needed.\n\n---\n\n### Example Tools Stack\n- **Embedding Generation**: Hugging Face `sentence-transformers`.\n- **Vector Storage**: Pinecone or FAISS.\n- **Web Framework**: FastAPI.\n- **Deployment**: Docker + AWS/GCP.\n\nBy combining these tools, you can build a scalable and efficient web service for vector embedding-based search." -``` - - -### Extending the prompt - -Even though the original answer sounds credible, it didn't answer our question correctly. Instead, it gave us a generic description of an application stack. To improve the results, enriching the original prompt with the descriptions of the tools available seems like one of the possibilities. Let's use a semantic knowledge base to augment the prompt with the descriptions of different technologies! - -```python -results = client.query_points( - collection_name=collection_name, - query=models.Document(text=prompt, model=model_name), - limit=3, -) -results -``` - -Here is the response: - -```bash -QueryResponse(points=[ - ScoredPoint(id=0, version=0, score=0.67437416, payload={'document': 'Qdrant is a vector database & vector similarity search engine. It deploys as an API service providing search for the nearest high-dimensional vectors. With Qdrant, embeddings or neural network encoders can be turned into full-fledged applications for matching, searching, recommending, and much more!'}, vector=None, shard_key=None, order_value=None), - ScoredPoint(id=6, version=0, score=0.63144326, payload={'document': 'SentenceTransformers is a Python framework for state-of-the-art sentence, text and image embeddings. You can use this framework to compute sentence / text embeddings for more than 100 languages. These embeddings can then be compared e.g. with cosine-similarity to find sentences with a similar meaning. This can be useful for semantic textual similar, semantic search, or paraphrase mining.'}, vector=None, shard_key=None, order_value=None), - ScoredPoint(id=5, version=0, score=0.6064749, payload={'document': 'FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.7+ based on standard Python type hints.'}, vector=None, shard_key=None, order_value=None) -]) -``` - - -We used the original prompt to perform a semantic search over the set of tool descriptions. Now we can use these descriptions to augment the prompt and create more context. - - -```python -context = "\n".join(r.payload['document'] for r in results.points) -context -``` - -The response is: - -```bash -'Qdrant is a vector database & vector similarity search engine. It deploys as an API service providing search for the nearest high-dimensional vectors. With Qdrant, embeddings or neural network encoders can be turned into full-fledged applications for matching, searching, recommending, and much more!\nFastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.7+ based on standard Python type hints.\nPyTorch is a machine learning framework based on the Torch library, used for applications such as computer vision and natural language processing.' -``` - - -Finally, let's build a metaprompt, the combination of the assumed role of the LLM, the original question, and the results from our semantic search that will force our LLM to use the provided context. - -By doing this, we effectively convert the knowledge-oriented task into a language task and hopefully reduce the chances of hallucinations. It also should make the response sound more relevant. - - -```python -metaprompt = f""" -You are a software architect. -Answer the following question using the provided context. -If you can't find the answer, do not pretend you know it, but answer "I don't know". - -Question: {prompt.strip()} - -Context: -{context.strip()} - -Answer: -""" - -# Look at the full metaprompt -print(metaprompt) -``` - -**Response:** - -```bash -You are a software architect. -Answer the following question using the provided context. -If you can't find the answer, do not pretend you know it, but answer "I don't know". - -Question: What tools should I need to use to build a web service using vector embeddings for search? - -Context: -Qdrant is a vector database & vector similarity search engine. It deploys as an API service providing search for the nearest high-dimensional vectors. With Qdrant, embeddings or neural network encoders can be turned into full-fledged applications for matching, searching, recommending, and much more! -FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.7+ based on standard Python type hints. -PyTorch is a machine learning framework based on the Torch library, used for applications such as computer vision and natural language processing. - -Answer: -``` - -Our current prompt is much longer, and we also used a couple of strategies to make the responses even better: - -1. The LLM has the role of software architect. -2. We provide more context to answer the question. -3. If the context contains no meaningful information, the model shouldn't make up an answer. - -Let's find out if that works as expected. - -**Question:** - -```python -query_deepseek(metaprompt) -``` -**Answer:** - -```bash -'To build a web service using vector embeddings for search, you can use the following tools:\n\n1. **Qdrant**: As a vector database and similarity search engine, Qdrant will handle the storage and retrieval of high-dimensional vectors. It provides an API service for searching and matching vectors, making it ideal for applications that require vector-based search functionality.\n\n2. **FastAPI**: This web framework is perfect for building the API layer of your web service. It is fast, easy to use, and based on Python type hints, which makes it a great choice for developing the backend of your service. FastAPI will allow you to expose endpoints that interact with Qdrant for vector search operations.\n\n3. **PyTorch**: If you need to generate vector embeddings from your data (e.g., text, images), PyTorch can be used to create and train neural network models that produce these embeddings. PyTorch is a powerful machine learning framework that supports a wide range of applications, including natural language processing and computer vision.\n\n### Summary:\n- **Qdrant** for vector storage and search.\n- **FastAPI** for building the web service API.\n- **PyTorch** for generating vector embeddings (if needed).\n\nThese tools together provide a robust stack for building a web service that leverages vector embeddings for search functionality.' -``` - -### Testing out the RAG pipeline - -By leveraging the semantic context we provided our model is doing a better job answering the question. Let's enclose the RAG as a function, so we can call it more easily for different prompts. - - -```python -def rag(question: str, n_points: int = 3) -> str: - results = client.query_points( - collection_name=collection_name, - query=models.Document(text=question, model=model_name), - limit=n_points, - ) - - context = "\n".join(r.payload["document"] for r in results.points) - - metaprompt = f""" - You are a software architect. - Answer the following question using the provided context. - If you can't find the answer, do not pretend you know it, but only answer "I don't know". - - Question: {question.strip()} - - Context: - {context.strip()} - - Answer: - """ - - return query_deepseek(metaprompt) -``` - -Now it's easier to ask a broad range of questions. - -**Question:** - -```python -rag("What can the stack for a web api look like?") -``` -**Answer:** - -```bash -'The stack for a web API can include the following components based on the provided context:\n\n1. **Web Framework**: FastAPI can be used as the web framework for building the API. It is modern, fast, and leverages Python type hints for better development and performance.\n\n2. **Reverse Proxy/Web Server**: NGINX can be used as a reverse proxy or web server to handle incoming HTTP requests, load balancing, and serving static content. It is known for its high performance and low resource consumption.\n\n3. **Containerization**: Docker can be used to containerize the application, making it easier to build, share, and run the API consistently across different environments without worrying about configuration issues.\n\nThis stack provides a robust, scalable, and efficient setup for building and deploying a web API.' -``` - -**Question:** - -```python -rag("Where is the nearest grocery store?") -``` - -**Answer:** - -```bash -"I don't know. The provided context does not contain any information about the location of the nearest grocery store." -``` - -Our model can now: - -1. Take advantage of the knowledge in our vector datastore. -2. Answer, based on the provided context, that it can not provide an answer. - -We have just shown a useful mechanism to mitigate the risks of hallucinations in Large Language Models. diff --git a/qdrant-landing/content/documentation/tutorials-quickstart/search-beginners.md b/qdrant-landing/content/documentation/tutorials-quickstart/search-beginners.md deleted file mode 100644 index 82c05d8ae..000000000 --- a/qdrant-landing/content/documentation/tutorials-quickstart/search-beginners.md +++ /dev/null @@ -1,245 +0,0 @@ ---- -title: Semantic Search 101 -weight: 1 -aliases: - - /documentation/tutorials/mighty.md/ - - /documentation/tutorials/search-beginners/ - - /documentation/beginner-tutorials/search-beginners/ ---- - -# Build Your First Semantic Search Engine in 5 Minutes - -| Time: 5 - 15 min | Level: Beginner | | | -| --- | ----------- | ----------- |----------- | - -

- -## Overview - -If you are new to vector databases, 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. - -Before you begin, you need to have a [recent version of Python](https://www.python.org/downloads/) installed. If you don't know how to run this code in a virtual environment, follow Python documentation for [Creating Virtual Environments](https://docs.python.org/3/tutorial/venv.html#creating-virtual-environments) first. - -This tutorial assumes you're in the bash shell. Use the Python documentation to activate a virtual environment, with commands such as: - -```bash -source tutorial-env/bin/activate -``` - -## 1. Installation - -You need to process your data so that the search engine can work with it. The [Sentence Transformers](https://www.sbert.net/) framework gives you access to common Large Language Models that turn raw data into embeddings. - -```bash -pip install -U sentence-transformers -``` - -Once encoded, this data needs to be kept somewhere. Qdrant lets you store data as embeddings. You can also use Qdrant to run search queries against this data. This means that you can ask the engine to give you relevant answers that go way beyond keyword matching. - -```bash -pip install -U qdrant-client -``` - - - -### Import the models - -Once the two main frameworks are defined, you need to specify the exact models this engine will use. - -```python -from qdrant_client import models, QdrantClient -from sentence_transformers import SentenceTransformer -``` - -The [Sentence Transformers](https://www.sbert.net/index.html) framework contains many embedding models. We'll take [all-MiniLM-L6-v2](https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2) as it has a good balance between speed and embedding quality for this tutorial. - -```python -encoder = SentenceTransformer("all-MiniLM-L6-v2") -``` - -## 2. Add the dataset - -[all-MiniLM-L6-v2](https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2) will encode the data you provide. Here you will list all the science fiction books in your library. Each book has metadata, a name, author, publication year and a short description. - -```python -documents = [ - { - "name": "The Time Machine", - "description": "A man travels through time and witnesses the evolution of humanity.", - "author": "H.G. Wells", - "year": 1895, - }, - { - "name": "Ender's Game", - "description": "A young boy is trained to become a military leader in a war against an alien race.", - "author": "Orson Scott Card", - "year": 1985, - }, - { - "name": "Brave New World", - "description": "A dystopian society where people are genetically engineered and conditioned to conform to a strict social hierarchy.", - "author": "Aldous Huxley", - "year": 1932, - }, - { - "name": "The Hitchhiker's Guide to the Galaxy", - "description": "A comedic science fiction series following the misadventures of an unwitting human and his alien friend.", - "author": "Douglas Adams", - "year": 1979, - }, - { - "name": "Dune", - "description": "A desert planet is the site of political intrigue and power struggles.", - "author": "Frank Herbert", - "year": 1965, - }, - { - "name": "Foundation", - "description": "A mathematician develops a science to predict the future of humanity and works to save civilization from collapse.", - "author": "Isaac Asimov", - "year": 1951, - }, - { - "name": "Snow Crash", - "description": "A futuristic world where the internet has evolved into a virtual reality metaverse.", - "author": "Neal Stephenson", - "year": 1992, - }, - { - "name": "Neuromancer", - "description": "A hacker is hired to pull off a near-impossible hack and gets pulled into a web of intrigue.", - "author": "William Gibson", - "year": 1984, - }, - { - "name": "The War of the Worlds", - "description": "A Martian invasion of Earth throws humanity into chaos.", - "author": "H.G. Wells", - "year": 1898, - }, - { - "name": "The Hunger Games", - "description": "A dystopian society where teenagers are forced to fight to the death in a televised spectacle.", - "author": "Suzanne Collins", - "year": 2008, - }, - { - "name": "The Andromeda Strain", - "description": "A deadly virus from outer space threatens to wipe out humanity.", - "author": "Michael Crichton", - "year": 1969, - }, - { - "name": "The Left Hand of Darkness", - "description": "A human ambassador is sent to a planet where the inhabitants are genderless and can change gender at will.", - "author": "Ursula K. Le Guin", - "year": 1969, - }, - { - "name": "The Three-Body Problem", - "description": "Humans encounter an alien civilization that lives in a dying system.", - "author": "Liu Cixin", - "year": 2008, - }, -] -``` - -## 3. Define storage location - -You need to tell Qdrant where to store embeddings. This is a basic demo, so your local computer will use its memory as temporary storage. - -```python -client = QdrantClient(":memory:") -``` - -## 4. Create a collection - -All data in Qdrant is organized by collections. In this case, you are storing books, so we are calling it `my_books`. - -```python -client.create_collection( - collection_name="my_books", - vectors_config=models.VectorParams( - size=encoder.get_sentence_embedding_dimension(), # Vector size is defined by used model - distance=models.Distance.COSINE, - ), -) -``` - -- The `vector_size` parameter defines the size of the vectors for a specific collection. If their size is different, it is impossible to calculate the distance between them. 384 is the encoder output dimensionality. You can also use model.get_sentence_embedding_dimension() to get the dimensionality of the model you are using. - -- The `distance` parameter lets you specify the function used to measure the distance between two points. - - -## 5. Upload data to collection - -Tell the database to upload `documents` to the `my_books` collection. This will give each record an id and a payload. The payload is just the metadata from the dataset. - -```python -client.upload_points( - collection_name="my_books", - points=[ - models.PointStruct( - id=idx, vector=encoder.encode(doc["description"]).tolist(), payload=doc - ) - for idx, doc in enumerate(documents) - ], -) -``` - -## 6. Ask the engine a question - -Now that the data is stored in Qdrant, you can ask it questions and receive semantically relevant results. - -```python -hits = client.query_points( - collection_name="my_books", - query=encoder.encode("alien invasion").tolist(), - limit=3, -).points - -for hit in hits: - print(hit.payload, "score:", hit.score) -``` - -**Response:** - -The search engine shows three of the most likely responses that have to do with the alien invasion. Each of the responses is assigned a score to show how close the response is to the original inquiry. - -```text -{'name': 'The War of the Worlds', 'description': 'A Martian invasion of Earth throws humanity into chaos.', 'author': 'H.G. Wells', 'year': 1898} score: 0.570093257022374 -{'name': "The Hitchhiker's Guide to the Galaxy", 'description': 'A comedic science fiction series following the misadventures of an unwitting human and his alien friend.', 'author': 'Douglas Adams', 'year': 1979} score: 0.5040468703143637 -{'name': 'The Three-Body Problem', 'description': 'Humans encounter an alien civilization that lives in a dying system.', 'author': 'Liu Cixin', 'year': 2008} score: 0.45902943411768216 -``` - -### Narrow down the query - -How about the most recent book from the early 2000s? - -```python -hits = client.query_points( - collection_name="my_books", - query=encoder.encode("alien invasion").tolist(), - query_filter=models.Filter( - must=[models.FieldCondition(key="year", range=models.Range(gte=2000))] - ), - limit=1, -).points - -for hit in hits: - print(hit.payload, "score:", hit.score) -``` - -**Response:** - -The query has been narrowed down to one result from 2008. - -```text -{'name': 'The Three-Body Problem', 'description': 'Humans encounter an alien civilization that lives in a dying system.', 'author': 'Liu Cixin', 'year': 2008} score: 0.45902943411768216 -``` - -## Next Steps - -Congratulations, you have just created your very first search engine! Trust us, the rest of Qdrant is not that complicated, either. For your next tutorial you should try building an actual [Neural Search Service with a complete API and a dataset](/documentation/tutorials/neural-search/). diff --git a/qdrant-landing/content/documentation/tutorials-rag-and-agents/_index.md b/qdrant-landing/content/documentation/tutorials-rag-and-agents/_index.md index 636873990..79963b8f7 100644 --- a/qdrant-landing/content/documentation/tutorials-rag-and-agents/_index.md +++ b/qdrant-landing/content/documentation/tutorials-rag-and-agents/_index.md @@ -13,8 +13,8 @@ partition: qdrant | Tutorial | Objective | Stack | Time | Level | | :--- | :--- | :--- | :--- | :--- | -| [Agentic RAG with CrewAI](/documentation/agentic-rag-crewai-zoom/) | Step-by-step multi-agent RAG system. | CrewAI | 45m | Beginner | -| [Agentic RAG with LangGraph](/documentation/agentic-rag-langgraph/) | Build AI agents to answer library documentation. | LangGraph | 45m | Intermediate | -| [Agentic Discord ChatBot](/documentation/agentic-rag-camelai-discord/) | Develop a functional bot with CAMEL-AI. | OpenAI | 45m | Intermediate | -| [Multimodal Search (LlamaIndex)](/documentation/multimodal-search/) | Search across image and text modalities. | LlamaIndex | 15m | Beginner | -| [Automate Metadata Filtering](/documentation/search-precision/automate-filtering-with-llms/) | Use LLM structured output for dynamic filters. | Python | 30m | Intermediate | \ No newline at end of file +| [Multimodal Search (LlamaIndex)](/documentation/multimodal-search/) | Search across image and text modalities. | LlamaIndex | 15m | Beginner | +| [Agentic RAG with CrewAI](/documentation/agentic-rag-crewai-zoom/) | Step-by-step multi-agent RAG system. | CrewAI | 45m | Beginner | +| [Agentic RAG with LangGraph](/documentation/agentic-rag-langgraph/) | Build AI agents to answer library documentation. | LangGraph | 45m | Intermediate | +| [Agentic Discord ChatBot](/documentation/agentic-rag-camelai-discord/) | Develop a functional bot with CAMEL-AI. | OpenAI | 45m | Intermediate | +| [Automate Metadata Filtering](/documentation/search-precision/automate-filtering-with-llms/) | Use LLM structured output for dynamic filters. | Python | 30m | Intermediate | diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/_index.md b/qdrant-landing/content/documentation/tutorials-search-engineering/_index.md index 414af321d..51eb66abb 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/_index.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/_index.md @@ -13,12 +13,12 @@ partition: qdrant | Tutorial | Objective | Stack | Time | Level | | :--- | :--- | :--- | :--- | :--- | -| [Neural Search Service](/documentation/tutorials-search-engineering/neural-search/) | Deploy a search service for company descriptions. | FastAPI | 30m | Beginner | -| [Hybrid Search with FastEmbed](/documentation/tutorials-search-engineering/hybrid-search-fastembed/) | Combine dense and sparse search for startups. | FastAPI | 20m | Beginner | -| [Movie Recommendations](/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | -| [Advanced PDF Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | -| [Retrieval Quality Benchmarking](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure quality and tune HNSW parameters. | Python | 30m | Intermediate | -| [Multivector Reranking](/documentation/search-precision/reranking-semantic-search/) | Use multivector representations for better ranking. | Python | 30m | Intermediate | -| [Hybrid Search Reranking](/documentation/tutorials-search-engineering/reranking-hybrid-search/) | Implement late interaction and sparse reranking. | Python | 40m | Intermediate | -| [Semantic Code Search](/documentation/tutorials-search-engineering/code-search/) | Navigate codebases using vector similarity. | Python | 45m | Intermediate | -| [Static Embeddings Analysis](/documentation/tutorials-search-engineering/static-embeddings/) | Evaluate the renaissance of static embeddings. | Python | 20m | Intermediate | \ No newline at end of file +| [Hybrid Search with FastEmbed](/documentation/tutorials-search-engineering/hybrid-search-fastembed/) | Combine dense and sparse search for startups. | FastAPI | 20m | Beginner | +| [Neural Search Service](/documentation/tutorials-search-engineering/neural-search/) | Deploy a search service for company descriptions. | FastAPI | 30m | Beginner | +| [Movie Recommendations](/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | +| [Advanced PDF Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | +| [Retrieval Quality Benchmarking](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure quality and tune HNSW parameters. | Python | 30m | Intermediate | +| [Multivector Reranking](/documentation/search-precision/reranking-semantic-search/) | Use multivector representations for better ranking. | Python | 30m | Intermediate | +| [Hybrid Search Reranking](/documentation/tutorials-search-engineering/reranking-hybrid-search/) | Implement late interaction and sparse reranking. | Python | 40m | Intermediate | +| [Semantic Code Search](/documentation/tutorials-search-engineering/code-search/) | Navigate codebases using vector similarity. | Python | 45m | Intermediate | +| [Static Embeddings Analysis](/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/learn/_index.md b/qdrant-landing/content/learn/_index.md index 1beb74916..436336747 100644 --- a/qdrant-landing/content/learn/_index.md +++ b/qdrant-landing/content/learn/_index.md @@ -82,7 +82,7 @@ content: description: Start with our beginner-friendly articles on vector embeddings and basic concepts. link: text: Start Learning - url: /documentation/tutorials-quickstart/ + url: /documentation/tutorials-basics/ - id: 2 icon: src: /icons/outline/hacker-purple.svg diff --git a/qdrant-landing/content/learn/ref-tutorials-quickstart.md b/qdrant-landing/content/learn/ref-tutorials-basics.md similarity index 81% rename from qdrant-landing/content/learn/ref-tutorials-quickstart.md rename to qdrant-landing/content/learn/ref-tutorials-basics.md index c9efa0726..127c1614c 100644 --- a/qdrant-landing/content/learn/ref-tutorials-quickstart.md +++ b/qdrant-landing/content/learn/ref-tutorials-basics.md @@ -1,7 +1,7 @@ --- #Delimiter files are used to separate the list of documentation pages into sections. type: reference -reference: /documentation/tutorials-quickstart +reference: /documentation/tutorials-basics weight: 311 sitemapExclude: True _build: diff --git a/qdrant-landing/content/learn/ref-tutorials-develop.md b/qdrant-landing/content/learn/ref-tutorials-develop.md new file mode 100644 index 000000000..7b99e3a2c --- /dev/null +++ b/qdrant-landing/content/learn/ref-tutorials-develop.md @@ -0,0 +1,11 @@ +--- +#Delimiter files are used to separate the list of documentation pages into sections. +type: reference +reference: /documentation/tutorials-develop +weight: 315 +sitemapExclude: True +_build: + publishResources: false + render: never +partition: learn +--- \ No newline at end of file diff --git a/qdrant-landing/content/learn/ref-tutorials-ecosystem.md b/qdrant-landing/content/learn/ref-tutorials-ecosystem.md index 3d5a8415b..445bcbaf0 100644 --- a/qdrant-landing/content/learn/ref-tutorials-ecosystem.md +++ b/qdrant-landing/content/learn/ref-tutorials-ecosystem.md @@ -2,7 +2,7 @@ #Delimiter files are used to separate the list of documentation pages into sections. type: reference reference: /documentation/tutorials-ecosystem -weight: 314 +weight: 316 sitemapExclude: True _build: publishResources: false diff --git a/qdrant-landing/content/learn/ref-tutorials-operations.md b/qdrant-landing/content/learn/ref-tutorials-operations.md index ac7a6367f..76abe4673 100644 --- a/qdrant-landing/content/learn/ref-tutorials-operations.md +++ b/qdrant-landing/content/learn/ref-tutorials-operations.md @@ -2,7 +2,7 @@ #Delimiter files are used to separate the list of documentation pages into sections. type: reference reference: /documentation/tutorials-operations -weight: 315 +weight: 314 sitemapExclude: True _build: publishResources: false diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/documentation.scss b/qdrant-landing/themes/qdrant-2024/assets/css/documentation.scss index a5564d0eb..e555cc443 100644 --- a/qdrant-landing/themes/qdrant-2024/assets/css/documentation.scss +++ b/qdrant-landing/themes/qdrant-2024/assets/css/documentation.scss @@ -14,3 +14,68 @@ @import 'partials/documentation/docs-footer'; @import 'partials/video'; @import 'search/dark-theme'; + +// Table Custom Styling +.documentation { + table { + width: 100%; + border-collapse: collapse; + margin: 1rem 0; + + th { + text-align: left; + padding: 8px 10px; + } + + td { + padding: 8px 10px; + vertical-align: middle; + line-height: 1.4; + + // Link styling + a { + color: #DC244C; + text-decoration: none; + &:hover { + text-decoration: underline; + } + } + } + + tr { + // transition for the background color change + transition: background-color 0.2s ease; + + &:hover { + // hover color highlight + background-color: rgba(59, 130, 246, 0.05); + + // make the link slightly more prominent on hover + td a { + color: darken(#ef4444, 10%); + } + } + } + + // Ensure the header row doesn't highlight on hover + thead tr:hover { + background-color: transparent; + } + } + + // Stack Pill Styling + .pill { + display: inline-block; + padding: 1px 8px; + border-radius: 12px; + border: 1px solid #DC244C; + color: #DC244C; + //background-color: rgba(59, 130, 246, 0.1); + font-size: 0.85rem; + } + + // Level Color-Coding + .text-green { color: #10b981 } + .text-yellow { color: #f59e0b } + .text-red { color: #ef4444 } +} \ No newline at end of file From 0af8d62f9f8ae9503d3e3fde4ddb1e061a2afb61 Mon Sep 17 00:00:00 2001 From: kanungle Date: Mon, 5 Jan 2026 20:37:02 -0800 Subject: [PATCH 07/11] converted section dropdowns to pages, updated Build page nav and context --- .../content/documentation/datasets.md | 2 +- .../content/documentation/dl-essentials.md | 11 --------- ...examples.md => dl-integration-examples.md} | 2 +- .../content/documentation/examples/_index.md | 12 ++++++---- .../documentation/observability/_index.md | 2 +- .../content/documentation/platforms/_index.md | 2 +- .../documentation/search-precision/_index.md | 2 +- .../documentation/tutorials-basics/_index.md | 5 ++-- .../documentation/tutorials-develop/_index.md | 5 ++-- .../tutorials-ecosystem/_index.md | 5 ++-- .../data-ingestion-beginners.md | 4 +++- .../{ => tutorials-ecosystem}/qdrant-n8n.md | 3 ++- .../documentation/tutorials-lp-basics.md | 18 ++++++++++++++ .../documentation/tutorials-lp-develop.md | 14 +++++++++++ .../documentation/tutorials-lp-ecosystem.md | 21 ++++++++++++++++ .../documentation/tutorials-lp-operations.md | 21 ++++++++++++++++ ...s-overview.md => tutorials-lp-overview.md} | 0 .../tutorials-lp-rag-and-agents.md | 20 ++++++++++++++++ .../tutorials-lp-search-engineering.md | 24 +++++++++++++++++++ .../tutorials-operations/_index.md | 5 ++-- .../tutorials-rag-and-agents/_index.md | 5 ++-- .../agentic-rag-camelai-discord.md | 4 +++- .../agentic-rag-crewai-zoom.md | 4 +++- .../agentic-rag-langgraph.md | 4 +++- .../multimodal-search.md | 3 ++- .../tutorials-search-engineering/_index.md | 5 ++-- qdrant-landing/content/learn/_index.md | 10 ++++---- .../content/learn/ref-tutorials-basics.md | 2 +- .../content/learn/ref-tutorials-develop.md | 2 +- .../content/learn/ref-tutorials-ecosystem.md | 2 +- .../content/learn/ref-tutorials-operations.md | 2 +- .../content/learn/ref-tutorials-overview.md | 2 +- .../learn/ref-tutorials-rag-and-agents.md | 2 +- .../learn/ref-tutorials-search-engineering.md | 2 +- 34 files changed, 177 insertions(+), 50 deletions(-) delete mode 100644 qdrant-landing/content/documentation/dl-essentials.md rename qdrant-landing/content/documentation/{dl-examples.md => dl-integration-examples.md} (90%) rename qdrant-landing/content/documentation/{ => tutorials-ecosystem}/data-ingestion-beginners.md (99%) rename qdrant-landing/content/documentation/{ => tutorials-ecosystem}/qdrant-n8n.md (99%) create mode 100644 qdrant-landing/content/documentation/tutorials-lp-basics.md create mode 100644 qdrant-landing/content/documentation/tutorials-lp-develop.md create mode 100644 qdrant-landing/content/documentation/tutorials-lp-ecosystem.md create mode 100644 qdrant-landing/content/documentation/tutorials-lp-operations.md rename qdrant-landing/content/documentation/{tutorials-overview.md => tutorials-lp-overview.md} (100%) create mode 100644 qdrant-landing/content/documentation/tutorials-lp-rag-and-agents.md create mode 100644 qdrant-landing/content/documentation/tutorials-lp-search-engineering.md rename qdrant-landing/content/documentation/{ => tutorials-rag-and-agents}/agentic-rag-camelai-discord.md (99%) rename qdrant-landing/content/documentation/{ => tutorials-rag-and-agents}/agentic-rag-crewai-zoom.md (99%) rename qdrant-landing/content/documentation/{ => tutorials-rag-and-agents}/agentic-rag-langgraph.md (99%) rename qdrant-landing/content/documentation/{ => tutorials-rag-and-agents}/multimodal-search.md (99%) diff --git a/qdrant-landing/content/documentation/datasets.md b/qdrant-landing/content/documentation/datasets.md index 8c852bff9..c34afe6b4 100644 --- a/qdrant-landing/content/documentation/datasets.md +++ b/qdrant-landing/content/documentation/datasets.md @@ -1,6 +1,6 @@ --- title: Practice Datasets -weight: 29 +weight: 28 partition: build --- diff --git a/qdrant-landing/content/documentation/dl-essentials.md b/qdrant-landing/content/documentation/dl-essentials.md deleted file mode 100644 index d121123bf..000000000 --- a/qdrant-landing/content/documentation/dl-essentials.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -#Delimiter files are used to separate the list of documentation pages into sections. -title: "Essentials" -type: delimiter -weight: 1 # Change this weight to change order of sections -sitemapExclude: True -_build: - publishResources: false - render: never -partition: build ---- \ No newline at end of file diff --git a/qdrant-landing/content/documentation/dl-examples.md b/qdrant-landing/content/documentation/dl-integration-examples.md similarity index 90% rename from qdrant-landing/content/documentation/dl-examples.md rename to qdrant-landing/content/documentation/dl-integration-examples.md index adb0f7ad1..96b51f51e 100644 --- a/qdrant-landing/content/documentation/dl-examples.md +++ b/qdrant-landing/content/documentation/dl-integration-examples.md @@ -1,6 +1,6 @@ --- #Delimiter files are used to separate the list of documentation pages into sections. -title: "Examples" +title: "Integration Guides" type: delimiter weight: 24 # Change this weight to change order of sections partition: build diff --git a/qdrant-landing/content/documentation/examples/_index.md b/qdrant-landing/content/documentation/examples/_index.md index bd9fa984e..75b054a53 100644 --- a/qdrant-landing/content/documentation/examples/_index.md +++ b/qdrant-landing/content/documentation/examples/_index.md @@ -1,11 +1,15 @@ --- title: Build Prototypes -weight: 26 +weight: 25 partition: build --- -# Examples +# Build Prototypes -| End-to-End Code Samples | Description | Stack | +## End-to-End Code Samples + +The following guided samples help you get started with real-world projects using Qdrant and other ecosystem tools. + +| Guided Sample | Description | Stack | |---------------------------------------------------------------------------------|-------------------------------------------------------------------|---------------------------------------------| | [Multitenancy with LlamaIndex](/documentation/examples/llama-index-multitenancy/) | Handle data coming from multiple users in LlamaIndex. | Qdrant, Python, LlamaIndex | | [Implement custom connector for Cohere RAG](/documentation/examples/cohere-rag-connector/) | Bring data stored in Qdrant to Cohere RAG | Qdrant, Cohere, FastAPI | @@ -22,7 +26,7 @@ partition: build -## Notebooks +## Example Notebooks Our Notebooks offer complex instructions that are supported with a throrough explanation. Follow along by trying out the code and get the most out of each example. diff --git a/qdrant-landing/content/documentation/observability/_index.md b/qdrant-landing/content/documentation/observability/_index.md index 271d8b34b..68abfae1a 100644 --- a/qdrant-landing/content/documentation/observability/_index.md +++ b/qdrant-landing/content/documentation/observability/_index.md @@ -1,6 +1,6 @@ --- title: Observability -weight: 22 +weight: 21 partition: build --- diff --git a/qdrant-landing/content/documentation/platforms/_index.md b/qdrant-landing/content/documentation/platforms/_index.md index acc0965f4..fe9e07f7b 100644 --- a/qdrant-landing/content/documentation/platforms/_index.md +++ b/qdrant-landing/content/documentation/platforms/_index.md @@ -1,6 +1,6 @@ --- title: Platforms -weight: 23 +weight: 22 partition: build --- diff --git a/qdrant-landing/content/documentation/search-precision/_index.md b/qdrant-landing/content/documentation/search-precision/_index.md index a23655b14..47068f066 100644 --- a/qdrant-landing/content/documentation/search-precision/_index.md +++ b/qdrant-landing/content/documentation/search-precision/_index.md @@ -1,6 +1,6 @@ --- title: Search Enhancement -weight: 24 +weight: 27 # If the index.md file `is_empty`, the sidebar will display the first child link as the main entry is_empty: true build: diff --git a/qdrant-landing/content/documentation/tutorials-basics/_index.md b/qdrant-landing/content/documentation/tutorials-basics/_index.md index b92a70681..a14ea4ca6 100644 --- a/qdrant-landing/content/documentation/tutorials-basics/_index.md +++ b/qdrant-landing/content/documentation/tutorials-basics/_index.md @@ -1,7 +1,8 @@ --- title: Basics -weight: 17 -is_empty: false +weight: 31 +is_empty: true +hideInSidebar: true aliases: - how-to - tutorials diff --git a/qdrant-landing/content/documentation/tutorials-develop/_index.md b/qdrant-landing/content/documentation/tutorials-develop/_index.md index 110e7417f..fd279b76d 100644 --- a/qdrant-landing/content/documentation/tutorials-develop/_index.md +++ b/qdrant-landing/content/documentation/tutorials-develop/_index.md @@ -1,7 +1,8 @@ --- title: Develop & Implement -weight: 21 -is_empty: false +weight: 35 +is_empty: true +hideInSidebar: true partition: qdrant --- diff --git a/qdrant-landing/content/documentation/tutorials-ecosystem/_index.md b/qdrant-landing/content/documentation/tutorials-ecosystem/_index.md index f5581ebb8..0054b6a17 100644 --- a/qdrant-landing/content/documentation/tutorials-ecosystem/_index.md +++ b/qdrant-landing/content/documentation/tutorials-ecosystem/_index.md @@ -1,7 +1,8 @@ --- title: Ecosystem & Integrations -weight: 22 -is_empty: false +weight: 36 +is_empty: true +hideInSidebar: true aliases: - how-to - tutorials diff --git a/qdrant-landing/content/documentation/data-ingestion-beginners.md b/qdrant-landing/content/documentation/tutorials-ecosystem/data-ingestion-beginners.md similarity index 99% rename from qdrant-landing/content/documentation/data-ingestion-beginners.md rename to qdrant-landing/content/documentation/tutorials-ecosystem/data-ingestion-beginners.md index cd8139d34..63ae326db 100644 --- a/qdrant-landing/content/documentation/data-ingestion-beginners.md +++ b/qdrant-landing/content/documentation/tutorials-ecosystem/data-ingestion-beginners.md @@ -1,8 +1,10 @@ --- title: Data Ingestion for Beginners weight: 2 -partition: build +#partition: build social_preview_image: /documentation/examples/data-ingestion-beginners/social_preview.png +aliases: + - /documentation/data-ingestion-beginners/ --- ![data-ingestion-beginners-7](/documentation/examples/data-ingestion-beginners/data-ingestion-7.png) diff --git a/qdrant-landing/content/documentation/qdrant-n8n.md b/qdrant-landing/content/documentation/tutorials-ecosystem/qdrant-n8n.md similarity index 99% rename from qdrant-landing/content/documentation/qdrant-n8n.md rename to qdrant-landing/content/documentation/tutorials-ecosystem/qdrant-n8n.md index 3ed9651a1..06d164fe4 100644 --- a/qdrant-landing/content/documentation/qdrant-n8n.md +++ b/qdrant-landing/content/documentation/tutorials-ecosystem/qdrant-n8n.md @@ -1,10 +1,11 @@ --- title: Automating Processes with Qdrant and n8n weight: 7 -partition: build +#partition: build social_preview_image: /documentation/examples/qdrant-n8n-2/preview/social_preview.png aliases: - /blog/qdrant-n8n-beyond-simple-similarity-search/ + - /documentation/qdrant-n8n/ --- diff --git a/qdrant-landing/content/documentation/tutorials-lp-basics.md b/qdrant-landing/content/documentation/tutorials-lp-basics.md new file mode 100644 index 000000000..b92a70681 --- /dev/null +++ b/qdrant-landing/content/documentation/tutorials-lp-basics.md @@ -0,0 +1,18 @@ +--- +title: Basics +weight: 17 +is_empty: false +aliases: + - how-to + - tutorials +partition: qdrant +--- + +# Basic Tutorials +*Get up and running with Qdrant in minutes.* + +| Tutorial | Objective | Stack | Time | Level | +| :--- | :--- | :--- | :--- | :--- | +| [Local Qdrant Setup](/documentation/quickstart/) | Basic CRUD operations and local deployment. | Python | 10m | Beginner | +| [5-Minute Semantic Search](/documentation/tutorials-basics/search-beginners/) | Build a search engine for science fiction books. | Python | 5m | Beginner | +| [5-Minute RAG with DeepSeek](/documentation/tutorials-basics/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/tutorials-lp-develop.md b/qdrant-landing/content/documentation/tutorials-lp-develop.md new file mode 100644 index 000000000..110e7417f --- /dev/null +++ b/qdrant-landing/content/documentation/tutorials-lp-develop.md @@ -0,0 +1,14 @@ +--- +title: Develop & Implement +weight: 21 +is_empty: false +partition: qdrant +--- + +# Develop & Implement Tutorials +*Core tools and APIs for building with Qdrant.* + +| Tutorial | Objective | Stack | Time | Level | +| :--- | :--- | :--- | :--- | :--- | +| [Bulk Data Uploads](/documentation/tutorials-develop/bulk-upload/) | High-scale ingestion tricks for power users. | Python | 20m | Intermediate | +| [Python Async API](/documentation/tutorials-develop/async-api/) | Use Asynchronous programming for efficiency. | Python | 25m | Intermediate | diff --git a/qdrant-landing/content/documentation/tutorials-lp-ecosystem.md b/qdrant-landing/content/documentation/tutorials-lp-ecosystem.md new file mode 100644 index 000000000..f5581ebb8 --- /dev/null +++ b/qdrant-landing/content/documentation/tutorials-lp-ecosystem.md @@ -0,0 +1,21 @@ +--- +title: Ecosystem & Integrations +weight: 22 +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 | +| :--- | :--- | :--- | :--- | :--- | +| [S3 Ingestion with LangChain](/documentation/data-ingestion-beginners/) | Stream data from AWS S3 to vector store. | LangChain | 30m | Beginner | +| [Hugging Face Datasets](/documentation/tutorials-ecosystem/huggingface-datasets/) | Load and search public ML datasets. | Python | 15m | Beginner | +| [Databricks Integration](/documentation/send-data/databricks/) | Vectorize datasets using FastEmbed on Databricks. | Databricks | 30m | Intermediate | +| [Airflow & Astronomer](/documentation/send-data/qdrant-airflow-astronomer/) | Orchestrate data engineering workflows. | Airflow | 45m | Intermediate | +| [No-Code Automation (n8n)](/documentation/qdrant-n8n/) | Combine Qdrant with low-code n8n workflows. | n8n | 45m | Intermediate | +| [Kafka Data Streaming](/documentation/send-data/data-streaming-kafka-qdrant/) | Setup Qdrant Sink Connector for real-time data. | Kafka | 60m | Advanced | \ No newline at end of file diff --git a/qdrant-landing/content/documentation/tutorials-lp-operations.md b/qdrant-landing/content/documentation/tutorials-lp-operations.md new file mode 100644 index 000000000..512c4297e --- /dev/null +++ b/qdrant-landing/content/documentation/tutorials-lp-operations.md @@ -0,0 +1,21 @@ +--- +title: Operations & Scale +weight: 20 +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 | +| :--- | :--- | :--- | :--- | :--- | +| [Snapshot & Backup](/documentation/tutorials-operations/create-snapshot/) | Create and restore collection snapshots. | Python | 20m | Beginner | +| [Cloud Inference Search](/documentation/tutorials-and-examples/cloud-inference-hybrid-search/) | Hybrid search using Qdrant's built-in inference. | Any | 20m | Beginner | +| [Embedding Migration](/documentation/tutorials-operations/migration/) | Move dense and sparse embeddings to Qdrant. | CLI | 30m | Intermediate | +| [Monitor Managed Cloud](/documentation/tutorials-and-examples/managed-cloud-prometheus/) | Observability with Prometheus and Grafana. | Prometheus | 30m | Intermediate | +| [Monitor Private Cloud](/documentation/tutorials-and-examples/hybrid-cloud-prometheus/) | Observability for hybrid/private cloud setups. | Prometheus | 30m | Intermediate | +| [Billion-Scale Search](/documentation/tutorials-operations/large-scale-search/) | Cost-efficient search for LAION-400M datasets. | None | 2 days | Advanced | \ No newline at end of file diff --git a/qdrant-landing/content/documentation/tutorials-overview.md b/qdrant-landing/content/documentation/tutorials-lp-overview.md similarity index 100% rename from qdrant-landing/content/documentation/tutorials-overview.md rename to qdrant-landing/content/documentation/tutorials-lp-overview.md diff --git a/qdrant-landing/content/documentation/tutorials-lp-rag-and-agents.md b/qdrant-landing/content/documentation/tutorials-lp-rag-and-agents.md new file mode 100644 index 000000000..79963b8f7 --- /dev/null +++ b/qdrant-landing/content/documentation/tutorials-lp-rag-and-agents.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 | +| :--- | :--- | :--- | :--- | :--- | +| [Multimodal Search (LlamaIndex)](/documentation/multimodal-search/) | Search across image and text modalities. | LlamaIndex | 15m | Beginner | +| [Agentic RAG with CrewAI](/documentation/agentic-rag-crewai-zoom/) | Step-by-step multi-agent RAG system. | CrewAI | 45m | Beginner | +| [Agentic RAG with LangGraph](/documentation/agentic-rag-langgraph/) | Build AI agents to answer library documentation. | LangGraph | 45m | Intermediate | +| [Agentic Discord ChatBot](/documentation/agentic-rag-camelai-discord/) | Develop a functional bot with CAMEL-AI. | OpenAI | 45m | Intermediate | +| [Automate Metadata Filtering](/documentation/search-precision/automate-filtering-with-llms/) | Use LLM structured output for dynamic filters. | Python | 30m | Intermediate | diff --git a/qdrant-landing/content/documentation/tutorials-lp-search-engineering.md b/qdrant-landing/content/documentation/tutorials-lp-search-engineering.md new file mode 100644 index 000000000..51eb66abb --- /dev/null +++ b/qdrant-landing/content/documentation/tutorials-lp-search-engineering.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 | +| :--- | :--- | :--- | :--- | :--- | +| [Hybrid Search with FastEmbed](/documentation/tutorials-search-engineering/hybrid-search-fastembed/) | Combine dense and sparse search for startups. | FastAPI | 20m | Beginner | +| [Neural Search Service](/documentation/tutorials-search-engineering/neural-search/) | Deploy a search service for company descriptions. | FastAPI | 30m | Beginner | +| [Movie Recommendations](/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | +| [Advanced PDF Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | +| [Retrieval Quality Benchmarking](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure quality and tune HNSW parameters. | Python | 30m | Intermediate | +| [Multivector Reranking](/documentation/search-precision/reranking-semantic-search/) | Use multivector representations for better ranking. | Python | 30m | Intermediate | +| [Hybrid Search Reranking](/documentation/tutorials-search-engineering/reranking-hybrid-search/) | Implement late interaction and sparse reranking. | Python | 40m | Intermediate | +| [Semantic Code Search](/documentation/tutorials-search-engineering/code-search/) | Navigate codebases using vector similarity. | Python | 45m | Intermediate | +| [Static Embeddings Analysis](/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/tutorials-operations/_index.md b/qdrant-landing/content/documentation/tutorials-operations/_index.md index 512c4297e..7f78719ef 100644 --- a/qdrant-landing/content/documentation/tutorials-operations/_index.md +++ b/qdrant-landing/content/documentation/tutorials-operations/_index.md @@ -1,7 +1,8 @@ --- title: Operations & Scale -weight: 20 -is_empty: false +weight: 34 +is_empty: true +hideInSidebar: true aliases: - how-to - tutorials diff --git a/qdrant-landing/content/documentation/tutorials-rag-and-agents/_index.md b/qdrant-landing/content/documentation/tutorials-rag-and-agents/_index.md index 79963b8f7..8a1d708cf 100644 --- a/qdrant-landing/content/documentation/tutorials-rag-and-agents/_index.md +++ b/qdrant-landing/content/documentation/tutorials-rag-and-agents/_index.md @@ -1,7 +1,8 @@ --- title: RAG & AI Agents -weight: 19 -is_empty: false +weight: 33 +is_empty: true +hideInSidebar: true aliases: - how-to - tutorials diff --git a/qdrant-landing/content/documentation/agentic-rag-camelai-discord.md b/qdrant-landing/content/documentation/tutorials-rag-and-agents/agentic-rag-camelai-discord.md similarity index 99% rename from qdrant-landing/content/documentation/agentic-rag-camelai-discord.md rename to qdrant-landing/content/documentation/tutorials-rag-and-agents/agentic-rag-camelai-discord.md index be42fb141..c805b56c5 100644 --- a/qdrant-landing/content/documentation/agentic-rag-camelai-discord.md +++ b/qdrant-landing/content/documentation/tutorials-rag-and-agents/agentic-rag-camelai-discord.md @@ -1,8 +1,10 @@ --- title: Agentic RAG Discord Bot with CAMEL-AI weight: 4 -partition: build +#partition: build social_preview_image: /documentation/examples/agentic-rag-camelai-discord/social-preview.png +aliases: + - /documentation/agentic-rag-camelai-discord/ --- ![agentic-rag-camelai-astronaut](/documentation/examples/agentic-rag-camelai-discord/astronaut-main.png) diff --git a/qdrant-landing/content/documentation/agentic-rag-crewai-zoom.md b/qdrant-landing/content/documentation/tutorials-rag-and-agents/agentic-rag-crewai-zoom.md similarity index 99% rename from qdrant-landing/content/documentation/agentic-rag-crewai-zoom.md rename to qdrant-landing/content/documentation/tutorials-rag-and-agents/agentic-rag-crewai-zoom.md index d79d475fb..cb774ff2a 100644 --- a/qdrant-landing/content/documentation/agentic-rag-crewai-zoom.md +++ b/qdrant-landing/content/documentation/tutorials-rag-and-agents/agentic-rag-crewai-zoom.md @@ -1,8 +1,10 @@ --- title: Simple Agentic RAG System weight: 2 -partition: build +#partition: build social_preview_image: /documentation/examples/agentic-rag-crewai-zoom/social_preview.png +aliases: + - /documentation/agentic-rag-crewai-zoom/ --- ![agentic-rag-crewai-zoom](/documentation/examples/agentic-rag-crewai-zoom/agentic-rag-1.png) diff --git a/qdrant-landing/content/documentation/agentic-rag-langgraph.md b/qdrant-landing/content/documentation/tutorials-rag-and-agents/agentic-rag-langgraph.md similarity index 99% rename from qdrant-landing/content/documentation/agentic-rag-langgraph.md rename to qdrant-landing/content/documentation/tutorials-rag-and-agents/agentic-rag-langgraph.md index c604d3ed3..b8925601f 100644 --- a/qdrant-landing/content/documentation/agentic-rag-langgraph.md +++ b/qdrant-landing/content/documentation/tutorials-rag-and-agents/agentic-rag-langgraph.md @@ -1,7 +1,9 @@ --- title: Agentic RAG With LangGraph weight: 3 -partition: build +#partition: build +aliases: + - /documentation/agentic-rag-langgraph/ --- # Agentic RAG With LangGraph and Qdrant diff --git a/qdrant-landing/content/documentation/multimodal-search.md b/qdrant-landing/content/documentation/tutorials-rag-and-agents/multimodal-search.md similarity index 99% rename from qdrant-landing/content/documentation/multimodal-search.md rename to qdrant-landing/content/documentation/tutorials-rag-and-agents/multimodal-search.md index f3c8c4424..a5f86dd95 100644 --- a/qdrant-landing/content/documentation/multimodal-search.md +++ b/qdrant-landing/content/documentation/tutorials-rag-and-agents/multimodal-search.md @@ -1,11 +1,12 @@ --- title: Multilingual & Multimodal RAG with LlamaIndex weight: 5 -partition: build +#partition: build social_preview_image: /documentation/examples/multimodal-search/social_preview.png aliases: - /documentation/tutorials/multimodal-search-fastembed/ - /documentation/advanced-tutorials/multimodal-search-fastembed/ + - /documentation/multimodal-search/ --- # Multilingual & Multimodal Search with LlamaIndex diff --git a/qdrant-landing/content/documentation/tutorials-search-engineering/_index.md b/qdrant-landing/content/documentation/tutorials-search-engineering/_index.md index 51eb66abb..3263ec8a1 100644 --- a/qdrant-landing/content/documentation/tutorials-search-engineering/_index.md +++ b/qdrant-landing/content/documentation/tutorials-search-engineering/_index.md @@ -1,7 +1,8 @@ --- title: Search Engineering -weight: 18 -is_empty: false +weight: 32 +is_empty: true +hideInSidebar: true aliases: - how-to - tutorials diff --git a/qdrant-landing/content/learn/_index.md b/qdrant-landing/content/learn/_index.md index 436336747..72794ad1b 100644 --- a/qdrant-landing/content/learn/_index.md +++ b/qdrant-landing/content/learn/_index.md @@ -66,7 +66,7 @@ content: - "Ecosystem and Integrations" link: - url: /documentation/tutorials-overview/ + url: /documentation/tutorials-lp-overview text: Explore Tutorials - partial: documentation/sections/cards-section title: Quickstart @@ -79,18 +79,18 @@ content: src: /icons/outline/rocket-blue.svg alt: Rocket icon title: New to Vector Search? - description: Start with our beginner-friendly articles on vector embeddings and basic concepts. + description: Start with our beginner-friendly exercises on vector embeddings and basic concepts. link: text: Start Learning - url: /documentation/tutorials-basics/ + url: /documentation/tutorials-lp-basics - id: 2 icon: src: /icons/outline/hacker-purple.svg alt: Hacker icon title: Ready to Build? - description: Jump into practical examples and integration guides to implement Qdrant in your projects. + description: Build out practical projects using our example prototypes and integration guides. link: text: View Examples - url: /documentation/tutorials-search-engineer/ + url: /documentation/examples/ --- diff --git a/qdrant-landing/content/learn/ref-tutorials-basics.md b/qdrant-landing/content/learn/ref-tutorials-basics.md index 127c1614c..e9bdbb93e 100644 --- a/qdrant-landing/content/learn/ref-tutorials-basics.md +++ b/qdrant-landing/content/learn/ref-tutorials-basics.md @@ -1,7 +1,7 @@ --- #Delimiter files are used to separate the list of documentation pages into sections. type: reference -reference: /documentation/tutorials-basics +reference: /documentation/tutorials-lp-basics weight: 311 sitemapExclude: True _build: diff --git a/qdrant-landing/content/learn/ref-tutorials-develop.md b/qdrant-landing/content/learn/ref-tutorials-develop.md index 7b99e3a2c..2305395d7 100644 --- a/qdrant-landing/content/learn/ref-tutorials-develop.md +++ b/qdrant-landing/content/learn/ref-tutorials-develop.md @@ -1,7 +1,7 @@ --- #Delimiter files are used to separate the list of documentation pages into sections. type: reference -reference: /documentation/tutorials-develop +reference: /documentation/tutorials-lp-develop weight: 315 sitemapExclude: True _build: diff --git a/qdrant-landing/content/learn/ref-tutorials-ecosystem.md b/qdrant-landing/content/learn/ref-tutorials-ecosystem.md index 445bcbaf0..31cd8e7d4 100644 --- a/qdrant-landing/content/learn/ref-tutorials-ecosystem.md +++ b/qdrant-landing/content/learn/ref-tutorials-ecosystem.md @@ -1,7 +1,7 @@ --- #Delimiter files are used to separate the list of documentation pages into sections. type: reference -reference: /documentation/tutorials-ecosystem +reference: /documentation/tutorials-lp-ecosystem weight: 316 sitemapExclude: True _build: diff --git a/qdrant-landing/content/learn/ref-tutorials-operations.md b/qdrant-landing/content/learn/ref-tutorials-operations.md index 76abe4673..f99c9ce38 100644 --- a/qdrant-landing/content/learn/ref-tutorials-operations.md +++ b/qdrant-landing/content/learn/ref-tutorials-operations.md @@ -1,7 +1,7 @@ --- #Delimiter files are used to separate the list of documentation pages into sections. type: reference -reference: /documentation/tutorials-operations +reference: /documentation/tutorials-lp-operations weight: 314 sitemapExclude: True _build: diff --git a/qdrant-landing/content/learn/ref-tutorials-overview.md b/qdrant-landing/content/learn/ref-tutorials-overview.md index e6bc387b2..e224107ae 100644 --- a/qdrant-landing/content/learn/ref-tutorials-overview.md +++ b/qdrant-landing/content/learn/ref-tutorials-overview.md @@ -1,7 +1,7 @@ --- #Delimiter files are used to separate the list of documentation pages into sections. type: reference -reference: /documentation/tutorials-overview +reference: /documentation/tutorials-lp-overview weight: 310 sitemapExclude: True _build: diff --git a/qdrant-landing/content/learn/ref-tutorials-rag-and-agents.md b/qdrant-landing/content/learn/ref-tutorials-rag-and-agents.md index 65fdd1907..35ad7dbb7 100644 --- a/qdrant-landing/content/learn/ref-tutorials-rag-and-agents.md +++ b/qdrant-landing/content/learn/ref-tutorials-rag-and-agents.md @@ -1,7 +1,7 @@ --- #Delimiter files are used to separate the list of documentation pages into sections. type: reference -reference: /documentation/tutorials-rag-and-agents +reference: /documentation/tutorials-lp-rag-and-agents weight: 313 sitemapExclude: True _build: diff --git a/qdrant-landing/content/learn/ref-tutorials-search-engineering.md b/qdrant-landing/content/learn/ref-tutorials-search-engineering.md index 674c30ee7..8561a0c46 100644 --- a/qdrant-landing/content/learn/ref-tutorials-search-engineering.md +++ b/qdrant-landing/content/learn/ref-tutorials-search-engineering.md @@ -1,7 +1,7 @@ --- #Delimiter files are used to separate the list of documentation pages into sections. type: reference -reference: /documentation/tutorials-search-engineering +reference: /documentation/tutorials-lp-search-engineering weight: 312 sitemapExclude: True _build: From 978147d7567d285a50be4993359623a5d5d0a08b Mon Sep 17 00:00:00 2001 From: kanungle Date: Tue, 13 Jan 2026 09:09:48 -0800 Subject: [PATCH 08/11] re-added missing beginner tutorials --- .../tutorials-basics/rag-deepseek.md | 336 ++++++++++++++++++ .../tutorials-basics/search-beginners.md | 245 +++++++++++++ 2 files changed, 581 insertions(+) create mode 100644 qdrant-landing/content/documentation/tutorials-basics/rag-deepseek.md create mode 100644 qdrant-landing/content/documentation/tutorials-basics/search-beginners.md diff --git a/qdrant-landing/content/documentation/tutorials-basics/rag-deepseek.md b/qdrant-landing/content/documentation/tutorials-basics/rag-deepseek.md new file mode 100644 index 000000000..242a5bb28 --- /dev/null +++ b/qdrant-landing/content/documentation/tutorials-basics/rag-deepseek.md @@ -0,0 +1,336 @@ +--- +title: 5 Minute RAG with Qdrant and DeepSeek +weight: 6 +partition: build +social_preview_image: /documentation/examples/rag-deepseek/social_preview.png +aliases: + - /documentation/rag-deepseek/ +--- + +![deepseek-rag-qdrant](/documentation/examples/rag-deepseek/deepseek.png) + +# 5 Minute RAG with Qdrant and DeepSeek + +| Time: 5 min | Level: Beginner | Output: [GitHub](https://github.com/qdrant/examples/blob/master/rag-with-qdrant-deepseek/deepseek-qdrant.ipynb) | +| --- | ----------- | ----------- |----------- | + +This tutorial demonstrates how to build a **Retrieval-Augmented Generation (RAG)** 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. + +## Overview +In this tutorial, we will: +1. Take sample text and turn it into vectors with FastEmbed. +2. Send the vectors to a Qdrant collection. +3. Connect Qdrant and DeepSeek into a minimal RAG pipeline. +4. Ask DeepSeek different questions and test answer accuracy. +5. Enrich DeepSeek prompts with content retrieved from Qdrant. +6. Evaluate answer accuracy before and after. + +#### Architecture: + +![deepseek-rag-architecture](/documentation/examples/rag-deepseek/architecture.png) + +--- + +## Prerequisites + +Ensure you have the following: +- Python environment (3.9+) +- Access to [Qdrant Cloud](https://qdrant.tech) +- A DeepSeek API key from [DeepSeek Platform](https://platform.deepseek.com/api_keys) + +## Setup Qdrant + + +```python +pip install "qdrant-client[fastembed]>=1.14.1" +``` + +[Qdrant](https://qdrant.tech) will act as a knowledge base providing the context information for the prompts we'll be sending to the LLM. + +You can get a free-forever Qdrant cloud instance at http://cloud.qdrant.io. Learn about setting up your instance from the [Quickstart](https://qdrant.tech/documentation/quickstart-cloud/). + + +```python +QDRANT_URL = "https://xyz-example.eu-central.aws.cloud.qdrant.io:6333" +QDRANT_API_KEY = "" +``` + +### Instantiating Qdrant Client + + +```python +from qdrant_client import QdrantClient, models + +client = QdrantClient(url=QDRANT_URL, api_key=QDRANT_API_KEY) +``` + +### Building the knowledge base + +Qdrant will use vector embeddings of our facts to enrich the original prompt with some context. Thus, we need to store the vector embeddings and the facts used to generate them. + +We'll be using the [bge-base-en-v1.5](https://huggingface.co/BAAI/bge-small-en-v1.5) model via [FastEmbed](https://github.com/qdrant/fastembed/) - A lightweight, fast, Python library for embeddings generation. + +The Qdrant client provides a handy integration with FastEmbed that makes building a knowledge base very straighforward. + +First, we need to create a collection, so Qdrant would know what vectors it will be dealing with, and then, we just pass our raw documents +wrapped into `models.Document` to compute and upload the embeddings. + +```python +collection_name = "knowledge_base" +model_name = "BAAI/bge-small-en-v1.5" +client.create_collection( + collection_name=collection_name, + vectors_config=models.VectorParams(size=384, distance=models.Distance.COSINE) +) +``` + +```python +documents = [ + "Qdrant is a vector database & vector similarity search engine. It deploys as an API service providing search for the nearest high-dimensional vectors. With Qdrant, embeddings or neural network encoders can be turned into full-fledged applications for matching, searching, recommending, and much more!", + "Docker helps developers build, share, and run applications anywhere — without tedious environment configuration or management.", + "PyTorch is a machine learning framework based on the Torch library, used for applications such as computer vision and natural language processing.", + "MySQL is an open-source relational database management system (RDBMS). A relational database organizes data into one or more data tables in which data may be related to each other; these relations help structure the data. SQL is a language that programmers use to create, modify and extract data from the relational database, as well as control user access to the database.", + "NGINX is a free, open-source, high-performance HTTP server and reverse proxy, as well as an IMAP/POP3 proxy server. NGINX is known for its high performance, stability, rich feature set, simple configuration, and low resource consumption.", + "FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.7+ based on standard Python type hints.", + "SentenceTransformers is a Python framework for state-of-the-art sentence, text and image embeddings. You can use this framework to compute sentence / text embeddings for more than 100 languages. These embeddings can then be compared e.g. with cosine-similarity to find sentences with a similar meaning. This can be useful for semantic textual similar, semantic search, or paraphrase mining.", + "The cron command-line utility is a job scheduler on Unix-like operating systems. Users who set up and maintain software environments use cron to schedule jobs (commands or shell scripts), also known as cron jobs, to run periodically at fixed times, dates, or intervals.", +] +client.upsert( + collection_name=collection_name, + points=[ + models.PointStruct( + id=idx, + vector=models.Document(text=document, model=model_name), + payload={"document": document}, + ) + for idx, document in enumerate(documents) + ], +) +``` + +## Setup DeepSeek + +RAG changes the way we interact with Large Language Models. We're converting a knowledge-oriented task, in which the model may create a counterfactual answer, into a language-oriented task. The latter expects the model to extract meaningful information and generate an answer. LLMs, when implemented correctly, are supposed to be carrying out language-oriented tasks. + +The task starts with the original prompt sent by the user. The same prompt is then vectorized and used as a search query for the most relevant facts. Those facts are combined with the original prompt to build a longer prompt containing more information. + +But let's start simply by asking our question directly. + + +```python +prompt = """ +What tools should I need to use to build a web service using vector embeddings for search? +""" +``` + +Using the Deepseek API requires providing the API key. You can obtain it from the [DeepSeek platform](https://platform.deepseek.com/api_keys). + +Now we can finally call the completion API. + + +```python +import requests +import json + +# Fill the environmental variable with your own Deepseek API key +# See: https://platform.deepseek.com/api_keys +API_KEY = "" + +HEADERS = { + "Authorization": f"Bearer {API_KEY}", + "Content-Type": "application/json", +} + + +def query_deepseek(prompt): + data = { + "model": "deepseek-chat", + "messages": [{"role": "user", "content": prompt}], + "stream": False, + } + + response = requests.post( + "https://api.deepseek.com/chat/completions", headers=HEADERS, data=json.dumps(data) + ) + + if response.ok: + result = response.json() + return result["choices"][0]["message"]["content"] + else: + raise Exception(f"Error {response.status_code}: {response.text}") + +``` + +and also the query + +```python +query_deepseek(prompt) +``` + +The response is: + +```bash +"Building a web service that uses vector embeddings for search involves several components, including data processing, embedding generation, storage, search, and serving the service via an API. Below is a list of tools and technologies you can use for each step:\n\n---\n\n### 1. **Data Processing**\n - **Python**: For general data preprocessing and scripting.\n - **Pandas**: For handling tabular data.\n - **NumPy**: For numerical operations.\n - **NLTK/Spacy**: For text preprocessing (tokenization, stemming, etc.).\n - **LLM models**: For generating embeddings if you're using pre-trained models.\n\n---\n\n### 2. **Embedding Generation**\n - **Pre-trained Models**:\n - Embeddings (e.g., `text-embedding-ada-002`).\n - Hugging Face Transformers (e.g., `Sentence-BERT`, `all-MiniLM-L6-v2`).\n - Google's Universal Sentence Encoder.\n - **Custom Models**:\n - TensorFlow/PyTorch: For training custom embedding models.\n - **Libraries**:\n - `sentence-transformers`: For generating sentence embeddings.\n - `transformers`: For using Hugging Face models.\n\n---\n\n### 3. **Vector Storage**\n - **Vector Databases**:\n - Pinecone: Managed vector database for similarity search.\n - Weaviate: Open-source vector search engine.\n - Milvus: Open-source vector database.\n - FAISS (Facebook AI Similarity Search): Library for efficient similarity search.\n - Qdrant: Open-source vector search engine.\n - Redis with RedisAI: For storing and querying vectors.\n - **Traditional Databases with Vector Support**:\n - PostgreSQL with pgvector extension.\n - Elasticsearch with dense vector support.\n\n---\n\n### 4. **Search and Retrieval**\n - **Similarity Search Algorithms**:\n - Cosine similarity, Euclidean distance, or dot product for comparing vectors.\n - **Libraries**:\n - FAISS: For fast nearest-neighbor search.\n - Annoy (Approximate Nearest Neighbors Oh Yeah): For approximate nearest neighbor search.\n - **Vector Databases**: Most vector databases (e.g., Pinecone, Weaviate) come with built-in search capabilities.\n\n---\n\n### 5. **Web Service Framework**\n - **Backend Frameworks**:\n - Flask/Django/FastAPI (Python): For building RESTful APIs.\n - Node.js/Express: If you prefer JavaScript.\n - **API Documentation**:\n - Swagger/OpenAPI: For documenting your API.\n - **Authentication**:\n - OAuth2, JWT: For securing your API.\n\n---\n\n### 6. **Deployment**\n - **Containerization**:\n - Docker: For packaging your application.\n - **Orchestration**:\n - Kubernetes: For managing containers at scale.\n - **Cloud Platforms**:\n - AWS (EC2, Lambda, S3).\n - Google Cloud (Compute Engine, Cloud Functions).\n - Azure (App Service, Functions).\n - **Serverless**:\n - AWS Lambda, Google Cloud Functions, or Vercel for serverless deployment.\n\n---\n\n### 7. **Monitoring and Logging**\n - **Monitoring**:\n - Prometheus + Grafana: For monitoring performance.\n - **Logging**:\n - ELK Stack (Elasticsearch, Logstash, Kibana).\n - Fluentd.\n - **Error Tracking**:\n - Sentry.\n\n---\n\n### 8. **Frontend (Optional)**\n - **Frontend Frameworks**:\n - React, Vue.js, or Angular: For building a user interface.\n - **Libraries**:\n - Axios: For making API calls from the frontend.\n\n---\n\n### Example Workflow\n1. Preprocess your data (e.g., clean text, tokenize).\n2. Generate embeddings using a pre-trained model (e.g., Hugging Face).\n3. Store embeddings in a vector database (e.g., Pinecone or FAISS).\n4. Build a REST API using FastAPI or Flask to handle search queries.\n5. Deploy the service using Docker and Kubernetes or a serverless platform.\n6. Monitor and scale the service as needed.\n\n---\n\n### Example Tools Stack\n- **Embedding Generation**: Hugging Face `sentence-transformers`.\n- **Vector Storage**: Pinecone or FAISS.\n- **Web Framework**: FastAPI.\n- **Deployment**: Docker + AWS/GCP.\n\nBy combining these tools, you can build a scalable and efficient web service for vector embedding-based search." +``` + + +### Extending the prompt + +Even though the original answer sounds credible, it didn't answer our question correctly. Instead, it gave us a generic description of an application stack. To improve the results, enriching the original prompt with the descriptions of the tools available seems like one of the possibilities. Let's use a semantic knowledge base to augment the prompt with the descriptions of different technologies! + +```python +results = client.query_points( + collection_name=collection_name, + query=models.Document(text=prompt, model=model_name), + limit=3, +) +results +``` + +Here is the response: + +```bash +QueryResponse(points=[ + ScoredPoint(id=0, version=0, score=0.67437416, payload={'document': 'Qdrant is a vector database & vector similarity search engine. It deploys as an API service providing search for the nearest high-dimensional vectors. With Qdrant, embeddings or neural network encoders can be turned into full-fledged applications for matching, searching, recommending, and much more!'}, vector=None, shard_key=None, order_value=None), + ScoredPoint(id=6, version=0, score=0.63144326, payload={'document': 'SentenceTransformers is a Python framework for state-of-the-art sentence, text and image embeddings. You can use this framework to compute sentence / text embeddings for more than 100 languages. These embeddings can then be compared e.g. with cosine-similarity to find sentences with a similar meaning. This can be useful for semantic textual similar, semantic search, or paraphrase mining.'}, vector=None, shard_key=None, order_value=None), + ScoredPoint(id=5, version=0, score=0.6064749, payload={'document': 'FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.7+ based on standard Python type hints.'}, vector=None, shard_key=None, order_value=None) +]) +``` + + +We used the original prompt to perform a semantic search over the set of tool descriptions. Now we can use these descriptions to augment the prompt and create more context. + + +```python +context = "\n".join(r.payload['document'] for r in results.points) +context +``` + +The response is: + +```bash +'Qdrant is a vector database & vector similarity search engine. It deploys as an API service providing search for the nearest high-dimensional vectors. With Qdrant, embeddings or neural network encoders can be turned into full-fledged applications for matching, searching, recommending, and much more!\nFastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.7+ based on standard Python type hints.\nPyTorch is a machine learning framework based on the Torch library, used for applications such as computer vision and natural language processing.' +``` + + +Finally, let's build a metaprompt, the combination of the assumed role of the LLM, the original question, and the results from our semantic search that will force our LLM to use the provided context. + +By doing this, we effectively convert the knowledge-oriented task into a language task and hopefully reduce the chances of hallucinations. It also should make the response sound more relevant. + + +```python +metaprompt = f""" +You are a software architect. +Answer the following question using the provided context. +If you can't find the answer, do not pretend you know it, but answer "I don't know". + +Question: {prompt.strip()} + +Context: +{context.strip()} + +Answer: +""" + +# Look at the full metaprompt +print(metaprompt) +``` + +**Response:** + +```bash +You are a software architect. +Answer the following question using the provided context. +If you can't find the answer, do not pretend you know it, but answer "I don't know". + +Question: What tools should I need to use to build a web service using vector embeddings for search? + +Context: +Qdrant is a vector database & vector similarity search engine. It deploys as an API service providing search for the nearest high-dimensional vectors. With Qdrant, embeddings or neural network encoders can be turned into full-fledged applications for matching, searching, recommending, and much more! +FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.7+ based on standard Python type hints. +PyTorch is a machine learning framework based on the Torch library, used for applications such as computer vision and natural language processing. + +Answer: +``` + +Our current prompt is much longer, and we also used a couple of strategies to make the responses even better: + +1. The LLM has the role of software architect. +2. We provide more context to answer the question. +3. If the context contains no meaningful information, the model shouldn't make up an answer. + +Let's find out if that works as expected. + +**Question:** + +```python +query_deepseek(metaprompt) +``` +**Answer:** + +```bash +'To build a web service using vector embeddings for search, you can use the following tools:\n\n1. **Qdrant**: As a vector database and similarity search engine, Qdrant will handle the storage and retrieval of high-dimensional vectors. It provides an API service for searching and matching vectors, making it ideal for applications that require vector-based search functionality.\n\n2. **FastAPI**: This web framework is perfect for building the API layer of your web service. It is fast, easy to use, and based on Python type hints, which makes it a great choice for developing the backend of your service. FastAPI will allow you to expose endpoints that interact with Qdrant for vector search operations.\n\n3. **PyTorch**: If you need to generate vector embeddings from your data (e.g., text, images), PyTorch can be used to create and train neural network models that produce these embeddings. PyTorch is a powerful machine learning framework that supports a wide range of applications, including natural language processing and computer vision.\n\n### Summary:\n- **Qdrant** for vector storage and search.\n- **FastAPI** for building the web service API.\n- **PyTorch** for generating vector embeddings (if needed).\n\nThese tools together provide a robust stack for building a web service that leverages vector embeddings for search functionality.' +``` + +### Testing out the RAG pipeline + +By leveraging the semantic context we provided our model is doing a better job answering the question. Let's enclose the RAG as a function, so we can call it more easily for different prompts. + + +```python +def rag(question: str, n_points: int = 3) -> str: + results = client.query_points( + collection_name=collection_name, + query=models.Document(text=question, model=model_name), + limit=n_points, + ) + + context = "\n".join(r.payload["document"] for r in results.points) + + metaprompt = f""" + You are a software architect. + Answer the following question using the provided context. + If you can't find the answer, do not pretend you know it, but only answer "I don't know". + + Question: {question.strip()} + + Context: + {context.strip()} + + Answer: + """ + + return query_deepseek(metaprompt) +``` + +Now it's easier to ask a broad range of questions. + +**Question:** + +```python +rag("What can the stack for a web api look like?") +``` +**Answer:** + +```bash +'The stack for a web API can include the following components based on the provided context:\n\n1. **Web Framework**: FastAPI can be used as the web framework for building the API. It is modern, fast, and leverages Python type hints for better development and performance.\n\n2. **Reverse Proxy/Web Server**: NGINX can be used as a reverse proxy or web server to handle incoming HTTP requests, load balancing, and serving static content. It is known for its high performance and low resource consumption.\n\n3. **Containerization**: Docker can be used to containerize the application, making it easier to build, share, and run the API consistently across different environments without worrying about configuration issues.\n\nThis stack provides a robust, scalable, and efficient setup for building and deploying a web API.' +``` + +**Question:** + +```python +rag("Where is the nearest grocery store?") +``` + +**Answer:** + +```bash +"I don't know. The provided context does not contain any information about the location of the nearest grocery store." +``` + +Our model can now: + +1. Take advantage of the knowledge in our vector datastore. +2. Answer, based on the provided context, that it can not provide an answer. + +We have just shown a useful mechanism to mitigate the risks of hallucinations in Large Language Models. diff --git a/qdrant-landing/content/documentation/tutorials-basics/search-beginners.md b/qdrant-landing/content/documentation/tutorials-basics/search-beginners.md new file mode 100644 index 000000000..82c05d8ae --- /dev/null +++ b/qdrant-landing/content/documentation/tutorials-basics/search-beginners.md @@ -0,0 +1,245 @@ +--- +title: Semantic Search 101 +weight: 1 +aliases: + - /documentation/tutorials/mighty.md/ + - /documentation/tutorials/search-beginners/ + - /documentation/beginner-tutorials/search-beginners/ +--- + +# Build Your First Semantic Search Engine in 5 Minutes + +| Time: 5 - 15 min | Level: Beginner | | | +| --- | ----------- | ----------- |----------- | + +

+ +## Overview + +If you are new to vector databases, 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. + +Before you begin, you need to have a [recent version of Python](https://www.python.org/downloads/) installed. If you don't know how to run this code in a virtual environment, follow Python documentation for [Creating Virtual Environments](https://docs.python.org/3/tutorial/venv.html#creating-virtual-environments) first. + +This tutorial assumes you're in the bash shell. Use the Python documentation to activate a virtual environment, with commands such as: + +```bash +source tutorial-env/bin/activate +``` + +## 1. Installation + +You need to process your data so that the search engine can work with it. The [Sentence Transformers](https://www.sbert.net/) framework gives you access to common Large Language Models that turn raw data into embeddings. + +```bash +pip install -U sentence-transformers +``` + +Once encoded, this data needs to be kept somewhere. Qdrant lets you store data as embeddings. You can also use Qdrant to run search queries against this data. This means that you can ask the engine to give you relevant answers that go way beyond keyword matching. + +```bash +pip install -U qdrant-client +``` + + + +### Import the models + +Once the two main frameworks are defined, you need to specify the exact models this engine will use. + +```python +from qdrant_client import models, QdrantClient +from sentence_transformers import SentenceTransformer +``` + +The [Sentence Transformers](https://www.sbert.net/index.html) framework contains many embedding models. We'll take [all-MiniLM-L6-v2](https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2) as it has a good balance between speed and embedding quality for this tutorial. + +```python +encoder = SentenceTransformer("all-MiniLM-L6-v2") +``` + +## 2. Add the dataset + +[all-MiniLM-L6-v2](https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2) will encode the data you provide. Here you will list all the science fiction books in your library. Each book has metadata, a name, author, publication year and a short description. + +```python +documents = [ + { + "name": "The Time Machine", + "description": "A man travels through time and witnesses the evolution of humanity.", + "author": "H.G. Wells", + "year": 1895, + }, + { + "name": "Ender's Game", + "description": "A young boy is trained to become a military leader in a war against an alien race.", + "author": "Orson Scott Card", + "year": 1985, + }, + { + "name": "Brave New World", + "description": "A dystopian society where people are genetically engineered and conditioned to conform to a strict social hierarchy.", + "author": "Aldous Huxley", + "year": 1932, + }, + { + "name": "The Hitchhiker's Guide to the Galaxy", + "description": "A comedic science fiction series following the misadventures of an unwitting human and his alien friend.", + "author": "Douglas Adams", + "year": 1979, + }, + { + "name": "Dune", + "description": "A desert planet is the site of political intrigue and power struggles.", + "author": "Frank Herbert", + "year": 1965, + }, + { + "name": "Foundation", + "description": "A mathematician develops a science to predict the future of humanity and works to save civilization from collapse.", + "author": "Isaac Asimov", + "year": 1951, + }, + { + "name": "Snow Crash", + "description": "A futuristic world where the internet has evolved into a virtual reality metaverse.", + "author": "Neal Stephenson", + "year": 1992, + }, + { + "name": "Neuromancer", + "description": "A hacker is hired to pull off a near-impossible hack and gets pulled into a web of intrigue.", + "author": "William Gibson", + "year": 1984, + }, + { + "name": "The War of the Worlds", + "description": "A Martian invasion of Earth throws humanity into chaos.", + "author": "H.G. Wells", + "year": 1898, + }, + { + "name": "The Hunger Games", + "description": "A dystopian society where teenagers are forced to fight to the death in a televised spectacle.", + "author": "Suzanne Collins", + "year": 2008, + }, + { + "name": "The Andromeda Strain", + "description": "A deadly virus from outer space threatens to wipe out humanity.", + "author": "Michael Crichton", + "year": 1969, + }, + { + "name": "The Left Hand of Darkness", + "description": "A human ambassador is sent to a planet where the inhabitants are genderless and can change gender at will.", + "author": "Ursula K. Le Guin", + "year": 1969, + }, + { + "name": "The Three-Body Problem", + "description": "Humans encounter an alien civilization that lives in a dying system.", + "author": "Liu Cixin", + "year": 2008, + }, +] +``` + +## 3. Define storage location + +You need to tell Qdrant where to store embeddings. This is a basic demo, so your local computer will use its memory as temporary storage. + +```python +client = QdrantClient(":memory:") +``` + +## 4. Create a collection + +All data in Qdrant is organized by collections. In this case, you are storing books, so we are calling it `my_books`. + +```python +client.create_collection( + collection_name="my_books", + vectors_config=models.VectorParams( + size=encoder.get_sentence_embedding_dimension(), # Vector size is defined by used model + distance=models.Distance.COSINE, + ), +) +``` + +- The `vector_size` parameter defines the size of the vectors for a specific collection. If their size is different, it is impossible to calculate the distance between them. 384 is the encoder output dimensionality. You can also use model.get_sentence_embedding_dimension() to get the dimensionality of the model you are using. + +- The `distance` parameter lets you specify the function used to measure the distance between two points. + + +## 5. Upload data to collection + +Tell the database to upload `documents` to the `my_books` collection. This will give each record an id and a payload. The payload is just the metadata from the dataset. + +```python +client.upload_points( + collection_name="my_books", + points=[ + models.PointStruct( + id=idx, vector=encoder.encode(doc["description"]).tolist(), payload=doc + ) + for idx, doc in enumerate(documents) + ], +) +``` + +## 6. Ask the engine a question + +Now that the data is stored in Qdrant, you can ask it questions and receive semantically relevant results. + +```python +hits = client.query_points( + collection_name="my_books", + query=encoder.encode("alien invasion").tolist(), + limit=3, +).points + +for hit in hits: + print(hit.payload, "score:", hit.score) +``` + +**Response:** + +The search engine shows three of the most likely responses that have to do with the alien invasion. Each of the responses is assigned a score to show how close the response is to the original inquiry. + +```text +{'name': 'The War of the Worlds', 'description': 'A Martian invasion of Earth throws humanity into chaos.', 'author': 'H.G. Wells', 'year': 1898} score: 0.570093257022374 +{'name': "The Hitchhiker's Guide to the Galaxy", 'description': 'A comedic science fiction series following the misadventures of an unwitting human and his alien friend.', 'author': 'Douglas Adams', 'year': 1979} score: 0.5040468703143637 +{'name': 'The Three-Body Problem', 'description': 'Humans encounter an alien civilization that lives in a dying system.', 'author': 'Liu Cixin', 'year': 2008} score: 0.45902943411768216 +``` + +### Narrow down the query + +How about the most recent book from the early 2000s? + +```python +hits = client.query_points( + collection_name="my_books", + query=encoder.encode("alien invasion").tolist(), + query_filter=models.Filter( + must=[models.FieldCondition(key="year", range=models.Range(gte=2000))] + ), + limit=1, +).points + +for hit in hits: + print(hit.payload, "score:", hit.score) +``` + +**Response:** + +The query has been narrowed down to one result from 2008. + +```text +{'name': 'The Three-Body Problem', 'description': 'Humans encounter an alien civilization that lives in a dying system.', 'author': 'Liu Cixin', 'year': 2008} score: 0.45902943411768216 +``` + +## Next Steps + +Congratulations, you have just created your very first search engine! Trust us, the rest of Qdrant is not that complicated, either. For your next tutorial you should try building an actual [Neural Search Service with a complete API and a dataset](/documentation/tutorials/neural-search/). From 13b667dc0c1d7ff99ae9baaf773af26e26dd3de8 Mon Sep 17 00:00:00 2001 From: trean Date: Fri, 16 Jan 2026 16:10:51 +0100 Subject: [PATCH 09/11] moved documentation table styles to the another file, used the existing theme colors, changed pills look, made some tweaks for better dark and light theme styling (#2081) --- .../assets/css/_theme-variables.scss | 2 + .../qdrant-2024/assets/css/documentation.scss | 67 +--------------- .../documentation/_documentation.scss | 79 +++++++++++++++++++ 3 files changed, 82 insertions(+), 66 deletions(-) diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/_theme-variables.scss b/qdrant-landing/themes/qdrant-2024/assets/css/_theme-variables.scss index c8eb4ba2a..2ff3ff4d4 100644 --- a/qdrant-landing/themes/qdrant-2024/assets/css/_theme-variables.scss +++ b/qdrant-landing/themes/qdrant-2024/assets/css/_theme-variables.scss @@ -45,12 +45,14 @@ $success-10: #00210f; $success-30: #00522f; $success-50: #008a53; $success-70: #50bf83; +$success-80: #7de2ad; $success-90: #befad6; $warning-10: #311300; $warning-30: #733501; $warning-50: #e0700d; $warning-70: #ff8d39; +$warning-80: #ffb400; $warning-90: #ffdbc7; $error-10: #410002; diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/documentation.scss b/qdrant-landing/themes/qdrant-2024/assets/css/documentation.scss index e555cc443..312d3e809 100644 --- a/qdrant-landing/themes/qdrant-2024/assets/css/documentation.scss +++ b/qdrant-landing/themes/qdrant-2024/assets/css/documentation.scss @@ -13,69 +13,4 @@ @import 'partials/feedback'; @import 'partials/documentation/docs-footer'; @import 'partials/video'; -@import 'search/dark-theme'; - -// Table Custom Styling -.documentation { - table { - width: 100%; - border-collapse: collapse; - margin: 1rem 0; - - th { - text-align: left; - padding: 8px 10px; - } - - td { - padding: 8px 10px; - vertical-align: middle; - line-height: 1.4; - - // Link styling - a { - color: #DC244C; - text-decoration: none; - &:hover { - text-decoration: underline; - } - } - } - - tr { - // transition for the background color change - transition: background-color 0.2s ease; - - &:hover { - // hover color highlight - background-color: rgba(59, 130, 246, 0.05); - - // make the link slightly more prominent on hover - td a { - color: darken(#ef4444, 10%); - } - } - } - - // Ensure the header row doesn't highlight on hover - thead tr:hover { - background-color: transparent; - } - } - - // Stack Pill Styling - .pill { - display: inline-block; - padding: 1px 8px; - border-radius: 12px; - border: 1px solid #DC244C; - color: #DC244C; - //background-color: rgba(59, 130, 246, 0.1); - font-size: 0.85rem; - } - - // Level Color-Coding - .text-green { color: #10b981 } - .text-yellow { color: #f59e0b } - .text-red { color: #ef4444 } -} \ No newline at end of file +@import 'search/dark-theme'; \ No newline at end of file diff --git a/qdrant-landing/themes/qdrant-2024/assets/css/partials/documentation/_documentation.scss b/qdrant-landing/themes/qdrant-2024/assets/css/partials/documentation/_documentation.scss index 10da91489..ed8711fb9 100644 --- a/qdrant-landing/themes/qdrant-2024/assets/css/partials/documentation/_documentation.scss +++ b/qdrant-landing/themes/qdrant-2024/assets/css/partials/documentation/_documentation.scss @@ -1,4 +1,5 @@ @use '../../helpers/functions' as *; +@use 'sass:color'; .documentation { background-color: $neutral-10; @@ -19,6 +20,68 @@ flex-wrap: wrap; } + table { + width: 100%; + border-collapse: collapse; + margin: 1rem 0; + + th { + text-align: left; + padding: 8px 10px; + } + + td { + padding: 8px 10px; + vertical-align: middle; + line-height: 1.4; + + // Link styling + a { + color: $primary-50; + text-decoration: none; + &:hover { + text-decoration: underline; + } + } + } + + tr { + // transition for the background color change + transition: background-color 0.2s ease; + + &:hover { + // hover color highlight + background-color: $neutral-20; + + // make the link slightly more prominent on hover + td a { + color: darken($primary-60, 10%); + } + } + } + + // Ensure the header row doesn't highlight on hover + thead tr:hover { + background-color: transparent; + } + } + + // Stack Pill Styling + .pill { + display: inline-block; + padding: 1px 8px; + border-radius: 12px; + font-size: 0.85rem; + background-color: $neutral-30; + color: $neutral-94; + border: 0; + } + + // Level Color-Coding + .text-green { color: $success-80; } + .text-yellow { color: $warning-80; } + .text-red { color: $error-50; } + @include media-breakpoint-up(xl) { &__container { max-width: 100vw !important; @@ -52,5 +115,21 @@ box-shadow: 0 0 0 2px $neutral-70; } } + + table { + tr:hover { + background-color: $neutral-98; + } + } + + .pill { + background-color: $neutral-70; + border: 0; + color: $neutral-100; + } + + .text-green { color: color.adjust($success-50, $saturation: 5%, $lightness: 8%); } + .text-yellow { color: color.adjust($warning-50, $saturation: 5%, $lightness: 8%); } + .text-red { color: color.adjust($error-50, $lightness: 3%); } } } From fe6796f1da06ba00566b47d61e8cfe85dddfed9b Mon Sep 17 00:00:00 2001 From: kanungle Date: Wed, 28 Jan 2026 19:31:13 -0800 Subject: [PATCH 10/11] updated tutorial names, reverted integrations tutorials to build, cleaned file organization, hid older tutorials --- .../documentation/data-management/_index.md | 2 +- .../documentation/dl-integration-examples.md | 2 +- .../content/documentation/dl-integrations.md | 2 +- .../documentation/embeddings/_index.md | 2 +- .../documentation/frameworks/_index.md | 2 +- .../documentation/observability/_index.md | 2 +- .../content/documentation/platforms/_index.md | 2 +- .../content/documentation/send-data/_index.md | 1 + .../send-data/data-streaming-kafka-qdrant.md | 1 + .../documentation/send-data/databricks.md | 1 + .../send-data/qdrant-airflow-astronomer.md | 1 + .../tutorials-and-examples/_index.md | 9 +- .../cloud-inference-hybrid-search.md | 1 + .../huggingface-datasets.md | 0 .../tutorials-build-essentials/_index.md | 23 ++++ .../agentic-rag-camelai-discord.md | 0 .../agentic-rag-crewai-zoom.md | 2 +- .../agentic-rag-langgraph.md | 3 +- .../data-ingestion-beginners.md | 3 +- .../multimodal-search.md | 3 +- .../qdrant-n8n.md | 0 .../rag-deepseek.md | 0 .../tutorials-ecosystem/_index.md | 11 +- .../documentation/tutorials-lp-basics.md | 7 +- .../documentation/tutorials-lp-develop.md | 6 +- .../documentation/tutorials-lp-ecosystem.md | 21 ---- .../documentation/tutorials-lp-operations.md | 13 +-- .../documentation/tutorials-lp-overview.md | 108 +++++++++++++----- .../tutorials-lp-rag-and-agents.md | 20 ---- .../tutorials-lp-search-engineering.md | 20 ++-- .../tutorials-rag-and-agents/_index.md | 21 ---- qdrant-landing/content/learn/_index.md | 4 +- .../content/learn/ref-tutorials-ecosystem.md | 11 -- .../learn/ref-tutorials-rag-and-agents.md | 11 -- 34 files changed, 155 insertions(+), 160 deletions(-) rename qdrant-landing/content/documentation/{tutorials-ecosystem => tutorials-basics}/huggingface-datasets.md (100%) create mode 100644 qdrant-landing/content/documentation/tutorials-build-essentials/_index.md rename qdrant-landing/content/documentation/{tutorials-rag-and-agents => tutorials-build-essentials}/agentic-rag-camelai-discord.md (100%) rename qdrant-landing/content/documentation/{tutorials-rag-and-agents => tutorials-build-essentials}/agentic-rag-crewai-zoom.md (99%) rename qdrant-landing/content/documentation/{tutorials-rag-and-agents => tutorials-build-essentials}/agentic-rag-langgraph.md (99%) rename qdrant-landing/content/documentation/{tutorials-ecosystem => tutorials-build-essentials}/data-ingestion-beginners.md (99%) rename qdrant-landing/content/documentation/{tutorials-rag-and-agents => tutorials-build-essentials}/multimodal-search.md (99%) rename qdrant-landing/content/documentation/{tutorials-ecosystem => tutorials-build-essentials}/qdrant-n8n.md (100%) rename qdrant-landing/content/documentation/{tutorials-basics => tutorials-build-essentials}/rag-deepseek.md (100%) delete mode 100644 qdrant-landing/content/documentation/tutorials-lp-ecosystem.md delete mode 100644 qdrant-landing/content/documentation/tutorials-lp-rag-and-agents.md delete mode 100644 qdrant-landing/content/documentation/tutorials-rag-and-agents/_index.md delete mode 100644 qdrant-landing/content/learn/ref-tutorials-ecosystem.md delete mode 100644 qdrant-landing/content/learn/ref-tutorials-rag-and-agents.md diff --git a/qdrant-landing/content/documentation/data-management/_index.md b/qdrant-landing/content/documentation/data-management/_index.md index 58d611af6..ea2b3f501 100644 --- a/qdrant-landing/content/documentation/data-management/_index.md +++ b/qdrant-landing/content/documentation/data-management/_index.md @@ -1,6 +1,6 @@ --- title: Data Management -weight: 18 +weight: 11 partition: build --- diff --git a/qdrant-landing/content/documentation/dl-integration-examples.md b/qdrant-landing/content/documentation/dl-integration-examples.md index 96b51f51e..5f44e6b22 100644 --- a/qdrant-landing/content/documentation/dl-integration-examples.md +++ b/qdrant-landing/content/documentation/dl-integration-examples.md @@ -2,7 +2,7 @@ #Delimiter files are used to separate the list of documentation pages into sections. title: "Integration Guides" type: delimiter -weight: 24 # Change this weight to change order of sections +weight: 20 # Change this weight to change order of sections partition: build sitemapExclude: True _build: diff --git a/qdrant-landing/content/documentation/dl-integrations.md b/qdrant-landing/content/documentation/dl-integrations.md index c422a89d7..7d0ef8fb5 100644 --- a/qdrant-landing/content/documentation/dl-integrations.md +++ b/qdrant-landing/content/documentation/dl-integrations.md @@ -2,7 +2,7 @@ #Delimiter files are used to separate the list of documentation pages into sections. title: "Integrations" type: delimiter -weight: 17 # Change this weight to change order of sections +weight: 10 # Change this weight to change order of sections sitemapExclude: True _build: publishResources: false diff --git a/qdrant-landing/content/documentation/embeddings/_index.md b/qdrant-landing/content/documentation/embeddings/_index.md index 9e31684ba..50b13828e 100644 --- a/qdrant-landing/content/documentation/embeddings/_index.md +++ b/qdrant-landing/content/documentation/embeddings/_index.md @@ -1,6 +1,6 @@ --- title: Embeddings -weight: 19 +weight: 12 partition: build --- diff --git a/qdrant-landing/content/documentation/frameworks/_index.md b/qdrant-landing/content/documentation/frameworks/_index.md index 63d622848..be239bc7e 100644 --- a/qdrant-landing/content/documentation/frameworks/_index.md +++ b/qdrant-landing/content/documentation/frameworks/_index.md @@ -1,6 +1,6 @@ --- title: Frameworks -weight: 20 +weight: 13 partition: build aliases: ["/documentation/frameworks/memgpt/"] --- diff --git a/qdrant-landing/content/documentation/observability/_index.md b/qdrant-landing/content/documentation/observability/_index.md index 68abfae1a..cb83f506b 100644 --- a/qdrant-landing/content/documentation/observability/_index.md +++ b/qdrant-landing/content/documentation/observability/_index.md @@ -1,6 +1,6 @@ --- title: Observability -weight: 21 +weight: 14 partition: build --- diff --git a/qdrant-landing/content/documentation/platforms/_index.md b/qdrant-landing/content/documentation/platforms/_index.md index fe9e07f7b..e32999c0b 100644 --- a/qdrant-landing/content/documentation/platforms/_index.md +++ b/qdrant-landing/content/documentation/platforms/_index.md @@ -1,6 +1,6 @@ --- title: Platforms -weight: 22 +weight: 15 partition: build --- diff --git a/qdrant-landing/content/documentation/send-data/_index.md b/qdrant-landing/content/documentation/send-data/_index.md index b120a05e7..46338cb12 100644 --- a/qdrant-landing/content/documentation/send-data/_index.md +++ b/qdrant-landing/content/documentation/send-data/_index.md @@ -2,6 +2,7 @@ title: Send Data to Qdrant weight: 25 partition: build +hideInSidebar: true --- ## How to Send Your Data to a Qdrant Cluster diff --git a/qdrant-landing/content/documentation/send-data/data-streaming-kafka-qdrant.md b/qdrant-landing/content/documentation/send-data/data-streaming-kafka-qdrant.md index ca39a786f..86dcc4ddf 100644 --- a/qdrant-landing/content/documentation/send-data/data-streaming-kafka-qdrant.md +++ b/qdrant-landing/content/documentation/send-data/data-streaming-kafka-qdrant.md @@ -1,6 +1,7 @@ --- title: How to Setup Seamless Data Streaming with Kafka and Qdrant weight: 49 +hideInSidebar: true aliases: - /examples/data-streaming-kafka-qdrant/ --- diff --git a/qdrant-landing/content/documentation/send-data/databricks.md b/qdrant-landing/content/documentation/send-data/databricks.md index 19696457e..566a14124 100644 --- a/qdrant-landing/content/documentation/send-data/databricks.md +++ b/qdrant-landing/content/documentation/send-data/databricks.md @@ -1,6 +1,7 @@ --- title: Qdrant on Databricks weight: 36 +hideInSidebar: true aliases: - /documentation/examples/databricks/ --- diff --git a/qdrant-landing/content/documentation/send-data/qdrant-airflow-astronomer.md b/qdrant-landing/content/documentation/send-data/qdrant-airflow-astronomer.md index 4d1ff1d72..ef0a0b9af 100644 --- a/qdrant-landing/content/documentation/send-data/qdrant-airflow-astronomer.md +++ b/qdrant-landing/content/documentation/send-data/qdrant-airflow-astronomer.md @@ -1,6 +1,7 @@ --- title: Semantic Querying with Airflow and Astronomer weight: 36 +hideInSidebar: true aliases: - /documentation/examples/qdrant-airflow-astronomer/ --- diff --git a/qdrant-landing/content/documentation/tutorials-and-examples/_index.md b/qdrant-landing/content/documentation/tutorials-and-examples/_index.md index 1fa7bfb7e..05ba85684 100644 --- a/qdrant-landing/content/documentation/tutorials-and-examples/_index.md +++ b/qdrant-landing/content/documentation/tutorials-and-examples/_index.md @@ -5,8 +5,7 @@ partition: cloud --- ## Cloud Tutorials & Examples -| Example | Description | -| ----------------------------------- | ------------------------------------------------------------------------------------------- | -| [Using Cloud Inference to Build Hybrid Search](/documentation/tutorials-and-examples/cloud-inference-hybrid-search/) | Cloud inference hybrid example | - - +| Tutorial | Objective | Stack | Time | Level | +| :--- | :--- | :--- | :--- | :--- | +| [Qdrant Cloud Prometheus Monitoring](/documentation/tutorials-and-examples/managed-cloud-prometheus/) | Observability with Prometheus and Grafana. | Prometheus | 30m | Intermediate | +| [Self-Hosted Prometheus Monitoring](/documentation/tutorials-and-examples/hybrid-cloud-prometheus/) | Observability for hybrid/private cloud setups. | Prometheus | 30m | Intermediate | diff --git a/qdrant-landing/content/documentation/tutorials-and-examples/cloud-inference-hybrid-search.md b/qdrant-landing/content/documentation/tutorials-and-examples/cloud-inference-hybrid-search.md index 20525dbb4..11acabd21 100644 --- a/qdrant-landing/content/documentation/tutorials-and-examples/cloud-inference-hybrid-search.md +++ b/qdrant-landing/content/documentation/tutorials-and-examples/cloud-inference-hybrid-search.md @@ -1,5 +1,6 @@ --- title: Using Cloud Inference to Build Hybrid Search +hideInSidebar: true weight: 35 --- # Using Cloud Inference with Qdrant for Vector Search diff --git a/qdrant-landing/content/documentation/tutorials-ecosystem/huggingface-datasets.md b/qdrant-landing/content/documentation/tutorials-basics/huggingface-datasets.md similarity index 100% rename from qdrant-landing/content/documentation/tutorials-ecosystem/huggingface-datasets.md rename to qdrant-landing/content/documentation/tutorials-basics/huggingface-datasets.md diff --git a/qdrant-landing/content/documentation/tutorials-build-essentials/_index.md b/qdrant-landing/content/documentation/tutorials-build-essentials/_index.md new file mode 100644 index 000000000..6247231bb --- /dev/null +++ b/qdrant-landing/content/documentation/tutorials-build-essentials/_index.md @@ -0,0 +1,23 @@ +--- +title: Essential Examples +weight: 21 +partition: build +--- +# Essential Examples + +*Step-by-step guides for connecting Qdrant to the broader AI ecosystem and data stacks.* + +| Tutorial | Objective | Stack | Time | Level | +| :--- | :--- | :--- | :--- | :--- | +| [5-Minute RAG with DeepSeek](/documentation/tutorials-build-essentials/rag-deepseek/) | Build a RAG pipeline with DeepSeek enrichment. | Python | 5m | Beginner | +| [Discord RAG Bot](/documentation/tutorials-build-essentials/agentic-rag-camelai-discord/) | Develop a functional bot with CAMEL-AI. | OpenAI | 45m | Intermediate | +| [Agentic RAG with CrewAI](/documentation/tutorials-build-essentials/agentic-rag-crewai-zoom/) | Step-by-step multi-agent RAG system. | CrewAI | 45m | Beginner | +| [n8n Workflow Automation](/documentation/tutorials-build-essentials/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/tutorials-rag-and-agents/agentic-rag-camelai-discord.md b/qdrant-landing/content/documentation/tutorials-build-essentials/agentic-rag-camelai-discord.md similarity index 100% rename from qdrant-landing/content/documentation/tutorials-rag-and-agents/agentic-rag-camelai-discord.md rename to qdrant-landing/content/documentation/tutorials-build-essentials/agentic-rag-camelai-discord.md diff --git a/qdrant-landing/content/documentation/tutorials-rag-and-agents/agentic-rag-crewai-zoom.md b/qdrant-landing/content/documentation/tutorials-build-essentials/agentic-rag-crewai-zoom.md similarity index 99% rename from qdrant-landing/content/documentation/tutorials-rag-and-agents/agentic-rag-crewai-zoom.md rename to qdrant-landing/content/documentation/tutorials-build-essentials/agentic-rag-crewai-zoom.md index cb774ff2a..6915e08e6 100644 --- a/qdrant-landing/content/documentation/tutorials-rag-and-agents/agentic-rag-crewai-zoom.md +++ b/qdrant-landing/content/documentation/tutorials-build-essentials/agentic-rag-crewai-zoom.md @@ -1,7 +1,7 @@ --- title: Simple Agentic RAG System weight: 2 -#partition: build +partition: build social_preview_image: /documentation/examples/agentic-rag-crewai-zoom/social_preview.png aliases: - /documentation/agentic-rag-crewai-zoom/ diff --git a/qdrant-landing/content/documentation/tutorials-rag-and-agents/agentic-rag-langgraph.md b/qdrant-landing/content/documentation/tutorials-build-essentials/agentic-rag-langgraph.md similarity index 99% rename from qdrant-landing/content/documentation/tutorials-rag-and-agents/agentic-rag-langgraph.md rename to qdrant-landing/content/documentation/tutorials-build-essentials/agentic-rag-langgraph.md index b8925601f..3c2801f08 100644 --- a/qdrant-landing/content/documentation/tutorials-rag-and-agents/agentic-rag-langgraph.md +++ b/qdrant-landing/content/documentation/tutorials-build-essentials/agentic-rag-langgraph.md @@ -1,7 +1,8 @@ --- title: Agentic RAG With LangGraph weight: 3 -#partition: build +partition: build +hideInSidebar: true aliases: - /documentation/agentic-rag-langgraph/ --- diff --git a/qdrant-landing/content/documentation/tutorials-ecosystem/data-ingestion-beginners.md b/qdrant-landing/content/documentation/tutorials-build-essentials/data-ingestion-beginners.md similarity index 99% rename from qdrant-landing/content/documentation/tutorials-ecosystem/data-ingestion-beginners.md rename to qdrant-landing/content/documentation/tutorials-build-essentials/data-ingestion-beginners.md index 63ae326db..e93fd10ac 100644 --- a/qdrant-landing/content/documentation/tutorials-ecosystem/data-ingestion-beginners.md +++ b/qdrant-landing/content/documentation/tutorials-build-essentials/data-ingestion-beginners.md @@ -1,7 +1,8 @@ --- title: Data Ingestion for Beginners weight: 2 -#partition: build +partition: build +hideInSidebar: true social_preview_image: /documentation/examples/data-ingestion-beginners/social_preview.png aliases: - /documentation/data-ingestion-beginners/ diff --git a/qdrant-landing/content/documentation/tutorials-rag-and-agents/multimodal-search.md b/qdrant-landing/content/documentation/tutorials-build-essentials/multimodal-search.md similarity index 99% rename from qdrant-landing/content/documentation/tutorials-rag-and-agents/multimodal-search.md rename to qdrant-landing/content/documentation/tutorials-build-essentials/multimodal-search.md index a5f86dd95..90ed88754 100644 --- a/qdrant-landing/content/documentation/tutorials-rag-and-agents/multimodal-search.md +++ b/qdrant-landing/content/documentation/tutorials-build-essentials/multimodal-search.md @@ -1,7 +1,8 @@ --- title: Multilingual & Multimodal RAG with LlamaIndex weight: 5 -#partition: build +hideInSidebar: true +partition: build social_preview_image: /documentation/examples/multimodal-search/social_preview.png aliases: - /documentation/tutorials/multimodal-search-fastembed/ diff --git a/qdrant-landing/content/documentation/tutorials-ecosystem/qdrant-n8n.md b/qdrant-landing/content/documentation/tutorials-build-essentials/qdrant-n8n.md similarity index 100% rename from qdrant-landing/content/documentation/tutorials-ecosystem/qdrant-n8n.md rename to qdrant-landing/content/documentation/tutorials-build-essentials/qdrant-n8n.md diff --git a/qdrant-landing/content/documentation/tutorials-basics/rag-deepseek.md b/qdrant-landing/content/documentation/tutorials-build-essentials/rag-deepseek.md similarity index 100% rename from qdrant-landing/content/documentation/tutorials-basics/rag-deepseek.md rename to qdrant-landing/content/documentation/tutorials-build-essentials/rag-deepseek.md diff --git a/qdrant-landing/content/documentation/tutorials-ecosystem/_index.md b/qdrant-landing/content/documentation/tutorials-ecosystem/_index.md index 0054b6a17..9b2791e59 100644 --- a/qdrant-landing/content/documentation/tutorials-ecosystem/_index.md +++ b/qdrant-landing/content/documentation/tutorials-ecosystem/_index.md @@ -1,22 +1,17 @@ --- -title: Ecosystem & Integrations +title: Integration Tutorials weight: 36 is_empty: true hideInSidebar: true aliases: - how-to - tutorials -partition: qdrant +partition: build --- + # Ecosystem & Integrations *Connect Qdrant to cloud providers, data streams, and ETL tools.* | Tutorial | Objective | Stack | Time | Level | | :--- | :--- | :--- | :--- | :--- | -| [S3 Ingestion with LangChain](/documentation/data-ingestion-beginners/) | Stream data from AWS S3 to vector store. | LangChain | 30m | Beginner | -| [Hugging Face Datasets](/documentation/tutorials-ecosystem/huggingface-datasets/) | Load and search public ML datasets. | Python | 15m | Beginner | -| [Databricks Integration](/documentation/send-data/databricks/) | Vectorize datasets using FastEmbed on Databricks. | Databricks | 30m | Intermediate | -| [Airflow & Astronomer](/documentation/send-data/qdrant-airflow-astronomer/) | Orchestrate data engineering workflows. | Airflow | 45m | Intermediate | -| [No-Code Automation (n8n)](/documentation/qdrant-n8n/) | Combine Qdrant with low-code n8n workflows. | n8n | 45m | Intermediate | -| [Kafka Data Streaming](/documentation/send-data/data-streaming-kafka-qdrant/) | Setup Qdrant Sink Connector for real-time data. | Kafka | 60m | Advanced | \ No newline at end of file diff --git a/qdrant-landing/content/documentation/tutorials-lp-basics.md b/qdrant-landing/content/documentation/tutorials-lp-basics.md index b92a70681..698555787 100644 --- a/qdrant-landing/content/documentation/tutorials-lp-basics.md +++ b/qdrant-landing/content/documentation/tutorials-lp-basics.md @@ -8,11 +8,10 @@ aliases: partition: qdrant --- -# Basic Tutorials +### Basic Tutorials *Get up and running with Qdrant in minutes.* | Tutorial | Objective | Stack | Time | Level | | :--- | :--- | :--- | :--- | :--- | -| [Local Qdrant Setup](/documentation/quickstart/) | Basic CRUD operations and local deployment. | Python | 10m | Beginner | -| [5-Minute Semantic Search](/documentation/tutorials-basics/search-beginners/) | Build a search engine for science fiction books. | Python | 5m | Beginner | -| [5-Minute RAG with DeepSeek](/documentation/tutorials-basics/rag-deepseek/) | Build a RAG pipeline with DeepSeek enrichment. | Python | 5m | Beginner | \ No newline at end of file +| [Qdrant Local Quickstart](/documentation/quickstart/) | Basic CRUD operations and local deployment. | Python | 10m | Beginner | +| [Semantic Search 101](/documentation/tutorials-basics/search-beginners/) | Build a search engine for science fiction books. | Python | 5m | Beginner | \ No newline at end of file diff --git a/qdrant-landing/content/documentation/tutorials-lp-develop.md b/qdrant-landing/content/documentation/tutorials-lp-develop.md index 110e7417f..afe611846 100644 --- a/qdrant-landing/content/documentation/tutorials-lp-develop.md +++ b/qdrant-landing/content/documentation/tutorials-lp-develop.md @@ -5,10 +5,10 @@ is_empty: false partition: qdrant --- -# Develop & Implement Tutorials +### Develop & Implement Tutorials *Core tools and APIs for building with Qdrant.* | Tutorial | Objective | Stack | Time | Level | | :--- | :--- | :--- | :--- | :--- | -| [Bulk Data Uploads](/documentation/tutorials-develop/bulk-upload/) | High-scale ingestion tricks for power users. | Python | 20m | Intermediate | -| [Python Async API](/documentation/tutorials-develop/async-api/) | Use Asynchronous programming for efficiency. | Python | 25m | Intermediate | +| [Bulk Operations](/documentation/tutorials-develop/bulk-upload/) | High-scale ingestion approaches. | Python | 20m | Intermediate | +| [Async API](/documentation/tutorials-develop/async-api/) | Use Asynchronous programming for efficiency. | Python | 25m | Intermediate | diff --git a/qdrant-landing/content/documentation/tutorials-lp-ecosystem.md b/qdrant-landing/content/documentation/tutorials-lp-ecosystem.md deleted file mode 100644 index f5581ebb8..000000000 --- a/qdrant-landing/content/documentation/tutorials-lp-ecosystem.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: Ecosystem & Integrations -weight: 22 -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 | -| :--- | :--- | :--- | :--- | :--- | -| [S3 Ingestion with LangChain](/documentation/data-ingestion-beginners/) | Stream data from AWS S3 to vector store. | LangChain | 30m | Beginner | -| [Hugging Face Datasets](/documentation/tutorials-ecosystem/huggingface-datasets/) | Load and search public ML datasets. | Python | 15m | Beginner | -| [Databricks Integration](/documentation/send-data/databricks/) | Vectorize datasets using FastEmbed on Databricks. | Databricks | 30m | Intermediate | -| [Airflow & Astronomer](/documentation/send-data/qdrant-airflow-astronomer/) | Orchestrate data engineering workflows. | Airflow | 45m | Intermediate | -| [No-Code Automation (n8n)](/documentation/qdrant-n8n/) | Combine Qdrant with low-code n8n workflows. | n8n | 45m | Intermediate | -| [Kafka Data Streaming](/documentation/send-data/data-streaming-kafka-qdrant/) | Setup Qdrant Sink Connector for real-time data. | Kafka | 60m | Advanced | \ No newline at end of file diff --git a/qdrant-landing/content/documentation/tutorials-lp-operations.md b/qdrant-landing/content/documentation/tutorials-lp-operations.md index 512c4297e..088325ecc 100644 --- a/qdrant-landing/content/documentation/tutorials-lp-operations.md +++ b/qdrant-landing/content/documentation/tutorials-lp-operations.md @@ -8,14 +8,13 @@ aliases: partition: qdrant --- -# Operations & Scale Tutorials +### Operations & Scale Tutorials *Production-grade management, monitoring, and high-volume optimization.* | Tutorial | Objective | Stack | Time | Level | | :--- | :--- | :--- | :--- | :--- | -| [Snapshot & Backup](/documentation/tutorials-operations/create-snapshot/) | Create and restore collection snapshots. | Python | 20m | Beginner | -| [Cloud Inference Search](/documentation/tutorials-and-examples/cloud-inference-hybrid-search/) | Hybrid search using Qdrant's built-in inference. | Any | 20m | Beginner | -| [Embedding Migration](/documentation/tutorials-operations/migration/) | Move dense and sparse embeddings to Qdrant. | CLI | 30m | Intermediate | -| [Monitor Managed Cloud](/documentation/tutorials-and-examples/managed-cloud-prometheus/) | Observability with Prometheus and Grafana. | Prometheus | 30m | Intermediate | -| [Monitor Private Cloud](/documentation/tutorials-and-examples/hybrid-cloud-prometheus/) | Observability for hybrid/private cloud setups. | Prometheus | 30m | Intermediate | -| [Billion-Scale Search](/documentation/tutorials-operations/large-scale-search/) | Cost-efficient search for LAION-400M datasets. | None | 2 days | Advanced | \ No newline at end of file +| [Snapshots](/documentation/tutorials-operations/create-snapshot/) | Create and restore collection snapshots. | Python | 20m | Beginner | +| [Data Migration](/documentation/tutorials-operations/migration/) | Move embeddings to Qdrant. | CLI | 30m | Intermediate | +| [Qdrant Cloud Prometheus Monitoring](/documentation/tutorials-and-examples/managed-cloud-prometheus/) | Observability with Prometheus and Grafana. | Prometheus | 30m | Intermediate | +| [Self-Hosted Prometheus Monitoring](/documentation/tutorials-and-examples/hybrid-cloud-prometheus/) | Observability for hybrid/private cloud setups. | Prometheus | 30m | Intermediate | +| [Large-Scale Search](/documentation/tutorials-operations/large-scale-search/) | Cost-efficient search for LAION-400M datasets. | None | 2d | Advanced | \ No newline at end of file diff --git a/qdrant-landing/content/documentation/tutorials-lp-overview.md b/qdrant-landing/content/documentation/tutorials-lp-overview.md index dec273016..c92ee6d0e 100644 --- a/qdrant-landing/content/documentation/tutorials-lp-overview.md +++ b/qdrant-landing/content/documentation/tutorials-lp-overview.md @@ -7,6 +7,7 @@ aliases: - tutorials partition: qdrant --- + # Qdrant Tutorial Repository ### Basic Tutorials @@ -14,8 +15,61 @@ partition: qdrant | Tutorial | Objective | Stack | Time | Level | | :--- | :--- | :--- | :--- | :--- | -| [Local Qdrant Setup](/documentation/quickstart/) | Basic CRUD operations and local deployment. | Python | 10m | Beginner | -| [5-Minute Semantic Search](/documentation/tutorials-basics/search-beginners/) | Build a search engine for science fiction books. | Python | 5m | Beginner | +| [Qdrant Local Quickstart](/documentation/quickstart/) | Basic CRUD operations and local deployment. | Python | 10m | Beginner | +| [Semantic Search 101](/documentation/tutorials-basics/search-beginners/) | Build a search engine for science fiction books. | Python | 5m | Beginner | + +--- + +### Search Engineering +*Master vector search modalities, reranking, and retrieval quality.* + +| Tutorial | Objective | Stack | Time | Level | +| :--- | :--- | :--- | :--- | :--- | +| [Hybrid Search with FastEmbed](/documentation/tutorials-search-engineering/hybrid-search-fastembed/) | Combine dense and sparse search. | FastAPI | 20m | Beginner | +| [Semantic Search Basics](/documentation/tutorials-search-engineering/neural-search/) | Deploy a search service for company descriptions. | FastAPI | 30m | Beginner | +| [Collaborative Filtering](/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | +| [Multivector Document Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | +| [Retrieval Quality Evaluation](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure quality and tune HNSW parameters. | Python | 30m | Intermediate | +| [Hybrid Search with Reranking](/documentation/tutorials-search-engineering/reranking-hybrid-search/) | Implement late interaction and sparse reranking. | Python | 40m | Intermediate | +| [Semantic Search for Code](/documentation/tutorials-search-engineering/code-search/) | Navigate codebases using vector similarity. | Python | 45m | Intermediate | +| [Multivectors and Late Interaction](/documentation/advanced-tutorials/using-multivector-representations/) | Effective use of multivector representations. | Python | 30m | Intermediate | +| [Static Embeddings](/documentation/tutorials-search-engineering/static-embeddings/) | Evaluate the utility of static embeddings. | Python | 20m | Intermediate | + +--- + +### Operations & Scale +*Production-grade management, monitoring, and high-volume optimization.* + +| Tutorial | Objective | Stack | Time | Level | +| :--- | :--- | :--- | :--- | :--- | +| [Snapshots](/documentation/tutorials-operations/create-snapshot/) | Create and restore collection snapshots. | Python | 20m | Beginner | +| [Data Migration](/documentation/tutorials-operations/migration/) | Move embeddings to Qdrant. | CLI | 30m | Intermediate | +| [Qdrant Cloud Prometheus Monitoring](/documentation/tutorials-and-examples/managed-cloud-prometheus/) | Observability with Prometheus and Grafana. | Prometheus | 30m | Intermediate | +| [Self-Hosted Prometheus Monitoring](/documentation/tutorials-and-examples/hybrid-cloud-prometheus/) | Observability for hybrid/private cloud setups. | Prometheus | 30m | Intermediate | +| [Large-Scale Search](/documentation/tutorials-operations/large-scale-search/) | Cost-efficient search for LAION-400M datasets. | None | 2d | Advanced | + +--- + +### Develop & Implement +*Core tools and APIs for building with Qdrant.* + +| Tutorial | Objective | Stack | Time | Level | +| :--- | :--- | :--- | :--- | :--- | +| [Bulk Operations](/documentation/tutorials-develop/bulk-upload/) | High-scale ingestion approaches. | Python | 20m | Intermediate | +| [Async API](/documentation/tutorials-develop/async-api/) | Use Asynchronous programming for efficiency. | Python | 25m | Intermediate | + + + \ No newline at end of file diff --git a/qdrant-landing/content/documentation/tutorials-lp-rag-and-agents.md b/qdrant-landing/content/documentation/tutorials-lp-rag-and-agents.md deleted file mode 100644 index 79963b8f7..000000000 --- a/qdrant-landing/content/documentation/tutorials-lp-rag-and-agents.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -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 | -| :--- | :--- | :--- | :--- | :--- | -| [Multimodal Search (LlamaIndex)](/documentation/multimodal-search/) | Search across image and text modalities. | LlamaIndex | 15m | Beginner | -| [Agentic RAG with CrewAI](/documentation/agentic-rag-crewai-zoom/) | Step-by-step multi-agent RAG system. | CrewAI | 45m | Beginner | -| [Agentic RAG with LangGraph](/documentation/agentic-rag-langgraph/) | Build AI agents to answer library documentation. | LangGraph | 45m | Intermediate | -| [Agentic Discord ChatBot](/documentation/agentic-rag-camelai-discord/) | Develop a functional bot with CAMEL-AI. | OpenAI | 45m | Intermediate | -| [Automate Metadata Filtering](/documentation/search-precision/automate-filtering-with-llms/) | Use LLM structured output for dynamic filters. | Python | 30m | Intermediate | diff --git a/qdrant-landing/content/documentation/tutorials-lp-search-engineering.md b/qdrant-landing/content/documentation/tutorials-lp-search-engineering.md index 51eb66abb..4bf19647b 100644 --- a/qdrant-landing/content/documentation/tutorials-lp-search-engineering.md +++ b/qdrant-landing/content/documentation/tutorials-lp-search-engineering.md @@ -8,17 +8,17 @@ aliases: partition: qdrant --- -# Search Engineering Tutorials +### Search Engineering Tutorials *Master vector search modalities, reranking, and retrieval quality.* | Tutorial | Objective | Stack | Time | Level | | :--- | :--- | :--- | :--- | :--- | -| [Hybrid Search with FastEmbed](/documentation/tutorials-search-engineering/hybrid-search-fastembed/) | Combine dense and sparse search for startups. | FastAPI | 20m | Beginner | -| [Neural Search Service](/documentation/tutorials-search-engineering/neural-search/) | Deploy a search service for company descriptions. | FastAPI | 30m | Beginner | -| [Movie Recommendations](/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | -| [Advanced PDF Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | -| [Retrieval Quality Benchmarking](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure quality and tune HNSW parameters. | Python | 30m | Intermediate | -| [Multivector Reranking](/documentation/search-precision/reranking-semantic-search/) | Use multivector representations for better ranking. | Python | 30m | Intermediate | -| [Hybrid Search Reranking](/documentation/tutorials-search-engineering/reranking-hybrid-search/) | Implement late interaction and sparse reranking. | Python | 40m | Intermediate | -| [Semantic Code Search](/documentation/tutorials-search-engineering/code-search/) | Navigate codebases using vector similarity. | Python | 45m | Intermediate | -| [Static Embeddings Analysis](/documentation/tutorials-search-engineering/static-embeddings/) | Evaluate the renaissance of static embeddings. | Python | 20m | Intermediate | \ No newline at end of file +| [Hybrid Search with FastEmbed](/documentation/tutorials-search-engineering/hybrid-search-fastembed/) | Combine dense and sparse search. | FastAPI | 20m | Beginner | +| [Semantic Search Basics](/documentation/tutorials-search-engineering/neural-search/) | Deploy a search service for company descriptions. | FastAPI | 30m | Beginner | +| [Collaborative Filtering](/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | +| [Multivector Document Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | +| [Retrieval Quality Evaluation](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure quality and tune HNSW parameters. | Python | 30m | Intermediate | +| [Hybrid Search with Reranking](/documentation/tutorials-search-engineering/reranking-hybrid-search/) | Implement late interaction and sparse reranking. | Python | 40m | Intermediate | +| [Semantic Search for Code](/documentation/tutorials-search-engineering/code-search/) | Navigate codebases using vector similarity. | Python | 45m | Intermediate | +| [Multivectors and Late Interaction](/documentation/advanced-tutorials/using-multivector-representations/) | Effective use of multivector representations. | Python | 30m | Intermediate | +| [Static Embeddings](/documentation/tutorials-search-engineering/static-embeddings/) | Evaluate the utility of static embeddings. | Python | 20m | Intermediate | \ No newline at end of file diff --git a/qdrant-landing/content/documentation/tutorials-rag-and-agents/_index.md b/qdrant-landing/content/documentation/tutorials-rag-and-agents/_index.md deleted file mode 100644 index 8a1d708cf..000000000 --- a/qdrant-landing/content/documentation/tutorials-rag-and-agents/_index.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: RAG & AI Agents -weight: 33 -is_empty: true -hideInSidebar: true -aliases: - - how-to - - tutorials -partition: qdrant ---- - -# RAG & AI Agents Tutorials -*Build intelligent agents and complex LLM-driven applications.* - -| Tutorial | Objective | Stack | Time | Level | -| :--- | :--- | :--- | :--- | :--- | -| [Multimodal Search (LlamaIndex)](/documentation/multimodal-search/) | Search across image and text modalities. | LlamaIndex | 15m | Beginner | -| [Agentic RAG with CrewAI](/documentation/agentic-rag-crewai-zoom/) | Step-by-step multi-agent RAG system. | CrewAI | 45m | Beginner | -| [Agentic RAG with LangGraph](/documentation/agentic-rag-langgraph/) | Build AI agents to answer library documentation. | LangGraph | 45m | Intermediate | -| [Agentic Discord ChatBot](/documentation/agentic-rag-camelai-discord/) | Develop a functional bot with CAMEL-AI. | OpenAI | 45m | Intermediate | -| [Automate Metadata Filtering](/documentation/search-precision/automate-filtering-with-llms/) | Use LLM structured output for dynamic filters. | Python | 30m | Intermediate | diff --git a/qdrant-landing/content/learn/_index.md b/qdrant-landing/content/learn/_index.md index 72794ad1b..524dc564f 100644 --- a/qdrant-landing/content/learn/_index.md +++ b/qdrant-landing/content/learn/_index.md @@ -62,8 +62,8 @@ content: title: "Tutorial categories:" elements: - "Search Engineering" - - "RAG and Agents" - - "Ecosystem and Integrations" + - "Operations and Scale" + - "Develop and Implement" link: url: /documentation/tutorials-lp-overview diff --git a/qdrant-landing/content/learn/ref-tutorials-ecosystem.md b/qdrant-landing/content/learn/ref-tutorials-ecosystem.md deleted file mode 100644 index 31cd8e7d4..000000000 --- a/qdrant-landing/content/learn/ref-tutorials-ecosystem.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -#Delimiter files are used to separate the list of documentation pages into sections. -type: reference -reference: /documentation/tutorials-lp-ecosystem -weight: 316 -sitemapExclude: True -_build: - publishResources: false - render: never -partition: learn ---- \ No newline at end of file diff --git a/qdrant-landing/content/learn/ref-tutorials-rag-and-agents.md b/qdrant-landing/content/learn/ref-tutorials-rag-and-agents.md deleted file mode 100644 index 35ad7dbb7..000000000 --- a/qdrant-landing/content/learn/ref-tutorials-rag-and-agents.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -#Delimiter files are used to separate the list of documentation pages into sections. -type: reference -reference: /documentation/tutorials-lp-rag-and-agents -weight: 313 -sitemapExclude: True -_build: - publishResources: false - render: never -partition: learn ---- \ No newline at end of file From 5857fdd780fc4d71f53c644198958bee73e0be8b Mon Sep 17 00:00:00 2001 From: kanungle Date: Thu, 29 Jan 2026 12:01:21 -0800 Subject: [PATCH 11/11] edited a tutorial name --- qdrant-landing/content/documentation/tutorials-lp-overview.md | 4 ++-- .../content/documentation/tutorials-lp-search-engineering.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/qdrant-landing/content/documentation/tutorials-lp-overview.md b/qdrant-landing/content/documentation/tutorials-lp-overview.md index c92ee6d0e..ee99f1b32 100644 --- a/qdrant-landing/content/documentation/tutorials-lp-overview.md +++ b/qdrant-landing/content/documentation/tutorials-lp-overview.md @@ -20,13 +20,13 @@ partition: qdrant --- -### Search Engineering +### Search Engineering Tutorials *Master vector search modalities, reranking, and retrieval quality.* | Tutorial | Objective | Stack | Time | Level | | :--- | :--- | :--- | :--- | :--- | +| [Semantic Search Intro](/documentation/tutorials-search-engineering/neural-search/) | Deploy a search service for company descriptions. | FastAPI | 30m | Beginner | | [Hybrid Search with FastEmbed](/documentation/tutorials-search-engineering/hybrid-search-fastembed/) | Combine dense and sparse search. | FastAPI | 20m | Beginner | -| [Semantic Search Basics](/documentation/tutorials-search-engineering/neural-search/) | Deploy a search service for company descriptions. | FastAPI | 30m | Beginner | | [Collaborative Filtering](/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | | [Multivector Document Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | | [Retrieval Quality Evaluation](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure quality and tune HNSW parameters. | Python | 30m | Intermediate | diff --git a/qdrant-landing/content/documentation/tutorials-lp-search-engineering.md b/qdrant-landing/content/documentation/tutorials-lp-search-engineering.md index 4bf19647b..f3a698a38 100644 --- a/qdrant-landing/content/documentation/tutorials-lp-search-engineering.md +++ b/qdrant-landing/content/documentation/tutorials-lp-search-engineering.md @@ -13,8 +13,8 @@ partition: qdrant | Tutorial | Objective | Stack | Time | Level | | :--- | :--- | :--- | :--- | :--- | +| [Semantic Search Intro](/documentation/tutorials-search-engineering/neural-search/) | Deploy a search service for company descriptions. | FastAPI | 30m | Beginner | | [Hybrid Search with FastEmbed](/documentation/tutorials-search-engineering/hybrid-search-fastembed/) | Combine dense and sparse search. | FastAPI | 20m | Beginner | -| [Semantic Search Basics](/documentation/tutorials-search-engineering/neural-search/) | Deploy a search service for company descriptions. | FastAPI | 30m | Beginner | | [Collaborative Filtering](/documentation/tutorials-search-engineering/collaborative-filtering/) | Collaborative filtering using sparse embeddings. | Python | 45m | Intermediate | | [Multivector Document Retrieval](/documentation/tutorials-search-engineering/pdf-retrieval-at-scale/) | PDF RAG using ColPali and embedding pooling. | Python | 30m | Intermediate | | [Retrieval Quality Evaluation](/documentation/tutorials-search-engineering/retrieval-quality/) | Measure quality and tune HNSW parameters. | Python | 30m | Intermediate |