Knowledge Assistantを使用して、ドキュメント上で高品質なチャットボットを作成しましょう。
このページでは、Knowledge Assistantを使用してドキュメントに関する質疑応答チャットボットを作成し、専門家からの自然言語によるフィードバックに基づいてその品質を向上させる方法について説明します。
ナレッジアシスタントとは何ですか?
Knowledge Assistant を使用すると、ドキュメントに関する質問に答え、引用を含む質の高い回答を提供するチャットボットを作成できます。ナレッジアシスタントは、高度なAIを活用し、指示型検索器のアプローチを採用することで、従来の検索拡張生成(RAG)アプローチの限界を克服し、お客様が提供するドキュメントに基づいて最高品質の回答を提供します。
ナレッジアシスタント は、次のユースケースをサポートするのに最適です。
- 製品ドキュメントに基づいてユーザーの質問に答えます。
- 人事ポリシーに関連する従業員の質問に答えます。
- サポートナレッジベースに基づいて顧客からの問い合わせに回答します。
Knowledge Assistant を使用すると、専門家からの自然言語によるフィードバックに基づいてチャット エージェントの品質を向上させ、その動作を調整できます。エクスペリエンス内で直接質問やガイドラインを提供し、エージェントを共有して他のユーザーが共同作業を行い、エージェントのパフォーマンスを向上できるようにします。
Knowledge Assistantは、アプリケーションで下流工程で使用できるエージェントエンドポイントを作成します。例えば、下の画像は、AI Playgroundでエンドポイントとチャットすることで、どのように操作できるかを示しています。書類に関する質問をエージェントにすれば、エージェントは引用文献を添えて回答してくれるでしょう。

