Sobre o projeto

dve (dve vector engine) é uma biblioteca para criar e pesquisar embeddings vetoriais localmente em dispositivos Apple. Ela é desenvolvida com Zig, e bindings experimentais em Swift também estão disponíveis. O projeto se descreve como estando em estágio inicial e em desenvolvimento ativo, e recebe relatórios de bugs, issues e pull requests no GitHub. O uso gira em torno de abrir um diretório para armazenar o banco de dados vetorial, selecionar um modelo e, então, incorporar e pesquisar texto. No exemplo em Zig, um diretório é criado com std.fs.cwd().makeOpenPath, um modelo é escolhido por meio de dve.VectorEngine(.mpnet_embedding) e o motor é inicializado com um alocador e um diretório. Entradas de texto são adicionadas com embedText, em que a chave identifica a entrada (normalmente um caminho de arquivo). A busca recebe uma string de consulta e um buffer de resultados, retornando resultados ordenados por similaridade; o exemplo mostra uma consulta sobre inteligência artificial correspondendo à entrada com chave "doc1". O README aponta para um diretório examples com demonstrações completas funcionais em Zig e Swift, e para USAGE.md com instalação, opções de modelos disponíveis e suas compensações, além de detalhes completos de uso. A motivação declarada é que a busca vetorial é útil para aplicativos, mas implementações no dispositivo são difíceis de encontrar. Os desenvolvedores normalmente escolhem entre APIs na nuvem, que adicionam custo e uma dependência de terceiros, ou frameworks pesados tudo-em-um, como Hugging Face Transformers. O README argumenta que isso é especialmente acentuado nas plataformas Apple, onde frameworks de ML priorizam maciçamente servidores Linux, o CoreML é mal documentado e bibliotecas multiplataforma raramente se integram de forma limpa a aplicativos macOS ou iOS. O dve pretende preencher essa lacuna, começando pela Apple enquanto trata a portabilidade como um objetivo central de design. O projeto lista três princípios centrais: portátil, significando que deve usar poucas bibliotecas para poder ser facilmente usado em qualquer plataforma; simples, significando uma interface simples, mas configurável, com padrões sensatos; e local, significando que deve ser executado com bom desempenho e nunca fazer chamadas de rede. O roadmap inclui adicionar suporte a Linux, tornar os bindings Swift mais estáveis, tornar os bindings C/C++ mais estáveis, suporte a iOS, suporte a embeddings multimodais, download de links dentro de documentos de texto e incorporação deles, suporte a vários tipos de modelo além de mpnet e Apple NL, e suporte a múltiplas instâncias de banco de dados em um único processo.