はじめに
Danswerはオープンソースのエンタープライズ文書検索AIアシスタントで、チームの文書、アプリ、人に接続し、インテリジェントなチャットインターフェイスと統一検索機能を通じて、統一検索と自然言語クエリ回答を提供するように設計されています。ユーザーデータとチャットログが完全にユーザーによって管理されることを保証します。モジュール設計と容易な拡張性により、チームのナレッジ管理とコラボレーションに理想的なツールとなっています。
機能一覧
- チャット・インターフェース文書との対話、対話する特定の文書を選択します。
- カスタマイズされたAIアシスタントさまざまなヒントや知識ベースを持つAIアシスタントを作成します。
- ドキュメント検索自然言語クエリに対する文書検索とAI回答を提供。
- マルチコネクターGoogle Drive、Confluence、Slackなどの一般的な作業ツールとの接続をサポート。
- Slackとの統合Slackで直接回答や検索結果を得ることができます。
- ユーザー認証ドキュメントレベルのアクセス管理を提供します。
- 役割管理管理者と一般ユーザーの役割管理をサポートします。
- チャットログの永続性チャットログを保存して、フォローアップの問い合わせに利用できます。
- UIコンフィギュレーションAIアシスタントやプロンプトを設定するためのユーザーインターフェースを提供。
- マルチモーダルサポート画像、動画などとの対話に対応(予定)。
- ツール呼び出しとプロキシ設定ツールコールとエージェント設定オプションを提供(予定)。
ヘルプの使用
設置プロセス
- ローカル展開::
- Dockerをダウンロードしてインストールする。
- DanswerのGitHubリポジトリをクローンする。
- ターミナルでプロジェクト・ディレクトリに移動し、以下を実行する。
docker-compose up
命令だ。 - ブラウザを開き、次のサイトにアクセスする。
http://localhost:8000
Danswerを使い始めた。
- クラウド展開::
- 仮想マシンにDockerをインストールする。
- DanswerのGitHubリポジトリをクローンする。
- ターミナルでプロジェクト・ディレクトリに移動し、以下を実行する。
docker-compose up
命令だ。 - ドメイン名とSSL証明書を設定し、安全なアクセスを確保する。
- Kubernetesのデプロイメント::
- Kubernetesクラスタのインストールと設定。
- DanswerのGitHubリポジトリをクローンする。
- プロジェクト・ディレクトリでKubernetesデプロイメント・ファイルを見つけて、適切なkubectlコマンドを実行してデプロイする。
使用ガイドライン
- チャット・インターフェース::
- Danswerウェブアプリケーションを開き、ログインしてチャット画面に移動します。
- 対話したい文書を選択し、自然言語による質問を入力すると、Danswerが関連する回答を提供する。
- カスタマイズされたAIアシスタント::
- 管理者インターフェイスで、新しいAIアシスタントを作成します。
- アシスタントのヒントとナレッジベースを設定し、設定を保存します。
- チャット画面で会話するAIアシスタントを選ぶ。
- ドキュメント検索::
- 検索バーに自然言語によるクエリを入力すると、Danswerは関連文書とAIが生成した回答を返す。
- 検索結果のフィルタリングと並べ替えに対応し、必要な情報を素早く見つけることができます。
- Slackとの統合::
- SlackにDanswerアプリをインストールする。
- DanswerのSlackへの接続を設定し、関連チャンネルへのアクセスを許可する。
- Slackに直接クエリを入力すると、Danswerが検索結果と回答を返す。
- ユーザー認証と役割管理::
- 管理者インターフェイスでユーザーを追加および管理します。
- データのセキュリティを確保するために、ユーザーのアクセス権と役割を設定します。
- チャットログの永続性::
- すべてのチャットは自動的に保存され、ユーザーはいつでも履歴を見ることができる。
- チャットログの検索とフィルタリングをサポートし、過去の会話を簡単に見つけることができます。
注目の機能
- 効率的な検索BM-25と接頭辞を意識した埋め込みモデルを組み合わせて、最適なハイブリッド検索体験を提供する。
- カスタムモデルカスタムのディープラーニングモデルや、ユーザーからのフィードバックによる学習にも対応。
- 複数の配備オプションローカル、クラウド、Kubernetesのデプロイをサポートし、さまざまな規模のチームのニーズに柔軟に対応します。
- マルチモーダルサポート将来のバージョンでは、画像や動画などとの対話をサポートし、ユーザー体験を向上させる予定です。
- ツール呼び出しとプロキシ設定さまざまなチームのニーズに対応するため、柔軟なツール呼び出しとエージェント設定オプションを提供します。
- 組織への理解と専門家のアドバイスDanswerはチーム内のエキスパートを認識し、適切なアドバイスを提供することで、チームのコラボレーションを向上させます。
システム概要
さまざまなシステムコンポーネントとプロセスの説明
このページでは、Danswerがどのように機能するのかを高いレベルから説明します。その目的は、私たちのデザインをより透明なものにすることです。そうすることで、Danswerを使用する際に自信を持つことができます。
あるいは、システムをカスタマイズしたり、オープンソースの貢献者になりたいのであれば、ここから始めるのがいいだろう。
システムアーキテクチャ
Danswerが単一のインスタンスにデプロイされようが、コンテナ・オーケストレーション・プラットフォームにデプロイされようが、データの流れは同じである。ドキュメントはコネクターを通じて取り込まれ、処理された後、システム・コンテナ内で稼働するVespa/Postgresに永続的に保存される。
機密データがDanswerのセットアップから離れるのは、回答を生成するためにLLMを呼び出すときだけです。LLMとの通信は暗号化されます。LLM API上のデータの永続性は、使用しているLLMホスティングサービスの条件に依存します。
また、Danswerは非常に限定的で匿名化されたテレメトリーデータを持っており、ボトルネックや信頼性の低いデータコネクターを特定することで、システムを改善するのに役立ちます。DISABLE_TELEMETRY環境変数をTrueに設定することで、テレメトリーをオフにすることができます。
埋め込みストリーム
各文書は「チャンク」と呼ばれる小さなパーツに分割される。
文書全体ではなくブロックをLLMに渡すことで、文書の関連部分のみを渡し、モデルのノイズを減らすことができる。さらに、LLMサービスは通常トークンごとに課金されるため、これは費用対効果を大幅に改善する。最後に、文書全体ではなくブロックを埋め込むことで、各ベクトル埋め込みは限られた情報量しかエンコードできないため、より詳細な情報を保持することができる。
マイクロブロックを追加することで、このコンセプトはさらに深まる。異なるサイズを埋め込むことで、Danswerは高レベルのコンテキストと詳細を取得することができる。ブロックごとに複数のベクトルを生成すると、ハードウェアのパフォーマンスが低い場合にドキュメントのインデックス作成が遅くなる可能性があるため、マイクロブロックは環境変数でオン/オフすることもできます。
エンベッディング・モデルの選択にあたっては、最新のデュアル・エンコーダを使用した。このエンコーダは、文書検索時間を秒以下に保ちながら、CPUで実行できるほど小さい。
お問い合わせの流れ
このフローは、研究コミュニティやオープンソースコミュニティからの最新の進歩を活用するために、検索パイプラインの能力を押し上げる努力を続けているため、通常更新される。また、いくつの文書を検索するか、いくつの文書を並べ替えるか、どのモデルを使うか、どのブロックをLLMに渡すかなど、このフローのパラメーターの多くは設定可能である。