rryam/VecturaKit

Swift-based vector database for on-device RAG using MLTensor and MLX Embedders

VecturaKit – Swiftアプリ用のデバイス内ベクトルデータベース

何であるか – VecturaKitは、iOS、macOS、watchOS、tvOS、visionOSアプリがテキストドキュメントをデバイス内にローカルにベクトル埋め込みとして保存できるSwiftライブラリです。通常のベクトルデータベース機能(追加、更新、削除、検索)に加え、ハイブリッドBM25+ベクトル検索を提供し、すべてのデータがユーザーのハードウェア内に留まるよう完全にデバイス内に設計されています。

主な機能

  • プラグイン可能な埋め込みエンジンVecturaEmbedderに準拠する任意の埋め込みエンジンを接続できます。このパッケージには以下のものが同梱されています:
    • NLContextualEmbedder – AppleのNaturalLanguageフレームワークを使用(外部依存なし)。
    • OpenAICompatibleEmbedder – 任意の /v1/embeddings API(例:OpenAI、Ollama、LM Studio)と通信。
    • SwiftEmbedder(別途の VecturaEmbeddingsKit を通じて)– swift-embeddingsモデル(Model2Vec、BERT、RoBERTaなど)を実行。
    • MLXEmbedderVecturaMLXKit を通じて)– Apple MLX上のGPU加速埋め込み。
  • ハイブリッド検索 – ベクトル間のコサイン類似度とBM25テキストスコアを組み合わせ、両者の重みはカスタマイズ可能。
  • カスタムストレージ&検索VecturaStorageに準拠することで、SQLite、Core Data、クラウドなど任意のストレージバックエンドを提供可能。また、VecturaSearchEngineに準拠することで検索アルゴリズムを置き換えられます。
  • メモリ戦略 – 自動、完全メモリ、またはオンデマンドでドキュメントを読み込むインデックスモードをサポート。数百から数百万件のレコードまで対応可能。
  • CLIツールvectura-cli(NaturalLanguage)とvectura-oai-cli(OpenAI互換)は、コマンドラインから実験が可能。

一般的な使用フロー

  1. 設定VecturaConfigを構成(名前、オプションのカスタムディレクトリ、検索オプション、メモリ戦略)。
  2. 埋め込みエンジンの作成 – 例:let embedder = try await NLContextualEmbedder(language: .english)
  3. データベースのインスタンス化let db = try await VecturaKit(config: config, embedder: embedder)
  4. ドキュメントの追加await db.addDocuments(texts: [...])(バッチ処理は並列化)。
  5. 検索await db.search(query: "some query", numResults: 5) は、VecturaSearchResultの配列を返し、id、テキスト、類似度スコア、タイムスタンプを含む。
  6. ドキュメント管理 – idによる更新、削除、取得、またはデータベース全体のリセット。

なぜ重要か

  • プライバシー最優先:すべての埋め込みとインデックス作成がローカルで行われるため、ユーザーのデータをクラウドに送信せずに意味検索が可能。
  • Swiftネイティブ:OpenAI互換埋め込みエンジンを選ばない限り、Pythonや外部サービスへのブリッジは不要。
  • 拡張性:プラグインアーキテクチャにより、新しい埋め込みモデルやカスタムランク付けロジックをアプリの他の部分を変更せずに交換可能。

導入方法 Swift Package Managerでパッケージを追加:

.dependencies: [
    .package(url: "https://github.com/rryam/VecturaKit.git", from: "6.3.0"),
]

その後、VecturaKit(およびオプションでVecturaNLKitまたはVecturaOAIKit)をインポートし、READMEに記載のクイックスタートコードに従ってください。

ドキュメントとコミュニティ

  • 詳細なガイドは Docs/ にあり(インデックスストレージ、パフォーマンスベンチマーク)。
  • 埋め込み用の別パッケージ(VecturaEmbeddingsKit)とMLX加速用(VecturaMLXKit)。
  • オープンソースライセンス(MIT)と貢献ガイドラインが提供されています。

結論 – VecturaKitは、デバイス内AI/MLワークロードを想定した本格的でプロダクション対応のSwiftベクトルデータベースであり、柔軟な埋め込みバックエンド、ハイブリッド検索、カスタムストレージやランク付けの拡張性を提供しています。

関連

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