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

Este artigo apresenta aspectos do aplicativo de demonstração "What is This Thing?" (também conhecido como "WITT"). Para obter mais contexto e informações básicas, consulte:

Esta postagem do blog faz parte do 2024 C# Advento. No entanto, você não precisa entender o C# para ler esta postagem: os conceitos são aplicáveis a qualquer um dos muitos SDKs disponíveis para o Couchbase.

Pesquisa vetorial: Noções básicas

A pesquisa vetorial é útil 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 é modelado da seguinte forma:

Observação: O imagem do item é armazenado como uma cadeia de caracteres codificada em base64. Em um projeto de produção, eu recomendaria usar o armazenamento de arquivos, S3, etc., em vez de armazená-lo no banco de dados.

imageVector é recuperado por meio do upload da imagem para um modelo de imagem de IA, como Visão computacional do Azure.

Observação: Um dos recursos do recém-anunciado Serviços de IA da Capella é a hospedagem de modelos, o que reduzirá a latência dessa etapa, além de aumentar a privacidade e a flexibilidade e, possivelmente, reduzir os custos.

Embeddings de imagens e pesquisa do vizinho mais próximo

Com um índice de pesquisa vetorial no imageVector o Couchbase pode realizar pesquisas de vizinhos mais próximos. Nesse caso, essa pesquisa encontraria itens que são visualmente semelhantes (de acordo com o modelo de IA). Portanto, se um usuário tiver uma imagem e quiser encontrar um item no Couchbase que seja mais semelhante a essa imagem, um índice de pesquisa vetorial poderá fazer isso:

Aqui está o código no WITT que, para uma determinada imagem, solicita uma incorporação de vetor do Azure Computer Vision:

Provavelmente há estruturas que também podem lidar com essa chamada, mas para esta demonstração simples, que requer apenas uma única chamada REST, achei que isso é suficiente. Se quiser usar algo diferente do Azure com esta demonstração, você precisará 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 fazer é executar vários tipos de operações de dados com uma única plataforma, um único pool 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++:

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

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

A qualidade das partidas dependerá de:

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

Em meus testes limitados, descobri que o modelo de visão computacional do Azure é muito bom para fazer a correspondência de 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

Essa 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:

Aqui está a seção de marketing: Alguns bancos de dados podem ser capazes de realizar apenas um subconjunto dessas operações e exigir que você utilize outras ferramentas quando precisar de funcionalidades adicionais. Isso aumenta seus custos, a latência e a complexidade. Com o Couchbase, você pode manter seu aplicativo mais simples, mais rápido e mais barato. Seção de marketing encerrada.

Destaques técnicos

O aplicativo de demonstração do WITT mencionado foi desenvolvido com:

    • Front-end da interface do usuário React
    • Back-end do ASP.NET Core
    • Visão computacional do Azure
    • SDK do Couchbase .NET

Você também pode conferir O que é isso? como uma demonstração pública. (Lembre-se de que tudo isso foi criado com hospedagem de nível gratuito (Azure e Nível gratuito Capella) e que ele ainda está sendo desenvolvido ativamente. Se você notar alguma lentidão ou tempo de inatividade, isso pode ser devido ao excesso de tráfego, desculpe!)

Autor

A ordem da postagem em relação a outras postagens. Matthew Groves

Matthew D. Groves é um cara que adora programar. Não importa se é C#, jQuery ou PHP: ele enviará solicitações 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ênior de marketing de produtos da Couchbase. Seu tempo livre é passado com a família, assistindo aos Reds e participando da comunidade de desenvolvedores. Ele é autor de AOP in .NET, Pro Microservices in .NET, autor da Pluralsight e Microsoft MVP.

Posição vertical a partir do topo para iniciar o corte como uma porcentagem da altura da imagem.