{"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\/pt\/couchbase-xattrs-vector-search\/","title":{"rendered":"Aprimoramento do desempenho usando XATTRs para armazenamento e pesquisa de vetores"},"content":{"rendered":"<p>Com a introdu\u00e7\u00e3o do <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/announcing-vector-search\/\">pesquisa vetorial<\/a>os usu\u00e1rios agora podem armazenar <em>matrizes de vetores grandes<\/em>-(muitas vezes compostos por n\u00fameros aparentemente arbitr\u00e1rios) em seus documentos. Como esses dados n\u00e3o s\u00e3o necess\u00e1rios para a maioria das consultas padr\u00e3o, os usu\u00e1rios agora podem aproveitar <em>atributos estendidos<\/em> (XATTRs), que fazem parte dos metadados do documento, para armazenar vetores e outros conte\u00fados volumosos. Ao fazer isso, o desempenho \u00e9 aprimorado, mantendo os dados pesados fora do caminho da consulta principal. Esta postagem explicar\u00e1 o que s\u00e3o XATTRs, destacar\u00e1 seus benef\u00edcios e demonstrar\u00e1 como eles podem ser usados na pesquisa.<\/p>\n<h2>Onde est\u00e3o <span style=\"font-weight: 400;\">XATTRs?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Os XATTRs s\u00e3o os metadados de um documento que um usu\u00e1rio pode modificar ou alterar sem alterar o conte\u00fado do documento. Isso permite que o documento seja separado em duas partes. Os servi\u00e7os que exigem os documentos os buscar\u00e3o no Key Value Store (KV), que obt\u00e9m o conte\u00fado dos XATTRs somente quando necess\u00e1rio.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Vejamos um exemplo em que o usu\u00e1rio est\u00e1 tentando indexar dados de hotel em que a estrutura do documento \u00e9 semelhante \u00e0 seguinte:<\/span><\/p>\n<pre class=\"lang:js decode:true\">{\r\n  \"title\": \"Gillingham (Kent)\",\r\n  \"name\": \"Medway Youth Hostel\",\r\n  \"endere\u00e7o\": \"Capstone Road, ME7 3JE\",\r\n  \"directions\": nulo,\r\n  \"phone\" (telefone): \"+44 870 770 5964\",\r\n  \"tollfree\": nulo,\r\n  \"e-mail\": nulo,\r\n  \"fax\": nulo,\r\n  \"url\": \"https:\/\/www.yha.org.uk\",\r\n  \"checkin\": nulo,\r\n  \"checkout\": nulo,\r\n  \"price\": nulo,\r\n  \"geo\": {\r\n    \"lat\": 51.35785,\r\n    \"lon\": 0.55818,\r\n    \"accuracy\" (precis\u00e3o): \"RANGE_INTERPOLATED\"\r\n  },\r\n  \"id\": 10025,\r\n  \"country\" (pa\u00eds): \"United Kingdom\" (Reino Unido),\r\n  \"city\" (cidade): \"Medway\",\r\n  \"state\": null,,\r\n  \"vacancy\": true,\r\n  \"description\": \"Albergue de ver\u00e3o com 40 leitos a cerca de 3 milhas de Gillingham, instalado em uma distinta Oast House convertida em um ambiente semi-rural.\",\r\n  \"description_vector\": [0.9293051,...(108 more float32s)...,0.41247833],\r\n  \"pets_ok\": true,\r\n  \"free_breakfast\": verdadeiro,\r\n  \"free_internet\": falso,\r\n  \"free_parking\": true\r\n}<\/pre>\n<p><span style=\"font-weight: 400;\">Essa estrutura de documento inclui todos os campos necess\u00e1rios para um hotel, juntamente com uma descri\u00e7\u00e3o vetorizada usada para encontrar hot\u00e9is com descri\u00e7\u00f5es semelhantes. O vetor de descri\u00e7\u00e3o (linha 25), que \u00e9 um vetor de 110 dimens\u00f5es, ocupa cerca de 1.400 bytes, enquanto o restante do documento tem cerca de 1.400 bytes de tamanho.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Em casos de uso comuns, quando um usu\u00e1rio executa uma consulta n\u00e3o vetorial usando o SQL++ sem um \u00edndice de cobertura, o documento inteiro \u00e9 obtido. Isso significa que, embora o vetor, que tem quase a metade do tamanho do documento, n\u00e3o seja necess\u00e1rio, ele ainda \u00e9 recuperado com o restante do documento, o que acaba desperdi\u00e7ando recursos.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Imaginemos uma situa\u00e7\u00e3o em que o usu\u00e1rio n\u00e3o use XATTRs e tenha todos os dados dentro do conte\u00fado do documento e nenhum deles dentro de XATTRs. Qualquer servi\u00e7o, como consulta e pesquisa, que tente buscar documentos ter\u00e1 que processar todo o conte\u00fado do documento para obter o que deseja.<\/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;\">Uma maneira melhor de estruturar esse documento seria armazenar o vetor como parte dos XATTRs. Isso significaria que os servi\u00e7os que procuram os dados n\u00e3o vetoriais s\u00f3 passar\u00e3o pelo conte\u00fado do documento n\u00e3o XATTRs, reduzindo pela metade o volume de dados transferidos.<\/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;\">Os usu\u00e1rios podem at\u00e9 mesmo levar isso ao extremo adicionando outros campos pouco usados, como informa\u00e7\u00f5es geogr\u00e1ficas, detalhes de contato etc., tamb\u00e9m aos XATTRs. Isso reduz ainda mais a quantidade de dados desnecess\u00e1rios 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>Como indexar o Couchbase <span style=\"font-weight: 400;\">XATTRs<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">A partir do Couchbase Server 7.6.2, o <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/products\/full-text-search\/\">servi\u00e7o de busca<\/a> oferece aos usu\u00e1rios a capacidade de ingerir dados presentes em XATTRs somente quando exigido pelo mapeamento do \u00edndice durante o processo de cria\u00e7\u00e3o do \u00edndice. Se os dados XATTRs n\u00e3o forem relevantes e um mapeamento XATTRs n\u00e3o estiver presente na defini\u00e7\u00e3o do \u00edndice, os usu\u00e1rios poder\u00e3o esperar uma taxa mais r\u00e1pida de ingest\u00e3o e indexa\u00e7\u00e3o de dados porque uma carga \u00fatil mais leve ser\u00e1 obtida do servi\u00e7o de dados.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Vamos supor que um usu\u00e1rio tenha criado um \u00edndice que indexa o conte\u00fado dos XATTRs. A defini\u00e7\u00e3o do \u00edndice seria semelhante a esta, com XATTRs indexados nas linhas 10-27:<\/span><\/p>\n<pre class=\"decode-attributes:true lang:js decode:true\">{\r\n    \"name\": \"example-index\",\r\n    \"type\" (tipo): \"fulltext-index\",\r\n    \"params\": {\r\n    \"mapping\": {\r\n    \"default_mapping\": {\r\n    \"enabled\" (ativado): true,\r\n    \"dynamic\": true,\r\n    \"properties\" (propriedades): {\r\n      \"_$xattrs\": {\r\n        \"enabled\" (ativado): true,\r\n        \"dynamic\": true,\r\n        \"properties\" (propriedades): {\r\n        \"textField\": {\r\n        \"enabled\" (ativado): true,\r\n        \"dynamic\": false,\r\n        \"fields\": [\r\n            {\r\n            \"name\": \"textField\",\r\n            \"type\": \"text\",\r\n            \"store\": falso,\r\n            \"index\": true,\r\n            \"include_term_vectors\": false,\r\n            \"include_in_all\": falso,\r\n            \"docvalues\": falso\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\": falso,\r\n    \"index_dynamic\": true,\r\n    \"docvalues_dynamic\": falso\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\" (tipo),\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;\">Ap\u00f3s a cria\u00e7\u00e3o do \u00edndice usando uma defini\u00e7\u00e3o de \u00edndice como a acima, a pesquisa buscar\u00e1 todo o conte\u00fado do documento e o conte\u00fado dos XATTRs no servi\u00e7o de dados.<\/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;\">Nesse caso, depois de buscar o conte\u00fado, o servi\u00e7o de busca combinar\u00e1 os dois em um \u00fanico documento. Os dados presentes nos XATTRs ser\u00e3o mapeados para o conte\u00fado do documento em um mapeamento de campo especial denominado <em><code>_$xattrs<\/code><\/em>\u00a0durante o processo de indexa\u00e7\u00e3o.<\/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 os campos presentes no conte\u00fado dos XATTRs, deve-se observar que esse conte\u00fado ser\u00e1 colocado em um campo especial denominado <code>_$xattrs<\/code> e a consulta deve refletir isso. H\u00e1 tamb\u00e9m uma restri\u00e7\u00e3o inerente ao tamanho do nome do campo XATTRs, que \u00e9 de 12 caracteres.<\/span><\/p>\n<p>Veja como fica a apar\u00eancia ao criar uma consulta para um documento de amostra com <span style=\"font-weight: 400;\">XATTRs<\/span>:<\/p>\n<pre class=\"nums:false lang:js decode:true\">{\r\n    \"explain\": true,\r\n    \"fields\": [\r\n        \"*\"\r\n    ],\r\n    \"highlight\": {},\r\n    \"query\" (consulta): {\r\n        \"query\" (consulta): \"_$xattrs.textField:*\"\r\n    },\r\n    \"size\": 10,\r\n    \"from\": 0\r\n}<\/pre>\n<p><span style=\"font-weight: 400;\">Os XATTRs n\u00e3o se limitam ao armazenamento de vetores. Sempre que houver campos usados com pouca frequ\u00eancia, campos espec\u00edficos apenas para o servi\u00e7o de pesquisa ou campos volumosos, \u00e9 recomend\u00e1vel adicion\u00e1-los aos XATTRs. Dessa forma, os servi\u00e7os que n\u00e3o precisam desses campos precisam buscar menos dados do KV.\u00a0<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Pr\u00f3ximas etapas<\/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;\">Leia mais sobre <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/category\/vector-search\/\"><span style=\"font-weight: 400;\">Conceitos do Vector Search<\/span><\/a><span style=\"font-weight: 400;\"> em nossos blogs, incluindo tutoriais e conceitos.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Saiba mais sobre como usar <\/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;\"> via SDKs por meio de nossa documenta\u00e7\u00e3o.<\/span><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/products\/capella\/?_gl=1*hlrjaa*_gcl_au*MTEyNzQ0NjE0OS4xNzE2ODc1OTE5\"><span style=\"font-weight: 400;\">Avalia\u00e7\u00e3o gratuita do Couchbase Capella<\/span><\/a><span style=\"font-weight: 400;\"> inclui pesquisa de vetores, entre muitos outros recursos. Experimente hoje mesmo.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>With the introduction of vector search, users can now store large vector arrays\u2014often made up of seemingly arbitrary numbers\u2014within their documents. Since this data isn&#8217;t required for most standard queries, users can now leverage extended attributes (XATTRs), which are part [&hellip;]<\/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.2 (Yoast SEO v26.2) - 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\/pt\/couchbase-xattrs-vector-search\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\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\/pt\/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\":\"pt-BR\",\"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\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-xattrs-vector-search\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\":\"pt-BR\",\"@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\/pt\/author\/likithb\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Aprimoramento do desempenho usando XATTRs para armazenamento e pesquisa de vetores","description":"Os XATTRs do Couchbase armazenam dados vetoriais de forma eficiente, melhorando o desempenho ao manter o conte\u00fado volumoso fora dos caminhos de consulta. Veja como os XATTRs funcionam com a pesquisa.","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\/pt\/couchbase-xattrs-vector-search\/","og_locale":"pt_BR","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\/pt\/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":"pt-BR","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":"Aprimoramento do desempenho usando XATTRs para armazenamento e pesquisa de vetores","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":"Os XATTRs do Couchbase armazenam dados vetoriais de forma eficiente, melhorando o desempenho ao manter o conte\u00fado volumoso fora dos caminhos de consulta. Veja como os XATTRs funcionam com a pesquisa.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-xattrs-vector-search\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/couchbase-xattrs-vector-search\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@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":"Blog do Couchbase","description":"Couchbase, o banco de dados 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":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@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, Engenheiro de software","image":{"@type":"ImageObject","inLanguage":"pt-BR","@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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/16437","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/85298"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=16437"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/16437\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/16443"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=16437"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=16437"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=16437"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=16437"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}