{"id":16720,"date":"2024-12-25T01:00:40","date_gmt":"2024-12-25T09:00:40","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=16720"},"modified":"2025-06-13T23:00:07","modified_gmt":"2025-06-14T06:00:07","slug":"single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/","title":{"rendered":"Couchbase de plataforma \u00fanica e multiuso: Pesquisa vetorial, geoespacial, SQL++ e muito mais"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">H\u00e1 casos de uso que s\u00e3o mais bem atendidos por v\u00e1rios tipos de acesso a dados, incluindo SQL, pesquisa vetorial, consultas geoespaciais e acesso a valores-chave. Uma abordagem \u00e9 combinar\/encadear v\u00e1rios sistemas de dados para cada m\u00e9todo de acesso. No entanto, a <\/span><a href=\"https:\/\/cloud.couchbase.com\/sign-up\"><span style=\"font-weight: 400;\">Abordagem do Couchbase<\/span><\/a><span style=\"font-weight: 400;\"> torna poss\u00edvel combinar esses diferentes tipos de consultas para resolver problemas do mundo real.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Este artigo apresenta aspectos do aplicativo de demonstra\u00e7\u00e3o \"What is This Thing?\" (tamb\u00e9m conhecido como \"WITT\"). Para obter mais contexto e informa\u00e7\u00f5es b\u00e1sicas, consulte:<\/span><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/github.com\/mgroves\/WhatIsThisThing\"><span style=\"font-weight: 400;\">Reposit\u00f3rio do GitHub para \"What is This Thing?\" (O que \u00e9 isso?)<\/span><\/a><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/www.youtube.com\/watch?v=sYy0ob2GqUo\"><span style=\"font-weight: 400;\">V\u00eddeo curto de vis\u00e3o geral de \"What is This Thing?\" (O que \u00e9 isso?)<\/span><\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><i><span style=\"font-weight: 400;\">Esta postagem do blog faz parte do <\/span><\/i><a href=\"https:\/\/csadvent.christmas\/\"><i><span style=\"font-weight: 400;\">2024 C# Advento<\/span><\/i><\/a><i><span style=\"font-weight: 400;\">. No entanto, voc\u00ea n\u00e3o precisa entender o C# para ler esta postagem: os conceitos s\u00e3o aplic\u00e1veis a qualquer um dos <\/span><\/i><a href=\"https:\/\/docs.couchbase.com\/home\/sdk.html\"><i><span style=\"font-weight: 400;\">muitos SDKs dispon\u00edveis para o Couchbase<\/span><\/i><\/a><i><span style=\"font-weight: 400;\">.<\/span><\/i><\/p>\n<h2>Pesquisa vetorial: No\u00e7\u00f5es b\u00e1sicas<\/h2>\n<p><span style=\"font-weight: 400;\">A pesquisa vetorial \u00e9 \u00fatil para aplicativos que precisam encontrar itens semelhantes. Por exemplo, os embeddings criados por modelos de IA podem ser indexados e pesquisados. Cada item no WITT \u00e9 modelado da seguinte forma:<\/span><\/p>\n<pre class=\"nums:false lang:yaml decode:true\">{\r\n  \"name\": \"Reticulated Splines\" (Estrias Reticuladas),\r\n  \"desc\": \"Ranhuras especializadas usadas em maquin\u00e1rio avan\u00e7ado para alinhamento preciso.\",\r\n  \"price\": 19.99,\r\n  \"image\" (imagem): \"data:image\/png;base64,...\",\r\n  \"rating\": 5,\r\n  \"imageVector\": [ -4.5390625, 0.32543945, ... ]\r\n}<\/pre>\n<p><i><span style=\"font-weight: 400;\">Observa\u00e7\u00e3o: O <\/span><\/i><i><span style=\"font-weight: 400;\">imagem<\/span><\/i><i><span style=\"font-weight: 400;\"> do item \u00e9 armazenado como uma cadeia de caracteres codificada em base64. Em um projeto de produ\u00e7\u00e3o, eu recomendaria usar o armazenamento de arquivos, S3, etc., em vez de armazen\u00e1-lo no banco de dados.<\/span><\/i><\/p>\n<p><span style=\"font-weight: 400;\"><code>imageVector<\/code><\/span><span style=\"font-weight: 400;\"> \u00e9 recuperado por meio do upload da imagem para um modelo de imagem de IA, como <\/span><a href=\"https:\/\/azure.microsoft.com\/en-us\/products\/ai-services\/ai-vision\/\"><span style=\"font-weight: 400;\">Vis\u00e3o computacional do Azure<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/12\/image1-3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-16721\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/12\/image1-3.png\" alt=\"\" width=\"916\" height=\"663\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/12\/image1-3.png 916w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/12\/image1-3-300x217.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/12\/image1-3-768x556.png 768w\" sizes=\"auto, (max-width: 916px) 100vw, 916px\" \/><\/a><\/p>\n<p><i><span style=\"font-weight: 400;\">Observa\u00e7\u00e3o: Um dos recursos do rec\u00e9m-anunciado <\/span><\/i><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/products\/ai-services\/\"><i><span style=\"font-weight: 400;\">Servi\u00e7os de IA da Capella<\/span><\/i><\/a><i><span style=\"font-weight: 400;\"> \u00e9 a hospedagem de modelos, o que reduzir\u00e1 a lat\u00eancia dessa etapa, al\u00e9m de aumentar a privacidade e a flexibilidade e, possivelmente, reduzir os custos.<\/span><\/i><\/p>\n<h2>Embeddings de imagens e pesquisa do vizinho mais pr\u00f3ximo<\/h2>\n<p><span style=\"font-weight: 400;\">Com um \u00edndice de pesquisa vetorial no <\/span><span style=\"font-weight: 400;\">imageVector<\/span><span style=\"font-weight: 400;\"> o Couchbase pode realizar pesquisas de vizinhos mais pr\u00f3ximos. Nesse caso, essa pesquisa encontraria itens que s\u00e3o visualmente semelhantes (de acordo com o modelo de IA). Portanto, se um usu\u00e1rio tiver uma imagem e quiser encontrar um item no Couchbase que seja mais semelhante a essa imagem, um \u00edndice de pesquisa vetorial poder\u00e1 fazer isso:<\/span><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/12\/image2-2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-16722\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/12\/image2-2.png\" alt=\"\" width=\"747\" height=\"703\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/12\/image2-2.png 747w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/12\/image2-2-300x282.png 300w\" sizes=\"auto, (max-width: 747px) 100vw, 747px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Aqui est\u00e1 o c\u00f3digo no WITT que, para uma determinada imagem, <\/span><a href=\"https:\/\/github.com\/mgroves\/WhatIsThisThing\/blob\/main\/WhatIsThisThing.Core\/Services\/AzureEmbeddingService.cs\"><span style=\"font-weight: 400;\">solicita uma incorpora\u00e7\u00e3o de vetor<\/span><\/a><span style=\"font-weight: 400;\"> do Azure Computer Vision:<\/span><\/p>\n<pre class=\"nums:false lang:c# decode:true\">\/\/ N\u00edvel gratuito: 20 chamadas por minuto, 5 mil chamadas por m\u00eas\r\n\/\/ Camada padr\u00e3o: 10 chamadas por segundo, a partir de $1.00 USD\/1000 chamadas (estimado)\r\npublic async Task GetImageEmbedding(string base64Image)\r\n{\r\n    var endpoint = _settings.Value.Endpoint;\r\n    var subscriptionKey = _settings.Value.SubscriptionKey;\r\n\r\n    using (HttpClient client = new HttpClient())\r\n    {\r\n        \/\/ Definir a chave de assinatura e o endpoint\r\n        client.DefaultRequestHeaders.Add(\"Ocp-Apim-Subscription-Key\", subscriptionKey);\r\n\r\n        \/\/ URL do endpoint\r\n        string url = $\"{endpoint}\/retrieval:vectorizeImage?overload=stream&amp;api-version=2023-04-01-preview\";\r\n\r\n        byte[] imageBytes = Base64PngToByteArray(base64Image);\r\n\r\n        using (ByteArrayContent content = new ByteArrayContent(imageBytes))\r\n        {\r\n            content.Headers.ContentType = new MediaTypeHeaderValue(\"application\/octet-stream\");\r\n\r\n            HttpResponseMessage response = await client.PostAsync(url, content);\r\n            string jsonResponse = await response.Content.ReadAsStringAsync();\r\n\r\n            Se (response.IsSuccessStatusCode)\r\n            {\r\n                \/\/ Analisar a resposta JSON para extrair os embeddings do vetor\r\n                JObject json = JObject.Parse(jsonResponse);\r\n                JToken vectorEmbeddings = json[\"vector\"];\r\n                return vectorEmbeddings.ToObject();\r\n            }\r\n\r\n            throw new Exception(\"N\u00e3o foi poss\u00edvel recuperar embeddings de vetor para a imagem.\");\r\n        }\r\n    }\r\n}<\/pre>\n<p><span style=\"font-weight: 400;\">Provavelmente h\u00e1 estruturas que tamb\u00e9m podem lidar com essa chamada, mas para esta demonstra\u00e7\u00e3o simples, que requer apenas uma \u00fanica chamada REST, achei que isso \u00e9 suficiente. Se voc\u00ea quiser usar algo diferente do Azure com esta demonstra\u00e7\u00e3o, precisar\u00e1 implementar <\/span><span style=\"font-weight: 400;\"><code>IEmbeddingService<\/code><\/span><span style=\"font-weight: 400;\">.<\/span><\/p>\n<h2>Consultas multiuso com SQL++<\/h2>\n<p><span style=\"font-weight: 400;\">Muitos bancos de dados com pesquisa vetorial podem executar uma opera\u00e7\u00e3o muito semelhante. O que o Couchbase permite fazer \u00e9 executar v\u00e1rios tipos de opera\u00e7\u00f5es de dados com uma \u00fanica plataforma, um \u00fanico pool de dados. Por exemplo, dada uma localiza\u00e7\u00e3o geoespacial (que pode ser recuperada por meio de um navegador da Web), voc\u00ea pode n\u00e3o apenas consultar para encontrar um item semelhante por imagem, mas tamb\u00e9m combinar isso com uma pesquisa geoespacial, tudo por meio de uma \u00fanica consulta SQL++:<\/span><\/p>\n<pre class=\"nums:false lang:default decode:true\">WITH closestStores AS (\r\n    \/* CTE para obter as lojas mais pr\u00f3ximas com base na localiza\u00e7\u00e3o do usu\u00e1rio *\/\r\n    SELECT x.name, META(x).id AS id\r\n    FROM whatisthis._default.Stores x\r\n    WHERE SEARCH(x, {\r\n      \"fields\": [\"*\"],\r\n      \"query\" : {\r\n        \"location\" : {\r\n          \"lat\" : 39.8787,\r\n          \"lon\" : -83.0805\r\n        },\r\n        \"distance\" : \"15mi\",\r\n        \"field\" : \"geo\"\r\n      } . . .\r\n  })\r\n\r\n  LIMITE 3\r\n)\r\n\/* SELECIONAR itens com estoque pr\u00f3ximo *\/\r\nSELECT allItems.name, allItems.`desc`, allItems.image, allItems.price, allItems.rating, SEARCH_SCORE(allItems) AS score,\r\n\r\n    \/* subconsulta para obter estoque de locais pr\u00f3ximos *\/\r\n    (SELECT . . . ) AS stock\r\n\r\nFROM whatisthis._default.Items AS allItems\r\n\r\n\/* pesquisa vetorial usando incorpora\u00e7\u00e3o de imagem *\/\r\nWHERE SEARCH(allItems,\r\n  {\r\n    \"fields\": [\"*\"],\r\n    \"query\": { \"match_none\": {} },\r\n    \"knn\": [\r\n      {\r\n        \"k\": 4,\r\n        \"field\" (campo): \"imageVector\",\r\n        \"vector\": [ -0.9135742,1.1552734, ... ]\r\n      }\r\n    ]\r\n  }\r\n)\r\nORDER BY pontua\u00e7\u00e3o DESC<\/pre>\n<p><i><span style=\"font-weight: 400;\">Observa\u00e7\u00e3o: esta consulta foi editada para fins de brevidade. Confira <\/span><\/i><a href=\"https:\/\/github.com\/mgroves\/WhatIsThisThing\/blob\/main\/WhatIsThisThing.Core\/Services\/DataLayer.cs\"><i><span style=\"font-weight: 400;\">DataLayer.cs<\/span><\/i><\/a><i><span style=\"font-weight: 400;\"> para obter uma vis\u00e3o mais completa das consultas.<\/span><\/i><\/p>\n<p><span style=\"font-weight: 400;\">O resultado dessa consulta \u00e9 uma \"correspond\u00eancia mais prov\u00e1vel\" para uma determinada imagem. Por exemplo, aqui est\u00e1 o principal resultado ao carregar uma imagem de uma caneta:<\/span><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/12\/image3.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-16723\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/12\/image3.jpg\" alt=\"\" width=\"469\" height=\"743\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/12\/image3.jpg 469w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/12\/image3-189x300.jpg 189w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/12\/image3-300x475.jpg 300w\" sizes=\"auto, (max-width: 469px) 100vw, 469px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">A qualidade das partidas depender\u00e1 de:<\/span><\/p>\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;\">A qualidade do modelo de IA<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">A qualidade\/quantidade das imagens de um determinado item<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Em meus testes limitados, descobri que o modelo de vis\u00e3o computacional do Azure \u00e9 muito bom para fazer a correspond\u00eancia de imagens relevantes.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">O resultado tamb\u00e9m conter\u00e1 lojas pr\u00f3ximas, onde o item est\u00e1 dispon\u00edvel para compra.<\/span><\/p>\n<h2>Al\u00e9m da pesquisa vetorial e geoespacial<\/h2>\n<p><span style=\"font-weight: 400;\">Essa consulta mostrou a capacidade do Couchbase de combinar pesquisa vetorial E pesquisa geoespacial em uma \u00fanica opera\u00e7\u00e3o. Ela tamb\u00e9m continha um CTE, JOINs e uma subconsulta.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Em uma \u00fanica consulta, voc\u00ea tamb\u00e9m pode executar:<\/span><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/docs.couchbase.com\/cloud\/search\/search.html\"><span style=\"font-weight: 400;\">Pesquisa de texto completo<\/span><\/a><span style=\"font-weight: 400;\">incluindo pontua\u00e7\u00e3o, facetas, aumento, etc.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/docs.couchbase.com\/cloud\/n1ql\/n1ql-language-reference\/time-series.html\"><span style=\"font-weight: 400;\">S\u00e9ries temporais<\/span><\/a><span style=\"font-weight: 400;\"> opera\u00e7\u00f5es<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/docs.couchbase.com\/cloud\/n1ql\/n1ql-language-reference\/userfun.html\"><span style=\"font-weight: 400;\">Fun\u00e7\u00f5es definidas pelo usu\u00e1rio (UDFs)<\/span><\/a><span style=\"font-weight: 400;\"> para adicionar c\u00f3digo personalizado (JavaScript ou SQL)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"https:\/\/docs.couchbase.com\/cloud\/n1ql\/query.html\"><span style=\"font-weight: 400;\">Recursos completos de SQL<\/span><\/a><span style=\"font-weight: 400;\">Fun\u00e7\u00f5es de janela, CTEs, JOINs, agrega\u00e7\u00e3o e muito mais<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Leitura de dados anal\u00edticos em tempo real por meio de <\/span><a href=\"https:\/\/docs.couchbase.com\/columnar\/sqlpp\/5_dml_copy_to_kv.html\"><span style=\"font-weight: 400;\">write-back<\/span><\/a><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Consultar dados que s\u00e3o automaticamente sincronizados a partir de <\/span><a href=\"https:\/\/docs.couchbase.com\/home\/mobile.html\"><span style=\"font-weight: 400;\">dispositivos m\u00f3veis\/de ponta<\/span><\/a><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Autom\u00e1tico <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/current\/learn\/buckets-memory-and-storage\/memory-and-storage.html\"><span style=\"font-weight: 400;\">armazenamento em cache<\/span><\/a><span style=\"font-weight: 400;\"> (incorporado)<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><i><span style=\"font-weight: 400;\">Aqui est\u00e1 a se\u00e7\u00e3o de marketing<\/span><\/i><span style=\"font-weight: 400;\">: Alguns bancos de dados podem ser capazes de realizar apenas um subconjunto dessas opera\u00e7\u00f5es e exigir que voc\u00ea utilize outras ferramentas quando precisar de funcionalidades adicionais. Isso aumenta seus custos, a lat\u00eancia e a complexidade. Com o Couchbase, voc\u00ea pode manter seu aplicativo mais simples, mais r\u00e1pido e mais barato. <\/span><i><span style=\"font-weight: 400;\">Se\u00e7\u00e3o de marketing encerrada.<\/span><\/i><\/p>\n<h2>Destaques t\u00e9cnicos<\/h2>\n<p><span style=\"font-weight: 400;\">O aplicativo de demonstra\u00e7\u00e3o do WITT mencionado foi desenvolvido com:<\/span><\/p>\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;\">Front-end da interface do usu\u00e1rio React<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Back-end do ASP.NET Core<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Vis\u00e3o computacional do Azure<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">SDK do Couchbase .NET<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Voc\u00ea tamb\u00e9m pode conferir <\/span><a href=\"https:\/\/whatisthisthing.azurewebsites.net\/\"><span style=\"font-weight: 400;\">O que \u00e9 isso?<\/span><\/a><span style=\"font-weight: 400;\"> como uma demonstra\u00e7\u00e3o p\u00fablica. (<\/span><i><span style=\"font-weight: 400;\">Lembre-se de que tudo isso foi criado com hospedagem de n\u00edvel gratuito (Azure e <\/span><\/i><a href=\"https:\/\/cloud.couchbase.com\/sign-up\"><i><span style=\"font-weight: 400;\">N\u00edvel gratuito Capella<\/span><\/i><\/a><i><span style=\"font-weight: 400;\">) e que ele ainda est\u00e1 sendo desenvolvido ativamente. Se voc\u00ea notar alguma lentid\u00e3o ou tempo de inatividade, isso pode ser devido ao excesso de tr\u00e1fego, desculpe!<\/span><\/i><span style=\"font-weight: 400;\">)<\/span><\/p>\n<p><iframe loading=\"lazy\" title=\"Demonstra\u00e7\u00e3o de pesquisa h\u00edbrida e vetorial do Couchbase Capella: &quot;O que \u00e9 isso?&quot;\" width=\"900\" height=\"506\" src=\"https:\/\/www.youtube.com\/embed\/sYy0ob2GqUo?feature=oembed&#038;enablejsapi=1&#038;origin=https:\/\/www.couchbase.com\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>","protected":false},"excerpt":{"rendered":"<p>There are use cases that are best served by multiple types of data access, including SQL, vector search, geospatial queries, and key-value access. One approach is to combine\/chain together multiple data systems for each access method. However, the Couchbase approach [&hellip;]<\/p>","protected":false},"author":71,"featured_media":16724,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1811,10122,10127,2165,8683,1812,9937],"tags":[9923,9966,9600],"ppma_author":[8937],"class_list":["post-16720","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","category-artificial-intelligence-ai","category-c-sharp","category-full-text-search","category-geospatial","category-n1ql-query","category-vector-search","tag-embeddings","tag-hybrid-search","tag-multimodel"],"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>Single Platform, Multi-Purpose Couchbase: Vector Search, Geospatial, SQL++, and More - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"See how Couchbase unites SQL, vector search, and geospatial queries in the &#039;What is This Thing?&#039; demo for seamless AI-driven data access.\" \/>\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\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Single Platform, Multi-Purpose Couchbase: Vector Search, Geospatial, SQL++, and More\" \/>\n<meta property=\"og:description\" content=\"See how Couchbase unites SQL, vector search, and geospatial queries in the &#039;What is This Thing?&#039; demo for seamless AI-driven data access.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-12-25T09:00:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T06:00:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/12\/blog-couchbase-vector-and-more-.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2400\" \/>\n\t<meta property=\"og:image:height\" content=\"1256\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Matthew Groves\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@mgroves\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matthew Groves\" \/>\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\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/\"},\"author\":{\"name\":\"Matthew Groves\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58\"},\"headline\":\"Single Platform, Multi-Purpose Couchbase: Vector Search, Geospatial, SQL++, and More\",\"datePublished\":\"2024-12-25T09:00:40+00:00\",\"dateModified\":\"2025-06-14T06:00:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/\"},\"wordCount\":793,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/12\/blog-couchbase-vector-and-more-.png\",\"keywords\":[\"embeddings\",\"hybrid search\",\"multimodel\"],\"articleSection\":[\".NET\",\"Artificial Intelligence (AI)\",\"C#\",\"Full-Text Search\",\"Geospatial\",\"SQL++ \/ N1QL Query\",\"Vector Search\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/\",\"name\":\"Single Platform, Multi-Purpose Couchbase: Vector Search, Geospatial, SQL++, and More - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/12\/blog-couchbase-vector-and-more-.png\",\"datePublished\":\"2024-12-25T09:00:40+00:00\",\"dateModified\":\"2025-06-14T06:00:07+00:00\",\"description\":\"See how Couchbase unites SQL, vector search, and geospatial queries in the 'What is This Thing?' demo for seamless AI-driven data access.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/12\/blog-couchbase-vector-and-more-.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/12\/blog-couchbase-vector-and-more-.png\",\"width\":2400,\"height\":1256},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Single Platform, Multi-Purpose Couchbase: Vector Search, Geospatial, SQL++, and More\"}]},{\"@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\/3929663e372020321b0152dc4fa65a58\",\"name\":\"Matthew Groves\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ba51e6aacc53995c323a634e4502ef54\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"caption\":\"Matthew Groves\"},\"description\":\"Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.\",\"sameAs\":[\"https:\/\/crosscuttingconcerns.com\",\"https:\/\/x.com\/mgroves\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/matthew-groves\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Single Platform, Multi-Purpose Couchbase: Vector Search, Geospatial, SQL++, and More - The Couchbase Blog","description":"Veja como o Couchbase une SQL, pesquisa vetorial e consultas geoespaciais na demonstra\u00e7\u00e3o \"What is This Thing?\" para acesso cont\u00ednuo a dados orientados por IA.","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\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/","og_locale":"pt_BR","og_type":"article","og_title":"Single Platform, Multi-Purpose Couchbase: Vector Search, Geospatial, SQL++, and More","og_description":"See how Couchbase unites SQL, vector search, and geospatial queries in the 'What is This Thing?' demo for seamless AI-driven data access.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/","og_site_name":"The Couchbase Blog","article_published_time":"2024-12-25T09:00:40+00:00","article_modified_time":"2025-06-14T06:00:07+00:00","og_image":[{"width":2400,"height":1256,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/12\/blog-couchbase-vector-and-more-.png","type":"image\/png"}],"author":"Matthew Groves","twitter_card":"summary_large_image","twitter_creator":"@mgroves","twitter_misc":{"Written by":"Matthew Groves","Est. reading time":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/"},"author":{"name":"Matthew Groves","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58"},"headline":"Single Platform, Multi-Purpose Couchbase: Vector Search, Geospatial, SQL++, and More","datePublished":"2024-12-25T09:00:40+00:00","dateModified":"2025-06-14T06:00:07+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/"},"wordCount":793,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/12\/blog-couchbase-vector-and-more-.png","keywords":["embeddings","hybrid search","multimodel"],"articleSection":[".NET","Artificial Intelligence (AI)","C#","Full-Text Search","Geospatial","SQL++ \/ N1QL Query","Vector Search"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/","url":"https:\/\/www.couchbase.com\/blog\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/","name":"Single Platform, Multi-Purpose Couchbase: Vector Search, Geospatial, SQL++, and More - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/12\/blog-couchbase-vector-and-more-.png","datePublished":"2024-12-25T09:00:40+00:00","dateModified":"2025-06-14T06:00:07+00:00","description":"Veja como o Couchbase une SQL, pesquisa vetorial e consultas geoespaciais na demonstra\u00e7\u00e3o \"What is This Thing?\" para acesso cont\u00ednuo a dados orientados por IA.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/12\/blog-couchbase-vector-and-more-.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/12\/blog-couchbase-vector-and-more-.png","width":2400,"height":1256},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/single-platform-multi-purpose-couchbase-vector-search-geospatial-sql-more\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Single Platform, Multi-Purpose Couchbase: Vector Search, Geospatial, SQL++, and More"}]},{"@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\/3929663e372020321b0152dc4fa65a58","name":"Matthew Groves","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ba51e6aacc53995c323a634e4502ef54","url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","caption":"Matthew Groves"},"description":"Matthew D. Groves \u00e9 um cara que adora programar. N\u00e3o importa se \u00e9 C#, jQuery ou PHP: ele enviar\u00e1 solicita\u00e7\u00f5es de pull para qualquer coisa. Ele tem programado profissionalmente desde que escreveu um aplicativo de ponto de venda QuickBASIC para a pizzaria de seus pais nos anos 90. Atualmente, ele trabalha como gerente s\u00eanior de marketing de produtos da Couchbase. Seu tempo livre \u00e9 passado com a fam\u00edlia, assistindo aos Reds e participando da comunidade de desenvolvedores. Ele \u00e9 autor de AOP in .NET, Pro Microservices in .NET, autor da Pluralsight e Microsoft MVP.","sameAs":["https:\/\/crosscuttingconcerns.com","https:\/\/x.com\/mgroves"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/matthew-groves\/"}]}},"authors":[{"term_id":8937,"user_id":71,"is_guest":0,"slug":"matthew-groves","display_name":"Matthew Groves","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","author_category":"","last_name":"Groves","first_name":"Matthew","job_title":"","user_url":"https:\/\/crosscuttingconcerns.com","description":"Matthew D. Groves \u00e9 um cara que adora programar.  N\u00e3o importa se \u00e9 C#, jQuery ou PHP: ele enviar\u00e1 solicita\u00e7\u00f5es de pull para qualquer coisa.  Ele tem programado profissionalmente desde que escreveu um aplicativo de ponto de venda QuickBASIC para a pizzaria de seus pais nos anos 90.  Atualmente, ele trabalha como gerente s\u00eanior de marketing de produtos da Couchbase. Seu tempo livre \u00e9 passado com a fam\u00edlia, assistindo aos Reds e participando da comunidade de desenvolvedores.  Ele \u00e9 autor de AOP in .NET, Pro Microservices in .NET, autor da Pluralsight e Microsoft MVP."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/16720","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\/71"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=16720"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/16720\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/16724"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=16720"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=16720"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=16720"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=16720"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}