このトピックでは、AnalyticDB for PostgreSQL のベクトル関連 API について説明します。
ベクトルデータベースの初期化
AnalyticDB for PostgreSQL のベクトルデータベースを使用する前に、初期化する必要があります。この操作はインスタンスごとに 1 回だけ実行すればよく、次のタスクが実行されます:
-
すべてのベクトルデータを保存するための
knowledgebaseという名前のデータベースを作成します。 -
このデータベースに、フルテキストインデックス用の中国語の単語分割および検索に関連する関数を作成します。
サポートされている API: InitVectorDatabase - ベクトルデータベースの初期化。
名前空間の管理
名前空間は、データベース内のスキーマにマッピングされます。後続のドキュメントリポジトリ作成のために名前空間を作成します。名前空間を作成する際は、NamespacePassword パラメータを指定する必要があります。AnalyticDB for PostgreSQL サービスは、このパスワードに基づいて名前空間と同じ名前のユーザーを自動的に作成し、そのユーザーがこの名前空間配下のデータのみにアクセスできるよう制限します。
名前空間を使用して、テナント分離を実現できます。より高いセキュリティと管理の柔軟性を確保するため、public 以外の名前空間の使用を推奨します。
名前空間に関連する API は次のとおりです:
ローレベル API
独自のベクトルモデルを統合しており、既存のベクトルデータおよび API と直接やり取りできる場合は、より高い柔軟性と制御性を得るためにローレベル API の使用を推奨します。
コレクションの管理
コレクションは名前空間に属するオブジェクトで、ベクトルデータの保存に使用されます。データベースでは、コレクションはテーブルにマッピングされ、ID、ベクトルデータ、フルテキスト検索データを保存するための事前定義済みの列名が設定されています。その他のテーブルスキーマフィールドは、Metadata パラメータで定義できます。
コレクションを作成する際に、パラメータを使用してベクトルインデックス、フルテキストインデックス、スカラーインデックスを同時に作成できます。また、コレクション作成後にインデックス管理 API を使用して、これらのインデックスを個別に作成することもできます。
コレクションに関連する API は次のとおりです:
ベクトルデータのアップロード
コレクションを作成した後、ベクトルデータをアップロードできます。
-
一度にアップロードするデータサイズが 10 MB 以内の場合は、次の API を使用できます:
-
データが 10 MB を超え 200 MB 未満の場合は、次の API を使用できます:
-
アップロードのキャンセル API:
ベクトルの検索
ベクトルデータをアップロードした後、次の API を使用して、ベクトル検索、フルテキスト検索、デュアルパスリコール、フュージョンクエリなど、さまざまな検索方法を実装できます:
ベクトルデータの管理
ベクトルデータをアップロードした後、次の API を使用して変更できます:
ハイレベル API
元のドキュメントまたはテキストのみがあり、AnalyticDB for PostgreSQL のドキュメント理解、チャンキング、埋め込み、リランキングなどの関連機能を使用する必要がある場合は、ハイレベル API を選択できます。
ドキュメントコレクションの管理
ドキュメントコレクションはベクトルコレクションに類似しており、データベース内のテーブルにマッピングされます。ドキュメントコレクションを作成して、テキストのチャンクとベクトルデータを保存します。ベクトルコレクションとは異なり、ドキュメントコレクションの作成時にはベクトル次元ではなくベクトルモデルを指定します。
ドキュメントコレクションに関連する API は次のとおりです:
ドキュメントのアップロード
ドキュメントコレクションを作成した後、ドキュメントまたはチャンクをアップロードできます。
-
すでにドキュメントをチャンキングしており、AnalyticDB for PostgreSQL の埋め込み機能のみを使用する必要がある場合は、次の API を呼び出して、チャンキング済みドキュメントをアップロードできます:
-
元のドキュメント (または画像) のみがある場合は、非同期 API を呼び出して、ドキュメントのアップロード、クエリ、またはキャンセルを実行できます:
ドキュメントの検索
ドキュメントデータをアップロードした後、次の API を呼び出してドキュメントコンテンツを検索できます:
ドキュメントの管理
アップロードしたドキュメントは、次の API を使用して管理できます:
埋め込み
TextEmbedding モデルを呼び出してリクエストテキストをベクトル化し、生成されたベクトルデータをデータベースに保存せずに直接返します。
リランク
Rerank モデルを呼び出して、リクエスト内の複数のチャンクを意味的にスコアリングしてソートし、ベクトル検索またはフルテキスト検索におけるソート精度が不十分な問題を解決します。
インデックス管理
コレクションを作成した後、次の API を使用して、ベクトルインデックス、フルテキストインデックス、スカラーインデックスを作成または削除できます: