Repolode
kelindar

kelindar/search

Biblioteca de Go para buscar vectores por similitud coseno exacta, con embeddings GGUF locales opcionales vía llama.cpp y embeddings en la nube mediante API compatibles con OpenAI.

Estrellas
561
Forks
24
Issues abiertos
5
Último commit
hace 2 meses

¿Qué es?

kelindar/search es una biblioteca de Go para almacenar vectores en un índice en memoria y encontrar las entradas más similares por similitud coseno. El paquete principal no tiene dependencias nativas y se encarga por sí solo de la indexación, la búsqueda y la persistencia, por lo que es adecuado para conjuntos de datos pequeños y medianos en los que resulta aceptable hacer un recorrido exacto.

Los proveedores de embeddings son módulos independientes. El paquete llama ejecuta modelos GGUF locales, como MiniLM, mediante llama.cpp y purego; usa la CPU de forma predeterminada y permite habilitar capas de GPU. El paquete openai llama a endpoints de embeddings compatibles con OpenAI, incluido OpenRouter, usando solo la biblioteca estándar. Cualquier función que devuelva un []float32 también puede alimentar el índice mediante una interfaz pequeña.

El proyecto se divide en módulos de Go independientes para que las aplicaciones solo incorporen el proveedor que usan. Para usar embeddings locales, primero hay que compilar una biblioteca wrapper de llama.cpp para Linux, macOS o Windows.

Funciones clave

  • 01Búsqueda exacta por similitud coseno en vectores en memoria, con resultados ordenados por relevancia.
  • 02Persistencia del índice mediante funciones para archivos y io.Writer/Reader.
  • 03Embeddings GGUF locales mediante llama.cpp, con capas de GPU opcionales.
  • 04Embeddings en la nube mediante API compatibles con OpenAI, incluido OpenRouter, con solicitudes por lotes.
  • 05Diseño independiente del proveedor: cualquier función que devuelva vectores puede alimentar el índice.

Casos de uso

  • Añadir búsqueda semántica a un servicio de Go con unos pocos miles o decenas de miles de documentos.
  • Ejecutar embeddings completamente de forma local con un modelo GGUF como MiniLM.
  • Alternar entre modelos de embeddings de OpenAI y OpenRouter sin cambiar el código del índice.
  • Crear prototipos de funciones de recuperación cuando un recorrido exacto sea suficientemente rápido.

Inicio rápido

  1. 1

    Clona el repositorio con sus submódulos y archivos LFS

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

    Obtén el modelo y los datos de prueba de vectores mediante Git LFS

    git lfs pull
  3. 3

    Instala la biblioteca de búsqueda principal

    go get github.com/kelindar/search

Antes de usarlo

  • La búsqueda es exacta y recorre todos los vectores, por lo que solo es adecuada para conjuntos de datos pequeños y medianos.
  • Los embeddings locales requieren compilar una biblioteca nativa de llama.cpp con CMake y un compilador de C/C++.
  • Requiere Go 1.27 o posterior.

En colecciones

Temas

Preguntas frecuentes

¿Qué es search?
Biblioteca de Go para buscar vectores por similitud coseno exacta, con embeddings GGUF locales opcionales vía llama.cpp y embeddings en la nube mediante API compatibles con OpenAI. kelindar/search es una biblioteca de Go para almacenar vectores en un índice en memoria y encontrar las entradas más similares por similitud coseno. El paquete principal no tiene dependencias nativas y se encarga por sí solo de la indexación, la búsqueda y la persistencia, por lo que es adecuado para conjuntos de datos pequeños y medianos en los que resulta aceptable hacer un recorrido exacto.
¿search es gratuito? ¿Qué licencia tiene?
search es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿search sigue mantenido?
Actualizado en los últimos 6 meses. El último commit de search fue el 19 sept 2026.
¿Para qué puedo usar search?
Añadir búsqueda semántica a un servicio de Go con unos pocos miles o decenas de miles de documentos. Ejecutar embeddings completamente de forma local con un modelo GGUF como MiniLM. Alternar entre modelos de embeddings de OpenAI y OpenRouter sin cambiar el código del índice. Crear prototipos de funciones de recuperación cuando un recorrido exacto sea suficientemente rápido.
¿Cómo se instala search?
Clona el repositorio con sus submódulos y archivos LFS: git submodule update --init --recursive Obtén el modelo y los datos de prueba de vectores mediante Git LFS: git lfs pull Instala la biblioteca de búsqueda principal: go get github.com/kelindar/search
¿Dónde consigo search?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/kelindar/search

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados