AIアプリにメモリ機能を追加しようとして、ChromaDBやPineconeの設定で半日潰れた経験はありませんか。ベクトルデータベースのDockerコンテナを立てて、接続設定を書いて、運用のことまで考え始めると、本来やりたかったことから随分遠くに来てしまった気がしてきます。
そんな課題を根本から解決するのがWaxというSwiftライブラリです。「AIメモリのSQLite」を標榜していて、サーバーもDockerもAPIキーも不要。たった1つのファイルでRAGパイプラインを完結させるというコンセプトが、Hacker Newsで大きな反響を呼んでいます。
Waxが解決する問題
従来のRAGスタックを思い浮かべてみてください。ChromaDBやPgvector、Redis、Elasticsearch、それらを動かすDocker。5つ以上のサービスが必要になることも珍しくありません。
Waxはこれをたった1つの.mv2sファイルに置き換えます。ネットワーク呼び出しゼロ、100%オンデバイスで動作するので、プライバシーの心配もなし。ファイルをコピーすればバックアップ完了という手軽さです。
RAGの仕組みをすでにご存知の方なら、その複雑さを実感しているはずです。Waxはその複雑さを大幅に削ぎ落としてくれます。
驚異的なパフォーマンス
Waxのベンチマーク結果はかなり印象的でした。Apple Silicon(M1 Pro)での10,000ドキュメント×384次元のベクトル検索で、Metal GPU使用時のウォームキャッシュでわずか0.84ミリ秒です。
- Metal GPU(ウォーム):0.84ms
- Metal GPU(コールド):9.2ms
- CPU:105ms
- SQLite FTS5(参考値):150ms
- コールドオープンから初回クエリまで:17ms
インジェストスループットも、200ドキュメントで約1,942 docs/秒、1,000ドキュメントで約3,236 docs/秒と高速です。サーバーサイドのベクトルDBに匹敵するか、場合によっては上回る数値だと感じました。
使い方はシンプルそのもの
Swift Package ManagerでWaxを追加したら、コードは驚くほどシンプルです。MemoryOrchestratorを初期化して、rememberで情報を保存、recallでクエリするだけ。トークンバジェットの管理やランキングも内部で自動的に処理してくれます。
メタデータの付与もサポートされているので、「この情報はオンボーディングで取得したもの」「これはチャット履歴から」といった分類も可能ですね。
技術的な仕組み
Waxの内部では、ベクトル検索にApple MetalのGPUコンピューティングを活用しています。.mv2sというカスタムファイルフォーマットにベクトルとメタデータを格納し、kill -9で強制終了してもデータが壊れない耐久性を実現しているとのこと。
ハイブリッド検索にも対応していて、ベクトル類似度検索とキーワード検索を組み合わせた結果を返すことができます。SQLiteでのベクトル検索と比べると、Apple Siliconに最適化されている分、パフォーマンスで大きなアドバンテージがあります。
どんなアプリに向いているか
Waxが特に力を発揮するのは、iOS/macOSのオンデバイスAIエージェントです。チャットボットの会話履歴、パーソナルアシスタントのユーザー嗜好記憶、ノートアプリのスマート検索など、ローカルで完結させたいAIメモリ機能に最適でしょう。
OllamaでローカルLLMを動かしている方なら、Waxと組み合わせることでサーバーレスなRAGアシスタントを構築できる可能性があります。
制約と注意点
現時点ではSwift専用なので、Android/Windowsでは使えません。また、iOS 26/macOS 26以降が必要です。大規模なドキュメントコーパス(数百万件レベル)への対応は今後の課題になりそうですが、個人やチーム規模のAIアプリには十分すぎる性能を持っています。
まとめ
Waxは「RAGをファイルフォーマットに置き換える」という大胆なアプローチで、オンデバイスAIメモリの構築を劇的に簡素化してくれるライブラリです。0.84msの検索速度、ゼロインフラ、完全プライベートという特徴は、特にAppleプラットフォームでAIアプリを開発している方にとって魅力的だと思います。
公式リポジトリはGitHubで公開されています。Swift Package Managerで手軽に導入できるので、まずはサンプルコードで試してみてはいかがでしょうか。