ナレッジベースは、Dialogflow に提供するナレッジ ドキュメントのコレクションです。 ナレッジ ドキュメントには、エンドユーザーとの会話に役立てることができる情報が含まれています。 Dialogflow の一部の機能では、エンドユーザー表現に対するレスポンスを検索する際に、ナレッジベースを使用します。 このガイドでは、ナレッジベースの作成と管理について説明します。
ナレッジベースはエージェント レベルで適用されます。
準備
このガイドを読む前に、次の手順を行ってください。
- Dialogflow の基本をご覧ください。
- 手順に沿って設定してください。
ナレッジベースを作成する
以下のサンプルは、Dialogflow コンソール、REST API(コマンドラインを含む)、またはクライアント ライブラリを使用してナレッジベースを作成する方法を示しています。API を使用するには、KnowledgeBase
タイプの create
メソッドを呼び出します。
ウェブ UI
Dialogflow コンソールを使用してナレッジベースを作成します。- Dialogflow ES コンソールに移動します。
- エージェントを選択します。
- 左側のサイドバー メニューで [Knowledge] をクリックします。
- [Create Knowledge Base] をクリックします。
- ナレッジベース名を入力します。
- [保存] をクリックします。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: GCP プロジェクト ID
- KNOWLEDGE_BASE_DISPLAY_NAME: 目的のナレッジベース名
HTTP メソッドと URL:
POST https://dialogflow.googleapis.com/v2beta1/projects/PROJECT_ID/knowledgeBases
リクエストの本文(JSON):
{ "displayName": "KNOWLEDGE_BASE_DISPLAY_NAME" }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "name": "projects/PROJECT_ID/knowledgeBases/NDA4MTM4NzE2MjMwNDUxMjAwMA", "displayName": "KNOWLEDGE_BASE_DISPLAY_NAME" }
name
フィールドの値をメモしておきます。これが新しいナレッジベースの名前です。knowledgeBases
の後のパスセグメントは新しいナレッジベース ID です。この ID を以下のリクエストに保存します。
Java
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
ナレッジベースにドキュメントを追加する
作成した新しいナレッジベースには、まだドキュメントがないため、ここで追加します。サポートされるすべてのコンテンツ オプションの説明については、以下のサポートされるコンテンツをご覧ください。この例については、Cloud Storage に関するよくある質問をご覧ください。
以下のサンプルは、Dialogflow コンソール、REST API(コマンドラインを含む)、またはクライアント ライブラリを使用してナレッジ ドキュメントを作成する方法を示しています。API を使用するには、Document
タイプの create
メソッドを呼び出します。
ウェブ UI
Dialogflow コンソールを使用してナレッジ ドキュメントを作成します。- 前の手順からの続きではない場合は、ナレッジベースの設定画面に移動します。
- Dialogflow ES コンソールに移動します。
- エージェントを選択します。
- 左側のサイドバー メニューで [Knowledge] をクリックします。
- ナレッジベース名をクリックします。
- [New Document] または [Create the first one] をクリックします。
- ドキュメント名を入力します。
- [Mime Type] で [text/html] を選択します。
- ナレッジタイプのよくある質問を選択します。
- データソースの URL を選択します。
- [URL] フィールドに「https://cloud.google.com/storage/docs/faq」と入力します。
- [CREATE] をクリックします。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: GCP プロジェクト ID
- KNOWLEDGE_BASE_ID: 前回のリクエストから返されたナレッジベース ID
- DOCUMENT_DISPLAY_NAME: 目的のナレッジ ドキュメント名
HTTP メソッドと URL:
POST https://dialogflow.googleapis.com/v2beta1/projects/PROJECT_ID/knowledgeBases/KNOWLEDGE_BASE_ID/documents
リクエストの本文(JSON):
{ "displayName": "DOCUMENT_DISPLAY_NAME", "mimeType": "text/html", "knowledgeTypes": "FAQ", "contentUri": "https://cloud.google.com/storage/docs/faq" }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "name": "projects/PROJECT_ID/operations/ks-add_document-MzA5NTY2MTc5Mzg2Mzc5NDY4OA" }
operations
の後のパスセグメントは、オペレーション ID です。
Java
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
ドキュメントの作成は長時間実行されるオペレーションであるため、完了までにかなりの時間がかかることがあります。このオペレーションのステータスをポーリングして、完了したかどうかを確認できます。完了すると、オペレーションに新たに作成されたドキュメント ID が含まれます。今後の処理に備えてこの ID を保存してください。詳しくは、長時間実行オペレーションをご覧ください。
ナレッジ ドキュメントを管理する
ナレッジ ドキュメントのコンテンツを更新する
ナレッジ ドキュメントが参照するコンテンツを更新した場合、ナレッジ ドキュメントは、自動的に更新されない場合があります。コンテンツが公開 URL として提供されていて、ドキュメントの [自動再読み込みを有効にする] オプションがオンになっている場合にのみ、コンテンツは自動的に更新されます。
Cloud Storage やパブリック URL のドキュメント コンテンツを手動で更新するには、Document
型の reload
メソッドを呼び出します。
アップロードした未加工のコンテンツを手動で更新するには、Document
型の delete
メソッドと create
メソッドを使用してドキュメントを再作成します。
ナレッジ ドキュメントを一覧表示する
ナレッジベースのすべてのナレッジ ドキュメントを一覧表示できます。API を使用するには、Document
タイプの list
メソッドを呼び出します。
ナレッジ ドキュメントを削除する
ナレッジベースのナレッジ ドキュメントを削除できます。API を使用するには、Document
タイプの delete
メソッドを呼び出します。ドキュメント ID がない場合は、前述のようにドキュメントを一覧表示できます。
サポートされるコンテンツ
サポートされているナレッジ ドキュメント タイプは、次のとおりです。
- よくある質問: HTML または CSV のいずれかの形式の質問と回答のペアがドキュメント コンテンツに含まれています。よくある質問の一般的な HTML 形式は正確に解析されますが、通常とは異なる形式は解析できない可能性があります。CSV では、最初の列に質問、2 番目の列に回答を入れます。ヘッダーは付けないでください。この明示的な形式のため、常に正確に解析されます。
- 抽出に関する QA: 非構造化テキストが抽出され、質問の回答に使用されるドキュメント。
次の表は、サポートされている MIME タイプをナレッジタイプとソースごとにまとめたものです。
ナレッジタイプ / ソース | アップロードされるファイル(Document.content、非推奨) | アップロードされるファイル(Document.raw_content、推奨) | Cloud Storage からのファイル(Document.contentUri) | 公開 URL からのファイル(Document.contentUri) |
---|---|---|---|---|
よくある質問 | text/csv | text/csv | text/csv | text/html |
抽出に関する QA | text/plain、text/html | text/plain、text/html、application/pdf | text/plain、text/html、application/pdf | なし |
ドキュメントのコンテンツに関しては、次の既知の問題点、制限事項、おすすめの方法があります。
全般:
- 公開 URL からのファイルは、検索インデックスに存在するように、Google 検索インデクサによってクロールされている必要があります。これは Google Search Console で確認できます。このインデクサはコンテンツを最新の状態には保たないことに注意してください。ソース コンテンツが変更された場合は、ナレッジ ドキュメントを明示的に更新する必要があります。
- CSV ファイルでは、区切り文字としてカンマを使用する必要があります。
- 信頼度スコアはまだ、よくある質問とナレッジベース記事との間で調整されていないため、よくある質問とナレッジベース記事の両方を使用する場合に最良の結果が最高になるとは限りません。
- Dialogflow によってレスポンスが作成されるときに、コンテンツから HTML タグが削除されます。したがって、可能であれば HTML タグを避けて書式なしテキストを使用することをおすすめします。
- Google アシスタントのレスポンスでは、チャットバブルあたり 640 文字という上限があるため、長い回答は Google アシスタントとの統合時に切り捨てられます。
- ドキュメントの最大サイズは 50 MB です。
- Cloud Storage のファイルを使用するときは、ユーザー アカウントまたはサービス アカウントからアクセスできるパブリック URI またはプライベート URI を使用してください。
よくある質問に固有の事項:
- CSV では、最初の列に質問、2 番目の列に回答を入れます。ヘッダーは付けないでください。
- CSV が最も正確に解析されることから、可能な限り CSV を使用してください。
- パブリック HTML コンテンツの QA ペアが 1 つだけというケースはサポートされません。
- 1 つのドキュメント内の QA ペアの数が 2,000 を超えてはなりません。
- 重複する質問の回答がそれぞれ異なるというケースはサポートされません。
- どのよくある質問ドキュメントでも使用できます。よくある質問パーサーは、ほとんどのよくある質問形式を処理できるためです。
抽出に関する QA に固有の事項:
- 現在、抽出に関する QA は試験運用版です。このベースとなっているのは、Google の検索とアシスタントなどのプロダクトですでに試用されテストされた、類似のテクノロジーです。Dialogflow でどのように機能しているかについて、フィードバックをお寄せください。
- コンテンツのテキストが高密度の場合に、最も良好に動作します。単一センテンスの段落が多数あるコンテンツは避けてください。
- 表とリストはサポートされていません。
- 1 つのドキュメントの中の段落数が 2,000 を超えないようにしてください。
- 記事が長すぎる場合は、複数の小さな記事に分割します。記事が複数の問題を扱っている場合は、個々の問題をより短い記事に分割できます。記事に 1 つの問題のみを記載している場合は、問題の説明に焦点を当てて解決してください。
- 記事の中核となる内容(問題の説明および解決策)のみを提供するのが理想的です。著者名、変更履歴、関連リンク、広告などの追加コンテンツは重要ではありません。
- 記事が役立つ問題や、この記事で解説するクエリの例を含めるようにしてください。
Cloud Storage の使用
コンテンツが公開されていない場合は、Cloud Storage にコンテンツを保存することをおすすめします。ナレッジ ドキュメントを作成するときは、Cloud Storage オブジェクトの URL を指定します。
Cloud Storage バケットとオブジェクトの作成
Cloud Storage バケットを作成する場合は、次の手順を行います。
- Dialogflow で使用する GCP プロジェクトが選択されていることを確認します。
- Dialogflow API へのアクセスに通常使用するユーザー アカウントやサービス アカウントに、バケット オブジェクトに対する読み取り権限があることを確認します。
- Standard Storage クラスを使用します。
- バケットのロケーションを現在地に最も近い場所に設定します。ロケーション ID(例:
us-west1
)が必要となる API 呼び出しもあるため、選択した ID をメモしておきます。
Cloud Storage クイックスタートの手順に沿って、バケットを作成し、ファイルをアップロードします。
ナレッジベース ドキュメントへの Cloud Storage オブジェクトの提供
コンテンツを提供するには、次の手順を行います。
- ナレッジベースを上記に従って作成します。
- ナレッジ ドキュメントを上記に従って作成します。
Document
タイプのcreate
メソッドを呼び出す場合は、Cloud Storage ドキュメントの URL にcontentUri
フィールドを設定します。この URL の形式はgs://bucket-name/object-name
です。