Skip to main content
このガイドでは、Guru などの外部システムのドキュメントを Profound の Knowledge Base に同期する方法を説明します。すべての例で API キーによる認証が必要です。
Knowledge Base は Profound アプリで作成する必要があります。API から Knowledge Base を作成することはできません。your_api_key、your_knowledge_base_id、your_organization_id は実際の値に置き換えてください。

ドキュメント同期の手順

外部システムのドキュメントやフォルダをミラーリングするには、次の流れで操作します。
  1. List Knowledge Bases を使用して Knowledge Base の ID を確認します。
  2. 必要に応じて Add Folder を使用して、ソースのフォルダをミラーリングします。
  3. Add Document を使用して、各ソースドキュメントをアップロードします。
  4. 冪等な再同期には Update Document を使用します。
  5. ソースシステムからコンテンツが削除された場合は、Delete Document または Delete Folder を使用します。

1. Knowledge Base の一覧を取得する

まず、同期先の Knowledge Base の ID を取得します。ここで返される id は、その他すべての Knowledge Base リクエストで knowledge_base_id パスパラメータとして必要になります。
API キーが複数の組織にアクセスできる場合は、リクエストに organization_id を指定します。
API キーが複数の組織にまたがる場合は、以降のリクエストでも同じクエリパラメータを使用してください。

2. フォルダを追加する

フォルダは作成時点では空です。ドキュメントの格納先フォルダはあらかじめ存在している必要があるため、ドキュメントをアップロードする前にソースの階層を作成し、Engineering/API のようなフォルダパスを使用して Guru の階層をミラーリングしてください。ネストされたフォルダより先に親フォルダを作成します。既に存在するフォルダを作成しようとすると 409 Conflict が返されます。

3. ドキュメントを追加する

ドキュメントを JSON で追加するには、テキストを text フィールドで送信します。folder は省略可能で、指定した場合はドキュメントを格納するフォルダパスになります。
ファイルを multipart フォームデータとしてアップロードすることもできます。これは、ソースシステムがドキュメントファイルを直接提供する場合に便利です。
どちらの形式でも、ドキュメント名、パス、フォルダが返されます。
ドキュメントの追加では既存のドキュメントは上書きされません。ドキュメントパスが既に存在する場合、リクエストは 409 Conflict を返します。パスが既に存在する場合は、代わりに更新を使用してください。

4. ドキュメントを更新する

更新は、対象パスにある既存のドキュメントを上書きします。JSON リクエストには、追加時と同じ name、text、および省略可能な folder フィールドを指定します。
multipart アップロードでは、同じ name と省略可能な folder フィールドを使用し、text の代わりに file を指定します。
更新は既存のフォルダ内にある既存のドキュメントパスを対象とします。フォルダが存在しない場合は 404 Not Found が返されます。

5. ドキュメントを削除する

ドキュメントを削除するには、JSON リクエストボディでその名前を送信します。ネストされたドキュメントを削除する場合は、名前に folder を含めてください。

6. フォルダを削除する

空のフォルダを削除するには、recursive を false (デフォルト) に設定します。
フォルダが空でない場合、リクエストは 409 Conflict を返し、何も削除されません。フォルダとその中身をすべて削除するには、recursive を true に設定します。

7. Knowledge Base を検索する

必須の query と、1 から 100 までの top_k を指定して検索します。スニペットではなくページ全体のコンテンツを取得するには、return_full_page を true に設定します。
filters.tags は、指定したタグのいずれかを持つドキュメントに一致します。filters.folders は検索対象をフォルダパスに限定するもので、現在は 1 つのフォルダのみ指定できます。 各結果には、id、関連度を示す score、metadata、および一致した content が含まれます。
外部システムとの同期では、ソースドキュメントをループ処理し、フォルダパスを使用してソースの階層をミラーリングし、冪等な再同期には PUT を、ソースから削除されたドキュメントには DELETE を使用してください。