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!)

Author

Posted by Joao Lopes, Territory Account Manager

Leave a reply