Blog

Entender o disco ANN, uma base fundamental do tempo de execução do Copilot.

A Microsoft está incluindo um novo recurso de busca rápida por vetores no Windows, especialmente projetado para modelos de linguagem locais pequenos e eficientes, como o Phi Silica.

Big data and artificial intelligence concept. Machine learning and circuit board. Deep learning
Imagem: driles/FreeImages

Uma nova tecnologia de pesquisa vetorial, chamada DiskANN (Disk Accelerated Nearest Neighbors), é um dos principais elementos da plataforma de desenvolvimento de IA Copilot Runtime edge da Microsoft para Windows. O DiskANN, baseado em um projeto de pesquisa da Microsoft, permite a construção e gerenciamento de índices de vetores em aplicações, combinando armazenamento em memória e disco para mapear um gráfico vetorial quantificado em memória para um gráfico de alta precisão no disco.

O que exatamente significa DiskANN?

Embora não seja uma comparação direta, é possível considerar o DiskANN como o equivalente de índice de vetores de ferramentas como o SQLite. Ao ser incorporado ao seu código, o DiskANN oferece uma forma fácil de buscar em um índice de vetores formado por embeddings semânticos de um modelo de linguagem pequena (SLM) como o Phi Silica Copilot Runtime.

É fundamental compreender que o DiskANN não constitui um banco de dados, mas sim uma coleção de algoritmos disponibilizada como uma ferramenta para incorporar índices de vetores em outras plataformas que não foram desenvolvidas para suportar buscas vetoriais. Dessa forma, ele se apresenta como um parceiro adequado para outras plataformas de armazenamento, seja elas relacionais ou baseadas em valores-chave NoSQL.

A necessidade de armazenamento em memória e disco é um dos motivos que justificam as especificações de hardware mais robustas para os PCs Copilot+, incluindo o dobro da memória exigida pelos sistemas Windows anteriores, além de SSDs maiores e mais velozes. Em comparação a outros algoritmos de pesquisa vetorial, geralmente é solicitado menos poder de processamento (CPU) para implementações em larga escala nos serviços Azure, chegando a utilizar apenas 5% dos recursos necessários pelos métodos tradicionais de CPU.

Será necessário ter uma loja separada para os dados que estão sendo indexados. Separar as lojas para índices e fontes de incorporações pode apresentar desafios. Ao lidar com informações pessoalmente identificáveis ou outros dados regulamentados, é crucial garantir que os dados de origem estejam criptografados. Embora isso possa resultar em mais demanda nas consultas, a Microsoft está desenvolvendo enclaves seguros baseados em software para criptografar dados em repouso e em uso, o que ajuda a reduzir o risco de vazamento de informações pessoais ou manipulação por malware.

RELACIONADO:  Gerenciamento de despesas do Kubernetes para situações reais.

O Disco ANN é uma ferramenta que realiza uma busca de vizinhança próxima ao utilizar um índice de gráficos Vamana. Essa implementação é ideal para lidar com dados que sofrem alterações frequentes, sendo útil para aplicativos de inteligência artificial do tipo agente que necessitam indexar arquivos locais ou informações armazenadas em serviços como o Microsoft 365, como e-mails ou conversas no Teams.

Iniciar utilizando o serviço de entregas por telefone.

Uma maneira eficaz de começar rapidamente é utilizar o diskannpy em Python, que oferece tutoriais sobre a construção e pesquisa de índices. Você pode optar por empregar bibliotecas de análise numérica como NumPy para criar e manipular índices, integrando-as em ferramentas de ciência de dados já existentes. Além disso, é possível utilizar notebooks Jupyter no Visual Studio Code para testar os índices antes de desenvolver aplicações em torno deles. Ao adotar uma abordagem baseada em notebooks para a prototipagem, você poderá desenvolver elementos de uma aplicação SLM separadamente e transferir resultados entre as células.

Inicie utilizando uma das duas classes de construtor de índices disponíveis para criar um índice de vetor híbrido ou em memória a partir de um array NumPy ou um arquivo de vetor de formato DiskANN. A biblioteca diskannpy oferece ferramentas para gerar esse arquivo a partir de um array, o que facilita a adição de incorporações a um índice de forma rápida. Os índices gerados são armazenados em um diretório específico, pronto para serem consultados. Além disso, há recursos adicionais que permitem a atualização dos índices, suportando operações dinâmicas.

