Repolode
kelindar

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. 1

    Clone o repositório com seus submódulos e arquivos LFS

    git submodule update --init --recursive
  2. 2

    Busque o modelo e os dados de teste de vetores via Git LFS

    git lfs pull
  3. 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