diff --git a/docs/web/build-with-ai-agents.mdx b/docs/web/build-with-ai-agents.mdx
index 808862c36..4bfd6ab97 100644
--- a/docs/web/build-with-ai-agents.mdx
+++ b/docs/web/build-with-ai-agents.mdx
@@ -1,6 +1,6 @@
---
title: "Tutorial: Use the LanceDB agent plugin"
-sidebarTitle: "Agent Plugin"
+sidebarTitle: "Using LanceDB Agent Skill"
description: "Install the LanceDB plugin and use an AI coding agent to quickly build a multimodal ingestion pipeline."
icon: "robot"
keywords: ["AI agents", "agent plugins", "multimodal", "Pydantic", "branches", "embeddings"]
diff --git a/docs/web/docs.json b/docs/web/docs.json
index 3c15ae601..dcf7b5644 100644
--- a/docs/web/docs.json
+++ b/docs/web/docs.json
@@ -78,6 +78,18 @@
{
"source": "/search/select",
"destination": "/sql/select"
+ },
+ {
+ "source": "/tutorials/search",
+ "destination": "/tutorials/search/hybrid-search-beir"
+ },
+ {
+ "source": "/tutorials/agents",
+ "destination": "/tutorials/agents/contextual-rag"
+ },
+ {
+ "source": "/tutorials/feature-engineering",
+ "destination": "/tutorials/feature-engineering/feature-engineering-101"
}
],
"navigation": {
@@ -309,47 +321,52 @@
},
{
"tab": "Use Cases",
- "groups": [
+ "pages": [
+ "tutorials/index",
{
"group": "General",
"pages": [
- "tutorials/index",
"build-with-ai-agents"
]
},
{
"group": "Search",
"pages": [
+ "tutorials/search/hybrid-search-beir",
+ "tutorials/search/multivector-xtr",
"tutorials/search/multivector-needle-in-a-haystack",
- "tutorials/search/index"
+ "tutorials/search/video-search",
+ "tutorials/search/vector-arithmetic",
+ "tutorials/search/ner-search",
+ "tutorials/search/reddit-summarizer"
]
},
{
"group": "RAG",
"pages": [
+ "tutorials/agents/contextual-rag",
"tutorials/agents/nvidia-rag-blueprint/index",
"tutorials/agents/time-travel-rag/index",
"tutorials/agents/multimodal-agent/index",
- "tutorials/agents/index"
+ "tutorials/agents/matryoshka-embeddings",
+ "tutorials/agents/hyde",
+ "tutorials/agents/late-chunking",
+ "tutorials/agents/agentic-rag"
]
},
{
"group": "Feature Engineering",
"pages": [
- "agent-branch-experiments",
- "tutorials/feature-engineering/index"
+ "tutorials/feature-engineering/feature-engineering-101",
+ "tutorials/feature-engineering/materialized-views",
+ "agent-branch-experiments"
]
},
{
"group": "Training",
"pages": [
"training/object-detection",
- "training/vlm-finetuning"
- ]
- },
- {
- "group": "World Models",
- "pages": [
+ "training/vlm-finetuning",
"integrations/stable-worldmodel"
]
}
diff --git a/docs/web/quickstart.mdx b/docs/web/quickstart.mdx
index 0bfea253a..c4acd735e 100644
--- a/docs/web/quickstart.mdx
+++ b/docs/web/quickstart.mdx
@@ -521,7 +521,7 @@ full-text and hybrid search, reranking, and server-side feature engineering.
Learn how to build Retrieval-Augmented Generation (RAG) applications using LanceDB.
diff --git a/docs/web/tutorials/agents/agentic-rag.mdx b/docs/web/tutorials/agents/agentic-rag.mdx
new file mode 100644
index 000000000..505ae0791
--- /dev/null
+++ b/docs/web/tutorials/agents/agentic-rag.mdx
@@ -0,0 +1,23 @@
+---
+title: "Agentic RAG"
+sidebarTitle: "Agentic RAG"
+description: "Several agents collaborating to retrieve and answer."
+---
+
+Builds a RAG system where multiple agents collaborate -- retrieving
+information, checking it, and generating answers -- rather than a single
+retrieve-then-generate pass.
+
+
+This example is a runnable notebook in the
+[vectordb-recipes](https://github.com/lancedb/vectordb-recipes) repository rather than a page here.
+
+
+
+
+ Run it end to end in the browser.
+
+
+ Read the source.
+
+
diff --git a/docs/web/tutorials/agents/contextual-rag.mdx b/docs/web/tutorials/agents/contextual-rag.mdx
new file mode 100644
index 000000000..5f332d819
--- /dev/null
+++ b/docs/web/tutorials/agents/contextual-rag.mdx
@@ -0,0 +1,24 @@
+---
+title: "Contextual RAG"
+sidebarTitle: "Contextual RAG"
+description: "Prepend LLM-generated context to each chunk before embedding it."
+---
+
+Addresses the "lost in the middle" problem in retrieval. An LLM generates a
+succinct piece of context for each document chunk, which is prepended to the
+chunk before embedding -- so a chunk carries enough surrounding meaning to be
+retrieved for the right queries.
+
+
+This example is a runnable notebook in the
+[vectordb-recipes](https://github.com/lancedb/vectordb-recipes) repository rather than a page here.
+
+
+
+
+ Run it end to end in the browser.
+
+
+ Read the source.
+
+
diff --git a/docs/web/tutorials/agents/hyde.mdx b/docs/web/tutorials/agents/hyde.mdx
new file mode 100644
index 000000000..76d674fae
--- /dev/null
+++ b/docs/web/tutorials/agents/hyde.mdx
@@ -0,0 +1,24 @@
+---
+title: "HyDE: hypothetical document embeddings"
+sidebarTitle: "HyDE"
+description: "Generate a hypothetical answer, then retrieve documents similar to it."
+---
+
+An LLM writes a hypothetical document answering the query, and that document --
+not the query -- is embedded and used for retrieval. It works because a
+plausible answer sits nearer the real answers in embedding space than a question
+does.
+
+
+This example is a runnable notebook in the
+[vectordb-recipes](https://github.com/lancedb/vectordb-recipes) repository rather than a page here.
+
+
+
+
+ Run it end to end in the browser.
+
+
+ Read the source.
+
+
diff --git a/docs/web/tutorials/agents/index.mdx b/docs/web/tutorials/agents/index.mdx
deleted file mode 100644
index 6738c06a8..000000000
--- a/docs/web/tutorials/agents/index.mdx
+++ /dev/null
@@ -1,17 +0,0 @@
----
-title: "More RAG examples"
-sidebarTitle: "More Examples"
-description: "Notebooks covering contextual RAG, HyDE, late chunking, agentic RAG and more."
----
-
-The table below lists example notebooks we've prepared for a variety of RAG (Retrieval-Augmented Generation)
-and agent applications built with LanceDB.
-
-| Project | Description |
-|:----------|:------------|
-| **Contextual RAG**
[View on GitHub](https://github.com/lancedb/vectordb-recipes/tree/main/examples/Contextual-RAG) | Improves retrieval by combatting the "lost in the middle" problem. This technique uses an LLM to generate succinct context for each document chunk, then prepends that context to the chunk before embedding, leading to more accurate retrieval. |
-| **NVIDIA RAG Blueprint with LanceDB**
[Read the tutorial](/tutorials/agents/nvidia-rag-blueprint/)
[View on GitHub](https://github.com/lancedb/vectordb-recipes/tree/main/examples/nvidia-rag-blueprint-lancedb) | Shows how to use LanceDB as the retrieval layer for NVIDIA RAG Blueprint with a Docker-first, retrieval-only integration path that includes hybrid search and pluggable rerankers. |
-| **Matryoshka Embeddings**
[View on GitHub](https://github.com/lancedb/vectordb-recipes/tree/main/tutorials/RAG-with_MatryoshkaEmbed-Llamaindex) | Demonstrates a RAG pipeline using Matryoshka Embeddings with LanceDB and LlamaIndex. This method allows for efficient storage and retrieval of nested, variable-sized embeddings. |
-| **HyDE (Hypothetical Document Embeddings)**
[View on GitHub](https://github.com/lancedb/vectordb-recipes/tree/main/examples/Advance-RAG-with-HyDE) | An advanced RAG technique that uses an LLM to generate a "hypothetical" document in response to a query. This hypothetical document is then used to retrieve actual, similar documents, improving relevance. |
-| **Late Chunking**
[View on GitHub](https://github.com/lancedb/vectordb-recipes/tree/main/examples/Advanced_RAG_Late_Chunking) | An advanced RAG method where documents are retrieved first, and then chunking is performed on the retrieved documents just before synthesis. This helps maintain context that might be lost with pre-chunking. |
-| **Agentic RAG**
[View on GitHub](https://github.com/lancedb/vectordb-recipes/tree/main/tutorials/Agentic_RAG) | This tutorial demonstrates how to build a RAG system where multiple AI agents collaborate to retrieve information and generate answers, leading to more robust and intelligent applications. |
diff --git a/docs/web/tutorials/agents/late-chunking.mdx b/docs/web/tutorials/agents/late-chunking.mdx
new file mode 100644
index 000000000..4b6a12b29
--- /dev/null
+++ b/docs/web/tutorials/agents/late-chunking.mdx
@@ -0,0 +1,23 @@
+---
+title: "Late chunking"
+sidebarTitle: "Late Chunking"
+description: "Retrieve whole documents first, chunk them afterwards."
+---
+
+Inverts the usual order: documents are retrieved first and chunked just before
+synthesis. Chunking late preserves context that pre-chunking discards, since a
+chunk is cut with knowledge of the query it is answering.
+
+
+This example is a runnable notebook in the
+[vectordb-recipes](https://github.com/lancedb/vectordb-recipes) repository rather than a page here.
+
+
+
+
+ Run it end to end in the browser.
+
+
+ Read the source.
+
+
diff --git a/docs/web/tutorials/agents/matryoshka-embeddings.mdx b/docs/web/tutorials/agents/matryoshka-embeddings.mdx
new file mode 100644
index 000000000..6a6bc7f44
--- /dev/null
+++ b/docs/web/tutorials/agents/matryoshka-embeddings.mdx
@@ -0,0 +1,23 @@
+---
+title: "Matryoshka embeddings"
+sidebarTitle: "Matryoshka Embeddings"
+description: "Nested, variable-size embeddings with LanceDB and LlamaIndex."
+---
+
+A RAG pipeline built on Matryoshka embeddings with LlamaIndex. The embeddings
+nest, so one model serves several dimensionalities -- store the full vector and
+retrieve with a truncated one when the cheaper comparison is good enough.
+
+
+This example is a runnable notebook in the
+[vectordb-recipes](https://github.com/lancedb/vectordb-recipes) repository rather than a page here.
+
+
+
+
+ Run it end to end in the browser.
+
+
+ Read the source.
+
+
diff --git a/docs/web/tutorials/feature-engineering/feature-engineering-101.mdx b/docs/web/tutorials/feature-engineering/feature-engineering-101.mdx
new file mode 100644
index 000000000..7f6110162
--- /dev/null
+++ b/docs/web/tutorials/feature-engineering/feature-engineering-101.mdx
@@ -0,0 +1,23 @@
+---
+title: "Feature engineering 101"
+sidebarTitle: "Feature Engineering 101"
+description: "Add derived feature columns to an existing table."
+---
+
+Adds new derived features to a table, the pattern documented under
+[data evolution](/feature-engineering/data-evolution) and
+[computed columns](/feature-engineering/add-computed-column).
+
+
+This example is a runnable notebook in the
+[vectordb-recipes](https://github.com/lancedb/vectordb-recipes) repository rather than a page here.
+
+
+
+
+ Run it end to end in the browser.
+
+
+ Read the source.
+
+
diff --git a/docs/web/tutorials/feature-engineering/index.mdx b/docs/web/tutorials/feature-engineering/index.mdx
deleted file mode 100644
index f9e5bb526..000000000
--- a/docs/web/tutorials/feature-engineering/index.mdx
+++ /dev/null
@@ -1,22 +0,0 @@
----
-title: "More feature engineering examples"
-sidebarTitle: "More Examples"
-description: "Notebooks covering derived features and materialized views."
-layout: wide
----
-
-| Example | Description |
-|--------|:------------|
-| **Feature Engineering 101**
[View on GitHub](https://github.com/lancedb/vectordb-recipes/tree/main/tutorials/feature-engineering/feature-engineering-101.ipynb) | This example demonstrates how to use LanceDB's feature engineering platform to add new derived features.
-| **Materialized Views**
[View on GitHub](https://github.com/lancedb/vectordb-recipes/tree/main/tutorials/feature-engineering/materialized-views.ipynb) | This example shows how to create materialized views: query results persisted as physical tables.
-
-
-## Read the docs {#read-the-docs}
-
-The relevant section of the documentation are listed below.
-
-| Feature | Description |
-|:--------|:------------|
-| [Feature engineering](/feature-engineering) | The three ways to derive columns and tables. |
-| [Materialized views](/feature-engineering/materialized-views) | Derive a table from a query and refresh it incrementally. |
-| [Computed columns](/feature-engineering/add-computed-column) | Declare a column from an expression and fill it. |
diff --git a/docs/web/tutorials/feature-engineering/materialized-views.mdx b/docs/web/tutorials/feature-engineering/materialized-views.mdx
new file mode 100644
index 000000000..5e1a77bd4
--- /dev/null
+++ b/docs/web/tutorials/feature-engineering/materialized-views.mdx
@@ -0,0 +1,23 @@
+---
+title: "Materialized views"
+sidebarTitle: "Materialized Views"
+description: "Persist query results as physical tables and keep them current."
+---
+
+Creates [materialized views](/management/materialized-view): query results
+persisted as physical tables, brought up to date by a
+[refresh](/feature-engineering/materialized-views).
+
+
+This example is a runnable notebook in the
+[vectordb-recipes](https://github.com/lancedb/vectordb-recipes) repository rather than a page here.
+
+
+
+
+ Run it end to end in the browser.
+
+
+ Read the source.
+
+
diff --git a/docs/web/tutorials/index.mdx b/docs/web/tutorials/index.mdx
index c22c301c1..37d07ff6d 100644
--- a/docs/web/tutorials/index.mdx
+++ b/docs/web/tutorials/index.mdx
@@ -4,24 +4,39 @@ sidebarTitle: "Overview"
description: "Worked examples of building with LanceDB, by what you are building."
---
-Each page here is one worked example, grouped by what it builds. The
+Every example is one page in the sidebar, grouped by what it builds. The
documentation explains how a feature works; these show it doing something.
-| | |
-|:---------|:------------|
-| [Search](/tutorials/search/multivector-needle-in-a-haystack) | Vector, multi-vector, hybrid and full-text retrieval. |
-| [RAG](/tutorials/agents/nvidia-rag-blueprint/) | Retrieval-augmented generation and agent applications. |
-| [Feature engineering](/tutorials/feature-engineering/) | Deriving columns, materialized views, and experimenting on branches. |
-| [Training](/training/object-detection) | Curating data and training models directly on a table. |
+Examples marked as notebooks live in the
+[vectordb-recipes](https://github.com/lancedb/vectordb-recipes) repository and
+are runnable in Colab; the rest are written up here.
-Each category also has a **More examples** page collecting runnable notebooks
-that live in the recipes repository rather than here.
+## Where to start {#start}
-## Recipes {#recipes}
+
+
+ Vector, multi-vector, hybrid and full-text retrieval.
+
+
+ Retrieval-augmented generation and agent applications.
+
+
+ Deriving columns, materialized views, experimenting on branches.
+
+
+ Curating data and training models directly on a table.
+
+
-If you are looking for ideas and hands-on code, the repository below collects
-practical projects beyond the ones documented here.
+## The features these use {#read-the-docs}
-
-Past code examples and tutorials on GitHub.
-
+| Feature | What it covers |
+|:--------|:------------|
+| [Vector search](/search/vector-search) | Similarity search, distance metrics, and tuning it. |
+| [Full-text search](/search/full-text-search) | Keyword search over text columns. |
+| [Hybrid search](/search/hybrid-search) | Keyword and vector search combined. |
+| [Multi-vector search](/search/multivector-search) | Several embeddings per document. |
+| [Reranking](/reranking) | Reordering results to improve the top-k. |
+| [Feature engineering](/feature-engineering) | Deriving columns and tables from data already stored. |
+| [Materialized views](/management/materialized-view) | A table defined by a query, refreshed incrementally. |
+| [Training](/training) | Reading a table into a data loader. |
diff --git a/docs/web/tutorials/search/hybrid-search-beir.mdx b/docs/web/tutorials/search/hybrid-search-beir.mdx
new file mode 100644
index 000000000..3db8e95ce
--- /dev/null
+++ b/docs/web/tutorials/search/hybrid-search-beir.mdx
@@ -0,0 +1,25 @@
+---
+title: "Hybrid search and reranking on BEIR"
+sidebarTitle: "Hybrid Search on BEIR"
+description: "Combine semantic and keyword search on the BEIR benchmark, then rerank the results."
+---
+
+Uses LanceDB's built-in [hybrid search](/search/hybrid-search), which combines the
+strengths of semantic and full-text search. Working against the BEIR dataset, it
+shows how searching for both the meaning of a query and the specific keywords in
+it produces more relevant results than either alone, and how a
+[reranker](/reranking) refines what comes back.
+
+
+This example is a runnable notebook in the
+[vectordb-recipes](https://github.com/lancedb/vectordb-recipes) repository rather than a page here.
+
+
+
+
+ Run it end to end in the browser.
+
+
+ Read the source.
+
+
diff --git a/docs/web/tutorials/search/index.mdx b/docs/web/tutorials/search/index.mdx
deleted file mode 100644
index cfbb168c9..000000000
--- a/docs/web/tutorials/search/index.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: "More search examples"
-sidebarTitle: "More Examples"
-description: "Notebooks covering hybrid search, multi-vector retrieval, video search and more."
-layout: wide
----
-
-The table below shows examples of applications built with LanceDB for search use cases.
-
-| Example | Description |
-|--------|:------------|
-| **Hybrid search & reranking on BEIR**
[View on GitHub](https://github.com/lancedb/vectordb-recipes/tree/main/examples/Inbuilt-Hybrid-Search) | This example demonstrates how to use LanceDB's built-in hybrid search feature, which combines the strengths of both semantic and full-text search. By using the BEIR dataset, it shows how to achieve more relevant results by searching for both the meaning of a query and the specific keywords it contains. |
-| **Semantic search across videos**
[View on GitHub](https://github.com/lancedb/vectordb-recipes/tree/main/examples/v-jepa-video-search) | Learn how to build a video search application using V-JEPA (Video Joint Embedding Predictive Architecture) and LanceDB. This example shows how to generate vector embeddings for videos and then use LanceDB to perform similarity searches, allowing you to find videos that are visually similar to a given query. |
-| **Semantic result merging**
[View on GitHub](https://github.com/lancedb/vectordb-recipes/tree/main/examples/Vector-Arithmetic-with-LanceDB) | Explore the concept of vector arithmetic with LanceDB. This notebook demonstrates how you can manipulate vector embeddings to capture more complex relationships in your data. For instance, you can modify a search query by adding or subtracting vector representations of different concepts, enabling more nuanced and powerful semantic search. |
-| **Reddit concept summarizer**
[View on GitHub](https://github.com/lancedb/vectordb-recipes/tree/main/examples/Reddit-summarization-and-search) | This project showcases a complete pipeline for acquiring text data from Reddit, transforming it into meaningful vector representations using embeddings, and then storing and managing those vectors in LanceDB. It demonstrates how to build applications on top of this data, such as summarization and powerful semantic search. |
-| **NER-powered vector search**
[View on GitHub](https://github.com/lancedb/vectordb-recipes/tree/main/tutorials/NER-powered-Semantic-Search) | This example demonstrates how to use Named Entity Recognition (NER) to power vector search. By extracting entities (like people, places, and organizations) from text and creating vector embeddings of them, you can significantly improve the accuracy of your search results. |
-| **Multi-vector search with XTR**
[View on GitHub](https://github.com/lancedb/vectordb-recipes/tree/main/examples/multivector_xtr) | This notebook dives into LanceDB's advanced multivector search capabilities, enhanced by the XTR (ConteXtualized Token Retriever) technique. It shows how to represent complex data with multiple vectors for more nuanced meaning and how XTR speeds up retrieval by prioritizing the most important tokens. |
-| **Needle-in-a-haystack multi-vector search**
[Read the tutorial](/tutorials/search/multivector-needle-in-a-haystack/)
| This tutorial complements the XTR multi-vector example by comparing several retrieval strategies on a token-level "needle in a haystack" benchmark. It shows when full multi-vector search, pooling, and reranking help or hurt when the goal is to find an exact page rather than just a relevant document. |
-
-
-## Read the docs {#read-the-docs}
-
-The relevant section of the documentation are listed below.
-
-| Feature | Description |
-|:--------|:------------|
-| [Vector search](/search/vector-search/) | Learn the fundamentals of vector search, including how to perform similarity searches, use different distance metrics, and optimize performance. |
-| [Hybrid search](/search/hybrid-search/) | Combine keyword-based search with vector search to improve retrieval accuracy and relevance. |
-| [Full-text search](/search/full-text-search/) | Perform full-text search on your text data, and combine it with vector search for a powerful hybrid search experience. |
-| [Reranking](/reranking/) | Refine your search results using reranking models to improve the relevance of the top-k results. |
-| [Multi-vector search](/search/multivector-search/) | Use multiple vector embeddings per document to perform more nuanced and accurate searches. |
diff --git a/docs/web/tutorials/search/multivector-xtr.mdx b/docs/web/tutorials/search/multivector-xtr.mdx
new file mode 100644
index 000000000..18f1e7b93
--- /dev/null
+++ b/docs/web/tutorials/search/multivector-xtr.mdx
@@ -0,0 +1,27 @@
+---
+title: "Multi-vector search with XTR"
+sidebarTitle: "Multi-vector XTR"
+description: "Represent a document with many vectors, and speed retrieval with ConteXtualized Token Retrieval."
+---
+
+Covers [multi-vector search](/search/multivector-search) enhanced by XTR
+(ConteXtualized Token Retriever): representing complex data with several vectors
+for more nuanced meaning, and using XTR to speed retrieval by prioritizing the
+most important tokens.
+
+For a comparison of retrieval strategies on a token-level benchmark, see
+[Needle in a haystack](/tutorials/search/multivector-needle-in-a-haystack).
+
+
+This example is a runnable notebook in the
+[vectordb-recipes](https://github.com/lancedb/vectordb-recipes) repository rather than a page here.
+
+
+
+
+ Run it end to end in the browser.
+
+
+ Read the source.
+
+
diff --git a/docs/web/tutorials/search/ner-search.mdx b/docs/web/tutorials/search/ner-search.mdx
new file mode 100644
index 000000000..462475246
--- /dev/null
+++ b/docs/web/tutorials/search/ner-search.mdx
@@ -0,0 +1,23 @@
+---
+title: "NER-powered vector search"
+sidebarTitle: "NER Search"
+description: "Extract named entities and embed them to sharpen retrieval."
+---
+
+Uses Named Entity Recognition to power vector search. Extracting entities --
+people, places, organizations -- and embedding them alongside the text improves
+accuracy when queries are about specific things rather than general topics.
+
+
+This example is a runnable notebook in the
+[vectordb-recipes](https://github.com/lancedb/vectordb-recipes) repository rather than a page here.
+
+
+
+
+ Run it end to end in the browser.
+
+
+ Read the source.
+
+
diff --git a/docs/web/tutorials/search/reddit-summarizer.mdx b/docs/web/tutorials/search/reddit-summarizer.mdx
new file mode 100644
index 000000000..7d562ba9e
--- /dev/null
+++ b/docs/web/tutorials/search/reddit-summarizer.mdx
@@ -0,0 +1,23 @@
+---
+title: "Reddit concept summarizer"
+sidebarTitle: "Reddit Summarizer"
+description: "An end-to-end pipeline from Reddit text to embeddings to summarization and search."
+---
+
+A complete pipeline: acquire text from Reddit, turn it into embeddings, store
+and manage those vectors in LanceDB, then build summarization and semantic
+search on top. Useful as a shape for any ingest-embed-serve workflow.
+
+
+This example is a runnable notebook in the
+[vectordb-recipes](https://github.com/lancedb/vectordb-recipes) repository rather than a page here.
+
+
+
+
+ Run it end to end in the browser.
+
+
+ Read the source.
+
+
diff --git a/docs/web/tutorials/search/vector-arithmetic.mdx b/docs/web/tutorials/search/vector-arithmetic.mdx
new file mode 100644
index 000000000..d5adc2b79
--- /dev/null
+++ b/docs/web/tutorials/search/vector-arithmetic.mdx
@@ -0,0 +1,24 @@
+---
+title: "Semantic result merging"
+sidebarTitle: "Vector Arithmetic"
+description: "Add and subtract embeddings to steer a query toward or away from a concept."
+---
+
+Explores vector arithmetic: manipulating embeddings to capture relationships a
+single query vector cannot. Adding or subtracting the vector representation of a
+concept shifts the query, which makes searches more nuanced than a literal
+similarity lookup.
+
+
+This example is a runnable notebook in the
+[vectordb-recipes](https://github.com/lancedb/vectordb-recipes) repository rather than a page here.
+
+
+
+
+ Run it end to end in the browser.
+
+
+ Read the source.
+
+
diff --git a/docs/web/tutorials/search/video-search.mdx b/docs/web/tutorials/search/video-search.mdx
new file mode 100644
index 000000000..0a8323597
--- /dev/null
+++ b/docs/web/tutorials/search/video-search.mdx
@@ -0,0 +1,24 @@
+---
+title: "Semantic search across videos"
+sidebarTitle: "Video Search"
+description: "Embed video with V-JEPA and search it by similarity."
+---
+
+Builds a video search application on V-JEPA (Video Joint Embedding Predictive
+Architecture). Generates vector embeddings for video content and uses
+[vector search](/search/vector-search) to find visually similar clips -- a
+multimodal case where the searchable column is not text.
+
+
+This example is a runnable notebook in the
+[vectordb-recipes](https://github.com/lancedb/vectordb-recipes) repository rather than a page here.
+
+
+
+
+ Run it end to end in the browser.
+
+
+ Read the source.
+
+