ベクターデータベースの作成¶
セルフマネージドAIプラットフォームでのGPUの使用
1GBを超えるデータセットを処理する場合、GPUの使用をクラスターに設定していないセルフマネージド環境では、深刻な遅延が発生する可能性があります。 DataRobotサポートにメールで問い合わせるか、 サポートサイトにアクセスして、インストール方法をご確認ください。
プレイグラウンドで使用するベクターデータベースを作成するには:
ユースケースディレクトリの ベクターデータベースタブを使用して、構築されたベクターデータベースとデプロイされた埋め込みモデルを管理します。
ベクターデータベースを構築¶
最初に、アプリケーション内の複数のポイントのいずれかからベクターデータベースを追加します。
ユースケースの中から、追加ドロップダウンをクリックし、以下を実行します。
- AIカタログのデータからベクターデータベースを作成するには、ベクターデータベースを作成を選択します。
- LLMプロンプティング中に使用されるベクターデータベースを含むデプロイを追加するには、デプロイ済みベクターデータベースを追加を選択します。
次のいずれかの方法を選択します。
- データを追加ドロップダウンを使用し、ベクターデータベースを作成またはデプロイ済みベクターデータベースを追加(すべてタブと同じ)を選択します。
- データソースのアクションメニュー をクリックし、ベクターデータベースを作成を選択します。 この方法は、設定 > データソースフィールドにデータベースをロードします。
アクションメニューオプションは、データが適格であると検出された場合にのみ使用できます。これは以下を意味します。
- データセットの処理が終了しました。
- データソースには、必須の
document
列とdocument_file_path
列(またはドキュメント
列とドキュメントファイルパス
列)があります。 - メタデータ列数は50以下です。
ベクターデータベース](#manage-vector-databases){ target=_blank }タブから [、次のいずれかを実行します。
-
右上のベクターデータベースを追加ボタンをクリックします。 表示されるウィンドウのデータソースドロップダウンから、ユースケースに関連付けられたデータソースを選択するか、データを追加をクリックしてデータレジストリからデータを追加します。
-
ユースケースに関連付けられたベクターデータベースがまだない場合は、代わりにベクターデータベースを作成をクリックすることもできます。
プレイグラウンドでは、LLMブループリントの設定セクションの ベクターデータベースタブを使用します。
データベースの設定¶
ベクターデータベースを作成するときは、基本設定を行い テキストチャンキングを設定します。
次のテーブルは、ベクターデータベースの作成で使用される設定について説明するものです。
フィールド | 説明 |
---|---|
名前 | ベクターデータベースが保存される名前。 この名前はユースケースベクターデータベースタブに表示され、プレイグラウンドを設定するときに選択できます。 |
データソース | ベクターデータベースのナレッジソースとして使用されるデータセット。 リストは、ユースケースベクターデータベースタブのエントリーに基づいて入力されます。 データタブのアクションメニューからベクターデータベースの作成を開始した場合、フィールドにはそのデータセットが自動入力されます。 データソースを選択すると、チャンキング設定が利用できるようになります。 |
埋め込みモデル | データのエンコーディングに使用される埋め込みのタイプを定義するモデル |
チャンキング方法 | テキストドキュメントを小さいサイズに分割(または分割なし)するために適用される方法 |
埋め込みモデルの設定¶
データをエンコードするには、ユースケースに最適な埋め込みモデルを選択します。 DataRobotが提供する埋め込みまたはBYO埋め込みのいずれかを使用してください。 DataRobotは、次のタイプの埋め込みをサポートしています。埋め込みの完全な説明は、 こちらを参照してください。
埋め込みタイプ | 説明 |
---|---|
cl-nagoya/sup-simcse-ja-base | 日本語RAGの中規模言語モデル |
huggingface.co/intfloat/multilingual-e5-base | 複数の言語で多言語RAG処理に使用される中規模言語モデル。 |
huggingface.co/intfloat/multilingual-e5-small | 多言語RAG処理に使用する小規模言語モデルで、 _multilingual-e5-base_よりも高速です。 |
intfloat/e5-base-v2 | 中〜高程度のRAGパフォーマンスを実現するのに使用される中規模言語モデル。 パラメーターが少なくアーキテクチャが小さいため、e5_large_v2よりも高速です。 |
intfloat/e5-large-v2 | 最適なRAGパフォーマンスを実現するように設計された大規模言語モデル。 そのアーキテクチャとサイズにより、低速として分類されます。 |
jinaai/jina-embedding-t-en-v1 | 英語のコーパスで事前学習された小さな言語モデルで、DataRobotが提供する最速でデフォルトの埋め込みモデルです。 |
jinaai/jina-embedding-s-en-v2 | Jina Embeddings v2ファミリーの1つであるこの埋め込みモデルは、長いドキュメントの埋め込みに最適です(最大8192の大きなチャンクサイズ)。 |
sentence-transformers/all-MiniLM-L6-v2 | 比較的高速で英語のコーパスで事前学習された1Bの文対データセットで微調整された小規模言語モデル ただし、古いデータで学習されているため、RAGには推奨されません。 |
デプロイ済み埋め込みモデルを追加 | ベクターデータベースの作成時に使用するデプロイ済みの埋め込みモデルを選択します。 列名は、デプロイのコンソール概要ページにあります。 |
DataRobotが提供する埋め込みモデルは、 SentenceBERTフレームワークに基づいており、文や段落の密なベクトル表現を計算する簡単な方法を提供します。 このモデルは、教師ありデータと教師なしデータの混合で訓練されたトランスフォーマーネットワーク(BERT、RoBERTA、T5)に基づいており、さまざまなタスクで最先端のパフォーマンスを達成しています。 テキストはベクトル空間に埋め込まれ、類似したテキストはより密接にグループ化され、コサイン類似度を使用して効率的に見つけることができます。
デプロイ済み埋め込みモデルを追加¶
ベクターデータベースを追加する際、 _非構造化カスタムモデル_としてデプロイされた埋め込みモデルを選択できます。 ベクターデータベースを作成パネルで、埋め込みモデルドロップダウンをクリックしてから、デプロイ済み埋め込みモデルを追加をクリックします。
デプロイ済み埋め込みモデルを追加パネルで、次の設定を行います。
設定 | 説明 |
---|---|
名前 | 埋め込みモデルにわかりやすい名前を入力します。 |
デプロイ名 | 非構造化カスタムのモデル デプロイを選択します。 |
プロンプト列の名前 | モデルワークショップでカスタム埋め込みモデルを作成したときに定義されたユーザープロンプトを含む列の名前を入力します(promptText など)。 |
回答(ターゲット)列の名前 | モデルワークショップでカスタム埋め込みモデルを作成した際に定義した、LLMの回答を含む列の名前を入力します(responseText やresultText など)。 |
デプロイされた埋め込みモデルの設定を行った後、検証おおび追加をクリックします。 デプロイされた埋め込みモデルが、埋め込みモデルドロップダウンリストに追加されます。
チャンク設定¶
テキストチャンキングは、テキストドキュメントをより小さなテキストチャンクに分割するプロセスで、埋め込みの生成に使用されます。 次のいずれかの原因が考えられます。
- テキストチャンキングを選択し、チャンクの派生方法(メソッド、 セパレーター、 その他のパラメーター)を設定します。
- チャンキングなしを選択します。 DataRobotは各行をチャンキングとして扱い、各行に埋め込みを直接生成します。
チャンキング方法¶
チャンキングメソッドでは、データソースからのテキストを、より小さく、管理しやすい断片に分割する方法を設定します。 これは、最近傍検索の効率を向上させるために使用され、クエリーが実行されると、データベースは最初に最近傍を含む可能性のある関連チャンキングを特定し、次にデータセット全体を検索するのではなく、それらのチャンク内を検索します。
方法 | 説明 |
---|---|
再帰的 | テキストを分割し、チャンクのサイズが指定された最大サイズよりも小さくなるまで繰り返し、サイズが大きすぎるチャンクは破棄します。必要に応じて、チャンクのサイズ制限を維持するために、テキストを個々の文字で分割します。 |
セマンティック | 長いテキストを、長さではなく内容に基づいて、意味のある小さな単位に分割します。 これは完全に自動化された方法で、これが選択されると、それ以上のチャンキング設定はできません。文が意味的に「閉じた」チャンクとなります。 |
詳細:チャンキング方法
再帰的テキストチャンキングは、テキストチャンクの長さが指定された最大チャンクサイズ未満になるまで、テキスト区切り文字の順序付けられたリストに従ってテキストドキュメントを再帰的に分割することによって機能します。 生成されたチャンクの長さ/サイズが既に最大チャンクサイズよりも小さい場合、以降の区切り文字は無視されます。 そうでない場合、DataRobotは、チャンクの長さ/サイズが最大チャンキングサイズより小さくなるまで、 区切り文字のリストを順次適用します。 最終的に、生成されたチャンクが指定された長さよりも大きい場合、破棄されます。 その場合、DataRobotは「各文字を分離」戦略を使用して各文字で分割し、連続する分割文字のチャンクを最大チャンクサイズ制限のところに来るまでマージします。 「文字で分割」が区切り文字としてリストされていない場合、長いチャンクは切り取られます。 つまり、テキストの一部は埋め込みの生成で欠損しますが、チャンク全体は引き続きドキュメントの取得に使用できます。
セマンティックチャンキングとは、任意の文字数や単語数の制限ではなく、テキストの意味内容や意味に基づいて、大きなテキストを意味のある小さな単位(すなわち「チャンク」)に分解するプロセスです。 セマンティックチャンキングでは、テキストの長さだけで分割するのではなく、各チャンク内で一貫性のあるアイデアやトピックをそのまま維持しようとします。 この方法は、自然言語処理(NLP)などのタスクに有用で、テキストの意味や文脈を理解することは、情報検索、要約、機械学習モデルの埋め込みを生成するようなタスクに重要です。 たとえば、セマンティックチャンキングプロセスでは、特定のサイズ制限を超えても、同じトピックについて論じている段落はまとめられ、チャンクが完全な思考や概念を表すようにします。
区切り文字の操作¶
区切り文字は、テキストを分割するための「ルール」または検索パターン(サポート可能ですが正規表現ではありません)です。各区切り文字は、テキストをより小さなコンポーネントに分割するために、順番に適用されます。区切り文字は、ドキュメントをチャンクに分割するためのトークンを定義します。 チャンクはトピックごとにグループ化するのに十分な大きさで、サイズ制約はモデルの設定によって決定されます。 再帰的テキストチャンキングは、チャンクルールに適用される方法です。
各ベクターデータベースは、テキストを分割する内容を定義する4つのデフォルトルールから始まります。
- 二重改行
- 改行
- スペース
これらのルールは、理解しやすいように単語で識別されますが、バックエンドでは個々の文字列として解釈されます(つまり、\n\n
, \n
, " "
, ""
)。
ドキュメントに区切り文字が存在しない場合や、目的のチャンクサイズに分割するための十分なコンテンツがない場合があります。 その場合、DataRobotは「next-best character」(次にベストな文字)フォールバックルールを適用し、チャンクが定義されたチャンクサイズに適合するまで、次のチャンクに文字を移動します。 そうでない場合、埋め込みモデルは、継承されたコンテキストサイズを超えるチャンクを切り捨てます。
カスタムルールを追加¶
最大5つのカスタム区切り文字を追加して、チャンク戦略の一部として適用できます。 これにより、合計9つの区切り文字が使用できます(4つのデフォルトを一緒に考慮した場合)。 カスタム区切り文字には、以下が適用されます。
- 各区切り文字の最大文字数は20文字です。
-
区切り文字として単語を使用できる「変換ロジック」はありません。 たとえば、句読点を分割する場合は、各タイプに区切り文字を追加する必要があります。
-
区切り文字の順序は重要です。 区切り文字を並べ替えるには、セルをクリックして目的の場所にドラッグします。
-
チャンク戦略のファインチューニングや区切り文字追加のための空き容量調整などで区切り文字を削除するには、ごみ箱アイコンをクリックします。 デフォルトの区切り文字は削除できません。
正規表現の使用¶
区切り文字に正規表現を使用できるようにするには、セパレーターを正規表現として解釈を選択します。 この機能をアクティブにすると、すべての区切り文字が正規表現として扱われることを理解するのが重要です。 例えば、「.」を追加すると、各文字に一致して分割されることを意味します。 リテラルの「dots」で分割する場合は、記号(「\.」など)を付けてエスケープする必要があります。 このルールは、カスタム区切り文字と(この方法で動作するよう設定されている)事前定義済みの両方の区切り文字に適用されます。
チャンクパラメーター¶
チャンクパラメーターは、ベクターデータベースの出力をさらに定義します。 チャンクパラメーターのデフォルト値は、埋め込みモデルによって異なります。
チャンクのオーバーラップ¶
オーバーラップとは、隣接するチャンクがある程度のデータを共有できるようにする方法を指します。 チャンクオーバーラップパラメーターは、連続するチャンク間のトークンの重複割合(パーセント)を指定します。 重複は、言語モデルでテキストを処理するときにチャンク間のコンテキストの連続性を維持するのに役立ちますが、より多くのチャンクを生成しベクターデータベースのサイズを増やすという代償があります。
検索制限¶
Top K(近傍法)に設定した値は、ベクターデータベースから取得する関連チャンクの数をLLMに指示します。 チャンクの選択は、 類似性スコアに基づいて行われます。 以下の点に注意してください。
- 値を大きくすると、より広範囲をカバーできますが、処理のオーバーヘッドが増加し、関連性の低い結果が含まれる可能性があります。
- 値を小さくすると、より焦点の絞られた結果が得られ、処理も速くなりますが、関連する情報を見逃す可能性があります。
最大トークン数では、以下の内容を指定します。
- ベクターデータベースを構築するときにデータセットから抽出された各テキストチャンクの最大サイズ(トークン単位)。
- 埋め込みの作成に使用されるテキストの長さ。
- RAG操作で使用される引用のサイズ。
ベクターデータベースの保存¶
設定が完了したら、ベクターデータベースを作成をクリックして、データベースを プレイグラウンドで使用可能にします。
ベクターデータベースの管理¶
ベクターデータベースタブには、ユースケースに関連付けられたすべてのベクターデータベースと デプロイされた埋め込みモデルが一覧表示されます。 ベクターデータベースのエントリーには、親から派生したバージョンに関する情報が含まれています。ベクターデータベースのバージョニングの詳細については、 バージョニングのセクションを参照してください。
ユースケース内のベクターデータベースタブから、ユースケースのすべてのベクターデータベース(および関連バージョン)を表示できます。 外部ベクターデータベースの場合、ソースタイプのみが表示されます。 これらのベクターデータベースはDataRobotによって管理されていないため、他のデータはレポートには利用できません。
ベクターデータベースタブのリストでいずれかのエントリーをクリックすると、新しいタブが開き、そのデータベースの設定と関連アイテムが展開表示されます。
以下を実行することが可能です。
説明 | |
---|---|
1 | パンくずのドロップダウンから別のベクターデータベースを選択して検索します。 |
2 | ドロップダウンから別のバージョンのベクターデータベースを選択して検索します。 バージョンをクリックすると、 詳細および報告されたアセット(関連アイテム)が特定のバージョンに関連付けられているものに更新されます。 バージョンニングの詳細を参照してください。 |
3 | ベクターデータベースのさまざまなアクションを実行します。 |
4 | バージョニングの履歴を表示します。 バージョンをクリックすると、詳細および報告されたアセット(関連アイテム)が特定のバージョンに関連付けられているものに更新されます。 バージョンニングの詳細を参照してください。 |
5 | 関連するユースケースとLLMブループリント、デプロイされた顧客、ベクターデータベースを使用する登録済みモデルなど、ベクターデータベースに関連付けられた項目を表示します。 エンティティをクリックして、対応するコンソールタブで開きます。 |
6 | 選択したデータベースを使用するプレイグラウンドを作成します。 |
ベクターデータベースのアクション¶
アクションドロップダウンでは、表示しているベクターデータベースのバージョンにアクションを適用できます。 詳細については、 バージョニングのドキュメントを参照してください。
アクション | 説明 |
---|---|
このバージョンを使用してプレイグラウンドを作成 | LLM設定にロードされたベクターデータベースで新しいプレイグラウンドを開きます。 |
このバージョンから新しいバージョンを作成 | 現在選択されているバージョンに基づいて、ベクターデータベースの新しいバージョンを作成します。 |
このバージョンをデータレジストリにエクスポート | 最新のベクターデータベースバージョンをデータレジストリにエクスポート その後、さまざまなユースケースのプレイグラウンドで使用することができます。 |
ベクターデータベースを削除 | 親ベクターデータベースとすべてのバージョンを削除します。 デプロイで使用されるベクターデータベースはスナップショットであるため、ユースケースでベクターデータベースを削除しても、そのベクターデータベースを使用するデプロイには影響しません。 デプロイでは、ベクターデータベースの独立したスナップショットが使用されます。 |
ベクターデータベースの詳細¶
ベクターデータベースの展開ビューの詳細セクションには、ドロップダウンまたは右側のパネルから選択したバージョンに関する情報が表示されます。
- ベクターデータベースの基本メタデータ:ID、作成者と作成日、データソースの名前とサイズ。
- チャンキング設定:埋め込み列とチャンキング方法および設定。
- メタデータ列:後で メタデータのフィルターに使用できるデータソースの列の名前。.
このエリアを使用してバージョンをすばやく比較し、設定の変更がチャンキング結果にどのように影響するかを確認します。 たとえば、DataRobotの英語版ドキュメントを使用する親バージョンの間で、チャンクのサイズと数がどのように変化するかに注目してください。
また、日本語ドキュメントを追加した状態で