[Tencent クラウド エコシステム カンファレンス] Tencent クラウド ベクトル データベース


  • 個人ホームページ: ζ小菜鸡
  • 皆さんこんにちは、私は初心者です。一緒に Tencent Cloud Vector Database を体験しましょう
  • 記事が役に立った場合は、フォロー、いいね、収集(3回連続クリック)を歓迎します。

1. Tencent クラウド ベクトル データベースの概要

1. Tencent Cloud Vector Database とは何ですか?
Tencent Cloud Vector Database (Tencent Cloud VectorDB) は、多次元ベクトル データの保存、取得、分析に特化した、フルマネージドの自社開発エンタープライズ レベルの分散データベース サービスです。データベースは複数のインデックス タイプと類似性計算方法をサポートしており、単一のインデックスで 10 億のベクトル スケールをサポートし、数百万の QPS とミリ秒レベルのクエリ レイテンシをサポートできます。Tencent Cloud Vector Database は、大規模モデルの外部知識ベースを提供し、大規模モデルの解答の精度を向上させるだけでなく、推奨システムや自然言語処理などの AI 分野でも広く使用できます。


2. Tencent Cloud Vector Database の製品特徴と利点
(1) 高性能
ベクトルデータベース Tencent Cloud VectorDB は、単一のインデックスで 10 億レベルのベクトル データ規模をサポートし、数百万の QPS とミリ秒レベルのクエリ レイテンシをサポートできます。
(2) 低コスト
: コンソールの指示に従うだけで、ベクター データベース インスタンスを迅速に作成し、インストール、展開、運用保守作業を必要とせずにプロセス プラットフォーム全体をホストできるため、マシン コスト、運用保守コスト、人件費が削減されます。 。
(3) 高
可用性 ベクター データベース Tencent Cloud VectorDB は、マルチコピーの高可用性機能を提供し、災害復旧機能を向上させ、ノード障害や負荷の変化などの課題に直面した場合でもデータベースが正常に実行できることを保証します。
(4) シンプルで使いやすく、
豊富なベクトル検索機能をサポートしており、APIによりデータベースを素早く操作でき、開発効率が高いです。同時に、コンソールは完全なデータ管理および監視機能を提供し、操作が簡単で便利です。
(5) 大規模な
ベクトル データベース アーキテクチャは水平拡張をサポートしており、単一のインスタンスで数百億の QPS をサポートできるため、AI シナリオでのベクトルの保存と取得のニーズを簡単に満たすことができます。
(6) 安定性と信頼性の高い
ベクトルデータベース Tencent Cloud VectorDB は Tencent Group が自社開発したベクトル検索エンジン OLAMA から派生しており、40 近くの事業ラインが安定して稼働しており、毎日平均 1,000 億件の検索リクエストが処理され、サービスの継続性と安定性が保証されています。 . .


2. ベクターデータベースの製品仕様

(1) 製品仕様
Tencent Cloud VectorDB は分散展開アーキテクチャを採用しており、各ノードが相互に通信および調整してデータの保存と取得を実現します。クライアントのリクエストはロードバランスを通じて各ノードに分散されます。


(2) ノードタイプ
Tencent Cloud ベクトル データベースは、ストレージ ノードの CPU とメモリ リソースの割り当て比率の違いに基づいて、ストレージ タイプとコンピューティング タイプの 2 つのタイプに分けられます。
a. ストレージ タイプ: 主に大規模なベクトル データの保存と管理に使用されます。その主な利点は、クエリの待ち時間が短く、ベクトル データを効率的に保存および管理できることです。特に、大量のデータ、急速なデータ増加、相対的なクエリ QPS 顔認識、画像検索などの下位レベルのシナリオ
b. 計算タイプ: 主にベクトル データを迅速に検索および取得するために使用され、高度な同時クエリ リクエストをサポートします。その主な利点は、より高いクエリ QPS とより低いクエリ レイテンシーを提供し、トラフィックが多く遅延に敏感なシナリオに適していることです。例:時間の推奨、広告など。


