{"id":5205,"date":"2026-03-23T14:17:07","date_gmt":"2026-03-23T21:17:07","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/"},"modified":"2026-03-23T14:17:07","modified_gmt":"2026-03-23T21:17:07","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":"\n<p class=\"wp-block-paragraph\"><span>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>, <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-2\/\"><b>Part 2<\/b><\/a><span> and <strong><a href=\"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-ive-composite-vector-indexes\/\">Part 3<\/a><\/strong>.<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The series will cover:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\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\n\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\n\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\n\n<li>Real-world performance behavior and benchmarking results.<\/li>\n\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\"><span>Part 4: Performance Analysis of Composite Vector Indexes<\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><span>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\n\n\n<p class=\"wp-block-paragraph\"><span>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\n\n\n<p class=\"wp-block-paragraph\"><span>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\n\n\n<p class=\"wp-block-paragraph\"><span>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\n\n\n<h3 class=\"wp-block-heading\"><span>Build Performance<\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><span>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\n\n\n<p class=\"wp-block-paragraph\"><span>The build performance was measured on the following infrastructure:<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><b>Processor:<\/b><span> 32-core AMD-EPYC-7643<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><b>Memory:<\/b><span> 128GB RAM<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><b>Storage:<\/b><span> Samsung PM1743 Enterprise SSD 15.36TB<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><b>Dataset:<\/b><span> SIFT benchmark data<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span>This shows that indexing billions of vectors for production workloads is practical.<\/span><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span>Query Performance: Speed and Precision Combined<\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><span>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\n\n\n<h3 class=\"wp-block-heading\"><span>Throughput improves as selectivity narrows<\/span><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-17980\" src=\"https:\/\/www.couchbase.com\/wp-content\/uploads\/sites\/5\/2026\/05\/Screenshot-2026-03-23-at-2.09.37-PM.png\" alt=\"\" width=\"1160\" height=\"730\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span>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\n\n\n<h3 class=\"wp-block-heading\"><span>Test Setup<\/span><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\"><span>Definition<\/span><\/h4>\n\n\n<p>[crayon lang=&#8221;default&#8221; decode=&#8221;true&#8221;]CREATE INDEX `vector-idx` on `bucket-1`.`_default`.`_default` (scalar, emb Vector) WITH {&#8216;dimension&#8217;:128, &#8216;similarity&#8217;:&#8217;L2&#8242;, &#8216;description&#8217;:&#8217;IVF,SQ8&#8242;}<br \/>\n[\/crayon]<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><span>Query<\/span><\/h4>\n\n\n<p>[crayon lang=&#8221;default&#8221; decode=&#8221;true&#8221;]SELECT meta().id FROM `bucket-1`.`_default`.`_default`<br \/>\nWHERE scalar = &#8216;eligible&#8217;<br \/>\nORDER BY ANN_DISTANCE(emb, , &#8216;L2&#8217;, )<br \/>\nLIMIT 10<br \/>\n[\/crayon]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span>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\n\n\n<h2 class=\"wp-block-heading\"><span>Why the Curves Look This Way<\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><span>CVI&#8217;s performance is influenced by several architectural features:<\/span><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><span>Order-aware scanning<\/span>\n<ul>\n<li><span>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\n\n<li><span>Parallel processing architecture<\/span>\n<ul>\n<li><span>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\n\n<li><span>SIMD-accelerated distance computation<\/span>\n<ul>\n<li><span>CVI uses SIMD operations through the FAISS library to accelerate similarity evaluations and minimize computational overhead.<\/span><\/li>\n<\/ul>\n<\/li>\n\n\n<li><span>HNSW routing layer<\/span>\n<ul>\n<li><span>The Hierarchical Navigable Small World (HNSW) routing layer enables identification of relevant centroids, reducing the search space.<\/span><\/li>\n<\/ul>\n<\/li>\n\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\"><span>Example Applications<\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><span>CVI&#8217;s performance characteristics are applicable to a range of use cases:<\/span><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><span>E-commerce and product recommendations<\/span>\n<ul>\n<li><span>Product similarity search with price, brand, and category filters<\/span><\/li>\n<\/ul>\n<\/li>\n\n\n<li><span>Content discovery and search<\/span>\n<ul>\n<li><span>Document and media similarity search with metadata constraints<\/span><\/li>\n<\/ul>\n<\/li>\n\n\n<li><span>Fraud detection and risk assessment<\/span>\n<ul>\n<li><span>Anomaly detection in transaction patterns with temporal constraints<\/span><\/li>\n<\/ul>\n<\/li>\n\n\n<li><span>Personalized marketing<\/span>\n<ul>\n<li><span>Customer segmentation and targeted recommendations<\/span><\/li>\n<\/ul>\n<\/li>\n\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\"><span>Conclusion<\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><span>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\n\n\n<p class=\"wp-block-paragraph\"><span>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\n\n\n<p class=\"wp-block-paragraph\"><span>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\n\n\n<p class=\"wp-block-paragraph\">\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00a0<\/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: Part 4: Performance Analysis of Composite Vector Indexes Agentic applications and AI workloads increasingly require efficient [&hellip;]<\/p>\n","protected":false},"author":85690,"featured_media":5202,"comment_status":"open","ping_status":"open","sticky":true,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"_acf":"","footnotes":""},"categories":[715],"tags":[],"ppma_author":[1024],"class_list":["post-5205","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vector-search"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.6 (Yoast SEO v27.6) - 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: Part 4: Performance Analysis of Composite Vector Indexes Agentic applications and AI workloads increasingly require efficient [&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=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/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\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/filtered-ann-search-with-composite-vector-indexes-part-4\\\/\"},\"wordCount\":802,\"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\\\/5\\\/2026\\\/05\\\/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\\\/5\\\/2026\\\/05\\\/Filtered-ANN-Search-With-Composite-Vector-Indexes-3.png\",\"datePublished\":\"2026-03-23T21:17:07+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\\\/5\\\/2026\\\/05\\\/Filtered-ANN-Search-With-Composite-Vector-Indexes-3.png\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/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\\\/sites\\\/5\\\/2026\\\/06\\\/logo.svg\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/06\\\/logo.svg\",\"width\":\"1024\",\"height\":\"1024\",\"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:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b8a56cb763c8e864050caaf5444778b8d7c93bd2960edfc078ca1e10d4fa3b51?s=96&d=mm&r=g35c0f86ae57fcc6e389d9889b832eed3\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b8a56cb763c8e864050caaf5444778b8d7c93bd2960edfc078ca1e10d4fa3b51?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b8a56cb763c8e864050caaf5444778b8d7c93bd2960edfc078ca1e10d4fa3b51?s=96&d=mm&r=g\",\"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: Part 4: Performance Analysis of Composite Vector Indexes Agentic applications and AI workloads increasingly require efficient [&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","og_image":[{"width":2400,"height":1256,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/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","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/filtered-ann-search-with-composite-vector-indexes-part-4\/"},"wordCount":802,"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\/5\/2026\/05\/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\/5\/2026\/05\/Filtered-ANN-Search-With-Composite-Vector-Indexes-3.png","datePublished":"2026-03-23T21:17:07+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\/5\/2026\/05\/Filtered-ANN-Search-With-Composite-Vector-Indexes-3.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/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\/sites\/5\/2026\/06\/logo.svg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/06\/logo.svg","width":"1024","height":"1024","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:\/\/secure.gravatar.com\/avatar\/b8a56cb763c8e864050caaf5444778b8d7c93bd2960edfc078ca1e10d4fa3b51?s=96&d=mm&r=g35c0f86ae57fcc6e389d9889b832eed3","url":"https:\/\/secure.gravatar.com\/avatar\/b8a56cb763c8e864050caaf5444778b8d7c93bd2960edfc078ca1e10d4fa3b51?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b8a56cb763c8e864050caaf5444778b8d7c93bd2960edfc078ca1e10d4fa3b51?s=96&d=mm&r=g","caption":"Sai Kommaraju, Senior Software Engineer"},"url":"https:\/\/www.couchbase.com\/blog\/author\/saikommaraju\/"}]}},"acf":[],"authors":[{"term_id":1024,"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\/5\/2026\/05\/Sai-Kommaraju-7.jpeg","url2x":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/Sai-Kommaraju-7.jpeg"},"author_category":"1","first_name":"Sai","last_name":"Kommaraju","user_url":"","job_title":"","description":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/5205","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=5205"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/5205\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/5202"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=5205"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=5205"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=5205"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=5205"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}