大規模な言語モデルに基づくインテリジェントな検索を使用して、次世代のエンタープライズ ナレッジ ベースを構築する - ステップバイステップのクイック導入ガイド

8cf065d79c4e533220eb0db3d83e784d.gif

シリーズ ブログ「Building the Next Generation Knowledge Base of Enterprise Based on Intelligent Search and Large Models」をお読みいただきありがとうございます。シリーズ全体は 5 つの記事に分かれており、大規模な言語モデルが従来の言語モデルをどのように強化できるかなど、新しいテクノロジを体系的に紹介します。ナレッジベースのシナリオを活用し、業界の顧客のコスト削減と効率の向上を支援します。アップデートディレクトリは以下のとおりです。

バックグラウンド

このシリーズの最初の記事「典型的な実践シナリオとコア コンポーネントの紹介」では、このソリューションの基本原理と背景を紹介しました。あなたはすでに、自分の環境で初めてスマート検索の大規模言語モデル拡張ソリューションを構築してみたいと熱望していると思います。したがって、読者がソリューションをすぐに導入できるようにこの記事を作成しました。このソリューションの展開プロセスは複雑ではなく、Amazon クラウド テクノロジー関連サービスの基本的な理解だけが必要です。

スキームアーキテクチャ図と機能原理

52f61403173dafc60690a2574aad3aa1.png

プログラムは次のコア機能モジュールに分割されています。

  1. フロントエンド アクセス インターフェイス: このソリューションは、React ベースのフロントエンド アクセス インターフェイスを提供します。ユーザーは、Web ページを通じて REST API の形式でインテリジェントなドキュメント検索などの機能を実行できます。

  2. REST API: 対応する Amazon API Gateway および Amazon Lambda 関数を統合する実装を通じて、バックエンドの検索エンジン、データベース、モデル推論エンドポイントと対話します。

  3. エンタープライズ検索エンジン: Amazon OpenSearch または Amazon Kendra に基づいています。双方向フィードバック学習メカニズムに基づいて、自動的かつ継続的に反復して出力マッチングの精度を向上させることができます。同時に、検索入力の記述の精度を向上させるために、ガイド付き検索メカニズムが採用されています。

  4. データソースストレージ: データベース、オブジェクトストレージなどのさまざまなストレージ方法が選択可能 ここでは、Amazon Kendra がコネクタを介して Amazon S3 上のオブジェクトを取得します。

  5. ベクトル化されたデータの注入: Amazon SageMaker の Notebook モジュールまたは Amazon Lambda プログラムを使用して、元のデータのベクトル化されたデータを Amazon OpenSearch に注入します。

  6. インテリジェントな検索/ガイダンス/質問応答などの機能モジュール: Amazon Lambda 関数を使用して、バックエンドの検索エンジン、データベース、モデル推論エンドポイントとの対話を実現します。

  7. レコードデータベース: ユーザーフィードバックレコードはデータベース Amazon DynamoDB に保存されます。

  8. 機械学習モデル: 企業は、自社のニーズに応じて大規模な言語モデルとワードベクトルモデルを構築し、選択したモデルを Amazon SageMaker のエンドポイントノードにホストできます。

  9. フィードバックの最適化: ユーザーはフロントエンドページで最適な検索結果をフィードバックし、手動またはイベントトリガー Amazon EventBridge を通じて新しいトレーニングタスクをトリガーし、検索エンジンに再デプロイします。

  10. プラグインアプリケーション: このソリューションのコア機能を使用して、Amazon Lex と統合してインテリジェントな会話ロボットの機能を実現できます。また、Amazon Connect と統合してインテリジェントな音声カスタマーサービスの機能を実現することもできます。

実装手順の概要

ソリューションの展開プロセス全体を説明するために、スマート検索 v1 バージョンを例に挙げます。

1. 環境の準備

まず、Python 3、pip、npm などの一般的なツールを開発環境にインストールし、環境に 16 GB 以上のストレージ容量があることを確認する必要があります。使用習慣に応じて、独自の開発ノートブック (Mac OS または Linux 環境) にデプロイすることも、デプロイ用に EC2 または Cloud9 を選択することもできます。