(3) ノード数
Tencent Cloud Vector Database は、マルチノードの通信と調整をサポートする分散アーキテクチャを採用しており、現在 3 ~ 10 ノードをサポートしています。


(4) ノード仕様
ノードタイプごとに対応する製品仕様が異なりますので、詳細は下表を参照してください。
ここに画像の説明を挿入します


3. ベクトルデータベースの重要な概念

ベクター

ベクトルは、順序付けられた値の集合として理解でき、通常はオブジェクトや物の属性や特性を表すために使用されます。これらの値はさまざまな次元を持つことができ、各次元は属性または特性を表します。機械学習や人工知能の分野では、画像、テキスト、音声などのデータをベクトルで表現することが多く、ベクトル間の距離や類似度を計算することで、分類、クラスタリング、検索などのタスクを実現できます。
オラマ

OLAMA は Tencent が開発したベクトル エンジンで、高性能、高可用性、シンプルさ、使いやすさの特徴を持っています。10 億ベクトル規模の単一インデックスをサポートし、AI コンピューティングおよび検索シナリオに適しており、40 近くのオンライン ビジネスに安定してサービスを提供しています。

実例

インスタンスは、Tencent Cloud 内で独立して実行されるデータベース環境であり、ユーザーがベクター データベース サービスを購入するための基本単位であり、別のプロセスとして存在します。データベース インスタンスには、ユーザーが作成した複数のデータベースを含めることができます。コンソールでインスタンスを作成、変更、削除できます。インスタンスは互いに独立しており、リソースは分離されているため、CPU、メモリ、永続メモリ、IO などの間のプリエンプションの問題はありません。
データベース

データベースは、データ構造に従ってデータを編成、保存、管理する倉庫であり、1 つのインスタンスで複数のデータベースを作成できます。
コレクション

ベクトル データベースでは、コレクションとは、リレーショナル データベースのテーブルと同様に、複数のドキュメント データを含めることができるドキュメントのグループを指します。コレクションには固定された構造はなく、さまざまな形式や種類のデータに挿入できます。Vector データベースは、コレクション ディメンションでマルチシャーディングとマルチコピー機能をサポートしており、コレクションの作成時に必要に応じてシャードとコピーの数を指定できます。
書類

ベクトル データベースでは、コレクションはテーブルとして表示され、ドキュメントはテーブル内のデータの行として表示されます。各ドキュメントは、複数のフィールドを含む完全なドキュメント オブジェクトを表し、各フィールドはドキュメント内のプロパティまたはフィールドを表します。ベクトル データベースのドキュメントはキーと値のペア (キー:値) のセットであり、各ドキュメントには一意の主キー (id) とベクトル フィールド (ベクトル) があります。ドキュメントを挿入するときに、ベクター データベースに同じフィールドを設定する必要はなく、データの挿入時にフィールドを追加または削除できます。
分野

各フィールドはキーと値のペアであり、ドキュメント内の属性またはフィールドを表します。各フィールドには独自のタイプと値の範囲があり、文字列や数値などのさまざまなタイプのデータを使用できます。
ノード

ベクトル データベース クラスターのリソースの観点から見ると、ノードはデータを保存するために使用されるリソース単位です。実行中のベクター データベース インスタンスには通常、多くのノードが含まれており、コレクションの複数のコピーとシャードが複数のノードに分散されます。ノードは、ベクトル データベース クラスターを構成する基本単位の 1 つです。
シャード

大規模なデータをサポートするために、コレクションは通常、特定の次元に従って複数の部分に分割され、各部分は複数のノード (Node) に分散されたシャードになります。信頼性と可用性を確保するために、同じコレクションの複数のシャードが異なるノード (Node) に分散されます。
レプリカ

同じシャード (Shard) のバックアップ データの場合、1 つのシャードのコピーが少なくとも 2 つ存在します。レプリカ シャーディングは、ハードウェア障害時のデータ損失を防ぐ冗長バックアップとして機能し、ベクトル検索やドキュメント クエリなどの読み取り操作のサービスを提供し、ノード障害などの課題に直面してもデータベースが正常に実行できるようにします。そして負荷が変化します。
索引

