{"id":17979,"date":"2026-03-23T14:17:07","date_gmt":"2026-03-23T21:17:07","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=17979"},"modified":"2026-03-23T14:18:02","modified_gmt":"2026-03-23T21:18:02","slug":"filtered-ann-search-with-composite-vector-indexes-part-4","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/","title":{"rendered":"Filtered ANN Search With Composite Vector Indexes (Part 4)"},"content":{"rendered":"<p><span style=\"font-weight: 400\">This post is the fourth part of a multi-part series exploring composite vector indexing in Couchbase. If you missed the previous posts, be sure to catch up on <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes\/\"><b>Part 1<\/b><\/a><span style=\"font-weight: 400\">, <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-2\/\"><b>Part 2<\/b><\/a><span style=\"font-weight: 400\"> and <strong><a href=\"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-ive-composite-vector-indexes\/\">Part 3<\/a><\/strong>.<\/span><\/p>\n<p>The series will cover:<\/p>\n<ol>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes\/\">Why composite vector indexes matter, including concepts, terminology, and developer motivation. A Smart Grocery Recommendation System will be used as a running example.<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-2\/\">How composite vector indexes are implemented inside the Couchbase Indexing Service.<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-ive-composite-vector-indexes\/\">How ORDER BY pushdown works for composite vector queries.<\/a><\/li>\n<li>Real-world performance behavior and benchmarking results.<\/li>\n<\/ol>\n<h2><span style=\"font-weight: 400\">Part 4: Performance Analysis of Composite Vector Indexes<\/span><\/h2>\n<p><span style=\"font-weight: 400\">Agentic applications and AI workloads increasingly require efficient vector search. Traditional approximate nearest neighbor (ANN) search systems can struggle at scale, with challenges such as memory consumption, index build times, and real-time update mechanisms.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Composite Vector Indexes (CVI) are designed for filtered ANN workloads, where scalar predicates reduce the candidate set before approximate vector search. For pure vector workloads at a very large scale, Couchbase also provides Hyperscale Vector Indexes. For best practices check out our documentation <a href=\"https:\/\/docs.couchbase.com\/server\/current\/vector-index\/vectors-and-indexes-overview.html\">here<\/a>.<\/span><\/p>\n<p><span style=\"font-weight: 400\">This post focuses on the performance behavior of Composite Vector Indexes for filtered ANN workloads. Building on the concepts and execution model introduced in Parts 1 through 3, we now look at how throughput and p95 latency change as scalar selectivity varies on large-scale datasets.<\/span><\/p>\n<p><span style=\"font-weight: 400\">In this post, selectivity % refers to how much of the dataset remains relevant after the scalar portion of the query constrains the search space. Lower selectivity means a narrower slice of the dataset qualifies, which in turn reduces the amount of vector work the system must perform.<\/span><\/p>\n<h3><span style=\"font-weight: 400\">Build Performance<\/span><\/h3>\n<p><span style=\"font-weight: 400\">In an internal build benchmark, CVI was able to build an index on 1 billion 128-dimensional vectors in 7 hours. This demonstrates the indexing architecture and use of modern hardware.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">The build performance was measured on the following infrastructure:<\/span><\/p>\n<p><b>Processor:<\/b><span style=\"font-weight: 400\"> 32-core AMD-EPYC-7643<\/span><\/p>\n<p><b>Memory:<\/b><span style=\"font-weight: 400\"> 128GB RAM<\/span><\/p>\n<p><b>Storage:<\/b><span style=\"font-weight: 400\"> Samsung PM1743 Enterprise SSD 15.36TB<\/span><\/p>\n<p><b>Dataset:<\/b><span style=\"font-weight: 400\"> SIFT benchmark data<\/span><\/p>\n<p><span style=\"font-weight: 400\">This shows that indexing billions of vectors for production workloads is practical.<\/span><\/p>\n<h3><span style=\"font-weight: 400\">Query Performance: Speed and Precision Combined<\/span><\/h3>\n<p><span style=\"font-weight: 400\">CVI provides query performance with high recall. Using the 100M SIFT dataset with SQ8 quantization and one leading scalar field, CVI achieved 75% recall@10 across various selectivity percentages, with measured throughput and latency characteristics.<\/span><\/p>\n<h3><span style=\"font-weight: 400\">Throughput improves as selectivity narrows<\/span><\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-17980\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/03\/Screenshot-2026-03-23-at-2.09.37-PM.png\" alt=\"\" width=\"1160\" height=\"730\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/03\/Screenshot-2026-03-23-at-2.09.37-PM.png 1160w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/03\/Screenshot-2026-03-23-at-2.09.37-PM-300x189.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/03\/Screenshot-2026-03-23-at-2.09.37-PM-1024x644.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/03\/Screenshot-2026-03-23-at-2.09.37-PM-768x483.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/03\/Screenshot-2026-03-23-at-2.09.37-PM-18x12.png 18w\" sizes=\"auto, (max-width: 1160px) 100vw, 1160px\" \/><\/p>\n<p><span style=\"font-weight: 400\">The throughput and latency curves tell the same story from two angles. Narrower scalar constraints reduce the amount of work flowing through the execution path, which improves both system throughput and tail behavior. For applications that naturally include hard constraints such as category, brand, tenant, region, language, or compliance boundary this behavior is exactly where Composite Vector Indexes become compelling.<\/span><\/p>\n<h3><span style=\"font-weight: 400\">Test Setup<\/span><\/h3>\n<h4><span style=\"font-weight: 400\">Definition<\/span><\/h4>\n<pre class=\"lang:default decode:true\">CREATE INDEX `vector-idx` on `bucket-1`.`_default`.`_default` (scalar, emb Vector) WITH {'dimension':128, 'similarity':'L2', 'description':'IVF,SQ8'}\r\n<\/pre>\n<h4><span style=\"font-weight: 400\">Query<\/span><\/h4>\n<pre class=\"lang:default decode:true\">SELECT meta().id FROM `bucket-1`.`_default`.`_default` \r\nWHERE scalar = 'eligible' \r\nORDER BY ANN_DISTANCE(emb, , 'L2', )\r\nLIMIT 10\r\n<\/pre>\n<p><span style=\"font-weight: 400\">The `scalar` field is populated in the data as needed for the selectivity and &lt;nprobes&gt; is adjusted to get expected recall.<\/span><\/p>\n<h2><span style=\"font-weight: 400\">Why the Curves Look This Way<\/span><\/h2>\n<p><span style=\"font-weight: 400\">CVI&#8217;s performance is influenced by several architectural features:<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Order-aware scanning<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">CVI uses an order-aware scan pipeline that leverages scalar predicates combined with vector similarity search, enabling efficient access patterns and minimizing I\/O operations.<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Parallel processing architecture<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">The system uses parallelism across centroids, allowing multiple scan workers to operate concurrently on different partitions of the vector space.<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">SIMD-accelerated distance computation<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">CVI uses SIMD operations through the FAISS library to accelerate similarity evaluations and minimize computational overhead.<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">HNSW routing layer<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">The Hierarchical Navigable Small World (HNSW) routing layer enables identification of relevant centroids, reducing the search space.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h2><span style=\"font-weight: 400\">Example Applications<\/span><\/h2>\n<p><span style=\"font-weight: 400\">CVI&#8217;s performance characteristics are applicable to a range of use cases:<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">E-commerce and product recommendations<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Product similarity search with price, brand, and category filters<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Content discovery and search<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Document and media similarity search with metadata constraints<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Fraud detection and risk assessment<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Anomaly detection in transaction patterns with temporal constraints<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Personalized marketing<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Customer segmentation and targeted recommendations<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h2><span style=\"font-weight: 400\">Conclusion<\/span><\/h2>\n<p><span style=\"font-weight: 400\">The first three parts of this series explained why Composite Vector Indexes matter, how they are implemented, and how they enable flexible ORDER BY pushdown for mixed scalar-plus-vector queries. This final part shows the performance payoff of that design.<\/span><\/p>\n<p><span style=\"font-weight: 400\">On the 100M SIFT benchmark with SQ8 quantization, throughput increased from 800 QPS at 100% selectivity to 2853 QPS at 1% selectivity, while p95 latency improved from 66 ms to 17 ms. In a separate internal build benchmark, Composite Vector Indexes built an index over 1 billion 128-dimensional vectors in about 7 hours on modern commodity server hardware.<\/span><\/p>\n<p><span style=\"font-weight: 400\">For filtered ANN workloads, that is the core value proposition of Composite Vector Indexes: they let applications combine scalar constraints and semantic similarity in one index structure, while still delivering strong throughput and low tail latency at scale.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This post is the fourth part of a multi-part series exploring composite vector indexing in Couchbase. If you missed the previous posts, be sure to catch up on Part 1, Part 2 and Part 3. The series will cover: Why [&hellip;]<\/p>\n","protected":false},"author":85690,"featured_media":17981,"comment_status":"open","ping_status":"open","sticky":true,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[9937],"tags":[],"ppma_author":[10168],"class_list":["post-17979","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vector-search"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.0 (Yoast SEO v27.0) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Filtered ANN Search With Composite Vector Indexes (Part 4) - The Couchbase Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Filtered ANN Search With Composite Vector Indexes (Part 4)\" \/>\n<meta property=\"og:description\" content=\"This post is the fourth part of a multi-part series exploring composite vector indexing in Couchbase. If you missed the previous posts, be sure to catch up on Part 1, Part 2 and Part 3. The series will cover: Why [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-23T21:17:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-23T21:18:02+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/03\/Filtered-ANN-Search-With-Composite-Vector-Indexes-3.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2400\" \/>\n\t<meta property=\"og:image:height\" content=\"1256\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Sai Kommaraju, Senior Software Engineer\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sai Kommaraju, Senior Software Engineer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/\"},\"author\":{\"name\":\"Sai Kommaraju, Senior Software Engineer\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/8fb575d74280ff3d0f044904277a8076\"},\"headline\":\"Filtered ANN Search With Composite Vector Indexes (Part 4)\",\"datePublished\":\"2026-03-23T21:17:07+00:00\",\"dateModified\":\"2026-03-23T21:18:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/\"},\"wordCount\":758,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/03\/Filtered-ANN-Search-With-Composite-Vector-Indexes-3.png\",\"articleSection\":[\"Vector Search\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/\",\"name\":\"Filtered ANN Search With Composite Vector Indexes (Part 4) - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/03\/Filtered-ANN-Search-With-Composite-Vector-Indexes-3.png\",\"datePublished\":\"2026-03-23T21:17:07+00:00\",\"dateModified\":\"2026-03-23T21:18:02+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/03\/Filtered-ANN-Search-With-Composite-Vector-Indexes-3.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/03\/Filtered-ANN-Search-With-Composite-Vector-Indexes-3.png\",\"width\":2400,\"height\":1256},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Filtered ANN Search With Composite Vector Indexes (Part 4)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/8fb575d74280ff3d0f044904277a8076\",\"name\":\"Sai Kommaraju, Senior Software Engineer\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/a2ca26c70968f44d876aa239d293a709\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/01\/Sai-Kommaraju.jpeg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/01\/Sai-Kommaraju.jpeg\",\"caption\":\"Sai Kommaraju, Senior Software Engineer\"},\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/saikommaraju\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Filtered ANN Search With Composite Vector Indexes (Part 4) - The Couchbase Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/","og_locale":"en_US","og_type":"article","og_title":"Filtered ANN Search With Composite Vector Indexes (Part 4)","og_description":"This post is the fourth part of a multi-part series exploring composite vector indexing in Couchbase. If you missed the previous posts, be sure to catch up on Part 1, Part 2 and Part 3. The series will cover: Why [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/","og_site_name":"The Couchbase Blog","article_published_time":"2026-03-23T21:17:07+00:00","article_modified_time":"2026-03-23T21:18:02+00:00","og_image":[{"width":2400,"height":1256,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/03\/Filtered-ANN-Search-With-Composite-Vector-Indexes-3.png","type":"image\/png"}],"author":"Sai Kommaraju, Senior Software Engineer","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Sai Kommaraju, Senior Software Engineer","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/"},"author":{"name":"Sai Kommaraju, Senior Software Engineer","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/8fb575d74280ff3d0f044904277a8076"},"headline":"Filtered ANN Search With Composite Vector Indexes (Part 4)","datePublished":"2026-03-23T21:17:07+00:00","dateModified":"2026-03-23T21:18:02+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/"},"wordCount":758,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/03\/Filtered-ANN-Search-With-Composite-Vector-Indexes-3.png","articleSection":["Vector Search"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/","url":"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/","name":"Filtered ANN Search With Composite Vector Indexes (Part 4) - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/03\/Filtered-ANN-Search-With-Composite-Vector-Indexes-3.png","datePublished":"2026-03-23T21:17:07+00:00","dateModified":"2026-03-23T21:18:02+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/03\/Filtered-ANN-Search-With-Composite-Vector-Indexes-3.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/03\/Filtered-ANN-Search-With-Composite-Vector-Indexes-3.png","width":2400,"height":1256},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Filtered ANN Search With Composite Vector Indexes (Part 4)"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/8fb575d74280ff3d0f044904277a8076","name":"Sai Kommaraju, Senior Software Engineer","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/a2ca26c70968f44d876aa239d293a709","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/01\/Sai-Kommaraju.jpeg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/01\/Sai-Kommaraju.jpeg","caption":"Sai Kommaraju, Senior Software Engineer"},"url":"https:\/\/www.couchbase.com\/blog\/author\/saikommaraju\/"}]}},"authors":[{"term_id":10168,"user_id":85690,"is_guest":0,"slug":"saikommaraju","display_name":"Sai Kommaraju, Senior Software Engineer","avatar_url":{"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/01\/Sai-Kommaraju.jpeg","url2x":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2026\/01\/Sai-Kommaraju.jpeg"},"0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/17979","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/85690"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=17979"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/17979\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/17981"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=17979"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=17979"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=17979"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=17979"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}