{"id":16437,"date":"2024-10-09T16:21:05","date_gmt":"2024-10-09T23:21:05","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=16437"},"modified":"2025-06-13T16:36:38","modified_gmt":"2025-06-13T23:36:38","slug":"couchbase-xattrs-vector-search","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/couchbase-xattrs-vector-search\/","title":{"rendered":"Mejora del rendimiento mediante XATTR para el almacenamiento y la b\u00fasqueda de vectores"},"content":{"rendered":"<p>Con la introducci\u00f3n de <a href=\"https:\/\/www.couchbase.com\/blog\/es\/announcing-vector-search\/\">b\u00fasqueda vectorial<\/a>ahora los usuarios pueden almacenar <em>matrices de vectores de gran tama\u00f1o<\/em>-a menudo formados por n\u00fameros aparentemente arbitrarios- dentro de sus documentos. Dado que estos datos no son necesarios para la mayor\u00eda de las consultas est\u00e1ndar, ahora los usuarios pueden aprovechar <em>atributos ampliados<\/em> (XATTRs), que forman parte de los metadatos del documento, para almacenar vectores y otros contenidos voluminosos. De este modo, se mejora el rendimiento al mantener los datos pesados fuera de la ruta de consulta principal. En este art\u00edculo se explica qu\u00e9 son los XATTR, se destacan sus ventajas y se muestra c\u00f3mo pueden utilizarse en las b\u00fasquedas.<\/p>\n<h2>\u00bfD\u00f3nde est\u00e1n <span style=\"font-weight: 400;\">\u00bfXATTRs?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Los XATTR son los metadatos de un documento que un usuario puede modificar o cambiar sin alterar el contenido del documento. Esto permite separar el documento en dos partes. Los servicios que necesiten los documentos los obtendr\u00e1n del almac\u00e9n de valores clave (KV), que obtiene el contenido de los XATTR s\u00f3lo cuando es necesario.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Tomemos un ejemplo en el que el usuario est\u00e1 intentando indexar datos de un hotel cuya estructura documental tiene el siguiente aspecto:<\/span><\/p>\n<pre class=\"lang:js decode:true\">{\r\n  \"t\u00edtulo\": \"Gillingham (Kent)\",\r\n  \"name\": \"Albergue Juvenil Medway\",\r\n  \"address\": \"Capstone Road, ME7 3JE\",\r\n  \"directions\": null,\r\n  \"phone\": \"+44 870 770 5964\",\r\n  \"tollfree\": null,\r\n  \"email\": null,\r\n  \"fax\": null,\r\n  \"url\": \"https:\/\/www.yha.org.uk\",\r\n  \"checkin\": null,\r\n  \"checkout\": null,\r\n  \"price\": null,\r\n  \"geo\": {\r\n    \"lat\": 51.35785,\r\n    \"lon\": 0.55818,\r\n    \"accuracy\": \"RANGO_INTERPOLADO\"\r\n  },\r\n  \"id\": 10025,\r\n  \"country\": \"Reino Unido\",\r\n  \"city\": \"Medway\",\r\n  \"estado\": null,,\r\n  \"vacante\": true\r\n  \"descripci\u00f3n\": \"Albergue de verano de 40 camas a unos 5 km de Gillingham, ubicado en una intrincada Oast House reconvertida en un entorno semirural\",\r\n  \"description_vector\": [0.9293051,...(108 m\u00e1s float32s)...,0.41247833],\r\n  \"pets_ok\": true,\r\n  \"free_breakfast\": true,\r\n  \"free_internet\": false,\r\n  \"free_parking\": true\r\n}<\/pre>\n<p><span style=\"font-weight: 400;\">Esta estructura de documento incluye todos los campos necesarios para un hotel, junto con una descripci\u00f3n vectorizada utilizada para encontrar hoteles con descripciones similares. El vector de descripci\u00f3n (l\u00ednea 25), que es un vector de 110 dimensiones, ocupa unos 1.400 bytes, mientras que el resto del documento tiene un tama\u00f1o de unos 1.400 bytes.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">En los casos de uso habituales, cuando un usuario ejecuta una consulta no vectorial con SQL++ sin un \u00edndice de cobertura, se obtiene el documento completo. Esto significa que, aunque el vector, que ocupa casi la mitad del documento, no sea necesario, se recupera junto con el resto del documento, con el consiguiente derroche de recursos.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Imaginemos una situaci\u00f3n en la que el usuario no utiliza XATTRs y tiene la totalidad de los datos dentro del contenido del documento y ninguno de ellos dentro de XATTRs. Cualquier servicio, como los de consulta y b\u00fasqueda, que intente recuperar documentos tendr\u00e1 que procesar todo el contenido del documento para obtener lo que desea.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-16438\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image4-2-1024x724.png\" alt=\"\" width=\"599\" height=\"424\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image4-2-1024x724.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image4-2-300x212.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image4-2-768x543.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image4-2-1536x1086.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image4-2-1320x934.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image4-2.png 1999w\" sizes=\"auto, (max-width: 599px) 100vw, 599px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Una forma mejor de estructurar este documento ser\u00eda almacenar el vector como parte de XATTRs. Esto significar\u00eda que los servicios que vienen en busca de los datos no vectoriales s\u00f3lo ir\u00e1n a trav\u00e9s del contenido del documento no XATTRs reduciendo as\u00ed la cantidad de datos transferidos a la mitad.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-16439\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image5-2-1024x761.png\" alt=\"\" width=\"600\" height=\"446\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image5-2-1024x761.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image5-2-300x223.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image5-2-768x571.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image5-2-1536x1142.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image5-2-1320x981.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image5-2.png 1996w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Los usuarios pueden incluso llevar esto al extremo a\u00f1adiendo otros campos poco utilizados, como informaci\u00f3n geogr\u00e1fica, datos de contacto, etc., tambi\u00e9n en XATTR. Esto reduce a\u00fan m\u00e1s la cantidad de datos innecesarios transferidos.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-16440\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image1-4-1024x617.png\" alt=\"\" width=\"600\" height=\"362\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image1-4-1024x617.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image1-4-300x181.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image1-4-768x463.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image1-4-1536x926.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image1-4-1320x796.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image1-4.png 1999w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<h2>C\u00f3mo indexar Couchbase <span style=\"font-weight: 400;\">XATTRs<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">A partir de Couchbase Server 7.6.2, la funci\u00f3n <a href=\"https:\/\/www.couchbase.com\/blog\/es\/products\/full-text-search\/\">servicio de b\u00fasqueda<\/a> ofrece a los usuarios la posibilidad de ingerir datos presentes en XATTRs s\u00f3lo cuando lo requiera la asignaci\u00f3n del \u00edndice durante el proceso de creaci\u00f3n del mismo. Si los datos de XATTRs no son relevantes y no existe una asignaci\u00f3n de XATTRs en la definici\u00f3n del \u00edndice, los usuarios pueden esperar una ingesta de datos y una indexaci\u00f3n m\u00e1s r\u00e1pidas, ya que se obtiene una carga \u00fatil m\u00e1s ligera del servicio de datos.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Supongamos que un usuario ha creado un \u00edndice que indexa el contenido de XATTRs. La definici\u00f3n del \u00edndice ser\u00eda algo parecido a esto, con XATTRs indexados en las l\u00edneas 10-27:<\/span><\/p>\n<pre class=\"decode-attributes:true lang:js decode:true\">{\r\n    \"nombre\": \"ejemplo-index\",\r\n    \"type\": \"fulltext-index\",\r\n    \"params\": {\r\n    \"mapping\": {\r\n    \"default_mapping\": {\r\n    \"enabled\": true\r\n    \"dynamic\": true,\r\n    \"properties\": {\r\n      \"_$xattrs\": {\r\n        \"enabled\": true\r\n        \"dynamic\": true,\r\n        \"properties\": {\r\n        \"textField\": {\r\n        \"enabled\": true\r\n        \"dynamic\": false,\r\n        \"fields\": [\r\n            {\r\n            \"name\": \"textField\",\r\n            \"type\": \"text\",\r\n            \"store\": false\r\n            \"index\": true\r\n            \"include_term_vectors\": false,\r\n            \"include_in_all\": falso,\r\n            \"docvalues\": false\r\n            }\r\n        ]\r\n        }\r\n        }\r\n        }\r\n    }\r\n    },\r\n    \"default_type\": \"_default\",\r\n    \"default_analyzer\": \"standard\",\r\n    \"default_datetime_parser\": \"dateTimeOptional\",\r\n    \"default_field\": \"_all\",\r\n    \"store_dynamic\": false,\r\n    \"index_dynamic\": true,\r\n    \"docvalues_dynamic\": false\r\n    },\r\n    \"store\": {\r\n    \"indexType\": \"scorch\",\r\n    \"kvStoreName\": \"\"\r\n    },\r\n    \"doc_config\": {\r\n    \"mode\": \"type_field\",\r\n    \"type_field\": \"type\",\r\n    \"docid_prefix_delim\": \"\",\r\n    \"docid_regexp\": \"\"\r\n    }\r\n    },\r\n    \"sourceType\": \"couchbase\",\r\n    \"sourceName\": \"sample-bucket\",\r\n    \"sourceUUID\": \"602c579bc2a74e67dc1f051eb769e702\",\r\n    \"sourceParams\": {},\r\n    \"planParams\": {\r\n    \"maxPartitionsPerPIndex\": 1024,\r\n    \"numReplicas\": 0,\r\n    \"indexPartitions\": 1\r\n    },\r\n    \"uuid\": \"\"\r\n}<\/pre>\n<p><span style=\"font-weight: 400;\">Tras la creaci\u00f3n del \u00edndice mediante una definici\u00f3n de \u00edndice como la anterior, la b\u00fasqueda obtendr\u00e1 todo el contenido del documento y el contenido XATTRs del servicio de datos.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-16441\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image2-2-1024x601.png\" alt=\"\" width=\"600\" height=\"352\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image2-2-1024x601.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image2-2-300x176.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image2-2-768x451.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image2-2-1536x901.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image2-2-1320x775.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image2-2.png 1999w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">En este caso, tras obtener el contenido, el servicio de b\u00fasqueda combinar\u00e1 ambos en un \u00fanico documento. Los datos presentes en los XATTR se asignar\u00e1n al contenido del documento mediante una asignaci\u00f3n especial de campos denominada <em><code>_$xattrs<\/code><\/em>\u00a0durante el proceso de indexaci\u00f3n.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-16442\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image3-1-1024x561.png\" alt=\"\" width=\"600\" height=\"329\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image3-1-1024x561.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image3-1-300x164.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image3-1-768x421.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image3-1-1536x841.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image3-1-1320x723.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/image3-1.png 1999w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Para consultar los campos presentes en el contenido de los XATTRs, debe tenerse en cuenta que este contenido se colocar\u00e1 bajo un campo especial denominado <code>_$xattrs<\/code> y la consulta debe reflejarlo. Tambi\u00e9n existe una restricci\u00f3n inherente al tama\u00f1o del nombre del campo XATTRs, que es de 12 caracteres.<\/span><\/p>\n<p>Este es el aspecto de la consulta de un documento de ejemplo con <span style=\"font-weight: 400;\">XATTRs<\/span>:<\/p>\n<pre class=\"nums:false lang:js decode:true\">{\r\n    \"explicar\": true\r\n    \"fields\": [\r\n        \"*\"\r\n    ],\r\n    \"highlight\": {},\r\n    \"consulta\": {\r\n        \"query\": \"_$xattrs.textField:*\"\r\n    },\r\n    \"size\": 10,\r\n    \"from\": 0\r\n}<\/pre>\n<p><span style=\"font-weight: 400;\">Los XATTR no se limitan a almacenar vectores. Siempre que haya campos que se utilicen con poca frecuencia, campos s\u00f3lo espec\u00edficos del servicio de b\u00fasqueda o campos voluminosos, es aconsejable a\u00f1adirlos a las XATTR. De esta forma, los servicios que no necesiten estos campos tendr\u00e1n que obtener menos datos de KV.\u00a0<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Pr\u00f3ximos pasos<\/span><\/h2>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">M\u00e1s informaci\u00f3n <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/es\/category\/vector-search\/\"><span style=\"font-weight: 400;\">Conceptos de b\u00fasqueda vectorial<\/span><\/a><span style=\"font-weight: 400;\"> en nuestros blogs, incluidos tutoriales y conceptos.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">M\u00e1s informaci\u00f3n <\/span><a href=\"https:\/\/docs.couchbase.com\/java-sdk\/current\/concept-docs\/xattr.html\"><span style=\"font-weight: 400;\">XATTRs<\/span><\/a><span style=\"font-weight: 400;\"> mediante SDKs a trav\u00e9s de nuestra documentaci\u00f3n.<\/span><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/es\/products\/capella\/?_gl=1*hlrjaa*_gcl_au*MTEyNzQ0NjE0OS4xNzE2ODc1OTE5\"><span style=\"font-weight: 400;\">Prueba gratuita de Couchbase Capella<\/span><\/a><span style=\"font-weight: 400;\"> incluye b\u00fasqueda vectorial, entre otras muchas funciones. Pru\u00e9belo hoy mismo.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Con la introducci\u00f3n de la b\u00fasqueda vectorial, los usuarios pueden almacenar grandes matrices vectoriales -a menudo compuestas por n\u00fameros aparentemente arbitrarios- dentro de sus documentos. Como estos datos no son necesarios para la mayor\u00eda de las consultas est\u00e1ndar, ahora los usuarios pueden aprovechar los atributos extendidos (XATTR), que forman parte [...].<\/p>","protected":false},"author":85298,"featured_media":16443,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1814,10122,1815,1821,2225,8905,1816,9936,9937],"tags":[9974,1696,9602],"ppma_author":[9972],"class_list":["post-16437","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-application-design","category-artificial-intelligence-ai","category-best-practices-and-tutorials","category-couchbase-architecture","category-cloud","category-couchbase-global-secondary-index","category-couchbase-server","category-search","category-vector-search","tag-genai","tag-indexing","tag-storage"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.5 (Yoast SEO v26.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Enhancing Performance Using XATTRs for Vector Storage and Search<\/title>\n<meta name=\"description\" content=\"Couchbase XATTRs store vector data efficiently, improving performance by keeping bulky content out of query paths. Here&#039;s how XATTRs work with search.\" \/>\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\/couchbase-xattrs-vector-search\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Enhancing Performance Using XATTRs for Vector Storage and Search\" \/>\n<meta property=\"og:description\" content=\"Couchbase XATTRs store vector data efficiently, improving performance by keeping bulky content out of query paths. Here&#039;s how XATTRs work with search.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/couchbase-xattrs-vector-search\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-10-09T23:21:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-13T23:36:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/blog-xattrs-vector-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=\"Likith B, 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=\"Likith B, Software Engineer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-xattrs-vector-search\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-xattrs-vector-search\/\"},\"author\":{\"name\":\"Likith B, Software Engineer\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/dd7ad9b8eb78bdce2fe68e940518a7f6\"},\"headline\":\"Enhancing Performance Using XATTRs for Vector Storage and Search\",\"datePublished\":\"2024-10-09T23:21:05+00:00\",\"dateModified\":\"2025-06-13T23:36:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-xattrs-vector-search\/\"},\"wordCount\":728,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-xattrs-vector-search\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/blog-xattrs-vector-search.png\",\"keywords\":[\"GenAI\",\"Indexing\",\"storage\"],\"articleSection\":[\"Application Design\",\"Artificial Intelligence (AI)\",\"Best Practices and Tutorials\",\"Couchbase Architecture\",\"Couchbase Capella\",\"Couchbase Global Secondary Index\",\"Couchbase Server\",\"Search\",\"Vector Search\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-xattrs-vector-search\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-xattrs-vector-search\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/couchbase-xattrs-vector-search\/\",\"name\":\"Enhancing Performance Using XATTRs for Vector Storage and Search\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-xattrs-vector-search\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-xattrs-vector-search\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/blog-xattrs-vector-search.png\",\"datePublished\":\"2024-10-09T23:21:05+00:00\",\"dateModified\":\"2025-06-13T23:36:38+00:00\",\"description\":\"Couchbase XATTRs store vector data efficiently, improving performance by keeping bulky content out of query paths. Here's how XATTRs work with search.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-xattrs-vector-search\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-xattrs-vector-search\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-xattrs-vector-search\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/blog-xattrs-vector-search.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/blog-xattrs-vector-search.png\",\"width\":2400,\"height\":1256},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-xattrs-vector-search\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Enhancing Performance Using XATTRs for Vector Storage and Search\"}]},{\"@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\/dd7ad9b8eb78bdce2fe68e940518a7f6\",\"name\":\"Likith B, Software Engineer\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/a834fd56b316ec42fcf7705d52c8e604\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ebf7761bbd5fa10448361e3b6fcb229cf6c297eee4be1b3ce3a3e391896cb098?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ebf7761bbd5fa10448361e3b6fcb229cf6c297eee4be1b3ce3a3e391896cb098?s=96&d=mm&r=g\",\"caption\":\"Likith B, Software Engineer\"},\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/likithb\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Mejora del rendimiento mediante XATTR para el almacenamiento y la b\u00fasqueda de vectores","description":"Los XATTRs de Couchbase almacenan datos vectoriales eficientemente, mejorando el rendimiento al mantener el contenido voluminoso fuera de las rutas de consulta. As\u00ed es como funcionan los XATTRs con la b\u00fasqueda.","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\/couchbase-xattrs-vector-search\/","og_locale":"es_MX","og_type":"article","og_title":"Enhancing Performance Using XATTRs for Vector Storage and Search","og_description":"Couchbase XATTRs store vector data efficiently, improving performance by keeping bulky content out of query paths. Here's how XATTRs work with search.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/couchbase-xattrs-vector-search\/","og_site_name":"The Couchbase Blog","article_published_time":"2024-10-09T23:21:05+00:00","article_modified_time":"2025-06-13T23:36:38+00:00","og_image":[{"width":1024,"height":536,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/blog-xattrs-vector-search-1024x536.png","type":"image\/png"}],"author":"Likith B, Software Engineer","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Likith B, Software Engineer","Est. reading time":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-xattrs-vector-search\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-xattrs-vector-search\/"},"author":{"name":"Likith B, Software Engineer","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/dd7ad9b8eb78bdce2fe68e940518a7f6"},"headline":"Enhancing Performance Using XATTRs for Vector Storage and Search","datePublished":"2024-10-09T23:21:05+00:00","dateModified":"2025-06-13T23:36:38+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-xattrs-vector-search\/"},"wordCount":728,"commentCount":2,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-xattrs-vector-search\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/blog-xattrs-vector-search.png","keywords":["GenAI","Indexing","storage"],"articleSection":["Application Design","Artificial Intelligence (AI)","Best Practices and Tutorials","Couchbase Architecture","Couchbase Capella","Couchbase Global Secondary Index","Couchbase Server","Search","Vector Search"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/couchbase-xattrs-vector-search\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-xattrs-vector-search\/","url":"https:\/\/www.couchbase.com\/blog\/couchbase-xattrs-vector-search\/","name":"Mejora del rendimiento mediante XATTR para el almacenamiento y la b\u00fasqueda de vectores","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-xattrs-vector-search\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-xattrs-vector-search\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/blog-xattrs-vector-search.png","datePublished":"2024-10-09T23:21:05+00:00","dateModified":"2025-06-13T23:36:38+00:00","description":"Los XATTRs de Couchbase almacenan datos vectoriales eficientemente, mejorando el rendimiento al mantener el contenido voluminoso fuera de las rutas de consulta. As\u00ed es como funcionan los XATTRs con la b\u00fasqueda.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-xattrs-vector-search\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/couchbase-xattrs-vector-search\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-xattrs-vector-search\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/blog-xattrs-vector-search.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/10\/blog-xattrs-vector-search.png","width":2400,"height":1256},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-xattrs-vector-search\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Enhancing Performance Using XATTRs for Vector Storage and Search"}]},{"@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\/dd7ad9b8eb78bdce2fe68e940518a7f6","name":"Likith B, Ingeniero de software","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/a834fd56b316ec42fcf7705d52c8e604","url":"https:\/\/secure.gravatar.com\/avatar\/ebf7761bbd5fa10448361e3b6fcb229cf6c297eee4be1b3ce3a3e391896cb098?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ebf7761bbd5fa10448361e3b6fcb229cf6c297eee4be1b3ce3a3e391896cb098?s=96&d=mm&r=g","caption":"Likith B, Software Engineer"},"url":"https:\/\/www.couchbase.com\/blog\/es\/author\/likithb\/"}]}},"authors":[{"term_id":9972,"user_id":85298,"is_guest":0,"slug":"likithb","display_name":"Likith B, Software Engineer","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/ebf7761bbd5fa10448361e3b6fcb229cf6c297eee4be1b3ce3a3e391896cb098?s=96&d=mm&r=g","author_category":"","last_name":"B, Software Engineer","first_name":"Likith","job_title":"","user_url":"","description":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/16437","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\/85298"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=16437"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/16437\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/16443"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=16437"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=16437"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=16437"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=16437"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}