インデックスは、メモリに保存されているデータをすばやく検索してアクセスするために使用される特別なデータ構造です。インデックス自体はデータを保存せず、データが保存されている場所を指すポインターまたはキーと値のペアを保存します。Tencent Cloud VectorDB は、FLAT や HNSW などの一般的なベクトル インデックスをサポートしています。インデックス作成の概要については、「ベクトル取得」を参照してください。
KNN (K 最近傍検索)

KNN は K-Nearest Neighbor Search を指し、総当たり検索に基づく手法であり、その原理は、クエリ対象のベクトルとデータベース内のすべてのベクトルの間の距離を計算し、その距離に従って小さいものから順に並べ替えることです。大きい場合は、K 個の最も近いベクトルをクエリ結果として選択します。KNN アルゴリズムの利点は、正確な結果が保証できることですが、大規模なベクトル データの場合、計算量が非常に多くなり、効率が低くなります。
ANN (近似最近傍検索)

ANN は、Approcipate Nearest Neighbor Search の略で、高次元データ空間で最近傍を迅速に見つける方法です。完全最近傍検索と比較して、ANN は検索速度の向上と引き換えに一定の精度を犠牲にするため、大規模なデータセットを処理する際の効率が高くなります。ANN メソッドは多くの場合、クエリ時の距離計算の数を減らすためにデータを前処理します。ANN アルゴリズムの利点は高速性と高効率ですが、KNN アルゴリズムと比較すると、結果の精度が十分ではない可能性があります。
HNSW (階層型ナビゲート可能なスモールワールド)

HNSW はグラフベースの高次元ベクトル類似性検索アルゴリズムであり、正式名は Hierarchical Navigable Small World です。ベクトル間の類似関係を表すグラフを構築し、いくつかの最適化戦略を使用して検索プロセスを高速化します。


4. ベクター データベースを使用して新しいデータベース インスタンスを作成する

【1】Tencent Cloudアカウントを使用してVector Databaseコンソールにログインします。(Xiao Caiji は Tencent Cloud アカウントを登録し、実名認証を完了しました。Tencent Cloud アカウントをお持ちでない場合は、まず Tencent Cloud に登録してログインする必要があります)

ここに画像の説明を挿入します


【2】「新規」をクリックして、新しいベクターデータベースインスタンスページに入ります。(Diamond はコンピューター モデルを選択し、ベクトル サイズは比較的小さいです)

ここに画像の説明を挿入します


【3】以下の表を参照し、以下のパラメータを設定し、インスタンスを購入してください。

ここに画像の説明を挿入します
【4】「今すぐ適用」をクリックすると、インスタンス一覧ページに自動的に戻ります。現在のインスタンスのステータスは「作成中」です。インスタンスのステータスが「実行中」に更新されるまで待ってから使用してください。


5. ベクトルデータベースの初体験

[1] ユーザーは、Tencent Cloud コンソール (CVM とベクター データベースが同じプライベート ネットワーク VPC 内にある必要があります) を通じてクラウド サーバー CVM インスタンスを購入して、パフォーマンス テストを開始できます。
ここに画像の説明を挿入します


(ここでは、新人がパフォーマンス テストの新しいインスタンスを作成し、右側の操作列にログインしています)

ここに画像の説明を挿入します


ここに画像の説明を挿入します


(ログイン後のインターフェースは図のとおりです。ユーザーの操作を容易にするためにエディターオプションがあります。新人はエディターを使用します)

ここに画像の説明を挿入します


エディタページは図のようになります

ここに画像の説明を挿入します


[2] テストツールの準備
1. テストツール: ann-benchmarks-dev.zip をダウンロードし、テストツールとデータセットをテストクライアント CVM にアップロードします。

ここに画像の説明を挿入します


2. テスト ツールの依存関係をインストールします。
ソフトウェアの依存関係: Python バージョンが 3.6.8 以降の場合は、推奨されるオペレーティング システム バージョンで Python3 を使用します。(初心者の選択は python3 です)
a. 次の図に示すように、まず、テスト クライアントの CVM ターミナルにオペレーティング システムの依存関係パッケージをインストールします。

