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 セットアップもデプロイされています。
プロジェクトの目標:
当初の試みは、既存のドキュメントを元の 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 つの問題にはより重大な回避策が必要です。これまでに私たちが考え出した解決策は次のとおりです。
まず、ドキュメントを RAG (Retrieval Augmented Generation) システムに読み込むのに適した形式に変換します。このプロセスを自動化するために、ai_text_generator という強力な bash スクリプトを作成しました。
このスクリプトは、すべてのドキュメント ディレクトリを走査し、sed、awk、perl 内の正規表現を使用して、RAG に不要な Markdown マークアップを削除して置き換えます。最後に、各ドキュメントの末尾に、 https://hostkey.com/documentationでホストされている元のドキュメントへのリンクを追加します。
このスクリプトは、OpenWebUI の RAG システムで使用するためのドキュメントを綿密に準備します。次に、そのアクションの手順の概要を示します。
スクリプトを実行すると、 ai_dataディレクトリには、OpenWebUI の RAG システムに読み込む準備が整った一連のファイルが含まれます。
次に、ドキュメント ベクター データベースと Ollama LLM を操作するために、OpenWebUI に新しいモデルを追加する必要があります。このモデルは、英語だけでなく、よりカジュアルな「you」(ты) トーンをサポートする必要があります。将来的には、トルコ語などの他の言語のサポートも追加する予定です。
まず、管理パネル - 設定 - ドキュメントに移動します。埋め込みモデルフィールドで、 sentence-transformers/all-MiniLM-L12-v2を選択します。このリスト (https://www.sbert.net/docs/sentence_transformer/pretrained_models.html) から推奨モデルをすべてテストした結果、これが最適であることがわかりました。
埋め込みモデルフィールドの横にあるダウンロード アイコンをクリックして、ダウンロードしてインストールします。
すぐに、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」をクリックすると、これらの設定が表示されます。Temperatureを0.3 に、 Context Lengthを 4089 に設定します。
最後に、 「保存して更新」をクリックして、カスタム テクニカル サポート チャットボット モデルを作成します。
これで完了です。当社のチャットボットは、ユーザーのリクエストを処理する準備が整っています。丁寧で忍耐強く、24時間365日対応しています。
以下に、留意すべき重要なヒントをいくつか示します。
チャットボットのテストが終わったので、次のステップはそれを会社の既存のチャット システムに統合することです。OpenWebUI は API を提供し、Ollama のプロキシとして機能して独自の機能を追加できます。ただし、ドキュメントがまだ不足しているため、統合が少し困難になっています。
コードとコミット履歴を調べることで、API リクエストの構造化方法についていくつかの洞察が得られましたが、まだ期待どおりには機能していません。カスタム モデルを呼び出すことはできましたが、RAG 機能はありませんでした。
私たちは、RAG、Web 検索、詳細な例や説明など、開発者が約束した今後のリリースの機能を心待ちにしています。
テストプロセスでは、ドキュメントに矛盾や重複があることも明らかになりました。これにより、チャットボットのパフォーマンスを向上させ、ドキュメント全体の明確さと正確性を向上させる機会が生まれます。
すぐに導入できるGPU サーバー、またはプロフェッショナル グレードの NVIDIA Tesla A100 / H100 80Gbまたは A5000 / A4000 カードを搭載したカスタム構成のサーバーをレンタルできます。ゲーミング RTX4090 カードを搭載した GPU サーバーもご利用いただけます。