2. CDK 自動デプロイメント

2.1 現在、コードを入手するには、Amazon Cloud Technology の公式チャネルに連絡してください。

ホットライン: +86 (10) 1010 0866 またはライブチャットを開始してください

リンク:

https://webchat-aws.clink.cn/chat.html?accessId=1e956ec1-f000-4f41-87f7-ff1d3e6d8b87& language=zh_CN&refid=acts-hero2

コードを取得したら、指定したディレクトリにコードをコピーします。ターミナル ウィンドウを開き、smart_search パッケージを入力し、deployment という名前のフォルダーに切り替えます。

cd smart_search/deployment

デプロイメント ディレクトリに入ると、対応する CDK デプロイメント操作がこのディレクトリで実行されます。次に、Amazon CDK パッケージをインストールします。

npm install -g aws-cdk

2.2 CDK 自動展開スクリプトに必要なすべての依存関係と環境変数をインストールする

デプロイメント ディレクトリで次のコマンドを実行して、依存ライブラリをインストールします。

pip install -r requirements.txt

次に、環境変数にデプロイする 12 桁の Amazon アカウント情報、アクセス キー ID、シークレット アクセス キー、およびリージョン ID をインポートします。

export AWS_ACCOUNT_ID=XXXXXXXXXXXX
export AWS_REGION=xx-xxxx-x
export AWS_ACCESS_KEY_ID=XXXXXX
export AWS_SECRET_ACCESS_KEY=XXXXXXX

左にスワイプするとさらに表示されます

次に、「cdk bootstrap」を実行して、ターゲット リージョンにアカウントと CDK ツールキットをインストールします。次に例を示します。

cdk bootstrap aws://$AWS_ACCOUNT_ID/$AWS_REGION

左にスワイプするとさらに表示されます

2.3 cdk.json でカスタム構成を実行できます

このソリューションのデフォルト構成ファイルは、デプロイメント・ディレクトリーの cdk.json ファイルにあります。どの機能モジュールをデプロイする必要があるかを構成する場合は、必要に応じて cdk.json の「コンテキスト」部分を変更できます。たとえば、デプロイされる関数を変更する必要がある場合は、「選択」の値を変更できます。

デフォルトのパラメータは次のとおりです。

"selecton":["knn","knn_faq","feedback","post_selection","xgb_train","knn_doc"]

左にスワイプするとさらに表示されます

「knn 対応ドキュメント検索機能」のみを使用する必要がある場合は、「knn_doc」をそのまま使用できます。さらに、cdk.json の他の対応するパラメーターを変更して、デプロイ方法、デプロイするプラグイン、および名前やパスなどの構成をカスタマイズすることもできます。

2.4 CDK コマンド自動化部門

次のコマンドを実行すると、環境が検証され、Amaon CloudFormation の json テンプレートが生成されます。

cdk synth

エラーが報告されない場合は、次のコマンドを実行してすべてのスタックをデプロイします。

cdk deploy --all

CDK デプロイメントでは、関連する Amazon CloudFormation スタックと、Amazon Lambda、Amazon API Gateway、Amazon OpenSearch インスタンス、Amazon SageMaker ノートブック インスタンスなどの関連リソースが提供されます。インストールの推定デプロイ時間は約 30 分です。

3. Amazon SageMaker の Notebook インスタンスを使用してモデルをデプロイし、データをインポートします

3.1 導入モデル

3.1.1 Amazon SageMaker コンソールに入り、NoteBook Instances に入り、SmartSearchNoteBook インスタンスを選択し、「Open Jupyter」をクリックして、SmartSearch のメイン コード ディレクトリに入り、「isearchjupyter」ディレクトリをクリックして入ると、埋め込みモデルを含むディレクトリが表示されます。 LLM_Model など。2 つのディレクトリにはモデル展開スクリプトが含まれており、後続のドキュメントのアップロードには Script-Doc.ipynb スクリプトが使用されます。ディレクトリは次の図に示されています。

15c991addf88c53ab396a077cdafe705.png