ここに画像の説明を挿入します


b. ターミナルでテスト ツール ディレクトリを入力し、以下に示すように Python 実行依存関係をインストールします: (インストール用のテスト ツール ディレクトリをここに必ず入力してください)

ここに画像の説明を挿入します
(インストールするモジュールはそれほど多くないため、初心者はインストールが完了するまでに約 10 秒待つ必要があります)


ここに画像の説明を挿入します


c. Python 依存環境のインストールが成功した結果を次の図に示します。

ここに画像の説明を挿入します


[3] ベクター データベースの接続
1: テストの開始時に、デフォルトの構成ファイル 'ann_benchmarks/algorithms/vector_db/config.yml' をプロジェクト ディレクトリからプロジェクト
配下の独自の作業ディレクトリにコピーして変更し、コマンド ライン パラメーター – 定義を通じてテストを実行するための独自の構成ファイルを使用します。

ここに画像の説明を挿入します


2: テスト データ セットを選択し、ちょうど 128 次元を持つ sift-128-euclidean という ann-benchamrk の既存のデータ セットを見つけます。このデータ セットはテストに使用できます。データセットコマンドはユークリッドで終わります。これは、L2 類似性アルゴリズムを使用することを意味します。

ここに画像の説明を挿入します


3: CVM 接続テスト ベクター データベース
a. データベース インスタンスが作成され、ステータスが実行中であることを確認します。以下に示すように:

ここに画像の説明を挿入します


(インスタンス一覧でインスタンスIDをクリックするか、操作欄の「管理」をクリックするとインスタンスの詳細ページが表示されます。ベクターデータベースの固有情報を確認できます。)

ここに画像の説明を挿入します


b. ベクター データベース インスタンスのイントラネット IP アドレスとネットワーク ポートを取得します (具体的な情報は、Xiaocaiji の前の図にあります)。

ここに画像の説明を挿入します


c. VectorデータベースのAPIアクセスキーを取得します(秘密キーを直接コピーすることもできます。APIキー列の表示をクリックしてAPIキー情報を表示し、コピーすることもできます)。

ここに画像の説明を挿入します


d. Tencent Cloud CVM セキュリティ グループでアウトバウンド ルールを構成するには、Tencent Cloud ベクトル データベースの IP とポートをアウトバウンド ルールに追加する必要があります。Tencent Cloud ベクター データベース セキュリティ グループで受信ルールを構成し、CVM IP とポートを受信ルールに追加します
(1) Tencent クラウド セキュリティ グループ

ここに画像の説明を挿入します


後で受信ルールを追加する

ここに画像の説明を挿入します


(2) Vectorデータベースセキュリティグループ、セキュリティグループ情報を設定します。以下に示すように:

ここに画像の説明を挿入します


ここに画像の説明を挿入します


[4] テスト実行例
a: 以下に示すように、デフォルトの設定ファイルを独自の設定ファイルのパスにコピーします (初心者がコンソール上で直接操作することはできないため、テスト ファイル内で操作する必要があります)。

ここに画像の説明を挿入します


ここに画像の説明を挿入します


b. 必要に応じて、mytest.yml に独自の構成パラメータを設定します。

ここに画像の説明を挿入します


c. 次のコマンドでテストを実行すると、ツールは自動的に ann-benchmark 公式データ セットを外部ネットワークからダウンロードし、Tencent Cloud ベクトル データベースに書き込みます。(新人はコマンド入力時にフォーマットを気にせず、エラーを報告し続けました。ここでコマンドのフォーマットに注意する必要があります。) 次の図に示すように:

ここに画像の説明を挿入します


d. テストが完了すると、テスト結果は結果フォルダーに保存されます。別のコマンド ライン ツールを使用して、結果を読み取り可能な CSV ファイルに変換する必要があります。以下に示すように:

ここに画像の説明を挿入します


6. ベクトルデータベースを用いた検索性能ストレステスト

