Unreal Engine 5のベクトルデータベースプラグイン5
このプラグインは、青写真を念頭に置いて設計されたUnreal Engine 5に簡略化されたベクトルデータベースタイプを追加します。
警告:進行中の作業
これはまだ初期の状態ですので、クラッシュを経験しても驚かないでください。私はいくつかの特定のプロジェクトのために自分のためにこのプラグインを作成していますが、それを共有するのはいいと思いました。試してみて問題が発生した場合は、役立つ可能性のあるログ情報で新しい問題を自由に開いてください。
インストール
このリポジトリには、このプラグインをテストおよび開発するために使用しているプロジェクト全体(UE 5.4)が含まれています。このプロジェクト全体をクローンする必要はありません。プラグインをインストールするには、次の手順に従ってください。
- プラグイン/Vectorsearchフォルダーをダウンロードし、プロジェクトのプラグインフォルダーに配置します(存在しない場合はこれを作成します)
- この時点で、プロジェクトの開設を試みることができます。すでに機能する可能性があります。
- .uprojectファイルを右クリックして、[ビジュアルスタジオプロジェクトファイルを生成する]をクリックします
- プロジェクトソリューション(.SLNファイル)を開き、プロジェクトを構築し、コンピレーションエラーがないことを確認します
- コンピレーションの問題が発生した場合は、[問題]タブにビルドログを投稿してください
- プロジェクトを開いて、青写真グラフで「ベクトルデータベース」を検索して、利用可能な機能を確認します
このインストールガイドは、このプラグインを青写真プロジェクトでコンパイルすることができなかったため、C ++プロジェクトがあることを前提としています。 Blueprint Projectを持っている場合は、空白のC ++プロジェクトをすばやく簡単に作成してコンピレーションを行うことができます。そのプロジェクトからコピー/貼り付けが機能すると思います。
どのように機能しますか?
- 「新しいベクトルデータベースの作成」ノードを使用して、新しいベクトルデータベースを初期化してから変数として参照を保存できます。
- このオブジェクトをターゲットとして使用すると、「ベクトルデータベースへのエントリを追加」ノードを使用して、任意のデータタイプのエントリ(および対応するベクトルのフロートのアレイ)を追加できます(現在、プラグインは文字列、オブジェクト、および構造体のエントリをサポートしていますが、文字列とオブジェクトのエントリは、実際には単純な場合にのみ存在します)
- データベースからエントリを取得するには、「Get Top N Matches」ノードを使用できます。これらは、ベクトルデータベースオブジェクト、ベクトル(フロートの配列)、および 'n'値(戻る一致の量)を取り込みます。これらのノードは、入力ベクトルからの各エントリのベクトル距離に基づいて、データベースの上部Nエントリを計算します。
- 「Get Top N Struct Matches」にはワイルドカード出力があり、構造体を元に戻すために、各ループの可変セッターまたは構造破壊者を接続し、各ループアレイ入力を「トップNストラクチャマッチの取得」ワイルドカード出力に接続します。ピンタイプは自動的に更新されます。
- また、「詳細なトップNマッチを取得」もあります。これは、fundの各エントリのベクトル、距離、およびその値が供給された純粋な関数から得られるラッパーオブジェクトを含む構造体を返します(入力として出力構造全体を使用する不純な関数を持つ構造体を除く)
- すべての「Get Top N Matches」関数は、入力ベクトルの寸法を一致させるベクトルとノードタイプに一致するエントリタイプを持つベクトルデータベースエントリのみを考慮します。これは、ベクトルデータベースがデータ型不可知論であるためです - 文字列、オブジェクト、または構造体の任意の数または組み合わせをデータベースに配置できます(必要に応じて異なる次元のベクトルもあります)。これを行うことにはわずかなペナルティがあります。つまり、ゲッター関数は、それらを考慮したいかどうかに関係なく、配列内のすべてのエントリを繰り返す必要があるからです。
- データベースからエントリを削除するには、入力ベクトルを取り入れて一致を削除する「Vector Databaseからエントリを削除する」ノードを使用できます。 BremovealLoccurencesが真実に設定されている場合。次に、一致するベクトルを備えたエントリが削除されます。また、「removalrange」フロート入力もあります。これは、0を超えるものに設定すると、入力ベクトルからの距離が与えられた(またはat)内(または)を削除します。
- さらに、データベースのエントリカウントを取得するための純粋なノードがあります(また、文字列エントリカウント、オブジェクトエントリカウント、およびstructエントリカウントを取得するための別々のゲッターノード)。
生成ベクトル
現在、このプラグインには、文字列入力を取得する「OpenAI埋め込み」機能があり、APIエンドポイント、モデル、およびAPIキーを含む構造体があり、API要求を指定されたエンドポイントに(OpenAI埋め込みAPI形式に続いて)、ベクトルデータベース機能で使用する準備ができているフロートの配列として結果を返します。