Knowledge Assistantは、デフォルトのストレージを使用して、一時的なデータ変換、モデルのチェックポイント、および各エージェントを動作させる内部メタデータを保存します。エージェントを削除すると、エージェントに関連付けられたすべてのデータがデフォルトのストレージから削除されます。
必要条件
-
次のものを含むワークスペース。
- サーバレスコンピュート利用可能(ワークスペースでUnity Catalog使用することで有効になります)。
- Unity Catalog が有効になっている。「Unity Catalog のワークスペースを有効にする」を参照してください。
- Mosaic AI Model Servingへのアクセス。
- 非ゼロの 予算を持つサーバレス 予算ポリシー へのアクセス。
-
サポートされているリージョンのいずれかにあるワークスペース。
-
databricks-gte-large-en埋め込みモデル エンドポイントでは、AI ガードレールとレート制限を無効にする必要があります。「モデルサービング エンドポイントでのAIゲートウェイの構成」を参照してください。 -
入力データを使用する準備ができている必要があります。次のいずれかを選択できます。
- Unity Catalog のボリュームまたはボリューム ディレクトリ内のファイル。サポートされているファイルタイプは、txt、pdf、md、ppt/pptx、doc/docx です。
- 埋め込みモデルとして
databricks-gte-large-enを使用するベクトル検索インデックス。ベ クトル検索インデックスの作成を参照してください。
-
(オプション) MLflow (ベータ) の本番運用モニタリングが有効になります。 これは追跡調査を機能させるために必要です。Databricksのプレビューを管理するを参照してください。
ナレッジアシスタントエージェントの作成
へ移動ワークスペースの左側のナビゲーション ペインにある エージェント 。 Knowledge Assistant タイルから、 [ビルド] をクリックします。
ステップ 1: エージェントを構成する
[ビルド] タブで、エージェントを構成し、質問に答えるために使用する知識ソースを提供します。
-
名前 フィールドに、エージェントの名前を入力します。
-
説明 フィールドで、エージェントが実行できる操作を説明します。
-
ナレッジ ソース パネルで、ナレッジ ソースを追加します。Unity Catalog ファイルまたはベクトル検索インデックスのいずれかを指定することを選択できます。
- UC Files
- Vector Search Index
UC ファイルの場合、txt、pdf、md、ppt/pptx、および doc/docx のファイル タイプがサポートされています。50 MB を超えるファイルは、取り込み中に自動的にスキップされ、ナレッジ ベースには含まれません。
- タイプ で、[ UCファイル ]を選択します。
- ソース フィールドで、Unity Catalog のボリュームまたはファイルを含むボリューム ディレクトリを選択します。
- 名前 フィールドに、ナレッジ ソースの名前を入力します。
- [コンテンツの説明] で、エージェントがこのデータソースをいつ使用するかを理解できるように、ナレッジ ソースに含まれるコンテンツを記述します。
Vector search indexes are only supported if the index uses databricks-gte-large-en as its embedding model. When creating your vector search index, ensure you select this embedding model. For more information, see Create a vector search index.
- タイプ で、 ベクトル検索インデックス を選択します。
- ソース フィールドで、エージェントに提供するベクトル検索インデックスを選択します。
- 名前 フィールドに、ナレッジ ソースの名前を入力します。
- Doc URI Column で、情報のソースへのリンクまたは参照を含む列を選択します。エージェントは、これを引用に使用します。
- テキスト列 フィールドで、エージェントに取得させる生のテキストを含む列を指定します。
- [コンテンツの説明] で、エージェントがこのデータソースをいつ使用するかを理解できるように、ナレッジ ソースに含まれるコンテンツを記述します。
-
(オプション)ナレッジ ソースをさらに追加する場合は、[ ナレッジ ソースの追加 ] をクリックします。 最大 10 個のナレッジ ソースを提供できます。
-
(オプション) 指示 フィールドで、エージェントが応答する方法のガイドラインを指定します。
-
エージェントの作成 をクリックします。
エージェントを作成し、提供したナレッジ ソースを同期するには、最大で数時間かかる場合があります。エージェントの準備が整うと、右側のパネルに同期されたナレッジ ソースが表示されます。
ナレッジソースにファイルを更新または追加する場合は、クリックする必要があります。 エージェントが変更を取得できるように同期します。同期は増分的に行われます。たとえば、以前に同期したUnity Catalogボリュームに新しいファイルを追加すると、同期では新しく追加されたファイルのみが処理されます。
ナレッジ アシスタントの作成者だけがナレッジ ソースを同期できます。
ステップ 2: エージェントをテストする
エージェントの構築が完了したら、エージェントとチャットしてテストします。エージェントは、その知識に関連する質問に対して引用で応答する必要があります。
- ビルドタブ でエージェントと直接チャットを開始します。
- (オプション) 「Playgroundで開く」 をクリックすると、 AI Playgroundでチャットすることもできます。
- エージェントへの質問を入力します。
- その応答を評価します。
- 「 思考を表示 」をクリックして、エージェントが質問にどのように回答したかを確認します。
- 完全なトレースを表示するには、 「トレースの表示」 をクリックします。開発プロセス中に品質評価を追跡するために、UI のトレースにラベルを追加できます。
- エージェントが参照として引用しているファイルを確認するには、 [ソースの表示] をクリックします。これにより、確認できるソースのリストを含むサイドパネルが開きます。
エージェントのパフォーマンスに満足している場合は、エージェントをそのまま使い続けてください。
ステップ 3: 品質を向上させる
ナレッジアシスタントは、自然言語によるフィードバックに基づいてエージェントの動作を調整できます。設定ページを通じて専門家からフィードバックを収集し、エージェントの品質を向上させましょう。エージェント用のラベル付きデータを収集することで、エージェントの品質と動作を向上させることができます。
[例] タブで、ユーザーが尋ねる質問や、エージェントが以前に間違えた質問を追加します。あるいは、 Unity Catalogテーブルからラベル付きデータを直接インポートすることもできます。
-
ラベルに質問を追加します:
- [ + 追加 ] をクリックして質問を追加します。
- [ 質問の追加 ] モーダルに、質問を入力します。
- 追加 をクリックします。質問がUIに表示されます。
- 評価するすべての質問を追加するまで繰り返します。
- 質問を削除するには、ケバブメニューをクリックし、[ 削除 ]をクリックします。
-
質問の追加が完了したら、エージェントを他のユーザーと共有してレビューし、高品質のラベル付きデータセットを構築することができます。右上隅のケバブメニューをクリックします
権限を管理します。
専門家がアクセスしてフィードバックを提供するには、次の権限を付与する必要があります。
- エージェント設定ページからのCAN_MANAGE権限
-
ナレッジアシスタントの設定ページへのリンクを共有して、専門家からのフィードバックを集めましょう。
-
データにラベルを付けるには、質問をクリックし、表示されるペインに ガイドライン を追加します。ガイドラインは保存後すぐに適用されます。
-
構成ページまたはAI Playgroundでエージェントを再度テストし、パフォーマンスの向上を確認します。 必要に応じて、質問やガイドラインを追加して、行動の改善を続けます。
(オプション)ラベル付きデータのインポートとエクスポート
新しい質問とフィードバックを Unity Catalog テーブルから直接インポートするには:
-
「 インポート 」をクリックします。
-
[ ソース ] フィールドで、ラベル付けされたデータを含む Unity Catalog テーブルを選択します。
テーブルには、次のスキーマが必要です。
-
eval_id:string -
request:string -
guidelines:arrayitems:string
-
metadata:string -
tags:string
-
-
「 インポート 」をクリックします。
新しい質問とガイドラインは、右側のラベル付きデータ テーブルに統合されます。
ラベル付けされたデータをUnity Catalogテーブルとしてエクスポートするには:
- [エクスポート] をクリックします。
- [ スキーマ] フィールドで、データを保存する Unity Catalog スキーマの場所を選択します。
- [ テーブル名] フィールドに、テーブルの名前を入力します。
- [エクスポート] をクリックします。
ラベル付けされたデータで新しいテーブルが作成されます。
ナレッジの管理 ソース
ナレッジアシスタントを作成した後、エージェントを再作成することなく、ナレッジソースの追加、削除、更新を行うことができます。知識アシスタントの作成者のみが、知識ソースを管理できます。
複数の変更を一度に下書きできます。たとえば、新しいセクションを追加したり、既存のセクションを削除したり、別のセクションの説明を更新したりできます。そして、 [保存して更新]を クリックすると、すべての変更が同時に適用されます。
ナレッジソースを追加する
- エージェント設定ページで、 「ソース」 タブに移動します。
- 既存の知識ソースカードの下にある「 +追加」 をクリックしてください。
- 追加するナレッジ ソースのタイプ ( Unity Catalogファイルまたは地下鉄検索インデックス) を選択し、 「ステップ 1: エージェントを構成する」の説明に従って構成します。
- 「保存して更新」 をクリックしてください。
エージェントは新しい知識ソースの同期を開始します。既存の知識やデータには影響はありません。
知識アシスタント1人につき、最大10個の知識ソースを指定できます。ファイルソースを追加すると、データ取り込みジョブが開始されますが、データ量によっては時間がかかる場合があります。
ナレッジソースを削除する
- エージェント設定ページで、 「ソース」 タブに移動します。
- 削除したい知識ソースカードにカーソルを合わせ、ゴミ箱アイコンをクリックします。
右上隅にあります。
- 確認ダイアログで 「確認」 をクリックしてソースを削除します。
- 「保存して更新」 をクリックしてください。
知識パッケージとその関連データはエージェントから削除されます。 この操作は容易に元に戻すことはできません。なぜなら、ソースを再度追加するには、データを再取り込みする必要があるからです。
最後の知識を削除することはできません。 知識アシスタントは常に少なくとも1つの知識を持っていなければならない。
知識ソースの詳細を更新する
既存の知識ソースの名前と説明を更新できます。これらの詳細は、エージェントが各パッケージをいつ使用すべきかを理解するのに役立ちます。
- エージェント設定ページで、 「ソース」 タブに移動します。
- 編集したい知識ソースカードにカーソルを合わせ、鉛筆アイコンをクリックします。
- 名前 または 説明 欄を更新してください。
- 「保存して更新」 をクリックしてください。
権限を管理する
デフォルトでは、エージェントの作成者とワークスペース管理者のみがエージェントへのアクセス権限を持っています。他のユーザーがエージェントを編集したり照会したりできるようにするには、明示的に権限を付与する必要があります。
エージェントの権限を管理するには:
-
エージェント ページで、担当エージェントを開いてください。
-
上部の
ケバブメニュー。
-
[権限の管理] をクリックします。
-
[権限設定] ウィンドウで、ユーザー、グループ、またはサービスプリンシパルを選択します。
-
付与する権限を選択してください:
- 管理可能 :エージェントの管理が可能で、権限の設定、エージェント構成の編集、品質の向上などを行うことができます。
- クエリ可能 : AI Playgroundおよび API を介してエージェントエンドポイントにクエリを実行できます。この権限しか持たないユーザーは、エージェントページでエージェントを表示または編集することはできません。
-
[ 追加 ] をクリックします。
-
保存 をクリックします。
知識アシスタントの作成者のみが、知識ソースの同期と管理(ソースの追加、削除、更新を含む)を行うことができます。
エージェント エンドポイントをクエリする
エージェントページで、 右上のエージェント ステータスを参照して、デプロイされたエージェント エンドポイントを取得し、エンドポイントの詳細を確認します。
作成されたナレッジ アシスタント エンドポイントをクエリする方法は複数あります。AI Playground で提供されているコード例を開始点として使用します。
- [ビルド] タブで、[プレイ グラウンドで開く] をクリックします。
- Playground から [ コードを取得] をクリックします。
- エンドポイントの使用方法を選択します。
- curl を使用してエンドポイントをクエリするコード例として、 [Curl API ] を選択します。
- Python を使用してエンドポイントと対話するためのコード例として、 Python API を選択します。
Databricks SDK を使用してナレッジ アシスタントを管理する
Databricks SDK for Pythonを使用すると、ナレッジ アシスタントとそのナレッジ ソースをプログラムで作成および管理できます。利用可能な API 操作の完全なリストについては、 Knowledge Assistants API リファレンスを参照してください。
ナレッジアシスタントを作成する
次の例では、表示名、説明、および手順を含む新しいナレッジ アシスタントを作成します。
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.knowledgeassistants import KnowledgeAssistant
w = WorkspaceClient()
knowledge_assistant = KnowledgeAssistant(
display_name="<display-name>",
description="<description>",
instructions="<instructions>",
)
created = w.knowledge_assistants.create_knowledge_assistant(knowledge_assistant=knowledge_assistant)
print(created)
<display-name> 、 <description> 、 <instructions>ナレッジ アシスタントの値に置き換えます。
ナレッジの管理 ソース
SDKを使用すると、既存のナレッジアシスタントにナレッジソースを追加、削除、更新できます。
ナレッジソースを追加する
次の例ではUnity Catalogファイルの知識を既存の知識アシスタントに追加します。
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.knowledgeassistants import KnowledgeSource, FilesSpec
w = WorkspaceClient()
files_source = KnowledgeSource(
display_name="<knowledge-source-name>",
description="<knowledge-source-description>",
source_type="files",
files=FilesSpec(
path="<volume-path>",
),
)
created_source = w.knowledge_assistants.create_knowledge_source(
parent="knowledge-assistants/<knowledge-assistant-id>",
knowledge_source=files_source,
)
print(created_source)
代わりにベクトル検索インデックスソースを追加するには、 IndexSpecを使用します。
from databricks.sdk.service.knowledgeassistants import KnowledgeSource, IndexSpec
index_source = KnowledgeSource(
display_name="<knowledge-source-name>",
description="<knowledge-source-description>",
source_type="index",
index=IndexSpec(
index_name="<catalog.schema.index-name>",
text_col="<text-column>",
doc_uri_col="<doc-uri-column>",
),
)
created_source = w.knowledge_assistants.create_knowledge_source(
parent="knowledge-assistants/<knowledge-assistant-id>",
knowledge_source=index_source,
)
print(created_source)
ナレッジソースを削除する
以下の例では、ナレッジアシスタントからナレッジソースを削除します。
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.knowledge_assistants.delete_knowledge_source(
name="knowledge-assistants/<knowledge-assistant-id>/knowledge-sources/<knowledge-source-id>",
)
ナレッジソースを更新する
以下の例は、既存のナレッジソースの表示名と説明を更新するものです。
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.knowledgeassistants import KnowledgeSource
w = WorkspaceClient()
updated_source = w.knowledge_assistants.update_knowledge_source(
name="knowledge-assistants/<knowledge-assistant-id>/knowledge-sources/<knowledge-source-id>",
knowledge_source=KnowledgeSource(
display_name="<new-name>",
description="<new-description>",
),
update_mask="display_name,description",
)
print(updated_source)
update_maskで許可されているフィールド: display_name 、 description 。
ナレッジアシスタントをワークスペース間で移行する
SDKを使用すると、ナレッジアシスタントをあるワークスペースから別のワークスペースに複製できます。次の例では、ソース ワークスペースからナレッジ アシスタントを取得し、そのナレッジ ソースとともにターゲット ワークスペースに再作成します。
ターゲット ワークスペースで参照されるナレッジ ソース (一括検索インデックスやUnity Catalogボリュームなど) は、ナレッジ ソースを作成する前にターゲット ワークスペースにすでに存在している必要があります。
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.knowledgeassistants import (
KnowledgeAssistant,
KnowledgeSource,
IndexSpec,
FilesSpec,
)
# Retrieve the knowledge assistant from the source workspace
source_client = WorkspaceClient()
ka = source_client.knowledge_assistants.get_knowledge_assistant(name="<source-knowledge-assistant-name>")
print(ka.display_name, ka.description, ka.instructions)
# Set up the client for the target workspace
target_client = WorkspaceClient(
host="<target-workspace-url>",
token="<target-workspace-token>",
)
# Create the knowledge assistant in the target workspace
knowledge_assistant = KnowledgeAssistant(
display_name=ka.display_name,
description=ka.description,
instructions=ka.instructions,
)
created = target_client.knowledge_assistants.create_knowledge_assistant(knowledge_assistant=knowledge_assistant)
print(created)
# Re-create knowledge sources in the target workspace
index_source = KnowledgeSource(
display_name="<knowledge-source-name>",
description="<knowledge-source-description>",
source_type="index",
index=IndexSpec(
index_name="<catalog.schema.index-name>",
text_col="<text-column>",
doc_uri_col="<doc-uri-column>",
),
)
files_source = KnowledgeSource(
display_name="<knowledge-source-name>",
description="<knowledge-source-description>",
source_type="files",
files=FilesSpec(
path="<volume-path>",
),
)
created_index_source = target_client.knowledge_assistants.create_knowledge_source(
parent=created.name,
knowledge_source=index_source,
)
print(created_index_source)
created_files_source = target_client.knowledge_assistants.create_knowledge_source(
parent=created.name,
knowledge_source=files_source,
)
print(created_files_source)
プレースホルダー値を、ソース ワークスペースとターゲット ワークスペースの適切な値に置き換えます。<source-knowledge-assistant-name>はknowledge-assistants/<knowledge-assistant-id>形式に従います。
ナレッジアシスタントを評価する
このノートブックでは、キュレーションされた評価データセットとカスタム スコアラーを使用して Databricks Knowledge Assistant を評価する方法を示します。
制限
-
英語のみがサポートされています。
-
50 MB を超えるファイルは、取り込み中に自動的にスキップされ、ナレッジ ベースには含まれません。
-
名前がアンダースコア (
_) またはピリオド (.) で始まるファイルは、取り込み中に自動的にスキップされ、ナレッジ ベースには含まれません。 -
Unity Catalog テーブルはサポートされていません。
-
埋め込みモデルとして
databricks-gte-large-enを使用するベクトル検索インデックスのみがサポートされます。 -
databricks-gte-large-enモデル エンドポイントでは AI ガードレールとレート制限を無効にする必要があります。「モデルサービング エンドポイントでのAIゲートウェイの構成」を参照してください。 -
トレースを機能させるには、 MLflow (Beta) の本番運用モニタリングを有効にする必要があります。 トレースが必要ない場合は、このプレビューを有効にする必要はありません。「Databricks プレビューの管理」を参照してください。