objectbox/objectbox-java
Database for Android and JVM - first and fast, lightweight on-device vector database
ObjectBox Java – デバイス内NoSQLデータベースにベクトル検索機能を搭載
何であるか
ObjectBox‑Javaは、JavaおよびKotlinアプリ(Android、デスクトップ、サーバー)向けの軽量なデバイス内データベースです。プレーンオブジェクト(POJO)を直接格納するため、SQLを書く必要がありません。このライブラリにはベクトル検索エンジンも内蔵されており、通常のデータと一緒に高次元の埋め込み表現(embeddings)を保持し、高速な類似性検索を実行できます。これはRAG、生成AI、推薦機能などに役立ちます。
なぜ使うべきか
| 機能 | あなたにとっての意味 |
|---|---|
| 初のデバイス内ベクトルDB | エンベッディングをローカルに保存し、リモートサービスなしで類似性検索を実行可能。 |
| 高いパフォーマンス | ベンチマークではSQLiteやRealmよりもCRUD操作が高速で、CPU、メモリ、バッテリー消費が低いため、モバイルやエッジデバイスに適しています。 |
| オブジェクト指向API | @Entityクラスを定義し、Box<T>を取得してput、get、removeを呼び出すだけでOK。SQL文字列不要、コンパイル時型安全。 |
| 組み込みの関係性 | 1対多、多対多の関係は自動的に処理され、複雑なデータモデルを簡素化。 |
| クロスプラットフォーム | Androidおよび任意のJVM(Linux、macOS、Windows)で動作し、ARM CPUもサポート。 |
| 同期 & タイムシリーズ拡張機能(別製品) | デバイス間のデータ同期やタイムシリーズデータの保存をオプションで追加可能。 |
使い方(概要)
@Entity
public class Person {
@Id long id; // 自動生成された主キー
String firstName;
String lastName;
}
BoxStore store = MyObjectBox.builder()
.name("person-db")
.build();
Box<Person> box = store.boxFor(Person.class);
Person p = new Person();
long id = box.put(p); // 作成
Person loaded = box.get(id); // 読み込み
loaded.lastName = "Smith";
box.put(loaded); // 更新
box.remove(loaded); // 削除
Kotlinでの使用は、同じアノテーションを使用して同様に可能です。
プロジェクトに導入する方法
- Gradle –
io.objectboxプラグインを追加(またはバージョンカタログを使用)し、Maven CentralからObjectBoxの依存関係を取得。 - Maven – JVMプロジェクトでサポート。pomファイルの例はリポジトリを参照。
- Java 8+(またはKotlin 1.7+)が必要。Android 5.0+および現代的なデスクトップOSで動作。
詳細情報の入手先
- ドキュメント & セットアップガイド – https://docs.objectbox.io
- 例題アプリ – https://github.com/objectbox/objectbox-examples
- FAQ / トラブルシューティング – READMEからリンク。
- パフォーマンスベンチマークリポジトリ – SQLite/Realmとの速度比較を示す。
ライセンス
Apache 2.0(このリポジトリ内のコード)。他のObjectBoxコンポーネントは別途ライセンス条項があります。
ObjectBox Javaは、ローカルデータストレージとデバイス内ベクトル検索に特化した本格的なソフトウェアプロジェクトであり、エッジ側での埋め込み表現の類似性検索を可能にすることで、AI/MLの前線を支えています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト