DataStax の目標の 1 つは、構築する言語に関係なく、すべての開発者が AI アプリケーションをできるだけ早く本番環境に配信できるようにすることです。
私たちは
Cassandra は、最も強力でスケーラブルな、実稼働対応のデータベースであることがよく知られています。ベクトル検索の追加により、Cassandra と Astra DB はエンタープライズ グレードの Gen AI アプリケーションを構築するための重要な基盤になりました。しかし、この強力なテクノロジーが、好みの言語やスキルセットに関係なく、最も幅広い開発者にとってアクセス可能で使いやすいものであることを保証する必要もあります。
本日、私たちは、Astra DB 用の JSON API を導入するというシンプルな API を通じて、膨大な数の JavaScript 開発者に世界で最も強力なベクター データベースへのアクセスを提供することで、その方向に向けて大きな一歩を踏み出しました。
JavaScript の世界では、ドキュメント データベースが著名です。 JSON はJavaScript のネイティブ表記法であるため、当然のことですが、JSON ドキュメントをデータベースに保存したり、データベースから取得したりできるため、開発が大幅に加速されます。
新しい JSON API は、新しい AI アプリケーションを作成する JavaScript 開発者にスムーズな開発エクスペリエンスを提供するように設計されています。私たちは、JavaScript 開発者であれば、Astra DB のインスタンスを起動し、使い慣れたパラダイムとフレームワークを使用してすぐにコーディングを開始できるようにすることを目指しました。
Astra DB をドキュメント データベースとして公開すると、開発者のエクスペリエンスが複数向上します。
JSON オブジェクトの観点から考えると、JavaScript エコシステムと自然に連携できます。
データ モデリングの手順はデータベース自体によって行われるため、必要ありません。ドキュメントを保存して取得するだけです。
開発をすぐに開始でき、バックエンドで何が起こっているかではなく、アプリケーション ロジックに集中できます。
また、JavaScript コミュニティの多くのメンバーがオブジェクト データ モデリング (ODM) ライブラリ、特にMongooseJS を通じてドキュメント データベースを操作していることにも気づきました。 MongooseJS は、ドキュメント データベース上でオブジェクト モデリングを行うための人気のあるフレームワークです。と
Astra DB の新しい JSON API は、MongooseJS と完全な互換性があります。これは、MongooseJS を Astra DB インスタンスにポイントするのに、わずか数行のコードが必要であることを意味します。
// Import MongooseJS. const mongoose = require("mongoose"); // Import the driver for Astra DB (shipped as a part of stargate.io). const { driver } = require("stargate-mongoose"); // Tell MongooseJS to use the Astra DB driver instead of the default one. mongoose.setDriver(driver); // Connect to Astra DB. await mongoose.connect(astraDbUri, { isAstra: true, });
接続すると、MongooseJS API を使用できるようになり、Astra DB が効率的な方法でドキュメントを保存し、インデックスを作成し、必要に応じてスケールアウトするという重労働を処理します。
さらに良いことに、Astra DB によってサポートされる MongooseJS を使用して開発する場合、Astra DB Vector への完全なアクセスが得られます。Astra DB Vector は、超低レイテンシで分散データとストリーミング ワークロードの同時検索と更新用に設計された唯一のデータベースであり、関連性の高いベクター結果も得られます。冗長性を排除します。その結果、Astra DB の豊富なベクター サポートとスケーラビリティと組み合わせて、MongooseJS の使いやすさと親しみやすさを得ることができます。 JavaScript での AI アプリケーションの開発がかつてないほど簡単になりました。
MongooseJS アプリケーション内で Astra DB のベクトル検索を使用する方法の簡単な例を見てみましょう。この例では、テキスト説明と、タイトル、製作年、ジャンルなどのその他の情報を含む映画のコレクションを作成します。さらに、説明のベクトル埋め込みを保存するように MongooseJS に指示します。モデル定義は次のようになります。
const Movie = mongoose.model( "Movie", new mongoose.Schema( { title: String, year: Number, genre: String, description: String, $vector: { type: [Number], validate: (vector) => vector && vector.length === 1536, }, }, { collectionOptions: { vector: { size: 1536, function: "cosine", }, }, }, ), );
MongooseJS に精通している人は、Astra DB のドライバーで許可されている 2 つの追加部分を除いて、これが典型的な MongooseJS モデルであることがわかるでしょう。
$vector field
。collectionOptions.vector
オブジェクト。上記のモデルを使用すると、埋め込みとともにドキュメントを挿入できます。
await Movie.insert({ title: "In the Border States", year: 1910, genre: "Drama", description: "In the Border States is a 1910 American drama film...",// Generate embedding for the description, // for example by invoking the OpenAI API. $vector: embedding("In the Border States is a 1910 American drama film..."), });
アプリケーションは、自由形式のクエリを入力して、説明によって映画を検索する機能を提供できるようになりました。そのために、同じモデルを使用してユーザーのクエリの埋め込みを生成し、Astra DB のベクトル検索を使用してデータベース内で最も関連性の高いエントリを見つけます。
await Movie.find({}) .sort({ $vector: { $meta: embedding("Something funny") } }) .limit(3);
もちろん、多くの場合、ベクトル検索だけでは十分ではなく、ドキュメント内の他のフィールドに基づくフィルタリングと組み合わせることもできます。たとえば、前の例と同様に、ドラマのみを対象にして、関連する映画を見つける方法を次に示します。
await Movie.find({ genre: "Drama" }) .sort({ $vector: { $meta: embedding("Criminals and detectives") } }) .limit(3);
MongooseJS と Astra DB を使用すると、単純な CRUD 操作に限定されません。ベクトルを使用した関連性検索を併用したり、2 つを組み合わせて強力なハイブリッド検索クエリを作成したりすることもできます。
新しい JSON API は現在パブリック プレビュー段階にあり、試してみたい人は Astra DB で利用できます。開始するには、次の 3 つの簡単な手順に従ってください。
Astra DBに移動し、ベクトル データベースを作成します。
データベースがアクティブになったら、「接続」タブに切り替え、希望の方法として「JSON API」を選択し、指示に従います。
開発を楽しんでください!
JSON API の使用方法の詳細については、ドキュメントを参照してください。
JSON API を導入することで、私たちのビジョンは明確になります。Astra DB が AI アプリケーションを構築する JavaScript 開発者にとっての最初の選択肢になることを望んでいます。これはほんの始まりにすぎません。さらなる改善と追加にご期待ください。
ご質問やフィードバックがありますか?それとも私たちと同じように興奮していますか? [email protected]までメッセージをお送りください。