{"id":17138,"date":"2025-05-22T09:54:28","date_gmt":"2025-05-22T16:54:28","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=17138"},"modified":"2025-06-13T22:45:04","modified_gmt":"2025-06-14T05:45:04","slug":"semantic-similarity-with-focused-selectivity","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/semantic-similarity-with-focused-selectivity\/","title":{"rendered":"Similitud sem\u00e1ntica con selectividad focalizada"},"content":{"rendered":"<h2>\u00bfPor qu\u00e9 la b\u00fasqueda sem\u00e1ntica necesita selectividad?<\/h2>\n<p>Hasta ahora, consider\u00e1bamos una incrustaci\u00f3n vectorial como una entidad completa e independiente, centrada exclusivamente en el significado que codifica. Aunque esto permite la b\u00fasqueda sem\u00e1ntica, a menudo con un <a target=\"_blank\" href=\"https:\/\/www.couchbase.com\/blog\/es\/vector-search-indexing-recall-faiss\/\" rel=\"noopener\">alto grado de similitud<\/a>se limita a la similitud entre la consulta y el conjunto de datos.<\/p>\n<p>No se pod\u00eda confiar en que la oferta de b\u00fasqueda de similitudes vectoriales satisficiera predicados exactos. El prefiltrado pretende colmar exactamente esta laguna, buscando vectores similares s\u00f3lo entre los que satisfacen algunos criterios de filtrado.<\/p>\n<p>Es el equivalente en incrustaci\u00f3n de limitar tu b\u00fasqueda, ya sea de trabajo o de una propiedad, a una ubicaci\u00f3n. Por ejemplo, si quiere una vivienda en primera l\u00ednea de playa en un estado concreto. Tambi\u00e9n quiere limitar su b\u00fasqueda a las que tienen tres dormitorios o m\u00e1s. Recorrer los listados sin un m\u00e9todo para filtrar por estos criterios es casi inviable dada la gran cantidad de listados.<\/p>\n<p>Con el prefiltrado, puede limitar su b\u00fasqueda a una ubicaci\u00f3n espec\u00edfica restringiendo el espacio de b\u00fasqueda a las propiedades elegibles mediante consultas geoespaciales y num\u00e9ricas. Sobre este subconjunto limitado se realizar\u00e1 una b\u00fasqueda de similitud vectorial de propiedades \"frente a la playa\", \"junto a la playa\", \"frente al mar\".<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-17139\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image4-1-1024x289.png\" alt=\"\" width=\"900\" height=\"254\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image4-1-1024x289.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image4-1-300x85.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image4-1-768x217.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image4-1-1536x434.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image4-1-1320x373.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image4-1.png 1999w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<p>El filtrado previo permitir\u00e1 a los usuarios especificar consultas de filtrado como parte del atributo kNN en la consulta, cuyos resultados s\u00f3lo se considerar\u00e1n aptos para ser devueltos por la consulta kNN. En pocas palabras, el usuario puede utilizar la conocida sintaxis de consulta FTS para <i>restringir los documentos sobre los que se realizar\u00e1 una b\u00fasqueda kNN<\/i>.<\/p>\n<h2>\u00bfCu\u00e1ndo aplicar el prefiltrado?<\/h2>\n<p>Como su nombre indica, las incrustaciones son metadatos filtrados <i>antes de <\/i>la b\u00fasqueda de similitudes. Es diferente del postfiltrado, en el que la b\u00fasqueda kNN va seguida de un filtrado de metadatos. El prefiltrado ofrece muchas m\u00e1s posibilidades de obtener k resultados positivos, siempre que al menos esos documentos superen la fase de filtrado.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-17141\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image2-1-1024x291.png\" alt=\"\" width=\"900\" height=\"256\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image2-1-1024x291.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image2-1-300x85.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image2-1-768x219.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image2-1-1536x437.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image2-1-1320x376.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image2-1.png 1999w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-17140\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image1-3-1024x246.png\" alt=\"\" width=\"900\" height=\"216\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image1-3-1024x246.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image1-3-300x72.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image1-3-768x185.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image1-3-1536x370.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image1-3-1320x318.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image1-3.png 1999w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<h2>C\u00f3mo funciona<\/h2>\n<p>Antes de adentrarnos en las tripas del prefiltrado con kNN, vamos a entender c\u00f3mo un vector y un \u00edndice de texto completo se ubican conjuntamente en el \u00edndice del servicio de B\u00fasqueda. Cada \u00edndice de b\u00fasqueda tiene una o m\u00e1s particiones, cada una de las cuales tiene uno o m\u00e1s segmentos. Cada uno de estos segmentos es un fichero, y el fichero se divide en secciones separadas, una por cada tipo de \u00edndice. La visualizaci\u00f3n de un segmento como una unidad aut\u00f3noma con contenido tanto textual como vectorial de un <i>lote de documentos<\/i> indexado ser\u00e1 \u00fatil para comprender c\u00f3mo funciona el prefiltrado a nivel de segmento.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-17142 alignleft\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image6-1-1024x658.png\" alt=\"Semantic Similarity with Focused Selectivity\" width=\"399\" height=\"257\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image6-1-1024x658.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image6-1-300x193.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image6-1-768x494.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image6-1-1320x848.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image6-1.png 1444w\" sizes=\"auto, (max-width: 399px) 100vw, 399px\" \/>Una consideraci\u00f3n clave a la hora de construirlo fue que deb\u00eda ser <i>agn\u00f3stico de predicci\u00f3n<\/i> en el momento de la b\u00fasqueda. Esencialmente, esto significa que el filtrado en el \u00edndice vectorial deber\u00eda funcionar de la misma manera, independientemente del predicado de texto completo. Un predicado de texto sobre un campo de texto no deber\u00eda ser diferente de un predicado num\u00e9rico sobre otro.<\/p>\n<p>Para ello, se utilizan n\u00fameros de documento, identificadores exclusivos de un documento, para delimitar qu\u00e9 documentos son aptos para la consulta kNN. Toda consulta FTS, ya sea textual, num\u00e9rica o geoespacial, se reduce a identificar los resultados por su n\u00famero de documento. Utilizar n\u00fameros de documento significa que no tenemos que cambiar nuestra estrategia de indexaci\u00f3n de vectores, y limitarla a un cambio en el tiempo de b\u00fasqueda.<\/p>\n<h3>Fase 1: Filtrado de metadatos<\/h3>\n<p>Dado que un segmento es esencialmente un lote inmutable de documentos, con su contenido textual y vectorial indexado, la consulta de metadatos de texto completo devuelve todos los documentos elegibles. <i>a nivel de segmento<\/i>. A continuaci\u00f3n, sus n\u00fameros de documento se pasan al \u00edndice de vectores para recuperar los vectores elegibles m\u00e1s cercanos.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-17143 size-large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image3-1-1024x500.png\" alt=\"Semantic Similarity with Focused Selectivity\" width=\"900\" height=\"439\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image3-1-1024x500.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image3-1-300x146.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image3-1-768x375.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image3-1-1536x750.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image3-1-1320x644.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image3-1.png 1999w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<h3>Fase 2: b\u00fasqueda kNN<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-17144\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image5-1-707x1024.png\" alt=\"Semantic Similarity with Focused Selectivity\" width=\"400\" height=\"579\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image5-1-707x1024.png 707w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image5-1-207x300.png 207w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image5-1-768x1112.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image5-1-300x434.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/image5-1.png 804w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\" \/>El algoritmo actual que elige el <em>nprobe<\/em> clusters m\u00e1s cercanos al vector de consulta en un \u00edndice IVF es <i>esencialmente volando a ciegas<\/i>\u00a0ya que no tiene en cuenta los conglomerados pr\u00f3ximos con pocos o ning\u00fan documento elegible. En el momento de la b\u00fasqueda, la selecci\u00f3n de conglomerados a sondear ahora tiene que <i>contabilizar la distribuci\u00f3n de las respuestas positivas filtradas por metadatos<\/i> a trav\u00e9s del \u00edndice.<\/p>\n<p>Un grupo <em>m\u00e1s cerca<\/em>\u00a0al vector de consulta podr\u00eda tener muchas menos coincidencias elegibles que uno mucho m\u00e1s alejado.<\/p>\n<p>Tener en cuenta la distribuci\u00f3n de los aciertos de filtro y mantener al mismo tiempo una alta recuperaci\u00f3n significa que no podemos escanear los conglomerados bas\u00e1ndonos \u00fanicamente en la densidad de aciertos de filtro. Lo que s\u00ed significa es que intentamos minimizar los c\u00e1lculos de distancia para los vectores no elegibles, incluso cuando escaneamos tantos conglomerados como sea necesario para devolver el <em>k vecinos m\u00e1s cercanos<\/em>.<\/p>\n<p>Antes, <em>nprobe<\/em> se defini\u00f3 como el <i>l\u00edmite absoluto<\/i> al n\u00famero de clusters escaneados. Ahora, se trata m\u00e1s bien de un n\u00famero m\u00ednimo de clusters a escanear suponiendo que menos clusters tengan suficientes vectores elegibles. En los casos de distribuci\u00f3n dispersa de aciertos de filtro, en los que cada conglomerado tiene relativamente pocos vectores elegibles, nuestra b\u00fasqueda de k vecinos m\u00e1s cercanos puede llevarnos a <i>escanear mucho m\u00e1s que nprobe clusters<\/i>. Tanto el kNN filtrado como el no filtrado escanean los clusters en orden creciente de distancia al vector de consulta, con la diferencia de que escanean un subconjunto de vectores a trav\u00e9s de un n\u00famero potencialmente mayor de clusters.<\/p>\n<pre class=\"lang:c++ decode:true\">eligible_clusters: clusters con al menos 1 resultado filtrado\r\nsi clusters_elegibles = k:\r\n        escanear nprobe conglomerados elegibles\r\n    si no\r\n        while total_hits(1,n) &lt; k:\r\n            n++\r\n        escanear n conglomerados elegibles<\/pre>\n<p>Una vez que el \u00edndice vectorial devuelve los vectores m\u00e1s similares a nivel de segmento, \u00e9stos se agregan a nivel de \u00edndice global de forma similar a como se hace para kNN sin filtrado.<\/p>\n<h3>C\u00f3mo utilizarlo<\/h3>\n<p>Cojamos un cubo, <em>hitos<\/em>. Este es un documento de muestra:<\/p>\n<pre class=\"lang:js decode:true\">{\r\n  \"t\u00edtulo\": \"Los \u00c1ngeles\/Noroeste\",\r\n  \"name\": \"Teatro El Cid\",\r\n  \"alt\": null,\r\n  \"address\": \"4212 W Sunset Blvd\",\r\n  \"directions\": null,\r\n  \"phone\": null,\r\n  \"tollfree\": null,\r\n  \"email\": null,\r\n  \"url\": null,\r\n  \"horario\": null,\r\n  \"imagen\": null,\r\n  \"precio\": null\r\n  \"contenido\": \"Construido a principios de siglo y, tras varias reencarnaciones, ofrece una de las \u00fanicas opciones de cena-teatro que quedan en Los \u00c1ngeles. El men\u00fa es eminentemente espa\u00f1ol y los espect\u00e1culos var\u00edan seg\u00fan la noche y van desde actuaciones de flamenco hasta burlesque deslenguado.\",\r\n  \"geo\": {\r\n    \"accuracy\": \"ROOFTOP\",\r\n    \"lat\": 34.0939,\r\n    \"lon\": -118.2822\r\n  },\r\n  \"activity\": \"do\",\r\n  \"type\": \"hito\",\r\n  \"id\": 35034,\r\n  \"country\": \"Estados Unidos\",\r\n  \"city\": \"Los Angeles\",\r\n  \"state\": \"California\",\r\n  \"embedding_crc\": \"fa6edfd97ffa665b\",\r\n  \"embedding\": [-0.003134159604087472, -0.020280055701732635,.... -0.014541691169142723]\r\n}<\/pre>\n<p>Crea un \u00edndice, <em>prueba,<\/em> que indexa el <em>incrustaci\u00f3n<\/em>, <em>id<\/em> y <em>ciudad<\/em> campos.<\/p>\n<p>Mi primera consulta es una incrustaci\u00f3n del Museo de Ingenieros Reales de Gillingham:<\/p>\n<pre class=\"lang:js decode:true\">{\r\n  \"knn\": [\r\n    {\r\n      \"k\": 10,\r\n      \"campo\": \"incrustaci\u00f3n\",\r\n      \"vector\": [\r\n        0.0022478399332612753,\r\n        ....\r\n      ]\r\n    }\r\n  ],\r\n  \"explain\": true,\r\n  \"size\": 10,\r\n  \"desde\": 0\r\n}<\/pre>\n<p>Los m\u00e1s cercanos son el Museo de la Brigada de Bomberos de Londres, el Museo Verulamium de St Albans y el Museo de la RAF de Londres.<\/p>\n<p>Ahora queremos buscar museos similares en Glasgow, es decir, el campo ciudad debe tener un valor <em>Glasgow<\/em>.<\/p>\n<p>Este es el aspecto de la consulta filtrada, con la opci\u00f3n <strong>filtro<\/strong> cl\u00e1usula a\u00f1adida:<\/p>\n<pre class=\"lang:js decode:true\">{\r\n  \"knn\": [\r\n    {\r\n      \"k\": 10,\r\n      \"campo\": \"incrustaci\u00f3n\",\r\n      \"vector\": [\r\n        0.0022478399332612753,\r\n        ....\r\n  ],\r\n  \"filtro\": {\r\n        \"coincidencia\": \"Glasgow\",\r\n        \"field\": \"city\"\r\n      }\r\n    }\r\n  ],\r\n  \"explain\": true\r\n  \"size\": 10,\r\n  \"desde\": 0\r\n}<\/pre>\n<p>Como era de esperar, los resultados se limitan ahora a los de Glasgow: los m\u00e1s cercanos son la Galer\u00eda de Arte y Museo Kelvingrove y el Museo Riverside.<\/p>\n<p>Como se ve en este ejemplo, una consulta kNN filtrada ofrece la ventaja de seleccionar los documentos para una b\u00fasqueda por similitud utilizando las buenas y viejas consultas FTS.<\/p>\n<h2>Seguir aprendiendo<\/h2>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Lea el blog para saber m\u00e1s sobre FAISS y la indexaci\u00f3n vectorial, <a target=\"_blank\" href=\"https:\/\/www.couchbase.com\/blog\/es\/vector-search-indexing-recall-faiss\/\">Rendimiento de la b\u00fasqueda vectorial: El aumento de la recuperaci\u00f3n<\/a><\/li>\n<li><a target=\"_blank\" href=\"https:\/\/www.couchbase.com\/blog\/es\/faster-llm-apps-semantic-cache-langchain-couchbase\/\">Cree aplicaciones LLM m\u00e1s r\u00e1pidas y baratas con Couchbase<\/a><\/li>\n<li><a target=\"_blank\" href=\"https:\/\/www.couchbase.com\/blog\/es\/what-is-semantic-search\/\">\u00bfQu\u00e9 es la b\u00fasqueda sem\u00e1ntica?<\/a><\/li>\n<li>Empieza a usar Couchbase Capella hoy mismo, <a target=\"_blank\" href=\"https:\/\/cloud.couchbase.com\/sign-up?ref=blog\">gratis<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<hr \/>\n<p><a target=\"_blank\" href=\"https:\/\/cloud.couchbase.com\/sign-up?ref=blog\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-16409\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/capella-cloud-dbaas-couchbase-signup-free-1024x835.png\" alt=\"Free Cloud NoSQL DBaaS\" width=\"613\" height=\"500\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/capella-cloud-dbaas-couchbase-signup-free-1024x835.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/capella-cloud-dbaas-couchbase-signup-free-300x245.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/capella-cloud-dbaas-couchbase-signup-free-768x626.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/capella-cloud-dbaas-couchbase-signup-free-1536x1252.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/capella-cloud-dbaas-couchbase-signup-free-2048x1670.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/capella-cloud-dbaas-couchbase-signup-free-1320x1076.png 1320w\" sizes=\"auto, (max-width: 613px) 100vw, 613px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Why does semantic search need selectivity? Up until now, we\u2019ve viewed a vector embedding as a complete, stand-alone entity &#8211; focused entirely on the meaning it encodes. While this enables semantic search, often with a high degree of similarity, it [&hellip;]<\/p>","protected":false},"author":85141,"featured_media":17148,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,2165,8683,9936,9937],"tags":[10117],"ppma_author":[9962],"class_list":["post-17138","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-full-text-search","category-geospatial","category-search","category-vector-search","tag-knn"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Semantic Similarity with Focused Selectivity - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Discover how selective pre-filtering enhances semantic similarity search in Couchbase by combining vector and metadata queries.\" \/>\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\/es\/semantic-similarity-with-focused-selectivity\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Semantic Similarity with Focused Selectivity\" \/>\n<meta property=\"og:description\" content=\"Discover how selective pre-filtering enhances semantic similarity search in Couchbase by combining vector and metadata queries.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/semantic-similarity-with-focused-selectivity\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-05-22T16:54:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T05:45:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/blog-semantic-search-1024x536.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"536\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Aditi Ahuja, 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=\"Aditi Ahuja, Software Engineer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/semantic-similarity-with-focused-selectivity\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/semantic-similarity-with-focused-selectivity\/\"},\"author\":{\"name\":\"Aditi Ahuja, Software Engineer\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/efea1290226a380570a7a86c651090a0\"},\"headline\":\"Semantic Similarity with Focused Selectivity\",\"datePublished\":\"2025-05-22T16:54:28+00:00\",\"dateModified\":\"2025-06-14T05:45:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/semantic-similarity-with-focused-selectivity\/\"},\"wordCount\":1005,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/semantic-similarity-with-focused-selectivity\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/blog-semantic-search.png\",\"keywords\":[\"knn\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Full-Text Search\",\"Geospatial\",\"Search\",\"Vector Search\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/semantic-similarity-with-focused-selectivity\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/semantic-similarity-with-focused-selectivity\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/semantic-similarity-with-focused-selectivity\/\",\"name\":\"Semantic Similarity with Focused Selectivity - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/semantic-similarity-with-focused-selectivity\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/semantic-similarity-with-focused-selectivity\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/blog-semantic-search.png\",\"datePublished\":\"2025-05-22T16:54:28+00:00\",\"dateModified\":\"2025-06-14T05:45:04+00:00\",\"description\":\"Discover how selective pre-filtering enhances semantic similarity search in Couchbase by combining vector and metadata queries.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/semantic-similarity-with-focused-selectivity\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/semantic-similarity-with-focused-selectivity\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/semantic-similarity-with-focused-selectivity\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/blog-semantic-search.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/blog-semantic-search.png\",\"width\":2400,\"height\":1256,\"caption\":\"blog-semantic-search selectivity\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/semantic-similarity-with-focused-selectivity\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Semantic Similarity with Focused Selectivity\"}]},{\"@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\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@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\/efea1290226a380570a7a86c651090a0\",\"name\":\"Aditi Ahuja, Software Engineer\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/a3eb898818ce7bdfc1b89af35c10b1f5\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c7e80b3dd70704a52cc5d032f55449eb2bc253009a8495c7a53ea50a14a014a8?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c7e80b3dd70704a52cc5d032f55449eb2bc253009a8495c7a53ea50a14a014a8?s=96&d=mm&r=g\",\"caption\":\"Aditi Ahuja, Software Engineer\"},\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/aditi\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Semantic Similarity with Focused Selectivity - The Couchbase Blog","description":"Descubra c\u00f3mo el prefiltrado selectivo mejora la b\u00fasqueda por similitud sem\u00e1ntica en Couchbase combinando consultas vectoriales y de metadatos.","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\/es\/semantic-similarity-with-focused-selectivity\/","og_locale":"es_MX","og_type":"article","og_title":"Semantic Similarity with Focused Selectivity","og_description":"Discover how selective pre-filtering enhances semantic similarity search in Couchbase by combining vector and metadata queries.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/semantic-similarity-with-focused-selectivity\/","og_site_name":"The Couchbase Blog","article_published_time":"2025-05-22T16:54:28+00:00","article_modified_time":"2025-06-14T05:45:04+00:00","og_image":[{"width":1024,"height":536,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/blog-semantic-search-1024x536.png","type":"image\/png"}],"author":"Aditi Ahuja, Software Engineer","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Aditi Ahuja, Software Engineer","Est. reading time":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/semantic-similarity-with-focused-selectivity\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/semantic-similarity-with-focused-selectivity\/"},"author":{"name":"Aditi Ahuja, Software Engineer","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/efea1290226a380570a7a86c651090a0"},"headline":"Semantic Similarity with Focused Selectivity","datePublished":"2025-05-22T16:54:28+00:00","dateModified":"2025-06-14T05:45:04+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/semantic-similarity-with-focused-selectivity\/"},"wordCount":1005,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/semantic-similarity-with-focused-selectivity\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/blog-semantic-search.png","keywords":["knn"],"articleSection":["Best Practices and Tutorials","Full-Text Search","Geospatial","Search","Vector Search"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/semantic-similarity-with-focused-selectivity\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/semantic-similarity-with-focused-selectivity\/","url":"https:\/\/www.couchbase.com\/blog\/semantic-similarity-with-focused-selectivity\/","name":"Semantic Similarity with Focused Selectivity - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/semantic-similarity-with-focused-selectivity\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/semantic-similarity-with-focused-selectivity\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/blog-semantic-search.png","datePublished":"2025-05-22T16:54:28+00:00","dateModified":"2025-06-14T05:45:04+00:00","description":"Descubra c\u00f3mo el prefiltrado selectivo mejora la b\u00fasqueda por similitud sem\u00e1ntica en Couchbase combinando consultas vectoriales y de metadatos.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/semantic-similarity-with-focused-selectivity\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/semantic-similarity-with-focused-selectivity\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/semantic-similarity-with-focused-selectivity\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/blog-semantic-search.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2025\/05\/blog-semantic-search.png","width":2400,"height":1256,"caption":"blog-semantic-search selectivity"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/semantic-similarity-with-focused-selectivity\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Semantic Similarity with Focused Selectivity"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","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":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@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\/efea1290226a380570a7a86c651090a0","name":"Aditi Ahuja, Ingeniera de Software","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/a3eb898818ce7bdfc1b89af35c10b1f5","url":"https:\/\/secure.gravatar.com\/avatar\/c7e80b3dd70704a52cc5d032f55449eb2bc253009a8495c7a53ea50a14a014a8?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c7e80b3dd70704a52cc5d032f55449eb2bc253009a8495c7a53ea50a14a014a8?s=96&d=mm&r=g","caption":"Aditi Ahuja, Software Engineer"},"url":"https:\/\/www.couchbase.com\/blog\/es\/author\/aditi\/"}]}},"authors":[{"term_id":9962,"user_id":85141,"is_guest":0,"slug":"aditi","display_name":"Aditi Ahuja, Software Engineer","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/c7e80b3dd70704a52cc5d032f55449eb2bc253009a8495c7a53ea50a14a014a8?s=96&d=mm&r=g","author_category":"","last_name":"Ahuja, Software Engineer","first_name":"Aditi","job_title":"","user_url":"","description":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/17138","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/85141"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=17138"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/17138\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/17148"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=17138"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=17138"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=17138"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=17138"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}