10.7.1.1.1.2.1. ベクトルデータ構築ジョブの作成¶
作成するロジックフローアシスタントでは、ストレージ内のファイルを情報源とするため、ファイルの内容をベクトル化し、ベクトルデータベースに登録する必要があります。本セクションでは、ベクトルデータを構築するためのロジックフローを作成する手順、および、ジョブスケジューラを利用した自動実行の設定方法を説明します。
目次
10.7.1.1.1.2.1.1. ベクトルデータの構築を行うロジックフローの作成¶
IM-LogicDesigner を使用して、ベクトルデータを定期的に構築・更新するロジックフローを作成します。
10.7.1.1.1.2.1.1.1. 作成するロジックフローの概要¶
本ロジックフローは、以下の手順でベクトルデータを構築します。
ベクトルデータの作成処理は、埋め込み処理でサーバ通信が発生する API を利用するため時間がかかります。本ドキュメントでは、説明の都合上既存のベクトルデータを削除した後に新たなベクトルデータを構築する手順を記載しています。そのため、構築が完了するまでの間はアシスタントの情報源が一部欠落します。なお、ロジックフローの変更を行うことでこの参照不可時間を短縮する処理に変更することも可能です。
変更例
- 登録するベクトルデータを事前に作成
- ベクトルデータベースから既存のベクトルデータを削除
- 事前に作成したベクトルデータをベクトルデータベースに登録
10.7.1.1.1.2.1.1.2. 設定手順¶
IM-LogicDesigner を利用して、ベクトルデータを構築するロジックフローを作成する手順を説明します。本説明で使用しているロジックフローのキャプチャ画像は、一部タスク・エレメントのラベルの値を変更しています。
10.7.1.1.1.2.1.1.2.1. 各種定義の設定¶
ロジックフロー新規作成画面を開きます。
「サイトマップ」→「LogicDesigner」→「フロー定義一覧」をクリックし、「ロジックフロー定義一覧」画面を表示します。ロジックフロー定義一覧画面ツールバーの「ロジックフロー新規作成」をクリックします。定数の設定を行います。
「ロジックフロー定義編集」画面ツールバーの「定数設定」をクリックして定数設定ダイアログを表示します。以下の定数を設定します。定数一覧 定数ID 定数値 説明 ERROR_MESSAGE The embedding process failed. 埋め込み処理でエラーが発生した場合に利用するメッセージです。 ONE 1 1を表す定数です。カウントのインクリメントに利用します。 RETRY_COUNT 3 埋め込みエラー時にリトライする回数です。 TARGET_STORAGE_PATH sample_rag_assistant/files 参照情報とするファイルが格納されているパブリックストレージのディレクトリです。 VECTORSTORE_CATEGORY sample_rag_assistant ベクトルデータベースのカテゴリです。 変数の設定を行います。
「ロジックフロー定義編集」画面ツールバーの「変数設定」をクリックして変数設定ダイアログを表示します。以下の変数を設定します。変数一覧 変数 型 説明 errorCount integer 埋め込み処理が連続して失敗した際に利用するエラー回数です。 content object ベクトルデータベースに登録する1コンテンツを格納します。 content.embeddings float[] content.metadata object content.originSourceId string content.text string fileContents object ベクトルデータベースに登録する1ファイルに含まれるコンテンツを格納します。 fileContents.contents object[] fileContents.contents.embeddings float[] fileContents.contents.metadata object fileContents.contents.originSourceId string fileContents.contents.text string
JSON 入力で設定する場合は以下の JSON をコピーし、変数設定ダイアログの「JSON入力」をクリックしてサンプル JSON の入力ダイアログに貼り付けてください。JSON 入力を利用して変数を設定した場合、errorCount のデータ型が double に、content.embeddings、および、fileContents.contents.embeddings のデータ型が double[] に設定されます。errorCount のデータ型を integer に、content.embeddings、および、fileContents.contents.embeddings のデータ型を float[] に手動で変更してください。{ "errorCount": 0, "content": { "embeddings": [ 0 ], "metadata": {}, "originSourceId": "", "text": "" }, "fileContents": { "contents": [ { "embeddings": [ 0 ], "metadata": {}, "originSourceId": "", "text": "" } ] } }
10.7.1.1.1.2.1.1.2.2. ベクトルデータベース内の古いデータの削除¶
ベクトルデータの削除タスクを追加します。
既に存在するベクトルデータを削除するために対象のカテゴリのベクトルデータを削除するタスクを追加します。パレットから「IM-Copilot」→「ベクトルDBコンテンツ削除」をクリックしロジックフローに追加します。「開始」エレメントの out を追加した「ベクトルDBコンテンツ削除」の in に接続します。追加した「ベクトルDBコンテンツ削除」を選択し、マッピング設定を行います。- 定数 VECTORSTORE_CATEGORY をタスクの入力値 category に設定します。
コラム
10.7.1.1.1.2.1.1.2.3. パブリックストレージからファイルの一覧を取得¶
パブリックストレージのファイル一覧を取得するタスクを追加します。
生成 AI が回答を作成する際に情報源とするデータをパブリックストレージから取得します。パブリックストレージ内のファイル一覧を取得するためのタスクを追加します。パレットから「ストレージ操作」→「パブリックストレージ取得」をクリックしロジックフローに追加します。「ベクトルDBコンテンツ削除」タスクの out を追加した「パブリックストレージ取得」の in に接続します。追加した「パブリックストレージ取得」を選択し、マッピング設定を行います。- 定数 TARGET_STORAGE_PATH をタスクの入力値に設定します。
続いて、パレットから「ストレージ操作」→「ファイル取得」をクリックしロジックフローに追加します。「パブリックストレージ取得」タスクの out を追加した「ファイル取得」の in に接続します。追加した「ファイル取得」を選択し、マッピング設定を行います。- エイリアス「im_publicStorage1」を追加しタスクの入力値に設定します。
続いてファイル取得タスクのタスク固有設定を行います。- 配下のファイルを含めて取得するを有効にします。
繰り返し制御エレメントを追加します。
各ファイルの処理を行うために、繰り返し制御エレメントを追加します。パレットから「基本」→「繰り返し開始」をクリックしロジックフローに追加します。「ファイル取得」タスクの out を追加した「繰り返し開始」の in に接続します。追加した「繰り返し」を選択し、タスク固有設定を行います。- 初期化する変数名に fileContents を設定します。
- これにより、各ファイルの処理を行う際に、ファイルの内容を格納する変数を初期化します。
- 繰り返し対象に im_getFiles1 を設定します。
- これにより、取得したファイル一覧を繰り返し処理します。
10.7.1.1.1.2.1.1.2.4. ファイル内のテキスト情報を抽出¶
ストレージ情報取得タスクを追加します。
ファイル情報を取得するためのタスクを追加します。取得したファイル情報はテキスト抽出タスクの入力値として利用します。パレットから「ストレージ操作」→「ストレージ情報取得」をクリックしロジックフローに追加します。「繰り返し開始」エレメントの out を追加した「ストレージ情報取得」の in に接続します。追加した「ストレージ情報取得」を選択し、マッピング設定を行います。- エイリアス「im_startLoop1」を追加します。
- item をタスクの入力値に設定します。
テキスト抽出タスクを追加します。
ファイルからテキスト情報を抽出するためのタスクを追加します。パレットから「IM-Copilot」→「テキスト抽出」をクリックしロジックフローに追加します。「ストレージ情報取得」タスクの out を追加した「テキスト抽出」の in に接続します。追加した「テキスト抽出」を選択し、マッピング設定を行います。- エイリアス「im_startLoop1」を追加します。
- item をタスクの入力値 fileData に設定します。
- エイリアス「im_getStorageInfo1」を追加します。
- name をタスクの入力値 fileName に設定します。
- size をタスクの入力値 fileSize に設定します。
続いて「テキスト抽出」タスクのタスク固有設定を行います。- エラーでも処理を続行するを有効にします。
テキスト抽出でエラーが発生した場合の処理を追加します。
テキスト抽出ではテキスト抽出設定の内容に準じてテキストを抽出します。テキスト抽出タスクにテキスト抽出が行えないファイルを指定した場合、エラーが発生します。エラーが発生した場合に次のファイルの処理を行うための制御を追加します。パレットから「基本」→「分岐」をクリックしロジックフローに追加します。「テキスト抽出」タスクの out を追加した「分岐」の in に接続します。追加した「分岐」を選択し、タスク固有設定を行います。- 条件式(EL式)に ${$task_result.error} を設定します。
- $task_result は処理結果情報です。直前の処理の処理結果が格納されます。error にはエラーが発生した場合に true が設定されます。
エラーが発生した場合に次のファイルの処理を行うためのシーケンスを追加します。追加した「分岐」の then に「繰り返し終了」エレメント(im_endLoop1)の in を接続します。
10.7.1.1.1.2.1.1.2.5. 抽出したテキストを分割¶
- テキスト分割タスクを追加します。
抽出したテキストを分割するためのタスクを追加します。パレットから「IM-Copilot」→「テキスト分割」をクリックしロジックフローに追加します。「分岐」エレメントの else を追加した「テキスト分割」の in に接続します。追加した「テキスト分割」を選択し、マッピング設定を行います。
- エイリアス「im_extractText1」を追加しタスクの入力値 text に設定します。
![]()
10.7.1.1.1.2.1.1.2.6. 分割したテキストをベクトル化¶
- 繰り返し制御エレメントを追加します。
テキスト分割した情報をベクトル化するための繰り返し制御エレメントを追加します。パレットから「基本」→「繰り返し開始」をクリックしロジックフローに追加します。「テキスト分割」タスクの out を追加した「繰り返し開始」の in に接続します。追加した「繰り返し」を選択し、タスク固有設定を行います。
- 初期化する変数名に content、 errorCount を設定します。
- これにより、各テキストのベクトル化処理を行う際に、ベクトルデータを格納する変数を初期化します。また、埋め込み処理エラー回数を初期化します。
- 繰り返し対象に im_splitText1 を設定します。
- これにより、分割したテキスト情報を繰り返し処理します。
![]()
- 埋め込みタスクを追加します。
テキスト情報をベクトル化するためのタスクを追加します。パレットから「IM-Copilot」→「埋め込み」をクリックしロジックフローに追加します。「繰り返し開始」エレメントの out を追加した「埋め込み」の in に接続します。追加した「埋め込み」を選択し、マッピング設定を行います。
- エイリアス「im_startLoop2」を追加します。
- item をタスクの入力値 input に設定します。
続いて「埋め込み」タスクのタスク固有設定を行います。
- エラーでも処理を続行するを有効にします。
![]()
- 埋め込みでエラーが発生した場合の処理を追加します。
埋め込み処理は AI サービスへのリクエストを行う処理です。本フローでは繰り返し処理で連続して埋め込み処理を行うためレート制限などのエラーが発生する可能性があります。そのため、エラーが発生した場合にリトライ処理を行うための制御を追加します。パレットから「基本」→「分岐」をクリックしロジックフローに追加します。「埋め込み」タスクの out を追加した「分岐」の in に接続します。追加した「分岐」を選択し、タスク固有設定を行います。
- 条件式(EL式)に ${!$task_result.error} を設定します。
- $task_result は処理結果情報です。直前の処理の処理結果が格納されます。error にはエラーが発生した場合に true が設定されます。
- ! は否定を表します。エラーが発生していない場合に true になるように設定します。
続いて、パレットから「基本」→「変数操作」をクリックしロジックフローに追加します。「分岐」エレメント(im_gateway1)の else に追加した「変数操作」の in を接続します。エラーカウントをインクリメントします。追加した「変数操作」を選択し、マッピング設定を行います。
- 数値演算マッピング関数 add を追加します。
- 入力値 a に変数 errorCount を設定します。
- 入力値 b に定数 ONE を設定します。
- 出力値をタスクの入力値 errorCount に設定します。
続いて、パレットから「基本」→「分岐」をクリックしロジックフローに追加します。「変数操作」タスクの out を追加した「分岐」の in に接続します。追加した「分岐」を選択し、タスク固有設定を行います。
- 条件式(EL式)に ${$variable.errorCount>=$const.RETRY_COUNT} を設定します。
- errorCount が RETRY_COUNT 以上の場合に true になるように設定します。
続いて、パレットから「基本」→「エラー終了」をクリックしロジックフローに追加します。「分岐」エレメント(im_gateway2)の then に追加した「エラー終了」の in を接続します。追加した「エラー終了」を選択し、タスク固有設定を行います。
- エラーメッセージに ${$const.ERROR_MESSAGE} を設定します。
続いて、パレットから「汎用タスク」→「スリープ」をクリックしロジックフローに追加します。「変数操作」タスクの後に追加した「分岐」エレメント(im_gateway2)の else に追加した「スリープ」の in を接続します。追加した「スリープ」を選択し、タスク固有設定を行います。
- 停止時間(ミリ秒)に 5000 を設定します。
スリープ後に再度埋め込み処理を行います。「スリープ」タスクの out を「埋め込み」の in に接続します。
- 変数操作タスクを追加します。
コンテンツ情報を変数に格納するため、変数操作タスクを追加します。パレットから「基本」→「変数操作」をクリックしロジックフローに追加します。「埋め込み」タスクの後の「分岐」エレメント(im_gateway1)の then に追加した「変数操作」の in を接続します。追加した「変数操作」を選択し、マッピング設定を行います。
- エイリアス「im_embedding1」を追加します。
- embeddings をタスクの入力値 content.embeddings に設定します。
- エイリアス「im_startLoop2」を追加します。
- item をタスクの入力値 content.text に設定します。
- エイリアス「im_getStorageInfo1」を追加します。
- name をタスクの入力値 content.originSourceId に設定します。
![]()
- 変数操作タスクを追加します。
ファイル情報を変数に格納するため、変数操作タスクを追加します。パレットから「基本」→「変数操作」をクリックしロジックフローに追加します。「変数操作」タスクの out を「繰り返し終了」エレメント(im_endLoop2)の in に接続します。追加した「変数操作」を選択し、マッピング設定を行います。
- 配列操作マッピング関数 push を追加します。
- 入力値 array に変数 fileContents.contents を設定します。
- 入力値 value に変数 content を設定します。
- 出力値をタスクの入力値 fileContents.contents に設定します。
![]()
10.7.1.1.1.2.1.1.2.7. ベクトル情報をベクトルデータベースに登録¶
- ベクトルDBコンテンツ登録タスクを追加します。
コラム
リソースID指定で ベクトルデータベース内の古いデータの削除 をベクトルデータの登録前に実行する場合の設定方法について説明します。この方法では、登録するコンテンツと同じリソースIDを持つコンテンツのみを削除してから新しいベクトルデータを登録するため、アシスタントの情報源が一部欠落する時間を短縮できます。パレットから「IM-Copilot」→「ベクトルDBコンテンツ削除」をクリックしロジックフローに追加します。「繰り返し終了」エレメント(im_endLoop2)の out を追加した「ベクトルDBコンテンツ削除」の in に接続します。追加した「ベクトルDBコンテンツ削除」を選択し、マッピング設定を行います。・ 定数 VECTORSTORE_CATEGORY をタスクの入力値 category に設定します。・ エイリアス「 im_getStorageInfo1 」を追加し、 name をタスクの入力値 option.originSourceId に設定します。
ベクトルデータベースにコンテンツを登録するためのタスクを追加します。パレットから「IM-Copilot」→「ベクトルDBコンテンツ登録」をクリックしロジックフローに追加します。「繰り返し終了」エレメント(im_endLoop2)の out を追加した「ベクトルDBコンテンツ登録」の in に接続します。追加した「ベクトルDBコンテンツ登録」を選択し、マッピング設定を行います。
- 定数 VECTORSTORE_CATEGORY をタスクの入力値 category に設定します。
- 変数 fileContents.contents をタスクの入力値 contents に設定します。
「ベクトルDBコンテンツ登録」の out を「繰り返し終了」エレメント(im_endLoop1)の out に接続します。「繰り返し終了」エレメント(im_endLoop1)の out を「終了」エレメントの in に接続します。![]()
- ロジックフローを保存します。
ロジックフロー定義編集画面ツールバーの「保存」をクリックしロジックフローを保存します。以下の値で保存します。
- フロー定義ID: sample-rag-assistant-vector-build
- フロー定義名: ベクトルデータ構築
10.7.1.1.1.2.1.2. ジョブスケジューラへの登録方法¶
ベクトルデータを定期的に更新するために、ジョブスケジューラサービスを利用して自動実行を設定します。
10.7.1.1.1.2.1.2.1. 設定手順¶
10.7.1.1.1.2.1.2.1.1. ジョブの作成¶
ジョブ管理画面を開いてジョブを作成します。
「サイトマップ」→「テナント管理」→「ジョブ管理」→「ジョブ設定」をクリックし「ジョブ管理」画面を表示します。ツールバーの「ジョブ新規作成」をクリックし以下を設定した後に「新規作成」をクリックします。ジョブカテゴリ: (任意)
ジョブID: (任意)
ジョブ名: (任意)
実行言語: Java
実行クラス: jp.co.intra_mart.foundation.logic.job.LogicFlowExecutorJob
- 実行パラメータ
- flow_id: sample-rag-assistant-vector-build
10.7.1.1.1.2.1.2.1.2. ジョブネットの作成¶
ジョブネット管理画面を開いてジョブネットを作成します。
「サイトマップ」→「テナント管理」→「ジョブ管理」→「ジョブネット設定」をクリックし「ジョブネット管理」画面を表示します。ツールバーの「ジョブネット新規作成」をクリックし以下を設定します。- ジョブカテゴリ: (任意)
- ジョブネットID: (任意)
- ジョブネット名: (任意)
- 実行ジョブ: 先ほど作成したジョブを選択します。
- 実行パラメータ: なし
トリガ設定で「日時指定」を選択し「新規登録」をクリックします。
毎週日曜日 0 時 0 分 に実行するように設定します。以下を設定して「決定」をクリックします。- 年: 指定なし(毎年)
- 月: 指定なし(毎月)
- 日: 曜日指定・日曜日
- 時: 時指定・0
- 分: 分指定・0
「新規作成」をクリックしてジョブネットを保存します。

