埋め込みデータベースを基盤に、セマンティック検索、RAG、LLMオーケストレーション、言語モデルのワークフローを実現するオールインワンのPython AIフレームワーク。
kelindar/search
完全なコサイン類似度ベクトル検索を提供するGoライブラリ。llama.cppによるローカルGGUF埋め込みと、OpenAI互換API経由のクラウド埋め込みにも対応。
- スター
- 561
- フォーク
- 24
- 未解決の Issue
- 5
- 最終コミット
- 2 か月前
これは何?
kelindar/searchは、ベクトルをインメモリインデックスに格納し、コサイン類似度で最も近いエントリを検索するGoライブラリです。コアパッケージにはネイティブ依存関係がなく、インデックス作成、検索、永続化を単独で処理するため、厳密な全件スキャンで問題ない小〜中規模のデータセットに適しています。
埋め込みプロバイダーは独立したモジュールとして提供されています。llamaパッケージはpuregoを使ってllama.cpp経由でMiniLMなどのローカルGGUFモデルを実行し、デフォルトではCPUを使用しますが、GPUレイヤーも任意で利用できます。openaiパッケージは標準ライブラリのみを使い、OpenRouterを含むOpenAI互換の埋め込みエンドポイントを呼び出します。[]float32を返す関数であれば、小さなインターフェースを介してインデックスにデータを渡せます。
このプロジェクトは独立したGoモジュールに分かれているため、アプリケーションは使用するプロバイダーだけを取り込めます。ローカル埋め込みを使うには、事前にLinux、macOS、またはWindows向けのllama.cppラッパーライブラリをビルドする必要があります。
主な機能
- 01インメモリベクトルを対象にコサイン類似度で厳密に検索し、関連度順に結果を返します。
- 02ファイルおよびio.Writer/Reader関数を使ってインデックスを永続化できます。
- 03llama.cpp経由でローカルのGGUF埋め込みを利用でき、GPUレイヤーも任意で使用できます。
- 04OpenRouterを含むOpenAI互換API経由のクラウド埋め込みに対応し、バッチリクエストも利用できます。
- 05プロバイダーに依存しない設計で、ベクトルを返す関数ならどれでもインデックスにデータを渡せます。
ユースケース
- 数千〜数万件程度のドキュメントを扱うGoサービスに、セマンティック検索を追加する。
- MiniLMなどのGGUFモデルを使って、埋め込み処理を完全にローカルで実行する。
- インデックスのコードを変更せずに、OpenAIとOpenRouterの埋め込みモデルを切り替える。
- 全件スキャンで十分な速度が得られる検索機能を試作する。
クイックスタート
- 1
サブモジュールとLFSファイルを含めてリポジトリをクローンする
git submodule update --init --recursive - 2
Git LFS経由でモデルとベクトルのフィクスチャを取得する
git lfs pull - 3
コア検索ライブラリをインストールする
go get github.com/kelindar/search
使う前に知っておきたいこと
- 検索は完全一致で、すべてのベクトルをスキャンするため、小規模から中規模のデータセットにのみ適しています。
- ローカル埋め込みを使用するには、CMakeとC/C++コンパイラでネイティブのllama.cppライブラリをビルドする必要があります。
- Go 1.27以降が必要です。
収録されている特集
トピック
よくある質問
- search とは?
- 完全なコサイン類似度ベクトル検索を提供するGoライブラリ。llama.cppによるローカルGGUF埋め込みと、OpenAI互換API経由のクラウド埋め込みにも対応。 kelindar/searchは、ベクトルをインメモリインデックスに格納し、コサイン類似度で最も近いエントリを検索するGoライブラリです。コアパッケージにはネイティブ依存関係がなく、インデックス作成、検索、永続化を単独で処理するため、厳密な全件スキャンで問題ない小〜中規模のデータセットに適しています。
- search は無料で使えますか?ライセンスは?
- search は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- search は今もメンテナンスされていますか?
- 半年以内に更新あり。search の最終コミットは 2026年9月19日 です。
- search は何に使えますか?
- 数千〜数万件程度のドキュメントを扱うGoサービスに、セマンティック検索を追加する。 MiniLMなどのGGUFモデルを使って、埋め込み処理を完全にローカルで実行する。 インデックスのコードを変更せずに、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 をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
llama.cppを使い、自社のCPUまたはGPUインフラで推論を実行する、オープンソースのLLMロードバランサー兼サービングプラットフォーム。
オープンソースのテキスト埋め込み・リランキングモデルをHTTPとgRPC経由でデプロイ、提供するRust製サーバー。
ローカル埋め込み、呼び出しグラフの追跡、AIコーディングエージェント向けMCPサーバーを備えた、プライバシー重視のセマンティックコード検索CLIです。
Epsillaは、メタデータフィルタリング、ハイブリッド検索、LLM検索連携に対応した、埋め込みベクトルの類似検索向けオープンソースC++ベクトルデータベースです。
llama.cppをROS 2ノードとして動かし、GGUFベースのLLM、視覚言語モデル、音声モデルを実行するROS 2パッケージ群。