paint-brush
RAGとOpenWebUIの会社のドキュメントを使用して、カスタマーサポートチャットボットを構築しましょう。@hostkey
1,648 測定値
1,648 測定値

RAGとOpenWebUIの会社のドキュメントを使用して、カスタマーサポートチャットボットを構築しましょう。

Hostkey.com8m2024/07/09
Read on Terminal Reader

長すぎる; 読むには

OpenWebUI は、豊富なコーディング経験がなくても、魅力的で便利なチャットボットを構築できるユニークな機会を提供します。この記事では、ユーザーの質問に答えて最前線のチームを支援するために設計されたテクニカル サポート チャットボットの作成過程を紹介します。そのアクションのステップごとの概要は次のとおりです。
featured image - RAGとOpenWebUIの会社のドキュメントを使用して、カスタマーサポートチャットボットを構築しましょう。
Hostkey.com HackerNoon profile picture
0-item

OpenWebUI は、OpenAI、Ollama、Automatic1111、ComfyUI、Whisper API、カスタム モデル トレーニング、ChromaDB を使用した Langchain ベースの RAG、ハイブリッド BM25/Web 検索などの AI ツール スイートを備えた包括的なメディア プラットフォームです。


これらはすべて以前から利用可能で、文書化されており、Python プログラミングの知識があれば実装できますが、OpenWebUI は、豊富なコーディング経験がなくても魅力的で便利なチャットボットを構築できるユニークな機会を提供します。


この記事では、ユーザーの質問に答えて最前線のチームを支援する(そして最終的にはチーム自体の一部となる)ように設計されたテクニカル サポート チャットボットの作成の過程を紹介します。


すぐに導入できるGPU サーバー、またはプロフェッショナル グレードの NVIDIA Tesla A100 / H100 80Gbまたは A5000 / A4000 カードを搭載したカスタム構成のサーバーをレンタルできます。ゲーミング RTX4090 カードを搭載した GPU サーバーもご利用いただけます。


出発点

Material for MkDocs を使用してユーザー ドキュメントを作成しました。これにより、Markdown 形式の .md ファイルを含むディレクトリ構造が作成されます。また、llama3-8b-instruct モデルがロードされた OpenWebUI と Ollama セットアップもデプロイされています。


プロジェクトの目標:


  1. カスタム チャットボットを開発する: このチャットボットはユーザーと対話し、ドキュメントに基づいて情報を提供します。
  2. ドキュメントを LLM に適した形式に変換する: Markdown ドキュメントを、検索拡張生成 (RAG) 用の LLM で効率的に処理できる形式に変換する必要があります。
  3. データの更新と追加を有効にする: システムでは、ドキュメントを含むベクター データベースへの継続的な更新と追加が可能である必要があります。
  4. 質問への回答に重点を置く: チャットボットは主に質問回答システムとして機能し、IT に関連しない会話には関与しないようにする必要があります。
  5. ソース リンクを提供する: 可能な限り、チャットボットは、提供される情報の元のドキュメント ソースにリンクする必要があります。
  6. 質問のフィルタリングを実装する: チャットボットの質問制限を構成する機能が必要です。たとえば、地理的な場所に基づいて質問に回答できないようにしたい場合があります。

単純な実装

当初の試みは、既存のドキュメントを元の Markdown 形式で読み込み、変更を加えずに llama3 モデルを使用するというものでした。控えめに言っても、結果は残念なものでした。


まず、Markdown ファイルには、画像タグ、脚注、コード ブロック、太字と斜体の書式、内部リンクと外部リンク、アイコン、さらにはボタンの「 ** 」構造など、さまざまな要素が含まれています。これらの余分な「ノイズ」はすべて、ドキュメントを処理用にチャンクに分割するときに問題を引き起こします。


2 つ目: OpenWebUI が 384 次元ベクトル空間 (クラスタリングやセマンティック検索などの RAG タスクに不可欠) で文と段落を表すためにデフォルトで使用する sentence-transformers/all-MiniLM-L6-v2 モデルは、主に英語でトレーニングされています。最終的には、ボットが他の言語もサポートできるようにしたいと考えています。


3 つ目: llama3 は命令モデルですが、ユーザーの質問への回答に重点を置くのではなく、トピック外の議論に誘導される可能性があります。70b モデルの方が適しているかもしれませんが、40GB のビデオ メモリを搭載した GPU が必要です。一方、llama3-8b は 8GB の GPU でも実行できます。

3 番目の問題はカスタム モデル (OpenAI 用語ではエージェント) を作成することで解決できる可能性がありますが、最初の 2 つの問題にはより重大な回避策が必要です。これまでに私たちが考え出した解決策は次のとおりです。

ステップバイステップ: OpenWebUI でテクニカル サポート チャットボットを設定する

まず、ドキュメントを RAG (Retrieval Augmented Generation) システムに読み込むのに適した形式に変換します。このプロセスを自動化するために、ai_text_generator という強力な bash スクリプトを作成しました。


このスクリプトは、すべてのドキュメント ディレクトリを走査し、sed、awk、perl 内の正規表現を使用して、RAG に不要な Markdown マークアップを削除して置き換えます。最後に、各ドキュメントの末尾に、 https://hostkey.com/documentationでホストされている元のドキュメントへのリンクを追加します。



このスクリプトは、OpenWebUI の RAG システムで使用するためのドキュメントを綿密に準備します。次に、そのアクションの手順の概要を示します。


  • URL 生成: 各ドキュメント ファイルの完全な URL を生成します。
  • 画像マークアップの削除: 画像に関連するすべての Markdown マークアップを削除します。
  • 注釈の削除: テキストからすべての注釈を削除します。ボタンの書式設定: Markdown の** および **構文を [ ] に変換し、ボタンとして書式設定します。
  • 見出しの削除: アウトラインや目次の作成に使用される可能性のある「>」で始まる行を削除します。
  • アイコンの削除: アイコンを表す Markdown マークアップまたはコードを削除します。
  • 太字テキスト書式: Markdown の太字テキスト書式を削除します。
  • リンクの変更: 外部リンクを保持しながら内部リンクを削除します。
  • 電子メール リンクのフォーマット: 電子メール アドレスへのリンクを再フォーマットします。
  • 空白の正規化: 最初の文字まで各行の先頭にある余分なスペースを削除します。
  • 行末変換: CRLF (Windows 行末) を UNIX 形式 (LF) に変換します。
  • 空行の削減: 1 行を超える連続する空行を削除します。
  • URL 追加: 生成された URL を各処理済みファイルの末尾に追加します。


スクリプトを実行すると、 ai_dataディレクトリには、OpenWebUI の RAG システムに読み込む準備が整った一連のファイルが含まれます。



次に、ドキュメント ベクター データベースと Ollama LLM を操作するために、OpenWebUI に新しいモデルを追加する必要があります。このモデルは、英語だけでなく、よりカジュアルな「you」(ты) トーンをサポートする必要があります。将来的には、トルコ語などの他の言語のサポートも追加する予定です。


  1. まず、管理パネル - 設定 - ドキュメントに移動します。埋め込みモデルフィールドで、 sentence-transformers/all-MiniLM-L12-v2を選択します。このリスト (https://www.sbert.net/docs/sentence_transformer/pretrained_models.html) から推奨モデルをすべてテストした結果、これが最適であることがわかりました。

  2. 埋め込みモデルフィールドの横にあるダウンロード アイコンをクリックして、ダウンロードしてインストールします。

  3. すぐに、RAG パラメータを設定します。

    • Top K = 10: これは、システムが応答を生成するときに、最も関連性の高い上位 10 件のドキュメントを考慮することを意味します。

    • チャンク サイズ = 1024: ドキュメントは処理のために 1024 トークンのチャンクに分割されます。

    • チャンクオーバーラップ = 100: 連続するチャンク間に 100 トークンのオーバーラップが発生します。



その後、ワークスペース - ドキュメントセクションに移動してドキュメントをアップロードできます。後でモデルや API リクエストに接続しやすくするために、特定のコレクション タグ (この場合は hostkey_en) を付けることをお勧めします。



次に、チャットボットのカスタム モデルを作成します。これを行うには、ワークスペース - モデルに戻り、プラス アイコンをクリックします。


チャットボットに名前を付け、基本モデル (この場合は llama3-latest) を選択します。


次に、システム プロンプトを定義します。これは、チャットボットに自分自身をどのように認識し、どのように動作するかを指示するものです。システム プロンプトには、チャットボットの役割、制限、および望ましい結果の概要が示されています。


以下は、テクニカル サポート チャットボット用に設計したシステム プロンプトです。


You are HOSTKEY an IT Support Assistant Bot, focused on providing users with IT support based on the content from knowledge base. Stay in character and maintain your focus on IT support, avoiding unrelated activities such as creative writing or engaging in non-IT discussions.


If you cannot find relevant information in the knowledge base or if the user asks non-related questions that are not part of the knowledge base, do not attempt to answer and inform the user that you are unable to assist and print text "Visit https://hostkey.com/documentation for more information" at the end.


Provide short step-by-step instructions and external links


Provide a link to relevant doc page about user question started with 'See more information here:'Add text "Visit https://hostkey.com/documentation for more information" at the end.


Example of answer: " User: How can I cancel my server?


Bot:


You can cancel your server at any time. To do this, you need to access the Invapi control panel and follow these steps:

- Go to the "Billing" tab in the specific server management menu.

- Click the [Cancel service] button.

- Describe the reason for the cancellation and select its type.

- Click the [Confirm termination] button.


Please note that for immediate cancellation, we will not refund the hours of actual server usage, including the time to provision the server itself, order software, and process the cancellation request (up to 12 hours). The unused balance will be returned to your credit balance. Withdrawal of funds from the credit balance will be made in accordance with our refund policy.


You can cancel the service cancellation request in the Billing tab using the [Revoke] button.

Additionally, if you need to cancel a service that includes an OS/software license or has a customized/non-standard configuration, please contact us via a ticketing system for manual refund processing.


See more information here: https://hostkey.com/documentation/billing/services_cancellation/ "


次に、必要なドキュメント コレクションを接続します。ナレッジセクションで、 [ドキュメントの選択]ボタンをクリックし、タグに基づいて必要なコレクションを選択します。


すぐに導入できるGPU サーバー、またはプロフェッショナル グレードの NVIDIA Tesla A100 / H100 80Gbまたは A5000 / A4000 カードを搭載したカスタム構成のサーバーをレンタルできます。ゲーミング RTX4090 カードを搭載した GPU サーバーもご利用いただけます。



また、 「Advanced Params」タブの下に隠れているいくつかの追加パラメータを設定する必要があります。 「Show」をクリックすると、これらの設定が表示されます。Temperature0.3 に、 Context Lengthを 4089 に設定します。



最後に、 「保存して更新」をクリックして、カスタム テクニカル サポート チャットボット モデルを作成します。


これで完了です。当社のチャットボットは、ユーザーのリクエストを処理する準備が整っています。丁寧で忍耐強く、24時間365日対応しています。

OpenWebUI で RAG を操作するためのヒント

以下に、留意すべき重要なヒントをいくつか示します。

  1. RAG で多数のドキュメントを扱う場合は、GPU サポート付きの OpenWebUI (ブランチ open-webui:cuda) をインストールすることを強くお勧めします。
  2. 埋め込みモデルを変更する場合 (切り替え、読み込みなど)、ドキュメントをベクター データベースに再インデックスする必要があります。RAG パラメータを変更する場合は、この作業は必要ありません。
  3. ドキュメントを追加または削除するときは、必ずカスタム モデルに移動し、それらのドキュメントのコレクションを削除して、再度追加してください。そうしないと、検索が正しく機能しないか、検索の効率が大幅に低下する可能性があります。ボットが間違った回答を提供しているのに必要な情報が記載されたドキュメントが下部のリストに表示される場合は、これが問題である可能性があります。
  4. OpenWebUI は RAG を作成するためのさまざまな形式 (pdf、csv、rst、xml、md、epub、doc、docx、xls、xlsx、ppt、ppt、txt) を認識しますが、最適なパフォーマンスを得るには、ドキュメントをプレーン テキストとしてアップロードすることがベスト プラクティスです。
  5. ハイブリッド検索は結果を改善できますが、リソースを大量に消費し、強力な GPU でも応答時間が大幅に長くなる可能性があります (20 ~ 30 ~ 40 秒以上)。これは既知の問題であり、開発者が解決策に取り組んでいます。



チャットボットのテストが終わったので、次のステップはそれを会社の既存のチャット システムに統合することです。OpenWebUI は API を提供し、Ollama のプロキシとして機能して独自の機能を追加できます。ただし、ドキュメントがまだ不足しているため、統合が少し困難になっています。


コードとコミット履歴を調べることで、API リクエストの構造化方法についていくつかの洞察が得られましたが、まだ期待どおりには機能していません。カスタム モデルを呼び出すことはできましたが、RAG 機能はありませんでした。

私たちは、RAG、Web 検索、詳細な例や説明など、開発者が約束した今後のリリースの機能を心待ちにしています。


テストプロセスでは、ドキュメントに矛盾や重複があることも明らかになりました。これにより、チャットボットのパフォーマンスを向上させ、ドキュメント全体の明確さと正確性を向上させる機会が生まれます。


すぐに導入できるGPU サーバー、またはプロフェッショナル グレードの NVIDIA Tesla A100 / H100 80Gbまたは A5000 / A4000 カードを搭載したカスタム構成のサーバーをレンタルできます。ゲーミング RTX4090 カードを搭載した GPU サーバーもご利用いただけます。