3.1.2 まず、Embeding Model をインストールし、「/isearchjupyter/Embeding Model」ディレクトリに入ると、対応するいくつかのスクリプトが表示されます。このうち、「EmbbedingModel_shibing624_text2vec-base-chinese.ipynb」は中国語のベクトル モデル、他の 2 つは英語です。対応するスクリプトを開いてセルを 1 つずつ実行すると、埋め込みモデルのデプロイが開始されます。スクリプトがデプロイされるのを待ちます。デプロイが成功すると、Amazon SageMaker のエンドポイントに「huggingface-inference-eb」という名前のエンドポイントが表示され、ステータスは「InService」になります。

cb3f36d1764d2c8b577a0dd36f27763d.png

3.1.3 その後、大規模言語モデルをデプロイします 現在、LLM_Model ディレクトリには中国語と英語の大規模言語モデル ライブラリが含まれています。ここでは、まず中国語の大規模言語モデルの展開方法を紹介します。isearchjupyter/LLM_Model/llm_chinese/code/inference.py を見つけてください。このファイルは、大規模言語モデルの統一された展開方法を定義しています。大規模な言語モデルは一意の名前でデプロイできます。一意の名前を「LLM_NAME」のパラメーター値として宣言し、パラメーターとしてデプロイメント スクリプトに渡します。「LLM_NAME」の値は、大規模言語モデルのドキュメントから確認できます。「LLM_NAME」値を決定する方法を示す参考として、https://huggingface.co/THUDM/chatglm-6b URL ドキュメントを使用します。URL を開いた後、ドキュメントを参照してモデル デプロイメントの一意の名前を見つけ、それを「LLM_NAME」に割り当てられた場所に貼り付けます。このメソッドを参照して推論を導き、必要な大規模な言語モデルを指定できます。プロジェクトで使用します。inference.py ファイルを変更した後、「isearchjupyter/LLM_Model/llm_chinese/」ディレクトリに入り、このディレクトリでスクリプトを実行します。スクリプトがデプロイされるのを待ちます。デプロイが成功すると、Amazon SageMaker のエンドポイントに「pytorch-inference-llm-v1」という名前のエンドポイントが表示されます。

0403071da0992e9e3640ff05c26e51ab.png

英語の大規模言語モデルをデプロイすることを選択した場合、デプロイメント方法は同様で、英語の大規模言語モデルのパラメータを LLM_Model/llm_english/code/inference.py ファイルの「LLM_NAME」パラメータに入力する必要があります。https://huggingface.co/TheBloke/vicuna-7B-1.1-HF を例として英語モデルのデプロイメントを説明し、大規模言語モデル プロジェクトの名前を見つけて、その名前をコピーして、割り当てられた場所に貼り付けます。 "LLM_NAME" では、このメソッドを使用して推論を導き、ビジネス ニーズを満たす大規模な言語モデルを指定できます。「isearchjupyter/LLM_Model/llm_english/」ディレクトリに入り、このディレクトリ内の英語大規模言語モデル スクリプトのデプロイメント セルを順番に実行します。以下に示すように:

9b2f98a38e72a2da2818e0dd377db518.png

3.1.4 インストールが完了すると、次の図に示すように、2 つのエンドポイントがすでに「InService」状態になっていることがわかります。

f80c0f5c522e05c65f4856806658e9cd.png

3.2 ナレッジベースデータのアップロード

3.2.1 データの準備。jupyter ディレクトリ「/isearchjupyter」、「docs」ディレクトリに入力し、必要なドキュメントを Word、Excel、または PDF 形式でアップロードすると、テスト用のサンプル ファイル「sample.docx」がこのフォルダの下に提供されています。 http://www.360doc.com/content/19/1017/08/7696210_867360083.shtml からコンパイルされています)。

3.2.2 Script-Doc.ipynb と入力し、「Hyperparameter」セルの次のパラメータを変更します。下の図に示すように、folder_path は指定された docs ディレクトリ、index_name は Amazon OpenSearch のインデックス名です。

c18ebaf8e0b687082164b598c08b9cea.png

次に、スクリプトを最初から実行してデータのインポートを完了します。

4.WebUIの設定

4.1 Smart_search/search-web-knn ディレクトリに移動します。このディレクトリには、React ベースのフロントエンド インターフェイス コードが含まれています。次に、以下に示すように /src/pages/common/constants.js ファイルを編集します。

