メイン コンテンツをスキップする 補完的コンテンツへスキップ

組み込みとベクターデータベースを使用して電話レビューをインデックス化する

このジョブは、フォルダー内の電話レビューのテキストファイルを読み込み、分析しやすいように内容を小さなチャンクに分割し、Azure OpenAIを使用してベクターの組み込みを生成し、それらをPineconeのベクターデータベースに保存することで、セマンティック検索を可能にします。

始める前に

このジョブを実行する前に、次を確認してください。

  • text-embedding-3-smallモデルへのアクセス権を持つ、アクティブなAzure OpenAIアカウントがあること。
  • Azure OpenAI APIキーとエンドポイントが設定されていること。
  • 組み込み保存用の インデックスが作成されたPineconeアカウントがあること。
  • Pinecone APIキーとホストエンドポイントが設定されていること。
  • アーカイブファイルtembeddingai-tpineconeclient_phone-review-files.zipをダウンロードし、LG.txtおよびIphones.txtファイルを解凍していること。
  • 電話レビューのテキストファイルを含むディレクトリ<folder_path>/phone-reviews/を作成していること。

コンポーネントのリンク

手順

  1. パレットから、tFileListtFileInputRawtJavaFlextEmbeddingAItMaptPineconeClient、3つのtLogRowのコンポーネントをドラッグ&ドロップします。
  2. Trigger > Iterate接続を使用してtFileListtFileInputRawに接続します。
  3. Row > Main接続を使用してtFileInputRawtJavaFlexに接続します。
  4. Row > Main接続を使用してtJavaFlexを最初のtLogRowに接続します。
  5. Row > Main接続を使用してtLogRowtEmbeddingAIに接続します。
  6. Row > FLOW接続を使用してtEmbeddingAIを2つめのtLogRowに接続します。
  7. Row > Main接続を使用してtLogRowtMapに接続します。
  8. Row > Main接続を使用してtMaptPineconeClientに接続します。
  9. Row > FLOW接続を使用してtPineconeClientを最後のtLogRowに接続します。
    フローを示すジョブ設計。tFileList → tFileInputRaw → tJavaFlex → tLogRow → tEmbeddingAI → tLogRow → tMap → tPineconeClient → tLogRow。

コンポーネントの設定

このタスクについて

このジョブは、フォルダーから電話レビューのテキストファイルを処理し、分析とセマンティック検索の精度を高めるためにコンテンツを小さなチャンクに分割し、各チャンクの埋め込みを生成して、メタデータとともにPineconeに保存します。

