.NET

단일 플랫폼, 다목적 Couchbase: 벡터 검색, 지리공간, SQL++ 등 다양한 기능

Há casos de uso que são melhor atendidos por vários tipos de acesso a dados, incluindo SQL, pesquisa vetorial, consultas geoespaciais e acesso de valor-chave. Uma abordagem é combinar/encadear vários sistemas de dados para cada método de acesso. No entanto, a abordagem Couchbase torna possível combinar esses diferentes tipos de consultas para resolver problemas do mundo real.

Este artigo aborda aspectos do aplicativo de demonstração “O que é essa coisa?” “What is This Thing?” (também conhecido como “WITT”). Para mais contexto e histórico, confira:

Este post do blog faz parte do C# Advent de 2024. No entanto, você não precisa entender C# para ler este post: os conceitos são aplicáveis ​​a qualquer um dos muitos SDKs disponíveis para o Couchbase.

Pesquisa de vetores: o básico

A busca por vetores é útil para aplicativos que precisam encontrar itens semelhantes. Por exemplo, embeddings criados por modelos de IA podem ser indexados e pesquisados. Cada item no WITT é modelado assim:

Nota: A imagem do item é armazenada como uma string codificada em base64. Em um projeto de produção, eu recomendaria usar armazenamento de arquivo, S3, etc., em vez de armazená-lo no banco de dados.

imageVector é recuperado carregando a imagem em um modelo de imagem de IA, como o Azure Computer Vision.

Observação: um dos recursos dos Capella AI services  recém-anunciados é a hospedagem de modelos, o que reduzirá a latência dessa etapa e também aumentará a privacidade e a flexibilidade, além de potencialmente reduzir custos.

Incorporação de imagens e pesquisa de vizinho mais próximo

Com um índice de pesquisa vetorial no campo imageVector, o Couchbase pode executar pesquisas de vizinho mais próximo. Nesse caso, essa pesquisa encontraria itens que são visualmente semelhantes (de acordo com o modelo de IA). Então, se um usuário tem uma imagem e quer encontrar um item no Couchbase que seja mais semelhante a essa imagem, um índice de pesquisa vetorial pode fazer isso:

Aqui está o código no WITT que, para uma determinada imagem, requests a vector embedding do Azure Computer Vision:

Provavelmente há frameworks que podem lidar com essa chamada também, mas para essa demonstração simples, que requer apenas uma única chamada REST, achei isso suficiente. Se você quiser usar algo diferente do Azure com essa demonstração, precisa implementar IEmbeddingService.

Consultas multiuso com SQL++

Muitos bancos de dados com pesquisa vetorial podem executar uma operação muito semelhante. O que o Couchbase permite que você faça é executar vários tipos de operações de dados com uma única plataforma, um único conjunto de dados. Por exemplo, dada uma localização geoespacial (que pode ser recuperada por meio de um navegador da web), você pode não apenas consultar para encontrar um item semelhante por imagem, mas também combinar isso com uma pesquisa geoespacial, tudo por meio de uma única consulta SQL++:

Nota: esta consulta foi editada para fins de brevidade. Confira DataLayer.cs para uma visão mais completa das consultas.

O resultado desta consulta é uma “correspondência mais provável” para uma determinada imagem. Por exemplo, aqui está o resultado principal ao carregar uma imagem de uma caneta:

A qualidade das correspondências dependerá de:

  • A qualidade do modelo de IA
  • A qualidade/quantidade das imagens para um determinado item

Em meus testes limitados, descobri que o modelo Azure Computer Vision é muito bom para combinar imagens relevantes.

O resultado também conterá lojas próximas, onde o item está disponível para compra.

Além da Pesquisa Vetorial e Geoespacial

Esta consulta mostrou a capacidade do Couchbase de combinar pesquisa vetorial e pesquisa geoespacial em uma única operação. Ela também continha um CTE, JOINs e uma subconsulta.

Em uma única consulta, você também pode executar:

Alguns bancos de dados podem ser capazes de executar apenas um subconjunto dessas operações e exigir que você traga outras ferramentas quando precisar de funcionalidade adicional. Isso aumenta seus custos, latência e complexidade. Com o Couchbase, você pode manter seu aplicativo mais simples, rápido e barato. 

Destaques técnicos

The WITT demo application referenced is built with:

  • React UI frontend
  • ASP.NET Core backend
  • Azure Computer Vision
  • Couchbase .NET SDK

Você também pode conferir What is This Thing? como uma demonstração pública. (Lembre-se de que tudo é construído com hospedagem de nível gratuito (Azure e Capella Free Tier) e que ainda está sendo desenvolvido ativamente. Se você notar alguma lentidão ou tempo de inatividade, pode ser por causa de muito tráfego, desculpe!)

이 기사 공유하기

작가

매튜 D. 그로브스는 코딩을 정말 좋아하는 사람입니다. C#, jQuery, PHP 등 어떤 언어든 상관없이, 그는 무엇이든 풀 리퀘스트를 제출합니다. 그는 90년대에 부모님이 운영하던 피자 가게를 위해 QuickBASIC으로 POS(판매 시점 관리) 앱을 개발한 이래로 줄곧 전문 프로그래머로 활동해 왔습니다. 현재는 Couchbase에서 선임 제품 마케팅 매니저로 근무하고 있습니다. 여가 시간에는 가족과 함께 시간을 보내거나, 레즈(Reds) 경기를 관람하며, 개발자 커뮤니티 활동에 참여합니다. 그는 『AOP in .NET』과 『Pro Microservices in .NET』의 저자이자 Pluralsight 저자이며, Microsoft MVP이기도 합니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

개발 시작하기

NoSQL을 탐색하고, 리소스를 찾아보고, 튜토리얼을 시작하려면 개발자 포털을 확인하세요.

카펠라 프리 사용하기

단 몇 번의 클릭으로 카우치베이스(Couchbase)를 직접 체험해 보세요. Capella DBaaS는 시작하기 가장 쉽고 빠른 방법입니다.

연락해

Couchbase 제품군에 대해 더 알고 싶으신가요? 저희가 도와드리겠습니다.