2763355c9811688dbfe036a5ae783793.png

Mainapi 定数変数は、フロントエンド呼び出しの API エントリを指定します。この値は、Web ページの API ゲートウェイから取得でき、「smartsearch-api」の Stages サイドバーに入り、prod ステージの関連 URL を constants.js の mainapi 定数変数に割り当てます。例: https:/ /xxxxxxxxxx.execute-api.us-east-1.amazonaws.com/prod。

8da17e2ba03f94b0c5ba57f3ce8740c1.png

4.2 メインページのパラメータ設定を確認します。Smart_search/search-web-knn/src/pages/MainSearchDoc.jsx は関数表示ページであり、このファイルの last_index パラメータには、ページ内に自動的に埋められるデフォルトのインデックス値と、関数によって展開されたインデックス名が設定されます。上記の Notebook インスタンスには「docs」などの文字が入力されます。

4.3 フロントエンドインターフェイスを実行します。ディレクトリ search-web-knn に入り、次の 2 つのコマンドを実行します。

npm install

次に、次のコマンドを実行してフロントエンド インターフェイスを開始します。

npm start

すべてがうまくいけば、Web インターフェイスが表示されます。ローカル開発ノートブック デプロイメントのデフォルトのアクセス アドレスとポート番号は localhost:3000 です。EC2 デプロイメントの場合は、対応するポート アクセスのセキュリティ グループ ポリシーを有効にし、EC2 パブリック ネットワーク アドレスとポート番号を介してアクセスする必要があります。フロントエンド ページの使用方法は次のとおりです。検索バーに質問を入力し、インデックス名と k-NN オプションを設定し、[検索] ボタンをクリックすると、企業の大規模言語モデルに基づいた概要の回答が表示されます。知識ベース。以下に示すように:

afecd4a3acabbb2ba537782273d09441.png

5. 拡張機能をインストールする

5.1 Amazon Lex との統合によるインテリジェントなチャットボットの実現

このソリューションはAmazon Lexの会話ロボット機能を統合したもので、現在Amazon Lexは海外リージョンでも利用可能です。cdk.json ファイルで、拡張キーに「bot」を追加します。

"extension": ["bot"]

cdk のデプロイが成功したら、管理インターフェイスに入ると、以下に示すように、「llmbot」という名前の対話ロボットが表示されます。

de1a576212c1599f19030d62a11d8304.png

ロボットはフロントエンド ページを簡単に統合できます。たとえば、https://github.com/aws-samples/aws-lex-web-ui の対応する領域でデプロイメント テンプレートを開始し、llmbot 情報 ( LexV2BotId、エイリアス ID など) を CloudFormation テンプレートに入力します。Lex ロボットの作業インターフェイスを次の図に示します。

ca5880ea331237badf5992862febfd79.gif

5.2 Amazon Connectとの統合によるインテリジェントな音声カスタマーサービスの実現

Amazon Connectは、現在海外リージョンで提供されているAmazon Cloud Technologyのクラウドコールセンターサービスです。このソリューションでは、Amazon Lex ロボットを通じて大規模言語モデル機能を Amazon Connect クラウドコールセンターに統合でき、次の手順で音声通話をサポートするインテリジェントなカスタマーサービスロボットを入手できます。

5.2.1 前のステップで生成した llmbot ロボットを既存の Amazon Connect インスタンスに統合します。

03b47b0647ad9f0e551d6c22fe1d0f20.png

5.2.2 次に、Amazon Connect インスタンスに入り、smart-search/extension/connect のファイルを Contact Flow にインポートし、保存して公開します。

103cfc46a600e41e93a8f3d5886c72ff.png

5.2.3 最後に、Amazon Connect の前のステップで設定した問い合わせフローにコールイン番号を関連付けます。その後、この番号へのすべての音声通話は、インテリジェント カスタマー サービスの通話サービス プロセスに接続されます。

通常の状況では、インテリジェント カスタマー サービスは発信者の音声入力を認識し、Amazon Connect に統合されたインテリジェント カスタマー サービス ロボットが、エンタープライズ ナレッジ ベースの情報と大企業の能力に基づいて、人間に近い論理的な方法で応答します。言語モデル。次の音声は、自動車のアフターセールス現場で使用されるこのソリューションのスマート カスタマー サービスの事例を示しています。クリックして再生してください。

6. リソースのクリーンアップ

リソースをクリーンアップする場合は、次のコマンドを使用してすべてのスタックを削除してください。

cdk destroy --all

注: Amazon SageMaker Notebook インスタンスを通じて作成された推論モデルのリソースは手動で削除する必要があります。Amazon SageMaker の「推論」サイドバーに「エンドポイント」と入力し、「削除」をクリックしてすべてのエンドポイントを削除します。

76b2a0a69ee6b52d1d3ff8d7752499e2.png

スタックによって作成された Amazon S3 バケット、またはその他の手動で作成または変更されたリソースに既にデータがある場合、そのデータも手動で削除する必要があります。

要約する

この展開を通じて、ソリューションの展開方法を習得し、ソリューションについてより深く理解できました。また、より多くのデータ型、モデル ライブラリ、拡張機能をサポートするためにソリューションの反復と最適化を継続し、ソリューションの機能をより多くのビジネス シナリオに拡張します。このソリューションは、多くの業界や分野の専門的または一般的なシナリオを解決することができ、企業の実際のビジネス シナリオにも適用できることが期待されており、このソリューションを使用することで、人工知能と Amazon の最新の進歩を活用することができます。クラウドテクノロジー製品は、業界の発展に新たな活力を注入します。

この記事の著者

e71facf5916fe002a4ce7607a0ea13b4.jpeg

徐鵬

Amazon クラウドテクノロジーの自動車産業ソリューションアーキテクトであり、国際的な自動車会社の自動運転と電子機器の研究開発で 10 年以上の経験があり、ハイレベルな自動運転ビッグデータのテストと検証の責任者を務めてきました。 、ビッグデータの収集、ビッグデータのシミュレーション検証、ビッグデータの分析、機械学習、その他のソリューションの設計と実装が含まれます。現在は自動運転、カーネットワーク、ソフトウェアデファインドカーなどの事業に注力している。

064ed3163bd1964ab0835ca436863e90.jpeg

シー・フォン

Amazon Cloud Technology のシニア ソリューション アーキテクト。教育業界と運輸業界におけるソリューションの設計と実装を担当。彼は Alibaba Cloud で 6 年間勤務し、交通、政府、オリンピック、スポーツ メディアなどの大規模プロジェクトの技術チームを担当しています。IBM と Oracle で 10 年間勤務し、さまざまな分野で働いてきました。クラウドコンピューティング、ビッグデータ、人工知能、モノのインターネットなどの業界、メタバースなどの分野で豊富な実務経験を持っています。

ca10f4d5b370f4698a9729f29b879850.jpeg

リャン・イーミン

Amazon クラウド テクノロジー ソリューション アーキテクト。クラウド コンピューティング ソリューション アーキテクチャの設計、アプリケーション、プロモーションに専念します。IT 業界で 15 年の勤務経験があり、開発とデータの災害復旧保護が得意で、ソフトウェア開発エンジニア、プロジェクト マネージャー、システム アーキテクトとして働いてきました。Amazon Cloud Technology に入社する前は、EMC、Microsoft などの企業に勤務していました。

fb260dc92da175dc602e91edde0c41fd.jpeg

ヤン・ジハオ

Amazon クラウド テクノロジー ソリューション アーキテクト。Amazon クラウド テクノロジーに基づくクラウド コンピューティング ソリューションのコンサルティングとアーキテクチャ設計を担当し、現在は新エネルギー電力業界に注力しています。風力発電、太陽光発電、その他の新エネルギー発電産業における HPC および IoT テクノロジーの応用の促進に取り組んでいます。

c7ef9dce182a5f9b1832448c06e1272b.gif

4bf4bc15984c9a71bdbeff881016b362.gif

聞いたので、下の 4 つのボタンをクリックしてください

バグに遭遇することはありません!

4b6d5a91390571f2dbca8f8fef575a8a.gif

おすすめ

転載: blog.csdn.net/u012365585/article/details/131651305