手順

  1. [tFileList]コンポーネントをダブルクリックして、[コンポーネント]ビューを開きます。
  2. [基本設定]タブで、次のパラメーターを設定します。
    • [ディレクトリー]フィールドに、"<folder_path>/phone-reviews/"と入力または選択します。
    • [ファイル]フィールドに、行を追加して"*.txt"と入力し、ディレクトリー内のすべてのテキストファイル(LG.txtIphones.txt)を一覧表示します。
  3. [OK]をクリックしてコンポーネントビューを閉じます。
  4. [tFileInputRaw]コンポーネントをダブルクリックして、[コンポーネント]ビューを開きます。
  5. [基本設定]タブで、次のパラメーターを設定します。
    • [ファイル名]フィールドに、((String)globalMap.get("tFileList_1_CURRENT_FILEPATH"))と入力して、リストから各電話レビューファイルを読み込みます。
  6. [スキーマを編集]をクリックし、スキーマに次のカラムがあることを確認します。
    • チャンク (文字列)
  7. [OK]をクリックしてスキーマエディターを閉じ、[OK]をクリックしてコンポーネントビューを閉じます。
  8. [tJavaFlex]コンポーネントをダブルクリックして、[コンポーネント]ビューを開きます。
  9. [基本設定]タブで、次を設定します。
    • [カラムを同期]をクリックし、前のコンポーネントからカラムスキーマを取得します。
    • [開始コード]フィールドに次のコードを入力します。
      //String regex = "(?:\\d(?:\\.\\d)?[A-Z]{5})\\b";
      //Pattern pattern = Pattern.compile(regex);
      int nbParts=2;
    • [メインコード]フィールに、バイトコンテンツを文字列に変換してより小さなチャンクに分割するための次のコードを入力します。
       //System.out.println(part);
      String input = row7.content.toString();
      String[] lines = input.split("\\r?\\n");
      int nbLines=lines.length;
      int linesPerPart = nbLines / nbParts;
      int remainder = nbLines % nbParts;
      int linesProcessed = 0;
      //System.out.println("nb lines:"+nbLines); 
       for (int i = 0; i < nbParts; i++) {
                  StringBuilder partBuilder = new StringBuilder();
                  int linesInThisPart = linesPerPart + (remainder > 0 ? 1 : 0);
                  remainder--;
                  for (int j = 0; j < linesInThisPart; j++) {
                  partBuilder.append(lines[linesProcessed]).append(" ");
                  linesProcessed++;
                  }
                                 
                  String body=partBuilder.toString();
                  row8.chunk=body;
                  //System.out.println("text:"+body);
                  globalMap.put("id",((String)globalMap.get("tFileList_1_CURRENT_FILE"))+i);
                  globalMap.put("chunk",body);
                              
      情報メモ注: このコードは、電話レビューのテキストをより小さなチャンクに分割することで、ベクターデータベースにおける分析の精度向上や、より正確なセマンティック検索を可能にします。
    • [終了コード]フィールドに次のコードを入力します。
      
      }
  10. [OK]をクリックしてコンポーネントビューを閉じます。
  11. 1つめのtLogRow コンポーネントをダブルクリックし、[コンポーネント]ビューを開きます。
  12. [モード]エリアで[テーブル]を選択します。

    このコンポーネントは、分割された電話レビューテキストをテーブル形式でコンソールに表示します。

  13. [tEmbeddingAI]コンポーネントをダブルクリックして、[コンポーネント]ビューを開きます。
  14. [基本設定]タブで、次のパラメーターを設定します。
    • [スキーマを編集]をクリックし、スキーマに組み込み(リスト)のカラムがあることを確認します。
    • [プラットフォーム]リストから[Azure OpenAI]を選択します。
    • [モデル名]フィールドで[...]ボタンをクリックし、[text-embedding-3-small]を選択します。
    • [トークン/APIキー]フィールドで[...]ボタンをクリックし、Azure OpenAI APIキーを入力して[OK]をクリックします。
    • [Azureエンドポイント]フィールドに、Azure OpenAIのエンドポイントを入力します(例: https://your-resource-name.openai.azure.com/)。
    • [組み込み用のカラム]リストで、[チャンク]を選択します。
    このコンポーネントは、各電話レビューのテキストチャンクごとにベクターの組み込みを生成します。
    tEmbeddingAIコンポーネントの設定における基本設定ビュー。
  15. [OK]をクリックしてコンポーネントビューを閉じます。
  16. 2つめのtLogRowコンポーネントをダブルクリックし、[コンポーネント]ビューを開きます。
  17. [モード]エリアで[テーブル]を選択します。

    このコンポーネントは、生成された組み込みデータをコンソールに表示します。

  18. tMapコンポーネントをダブルクリックして、マップエディターを開きます。
  19. マップエディターで、次の列を持つ出力スキーマを作成します。
    • id (文字列)
    • vector(リスト) - 組み込み入力カラムにマッピングします
    • text (文字列)
    このマッピングにより、すべてのメタデータがtPineconeClientに正しく転送されていることが確認されます。idおよびvaluesカラムは、Pineconeでのアップサート操作に必須です。
    マッピングされた必須列が表示されているマップエディタービュー。
  20. [OK]をクリックして、マップエディターを閉じます。
  21. [tPineconeClient]コンポーネントをダブルクリックして、[コンポーネント]ビューを開きます。
  22. [基本設定]タブで、次のパラメーターを設定します。
    • [スキーマを編集]をクリックし、スキーマにupsertedCount(Int)のカラムがあることを確認します。
    • [APIキー]フィールドで[...]ボタンをクリックし、Pinecone APIキーを入力して[OK]をクリックします。
    • [ホスト]フィールドに、Pineconeインデックスのホストを入力してください(例: "your-index-name.svc.environment.pinecone.io")。
    • [操作]リストで[アップサーと]を選択し、ベクター化された電話レビューデータをPineconeインデックスにロードします。
    • [ネームスペース]フィールドにネームスペース名(例: phones)を入力するか、空欄のままにしてデフォルトのネームスペースを使用します。
      tPineconeClientコンポーネントの設定画面の基本設定ビューで、アップサート操作が選択されている状態。
  23. [OK]をクリックしてコンポーネントビューを閉じます。
  24. 最後のtLogRowコンポーネントをダブルクリックし、[コンポーネント]ビューを開きます。
  25. [モード]エリアで[テーブル]を選択します。

    このコンポーネントは、アップサートされたレコードをコンソールに表示し、Pineconeへのロードが成功したことを確認します。

ジョブを実行

手順

  1. Ctrl + Sを押してジョブを保存します。
  2. F6を押してジョブを実行します。

タスクの結果

このジョブは、電話レビューファイルを読み込み、テキストを分割し、Azure OpenAIを使用して組み込みを生成し、tMapを介してメタデータの転送を確認し、ベクター化されたデータをPineconeにアップサートしてセマンティック検索に利用します。

分割された電話レビューテキストと生成された埋め込みを用いた処理が正常に実行されたことが表示されるコンソール。

Pineconeに保存されている電話レビューの組み込みデータによりセマンティック検索クエリが可能になり、ユーザーは厳密なキーワード一致ではなく、意味とコンテキストに基づいて関連性の高いレビューを見つけることができます。テキストをチャンキングすることで、より正確な検索結果と優れた分析機能が実現します。

このページは役に立ちましたか?

このページまたはコンテンツにタイポ、ステップの省略、技術的エラーなどの問題が見つかった場合はお知らせください。