kelindar/search

Go library for embedded vector search and semantic embeddings using llama.cpp

解決する課題

このプロジェクトは、中小規模のベクトルデータセットを管理・検索するための、軽量で正確なコサイン類似度インデックスを提供します。大規模な外部データベースを必要とせず、インデックス作成と検索のためのネイティブなGo実装を提供し、ローカルおよびクラウドベースのプロバイダーから埋め込みを生成するための統合サポートも備えています。

仕組み

このライブラリは、すべてのベクトルに対して線形スキャンを実行し、コサイン類似度に基づいて最も関連性の高い結果を見つけるコア検索インデックスで構成されています。インデックスにデータを取り込むために、2つのオプションの埋め込みモジュールを提供します。

  • ローカル埋め込み (Local Embeddings): llama.cpppurego 経由で使用し、CPUまたはGPU上でローカルにGGUFモデルから埋め込みを生成します。
  • クラウド埋め込み (Cloud Embeddings): OpenAI互換のAPI (OpenRouterを含む) に接続してテキスト埋め込みを生成します。

コアとなるインデックスロジックは埋め込みプロバイダーから分離されているため、ユーザーは任意のカスタムソースから独自のベクトルを提供することも可能です。

対象ユーザー

フルスケールのベクトルデータベースのオーバーヘッドなしでベクトル検索機能を実装する必要があるGo開発者。特に、線形スキャンで処理可能な規模のデータセットを扱う場合に適しています。

ハイライト

  • コアの依存関係ゼロ: メインの検索パッケージには、ネイティブライブラリの要件や埋め込みモジュールへの依存関係はありません。
  • 柔軟な埋め込みオプション: ローカルのGGUFモデルとクラウドAPIの両方をサポートしています。
  • 永続化: インデックスをファイルに読み書きするための組み込みメソッドが含まれています。
  • ローカルGPUサポート: ローカル埋め込みはGPUアクセラレーション (例: Vulkan) を有効にしてコンパイル可能です。
  • プロバイダー非依存: シンプルなインターフェースを通じて、埋め込みプロバイダーを簡単に切り替えることができます。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト