1. 前に書く
なぜエンタープライズナレッジベース、ナレッジ質疑応答検索システムを構築する必要があるのか、エンタープライズアプリケーションにおける既存の GPT モデルの欠点については、今日は繰り返しません。ナレッジ ベースの構築については基本的に説明されていますが、興味がある場合は、歴史的な記事を読んで調べることができます。
今日のトピックに直接進み、優れたオープン ソース プロジェクトDanswerを紹介します。他のオープン ソース製品と比較すると、Danswer の設計に関して確かな利点と参照点があり、その中で最も言及する価値のあるものは次のとおりです。コネクタコネクタ。現在、公式は12に組み込みコネクタを提供しています。このコネクタを使用すると、知識の検索や質問応答をインデックス作成のためにベクトル データベースに追加するために必要なドキュメントを簡単に追加できます。
2. Answerの基本的な紹介
Answer を使用すると、内部文書について自然言語で質問し、ソース資料内の引用や参照によって裏付けられた確かな回答を得ることができるため、得られた結果を常に信頼できます。Slack、GitHub、Confluence などの多くの人気ツールに接続できます。
2.1. アンサーの利点は何ですか?
-
完全にオープン ソース ( MIT ライセンス) で、データ プライバシーとセキュリティを備えた無料で使用でき、完全にローカルに展開できます。
-
GPT、HuggingFace、GPT4All、Llama cpp、さらにはカスタムのセルフホスト モデルなどのさまざまな LLM モデルをプラグ アンド プレイできます。
-
ドキュメント アクセス制御、フロントエンド UI、管理ダッシュボード、ドキュメント更新のポーリング、柔軟な展開オプションなど、すぐに使える重要な機能が付属しています。
-
Slack、GitHub、GoogleDrive、その他 12のツールへのコネクタの素晴らしいリスト。
-
直接質問すると、ドキュメントを開かずに質問の回答が得られます。回答は GPT-4 (または選択したセルフホスト モデル) によって提供され、各回答には引用と参考文献が添付されているため、常に回答が得られると信頼できます。
-
Answer は、最先端の大規模言語モデルを使用して、最も関連性の高いドキュメントを見つけます。
-
カスタムの深層学習モデルは、ユーザーの意図に基づいて検索を最適化します。スマートなテキストチャンク化により、細かい文字が失われることも防ぎます。
デフォルトでは、Danswer は OpenAI の GPT シリーズ モデルを使用します。必要に応じて、Danswer で最近人気のある Llama 2 モデルなどのオープン ソース モデルを使用することもできます。
3. 回答の実施原理
Danswer は、オープンソースの NLP と人工知能を生成するための最新テクノロジーを組み合わせたもので、ユーザーのクエリ リクエストの実行から結果のフィードバックに至るまでの Danswer のプロセスと原理は次のとおりです。
1) ユーザーがクエリを送信すると、まずユーザー インテント モデルによって処理され、キーワード検索とセマンティック検索のどちらを使用するかが決定されます。モデルは、DistilBert チェックポイントを使用し、GPT ヒントから生成されたデータセットを使用し、悪い例を手動で除外して微調整されました。
2)セマンティック検索プロセスは、検索と並べ替えの 2 つのステップに分かれています。
-
検索は、デュアル エンコーダー モデルを使用してテキストを埋め込むことによって行われます。ベクトルは Qdrant ベクトル データベースに保存され、クエリ時に同じ方法でユーザー クエリを投影することによってフェッチされます。取得中に実行される操作には、チャンク間の重複を含むコンテキストを意識したドキュメントのチャンク化、および異なるスケールでの複数回のチャンクの埋め込みが含まれます。より詳細なコンテキストを表示するには一度に 512 個のマーカーを使用し、より詳細な詳細を表示するには 128 個のマーカーを使用します。
-
再ランキングでは、別のモデルのセットがアンサンブルとして使用されました。最良の再ランキング結果は、たとえ小規模なモデルであっても、さまざまなデータセットでより優れたパフォーマンスを発揮する複数のモデルを組み合わせることで得られ、ステップ全体が高速化されます。
3) 最後に、文書の最も関連性の高い部分が生成モデルに渡され、回答の引用も提供するように求められます。その後、引用はソース文書と照合され、回答とともにユーザーに表示されます。
4. 回答の迅速な展開
Danswer は、単一インスタンスまたは Kubernetes 経由で任意のクラウドに簡単にデプロイできる Docker コンテナを提供します。このデモでは、Docker Compose を使用して Danswer をローカルで実行します。
- まずコードをプルします。
git clone https://github.com/danswer-ai/danswer.git
- 次に、展開ディレクトリに移動します。
cd danswer/deployment/docker_compose
- [オプション]デフォルトの Danswer モデルは GPT-3.5-Turbo であるため、それを使用する場合は何も変更する必要はありません。
Llama 2 のようなオープン ソース モデル API を使用する場合は、.env ファイルを作成して、新しい Llama 2 エンドポイントを使用するように Answer を構成することで、デフォルトの一部をオーバーライドできます。
INTERNAL_MODEL_VERSION=request-completion # 将Danswer设置为使用requests而不是客户端库与LLM进行接口交互
GEN_AI_HOST_TYPE=colab-demo # 将请求的头/主体设置为模型端点所期望的格式
GEN_AI_ENDPOINT=<REPLACE-WITH-YOUR-NGROK-PUBLIC-URL>/generate # 设置模型端点URL
- 回答を開始します (Docker バージョン ≥= 1.13.0 を使用):
docker compose -f docker-compose.dev.yml -p danswer-stack up -d --pull always --force-recreate
- 完了すると、Danswer は http://localhost:3000 で利用できるようになります。
Danswer の詳細ドキュメントについては、「クイックスタート - Danswer ドキュメント」を参照してください。
5. Danswer アプリケーションの実践
5.1. 回答にドキュメントを追加する
Danswer は、Danswer をデータ ソースに接続するための 12 種類のコネクタを提供し、組織の知識に基づいて回答できるようにします。すべての組み込みコネクタが要件を満たしていない場合は、公式の要件を提供することもできます。オープンソースコードに基づいて実装されています。さまざまなデータソースを Danswer に接続するには、管理ページから行います。右上隅の [管理者パネル] メニューをクリックして設定します。
各 Connectors コネクタの具体的な構成と使用方法については、公式 Web サイトのドキュメントで詳細に説明されています。
ここでは、デモンストレーションするために Web コネクタ データ ソースを追加します。一般にアクセス可能な URL を Web コネクタに追加するだけで、Danswer がドキュメントのコンテンツをクロールし、ベクトル データベースに保存します。
5.2. Answer から回答を取得する
データ ソースを追加した後、[回答] アイコンをクリックしてホーム ページに戻り、ドキュメント関連の質問を直接入力してインデックスを作成できるようになります。
6. 結論
Danswer は、優れたオープン ソースのエンタープライズ ナレッジ質問応答システムであり、コネクタを使用することで、さまざまなドキュメントをベクトル データベースに簡単に追加してインデックスを付けることができます。これにより、ユーザーは内部文書について自然言語で質問し、信頼性の高い有益な回答を得ることができます。Danswer の利点には、完全にオープン ソース、無料で使用できること、データ プライバシー セキュリティ、さまざまな LLM モデルのプラグ アンド プレイのサポートが含まれます。また、多くの一般的なツール (Slack、GitHub、Confluence など) とシームレスに接続して、企業に効率的で信頼性の高いナレッジ検索および質問応答ソリューションを提供できます。
7. 参考文献
-
Danswer GitHub:
-
https://github.com/danswer-ai/danswer
-
Danswer ドキュメント:
-
ナスワーコネクタ:
-
https://github.com/danswer-ai/danswer/blob/main/backend/danswer/connectors/README.md