Repolode
kelindar

kelindar/search

Библиотека Go для точного поиска векторов по косинусному сходству: поддерживает локальные эмбеддинги GGUF через llama.cpp и облачные — через API, совместимые с OpenAI.

Звёзды
561
Форки
24
Открытые issues
5
Последний коммит
2 месяца назад

Что это?

kelindar/search — библиотека Go для хранения векторов в индексе в памяти и поиска наиболее похожих записей по косинусному сходству. В основном пакете нет нативных зависимостей: он самостоятельно выполняет индексацию, поиск и сохранение данных. Библиотека подходит для небольших и средних наборов данных, где допустим точный перебор.

Провайдеры эмбеддингов вынесены в отдельные модули. Пакет llama запускает локальные модели GGUF, например MiniLM, через llama.cpp с помощью purego: по умолчанию на CPU, с возможностью задействовать слои GPU. Пакет openai обращается к API эмбеддингов, совместимым с OpenAI, в том числе к OpenRouter, используя только стандартную библиотеку. Индекс также может принимать результат любой функции, возвращающей []float32, через простой интерфейс.

Проект разделён на независимые модули Go, поэтому приложения подключают только нужного им провайдера. Для работы с локальными эмбеддингами сначала нужно собрать библиотеку-обёртку для llama.cpp под Linux, macOS или Windows.

Ключевые возможности

  • 01Точный поиск векторов в памяти по косинусному сходству с сортировкой результатов по релевантности.
  • 02Сохранение индекса с помощью функций для работы с файлами и io.Writer/Reader.
  • 03Локальные эмбеддинги GGUF через llama.cpp с возможностью задействовать слои GPU.
  • 04Облачные эмбеддинги через API, совместимые с OpenAI, включая OpenRouter; поддерживаются пакетные запросы.
  • 05Независимая от провайдера архитектура: индекс может принимать векторы, возвращаемые любой функцией.

Сценарии использования

  • Добавление семантического поиска в сервис Go с несколькими тысячами или десятками тысяч документов.
  • Локальный запуск эмбеддингов с моделью GGUF, например MiniLM.
  • Переключение между моделями эмбеддингов OpenAI и OpenRouter без изменения кода индекса.
  • Создание прототипов функций поиска, где достаточно быстрого точного перебора.

Быстрый старт

  1. 1

    Клонируйте репозиторий вместе с его подмодулями и файлами LFS

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

    Загрузите модель и тестовые векторы через Git LFS

    git lfs pull
  3. 3

    Установите основную библиотеку поиска

    go get github.com/kelindar/search

Что важно знать

  • Поиск выполняется по точному совпадению и проверяет каждый вектор, поэтому подходит только для небольших и средних наборов данных.
  • Для локальных эмбеддингов необходимо собрать нативную библиотеку llama.cpp с помощью CMake и компилятора C/C++.
  • Требуется Go версии 1.27 или новее.

В подборках

Темы

Частые вопросы

Что такое search?
Библиотека Go для точного поиска векторов по косинусному сходству: поддерживает локальные эмбеддинги GGUF через llama.cpp и облачные — через API, совместимые с OpenAI. kelindar/search — библиотека Go для хранения векторов в индексе в памяти и поиска наиболее похожих записей по косинусному сходству. В основном пакете нет нативных зависимостей: он самостоятельно выполняет индексацию, поиск и сохранение данных. Библиотека подходит для небольших и средних наборов данных, где допустим точный перебор.
search можно использовать бесплатно? Какая у него лицензия?
search распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
search всё ещё поддерживается?
Обновлялся за последние 6 месяцев. Последний коммит в search — 19 сент. 2026 г..
Для чего можно использовать search?
Добавление семантического поиска в сервис Go с несколькими тысячами или десятками тысяч документов. Локальный запуск эмбеддингов с моделью GGUF, например MiniLM. Переключение между моделями эмбеддингов OpenAI и OpenRouter без изменения кода индекса. Создание прототипов функций поиска, где достаточно быстрого точного перебора.
Как установить search?
Клонируйте репозиторий вместе с его подмодулями и файлами LFS: git submodule update --init --recursive Загрузите модель и тестовые векторы через Git LFS: git lfs pull Установите основную библиотеку поиска: go get github.com/kelindar/search
Где скачать search?
Исходный код и инструкции по установке — на GitHub: https://github.com/kelindar/search

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Универсальный AI-фреймворк на Python для семантического поиска, RAG, оркестрации LLM и рабочих процессов с языковыми моделями на базе векторной БД эмбеддингов.

13,1 тыс.+37 за неделю972PythonApache-2.0Активно поддерживаетсяОбновлён вчера

CLI для семантического поиска по коду с локальными эмбеддингами, анализом графа вызовов и MCP-сервером для AI-агентов — с приоритетом конфиденциальности.

1,9 тыс.+9 за неделю160CMITАктивно поддерживаетсяОбновлён 6 дней назад

Epsilla — векторная база данных с открытым исходным кодом на C++ для поиска похожих эмбеддингов, с фильтрацией метаданных, гибридным поиском и интеграциями для LLM-поиска.

87446C++Apache-2.0Обновлён в прошлом месяце