Framework de IA completo em Python para busca semântica, RAG, orquestração de LLMs e fluxos de trabalho com modelos de linguagem, baseado em um banco de dados de embeddings.
kelindar/search
Biblioteca Go para busca exata de vetores por similaridade de cosseno, com embeddings locais opcionais via llama.cpp e GGUF ou embeddings na nuvem por APIs compatíveis com OpenAI.
- Estrelas
- 561
- Forks
- 24
- Issues abertas
- 5
- Último commit
- há 2 meses
O que é?
kelindar/search é uma biblioteca Go para armazenar vetores em um índice na memória e encontrar as entradas mais semelhantes por similaridade de cosseno. O pacote principal não tem dependências nativas e cuida da indexação, da busca e da persistência por conta própria, sendo adequado para conjuntos de dados pequenos e médios, nos quais uma varredura exata é aceitável.
Os provedores de embeddings são módulos separados. O pacote llama executa modelos GGUF locais, como MiniLM, por meio do llama.cpp usando purego, com CPU por padrão e camadas de GPU opcionais. O pacote openai chama endpoints de embeddings compatíveis com OpenAI, incluindo o OpenRouter, usando apenas a biblioteca padrão. Qualquer função que retorne um []float32 também pode alimentar o índice por meio de uma interface simples.
O projeto é dividido em módulos Go independentes, para que as aplicações incluam apenas o provedor que usam. Para usar embeddings locais, primeiro é necessário compilar uma biblioteca wrapper do llama.cpp para Linux, macOS ou Windows.
Recursos principais
- 01Busca exata por similaridade de cosseno em vetores na memória, com resultados ordenados por relevância.
- 02Persistência do índice por meio de funções para arquivos e io.Writer/Reader.
- 03Embeddings GGUF locais via llama.cpp, com camadas de GPU opcionais.
- 04Embeddings na nuvem por APIs compatíveis com OpenAI, incluindo OpenRouter, com solicitações em lote.
- 05Design independente de provedor, no qual qualquer função que retorne vetores pode alimentar o índice.
Casos de uso
- Adicionar busca semântica a um serviço Go com alguns milhares a dezenas de milhares de documentos.
- Executar embeddings inteiramente na máquina local usando um modelo GGUF, como MiniLM.
- Alternar entre modelos de embeddings da OpenAI e do OpenRouter sem alterar o código do índice.
- Prototipar recursos de recuperação em que uma varredura exata seja rápida o suficiente.
Início rápido
- 1
Clone o repositório com seus submódulos e arquivos LFS
git submodule update --init --recursive - 2
Busque o modelo e os dados de teste de vetores via Git LFS
git lfs pull - 3
Instale a biblioteca principal de busca
go get github.com/kelindar/search
Antes de usar
- A busca é exata e percorre todos os vetores, por isso é adequada apenas para conjuntos de dados pequenos e médios.
- Embeddings locais exigem compilar uma biblioteca nativa do llama.cpp com CMake e um compilador de C/C++.
- Requer Go 1.27 ou mais recente.
Em coleções
Tópicos
Perguntas frequentes
- O que é search?
- Biblioteca Go para busca exata de vetores por similaridade de cosseno, com embeddings locais opcionais via llama.cpp e GGUF ou embeddings na nuvem por APIs compatíveis com OpenAI. kelindar/search é uma biblioteca Go para armazenar vetores em um índice na memória e encontrar as entradas mais semelhantes por similaridade de cosseno. O pacote principal não tem dependências nativas e cuida da indexação, da busca e da persistência por conta própria, sendo adequado para conjuntos de dados pequenos e médios, nos quais uma varredura exata é aceitável.
- search é gratuito? Qual é a licença?
- search é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
- search ainda é mantido?
- Atualizado nos últimos 6 meses. O último commit de search foi em 19 de set. de 2026.
- Para que posso usar search?
- Adicionar busca semântica a um serviço Go com alguns milhares a dezenas de milhares de documentos. Executar embeddings inteiramente na máquina local usando um modelo GGUF, como MiniLM. Alternar entre modelos de embeddings da OpenAI e do OpenRouter sem alterar o código do índice. Prototipar recursos de recuperação em que uma varredura exata seja rápida o suficiente.
- Como instalar search?
- Clone o repositório com seus submódulos e arquivos LFS: git submodule update --init --recursive Busque o modelo e os dados de teste de vetores via Git LFS: git lfs pull Instale a biblioteca principal de busca: go get github.com/kelindar/search
- Onde consigo search?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/kelindar/search
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Balanceador de carga e plataforma de serving de LLMs open source que executa inferência na sua própria infraestrutura com CPU ou GPU usando llama.cpp.
Servidor baseado em Rust para implantar e servir modelos open source de embeddings de texto e reranking por HTTP e gRPC.
CLI com foco em privacidade para busca semântica de código, com embeddings locais, rastreamento do grafo de chamadas e um servidor MCP para agentes de programação com IA.
Epsilla é um banco de dados vetorial open source em C++ para busca por similaridade em embeddings, com filtros por metadados, busca híbrida e integração com sistemas de recuperação para LLMs.
Pacotes ROS 2 para executar LLMs baseados em GGUF e modelos de visão e áudio via llama.cpp em nós ROS 2.