[1] 指定された再現率を調査するときは、クエリ ef 条件を設定する必要があります (注: このモードでは、データの再挿入を避けるために、only_query パラメーターを追加する必要があります) a. 調査モードを見つけ、構成内の KNNSeekMode を変更します
。ファイルを true に設定し、このモードをテストします。ツールは、最適な一致の再現が得られるまで、さまざまな ef 値を使用してクエリを繰り返し実行します。以下に示すように:

ここに画像の説明を挿入します


b. 探索パラメータを構成します
KNNSeekStartEF: どの ef 参照値のクエリを開始するかを指定します
KNNSeekStep: 探索モードで毎回 ef 値が変化する単位数を指定します (1:
KNNSeekStartEF+=1 または減算など)。(増分または減分ごとのステップ サイズ) KNNSeekExpect:以下に示すように
、0.95 などの、見つかると予想される再現率(これはまだ構成ファイルで設定されています)。

ここに画像の説明を挿入します


c. ツールを実行し、コンソールにコマンドを入力します。下の図に示すように: (ここでの初心者は、コマンドの形式に注意を払うように全員に思い出させる必要があります)

ここに画像の説明を挿入します


d. 結果は次のように表示されます (図では KNNSeekExpect=0.95)。
ここに画像の説明を挿入します


【2】検索検索性能テスト
a. 目的のテストのEFまたは集合EFを求め、指定された再現率を得るために設定する必要がある検索条件を「[1]」で探索し、目的の再現率のEFを見つけます。 b.
ストレス テスト クエリの設定、設定ファイルで、次のように 8 コア ストレス テスト クエリ ef=111 を使用します。KNNSeekMode を false に設定する必要があることに注意してください。以下に示すように:

ここに画像の説明を挿入します


c. ストレス テスト コマンド: ストレス テスト中は、長期的な操作のために -batch パラメーターをオンにし、-runs をより大きな値に設定する必要があります。以下に示すように:
ここに画像の説明を挿入します


【3】ストレステスト結果の表示
a. Tencent Cloud アカウントを使用して Vector Database コンソールにログインします。インスタンスのリストで、監視データを表示する必要があるインスタンスを見つけます。以下に示すように:

ここに画像の説明を挿入します


b. ターゲット インスタンス ID をクリックするか、操作列の [管理] をクリックしてインスタンスの詳細ページに入り、インスタンスの監視を見つけます。写真が示すように:

ここに画像の説明を挿入します


c: Tencent Cloud Vector Database Console は、CPU、メモリ、QPS、インスタンスのレイテンシーなどの主要なパフォーマンス指標のモニタリングを提供します。便利なコンソールから利用できます。以下に示すように:

ここに画像の説明を挿入します


ここに画像の説明を挿入します


ここに画像の説明を挿入します


ここに画像の説明を挿入します


[4] クエリが CPU を完全に充電できない場合、ソリューションは
Python 言語のスレッド モデルによって制限され、テスト ツールがテスト圧力を完全にロードできず、インスタンスのパフォーマンスが限界に達しない場合があります。 、複数のプロセスまたは複数の CVM を使用できます。同時に圧力テストを実行できます。写真が示すように:

ここに画像の説明を挿入します


7. まとめ

Tencent Cloud Vector Database は、ベクトル データの保存と取得に特化したサービスとしてユーザーに提供されており、高性能、高可用性、大規模、低コスト、シンプルさと使いやすさ、安定性と信頼性、インテリジェントな操作性、およびインテリジェントな操作性などの点で大きな利点があります。メンテナンス。これは、多次元ベクトル データの保存、取得、分析に特化した、フルマネージドの自社開発エンタープライズ レベルの分散データベース サービスです。大規模モデルの外部知識ベースを提供し、大規模モデルの回答の精度を向上させるだけでなく、レコメンデーション システム、NLP サービス、コンピュータ ビジョン、インテリジェント カスタマー サービスなどの AI 分野でも幅広く使用できます。アプリケーションの。


おすすめ

転載: blog.csdn.net/weixin_45191386/article/details/132692916