Temos o prazer de anunciar o lançamento do Couchbase Lite 3.2 com suporte para pesquisa de vetores. Esse lançamento segue os passos de Suporte à pesquisa vetorial no Capella e no Couchbase Server 7.6. Agora, com o suporte à pesquisa vetorial no Couchbase Lite, permitimos suporte da nuvem à borda para pesquisa vetorial que potencializa os aplicativos de IA na nuvem e na borda.
Nesta postagem do blog, discutirei os principais benefícios do suporte à pesquisa vetorial na borda, incluindo uma breve análise dos casos de uso que se enquadram em seus aplicativos Couchbase Lite.
O que é o Vector Search?
Pesquisa vetorial é uma técnica para recuperar semanticamente itens semelhantes com base em incorporação de vetores representações dos itens em um espaço multidimensional. As métricas de distância são usadas para determinar a similaridade entre os itens. A pesquisa vetorial é um componente essencial da IA generativa e aplicativos de IA preditiva.
Pilha móvel do Couchbase
Se você é novo no Couchbase, aqui está uma rápida introdução ao Couchbase Mobile.
O Couchbase Mobile é um off-line primeiroA plataforma de banco de dados de nuvem a ponta. Ela é composta do seguinte:
Banco de dados na nuvem: Disponível como um banco de dados como serviço totalmente gerenciado e hospedado com Couchbase Capella, ou implantar e hospedar Servidor Couchbase por conta própria.
Banco de dados incorporado: Couchbase Lite é um banco de dados NoSQL incorporado com todos os recursos para aplicativos móveis, de desktop e de IoT.
Sincronização de dados: Um gateway seguro para sincronização de dados pela Web, bem como sincronização ponto a ponto entre dispositivos. Oferecido como sincronização totalmente hospedada e gerenciada com Serviços de aplicativos Capella, ou instalar e gerenciar Gateway de sincronização do Couchbase você mesmo.
Confira nosso documentação para obter mais informações.
Casos de uso e benefícios do Vector Search
Embora os benefícios do pesquisa vetorial são razoavelmente bem compreendidos, por que você gostaria de fazer uma pesquisa vetorial na borda?
Pesquisa semântica no modo off-line primeiro
Os aplicativos em que as pesquisas simples baseadas em texto são insuficientes agora podem oferecer suporte a pesquisas semânticas em dados locais para recuperar dados contextualmente relevantes, mesmo quando o dispositivo estiver no modo off-line. Isso garante que os resultados da pesquisa estejam sempre disponíveis.
Exemplo
Considere um aplicativo de campo clássico Os funcionários de serviços públicos em locais de reparo e áreas de desastre operam em áreas com pouca ou nenhuma conectividade com a Internet:
-
- As palavras, linha, cabo, fio são sinônimos para uma empresa de serviços públicos. Quando os funcionários da empresa de serviços públicos em campo pesquisam a frase, linha, documentos com cabo, fio também precisam ser devolvidos.
- Usando a pesquisa de texto completo (FTS), o aplicativo terá de manter uma lista de sinônimos que é difícil de criar, gerenciar e manter.
- A relevância também é importante. Portanto, uma consulta para: procedimentos de segurança para linhas elétricas caídas deve se concentrar em manuais relacionados a linhas de energia derrubadas, cabos de eletricidade, linhas de alta tensão etc.
Aliviando as preocupações com a privacidade dos dados
Um dos principais casos de uso de um banco de dados de pesquisa vetorial é a capacidade de buscar dados contextualmente relevantes. Os resultados da pesquisa são então incluídos como dados de contexto para consultas enviadas a um modelo de linguagem ampla (LLM) para personalizar as respostas das consultas - essa é a base do Geração Aumentada por Recuperação (RAG)). A execução de pesquisas em dados de natureza privada ou sensível pode gerar preocupações com a privacidade. Ao realizar pesquisas em um dispositivo local, podemos restringir as pesquisas apenas a usuários autenticados e autorizados a acessar os dados privados no dispositivo. Todas as informações de identificação pessoal (PII) dos resultados da pesquisa vetorial podem ser editadas e, em seguida, aproveitadas na consulta RAG para um LLM.
Além disso, se um LLM personalizado for implantado no local da borda, por exemplo, um hospital ou uma loja de varejo, qualquer preocupação com o envio dos resultados de pesquisa contextualmente relevantes pela Internet para um serviço de nuvem remoto será ainda mais atenuada.
Exemplo
Considere o exemplo a seguir de um aplicativo de assistência médica:
-
- Um médico de um hospital está procurando opções de tratamento para um paciente que está se recuperando de uma cirurgia.
- O contexto relevante do paciente é recuperado do histórico médico e das preferências. O acesso a esses dados é autenticado e autorizado.
- O contexto do paciente é enviado junto com a consulta para um modelo de LLM de borda hospedado no hospital, que pode gerar um plano de recuperação personalizado.
Redução do custo por consulta
Quando você tem centenas de milhares de clientes conectados consultando um LLM baseado em nuvem, a carga no modelo de nuvem e os custos operacionais de execução do modelo baseado em nuvem podem ser consideravelmente altos. Ao executar consultas localmente no dispositivo, podemos economizar nos custos de transferência de dados e nas taxas de saída da nuvem, além de descentralizar os custos operacionais.
Exemplo
Considere o seguinte exemplo de um aplicativo de assistente de atendimento ao cliente digital:
-
- Uma loja de varejo sincroniza com um catálogo de produtos, preços específicos da loja e dados de promoções para quiosques de atendimento ao cliente na loja (dispositivo de borda).
- Uma usuária no quiosque procura um chapéu que combine com a jaqueta que ela está usando, capturada por uma câmera. Ela também está interessada em chapéus que estejam em promoção.
- Em vez de os quiosques enviarem consultas de pesquisa para um servidor remoto, as pesquisas de similaridade são realizadas localmente, no quiosque, no catálogo para encontrar itens semelhantes que estão em promoção.
- Como bônus, a imagem capturada pode ser descartada imediatamente do quiosque, aliviando as preocupações com a privacidade.
Pesquisas de baixa latência
As pesquisas executadas localmente em um conjunto de dados local usando um modelo incorporado local eliminam a variabilidade da rede e serão consistentemente rápidas. Mesmo nos casos em que o modelo não está incorporado no dispositivo local, mas é implantado no local da borda, o tempo de ida e volta (RTT) associado às consultas pode ser significativamente reduzido em comparação com as pesquisas feitas pela Internet.
Exemplo
Revisão do aplicativo de loja de varejo:
-
- O catálogo de produtos, os preços específicos da loja e os documentos de promoções que são sincronizados com os quiosques de atendimento ao cliente incluem embeddings vetoriais. Os embeddings de vetor são gerados por modelos de embeddings LLM na nuvem.
- Os documentos que são sincronizados são indexados localmente no quiosque.
- Um cliente que está no quiosque da loja procurando um item específico faz uma busca regular por Tênis feminino Adidas tamanho 9 e também pode executar um encontrar itens relacionados A função de pesquisa de produtos é realizada de forma semelhante entre o produto que foi recuperado usando uma pesquisa regular e comparando-o com os documentos restantes do produto. A pesquisa é feita localmente e é rápida.
- Nesse caso, enquanto as incorporações de vetores são geradas na nuvem, a pesquisa de similaridade é feita localmente. De fato, nesse aplicativo específico, não há necessidade nem mesmo de um modelo de incorporação no aplicativo de quiosque.
Suporte unificado de nuvem a borda para pesquisa de similaridade de vetores
Embora existam consultas que são mais adequadas para a nuvem, por motivos explicados anteriormente na postagem, há casos em que as consultas são mais adequadas para a borda. Ter a flexibilidade de executar consultas na nuvem, na borda ou em ambas permitirá que os desenvolvedores criem aplicativos que aproveitem o melhor dos dois mundos.
Exemplo
- Considere um aplicativo bancário móvel em que o histórico de transações específicas do usuário dos últimos 6 meses é sincronizado e armazenado localmente no dispositivo
- Um usuário está procurando transações relacionadas a uma compra que fez há alguns meses. A pesquisa é feita localmente, portanto é rápida e também está disponível off-line
- As transações relacionadas a todos os usuários são armazenadas nos servidores em nuvem, onde a pesquisa semântica é usada pelo aplicativo de detecção de fraudes para detectar padrões de atividades fraudulentas
Mostre-me o código!
Agora que você está animado com os benefícios da pesquisa vetorial em seu aplicativo de borda, vamos ver o que é necessário para implementá-la. É bastante simples e requer apenas algumas linhas de código para trazer o poder da pesquisa semântica para o seu aplicativo de borda. O exemplo abaixo está em swift, mas confira a seção de recursos abaixo para obter trechos de código na linguagem de sua escolha.
Criação de um índice vetorial
Neste exemplo, criamos um índice vetorial com os valores padrão. Os aplicativos têm a opção de personalizar ainda mais a configuração do índice vetorial com uma métrica de distância diferente, o tipo de codificação do índice e os parâmetros de treinamento do centroide:
|
1 2 3 4 5 6 |
// criar configuração de índice de vetor. No exemplo, a propriedade de documento "description" é indexada (pode ser qualquer expressão SQL++) var configuração = VectorIndexConfiguration(expressão: "description" (descrição), dimensões: 158, centroides: 20) // criar índice vetorial com a configuração especificada tentar coleção.createIndex(withName: "myIndex", configuração: configuração) |
Fazendo uma pesquisa de similaridade
Neste exemplo, estou executando uma consulta SQL++ para recuperar os 10 principais documentos semelhantes com sua descrição correspondente à incorporação de destino do searchPhrase:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// Recuperar a incorporação de vetor para searchPhrase do modelo de incorporação guarda deixar searchEmbedding = modelRef.getEmbedding(para: searchPhrase) mais { lançamentos Erros.notFound } // Construa uma consulta SQL++ para retornar os 10 principais documentos do banco de dados com conteúdo semelhante à frase de pesquisa deixar sql = "SELECT meta().id, description DE _ ORDER BY APPROX_VECTOR_DISTANCE(vector, $searchParam) LIMIT 10" // criar consulta deixar consulta = tentar db.createQuery(sql) // definir o vetor de incorporação associado ao parâmetro de pesquisa deixar parâmetros = Parâmetros() parâmetros.setValue(searchEmbedding, forName: "searchParam") consulta.parâmetros = parâmetros // Executar consulta de pesquisa vetorial tentar consulta.executar() |
Recursos
Aqui estão os links diretos para alguns recursos úteis.
-
- Guias de instalação passo a passo
- Download do Couchbase Lite 3.2
- Downloads da biblioteca de extensões vetoriais do Couchbase Lite
- O suporte à pesquisa vetorial requer uma biblioteca de extensões separada que precisa ser vinculada ao seu aplicativo, além do SDK principal do Couchbase Lite.
- Vídeo explicativo do Couchbase Lite Vector Search
- Aplicativo de amostra para pesquisa vetorial do Couchbase Lite
Fique atento a uma próxima postagem no blog sobre arquiteturas de referência para dar suporte à pesquisa vetorial