A classe Buscar é simples, com um array de consulta que inclui parâmetros para determinar o número de vizinhos a serem retornados e a complexidade da lista. Quanto maior a lista, mais tempo levará para retornar os resultados, porém ela será mais precisa. É importante equilibrar a precisão e a latência realizando experimentos antes de finalizar o código. Outras opções permitem melhorar o desempenho por meio de loteamento de consultas, permitindo que você defina a complexidade do índice e o tipo de métrica de distância usada nas pesquisas. Índices mais complexos e graus de grafo mais altos são mais eficientes, mas levam mais tempo para serem criados.

RELACIONADO:  A Microsoft vai lançar 21 versões compiladas do Java.

Diskannpy é uma ferramenta útil que auxilia na aprendizagem do DiskANN. Conforme o Copilot Runtime avança, é provável que a Microsoft desenvolva um conjunto de wrappers que ofereça uma abstração de nível superior, semelhante ao que já foi feito para o Cosmos DB. A ideia desse desenvolvimento foi mencionada no anúncio inicial do Copilot Runtime, com a referência a uma API de Vector Embeddings utilizada na construção de aplicativos baseados em geração de recuperação (RAG). Essa implementação está planejada para ser incluída em futuras atualizações do Copilot Runtime.

Por que escolher o DiskANN?

Ao explorar o repositório GitHub do projeto, fica evidente por que a Microsoft optou pelo DiskANN como uma das tecnologias-chave no Copilot Runtime, uma vez que ele é otimizado para operações em SSD e em memória, e pode oferecer uma abordagem híbrida eficiente na indexação de grandes conjuntos de dados. O artigo inicial da Microsoft Research sobre o DiskANN sugere que um índice híbrido SSD/RAM pode indexar de cinco a dez vezes mais vetores do que o algoritmo equivalente de memória pura, sendo capaz de lidar com aproximadamente um bilhão de vetores com alta precisão de busca e uma latência de 5ms.

Na prática, é improvável que um aplicativo SLM hospedado na borda necessite indexar esses dados, o que significa que o desempenho e a precisão devem ser superiores.

Se estiver desenvolvendo uma aplicação de inteligência artificial com foco semântico em um modelo de linguagem supervisionada, é importante priorizar a eficiência, utilizando um número reduzido de tokens para cada ação. Ao agilizar a pesquisa necessária para formular consultas fundamentadas em um aplicativo RAG, é possível minimizar o risco de frustrar os usuários ao mantê-los esperando por uma resposta que poderia ser simples.

RELACIONADO:  AWS está se organizando para liderar um grupo de agentes de inteligência artificial.

Ao carregar um índice de memória durante a inicialização, é possível facilitar as buscas para que o seu aplicativo só precise acessar os dados de origem quando for essencial para criar um prompt bem fundamentado para o seu SLM. Uma funcionalidade interessante é a possibilidade de incluir filtros em uma busca, o que permite refinar os resultados e oferecer uma base mais precisa para a sua aplicação.

Estamos nos estágios iniciais do Copilot Runtime e ainda faltam algumas partes fundamentais. Uma peça importante que está ausente é a ferramenta para transformar os dados originais em incorporações vetoriais ao usar índices DiskANN. Essa etapa é crucial para criar uma pesquisa vetorial, seja integrada ao código ou para compartilhar um conjunto de índices vetoriais com um aplicativo.

DiskANN em diferentes locais dentro da Microsoft

Fora do ambiente de execução do Copilot, a Microsoft está empregando o DiskANN para incorporar busca vetorial rápida ao Cosmos DB. Outros serviços que se beneficiam dele são o Microsoft 365 e o Bing. No Cosmos DB, a busca vetorial está sendo integrada à sua API NoSQL, a qual lida com grandes volumes de dados extensivamente distribuídos. Aqui, a capacidade do DiskANN de atualizar os dados de forma ágil complementa o dimensionamento dinâmico do Cosmos DB, criando um novo índice para cada nova partição. As consultas podem ser então distribuídas para todos os índices de partição disponíveis simultaneamente.

A equipe de pesquisa da Microsoft tem dedicado esforços ao desenvolvimento de ferramentas como o DiskANN por um período considerável. É encorajador observar a transição dessas pesquisas para a criação de produtos, sobretudo produtos amplamente utilizados como o Cosmos DB e o Windows. A integração de um índice de vetores eficiente e preciso no tempo de execução do Copilot ajudará a minimizar os riscos relacionados à IA generativa e a manter os índices seguros no dispositivo, garantindo a privacidade dos dados originais e sua integridade. Juntamente com as técnicas de computação confidenciais disponíveis no Windows, a Microsoft parece estar se preparando para oferecer soluções de IA seguras e privadas em nossos próprios dispositivos.

Artigos relacionados

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button