Alibaba Cloud Model Studio のナレッジベースは、既存の業務システムとの統合、運用の自動化、複雑な取得ニーズへの対応を可能にするオープン API を提供します。
前提条件
-
API を使用してナレッジベースを管理するには、RAM ユーザーが API 権限 (AliyunBailianDataFullAccess ポリシー) を取得し、ワークスペースに参加する必要があります。Alibaba Cloud アカウントの場合は不要です。
RAM ユーザーは、参加しているワークスペース内のナレッジベースのみを管理できます。Alibaba Cloud アカウントは、すべてのワークスペース内のナレッジベースを管理できます。
-
ナレッジベース API を呼び出すには、最新バージョンの Alibaba Cloud Model Studio SDK をインストールします。インストール手順については、Alibaba Cloud SDK Development Reference をご参照ください。
SDK が要件を満たさない場合は、署名メカニズムを使用して HTTP リクエスト経由でナレッジベース API を呼び出すことができます。接続の詳細については、API 概要をご参照ください。
-
AccessKey ID と AccessKey Secret および ワークスペース ID を取得します。サンプルコードを実行するために、これらをシステム環境変数として設定します。以下は Linux でこれらの変数を設定する方法の例です:
IDE または他の開発プラグインを使用する場合、開発環境で
ALIBABA_CLOUD_ACCESS_KEY_ID、ALIBABA_CLOUD_ACCESS_KEY_SECRET、およびWORKSPACE_ID変数を設定してください。
- ナレッジベースを作成するために、サンプルのナレッジドキュメント Alibaba Cloud Model Studio スマートフォンシリーズ紹介.docx を準備します。
サンプルコード
サンプルコード
- ナレッジベースの作成
- ナレッジベースからの取得
- ナレッジベースの更新
- ナレッジベースの管理
Python
ナレッジベースの作成
指定されたワークスペースにドキュメント検索ナレッジベースを作成します。
1. クライアントの初期化ファイルをアップロードしてナレッジベースを作成するには、まずクライアントを初期化します。AccessKey と AccessKey Secret を使用して ID を検証し、endpoint を設定します。
| Python |
2. ナレッジベースファイルのアップロード | |
2.1. ファイルアップロードリースのリクエストナレッジベースを作成する前に、そのソースファイルを同じワークスペースにアップロードします。これを行うには、ApplyFileUploadLease 操作を呼び出してファイルアップロードリースをリクエストします。リースはファイルをアップロードするための一時的な権限付与であり、数分間有効です。
| Python
リクエスト例
レスポンス例 |
2.2. ファイルを一時ストレージにアップロードアップロードリースを使用して、ローカルストレージまたは一般公開されている URL から Model Studio サーバーにファイルをアップロードします。各ワークスペースは最大 10,000 ファイルをサポートします。サポートされている形式には、PDF、DOCX、DOC、TXT、Markdown、PPTX、PPT、XLSX、XLS、HTML、PNG、JPG、JPEG、BMP、GIF が含まれます。
|
Python |
2.3. ファイルをカテゴリに追加ファイルをアップロードした後、AddFile 操作を呼び出して、同じワークスペース内のカテゴリにファイルを追加します。
FileId が返され、その解析が自動的に開始されます。lease_id は直ちに無効になります。別の送信に同じリース ID を再利用しないでください。 | Python
リクエスト例
レスポンス例 |
2.4. クエリファイルの解析状態ファイルは解析されるまでナレッジベースで使用できません。ピーク時には、このプロセスに数時間かかることがあります。DescribeFile 操作を呼び出して、その解析ステータスをクエリできます。
Data.Status フィールドが PARSE_SUCCESS の場合、ファイルの解析は成功しており、ナレッジベースにインポートできます。 | Python
リクエスト例
レスポンス例 |
3. ナレッジベースの作成 | |
3.1. ナレッジベースの初期化ファイルが解析されたら、同じワークスペース内でそのファイルからナレッジベースを作成できます。まず、CreateIndex 操作を呼び出して、ドキュメント検索ナレッジベースを初期化 (ただし最終化はしない) します。
Data.Id フィールドの値は、後続のインデックス構築に使用されるナレッジベース ID です。このナレッジベースに関連する後続のすべての API 操作で必要となるため、ナレッジベース ID を安全に保管してください。 | Python
リクエスト例
レスポンス例 |
3.2. インデックスジョブの送信ナレッジベースを初期化した後、SubmitIndexJob 操作を呼び出してインデックス構築プロセスを開始します。
Data.Id は、対応するタスク ID です。次のステップでは、この ID を使用してタスクの最新のステータスをクエリします。 | Python
リクエスト例
レスポンス例 |
3.3. インデックスジョブのステータスのクエリインデックスジョブの完了には時間がかかります。ピーク時には、このプロセスに数時間かかることがあります。GetIndexJobStatus 操作を呼び出して、その実行ステータスをクエリします。
Data.Status フィールドが COMPLETED の場合、ナレッジベースは作成されています。 | Python
リクエスト例
レスポンス例 |
ナレッジベースからの取得
ナレッジベースから情報を取得するには、2 つの方法があります:
- Alibaba Cloud Model Studio アプリケーションの使用: アプリケーションを呼び出す際、
rag_optionsパラメーターを使用してナレッジベース IDindex_idを渡します。これにより、モデルを非公開ナレッジで補完し、最新の情報を提供します。 - Alibaba Cloud API の使用: Retrieve API を呼び出して、指定されたナレッジベースから情報を取得し、元のテキストセグメントを返します。
指定されたナレッジベースから情報を取得してテキストセグメントを返すには、Retrieve API を呼び出します。
| Python
リクエスト例
レスポンス例 |
ナレッジベースの更新
以下の例は、ドキュメント検索ナレッジベースを更新する方法を示しています。ナレッジベースを使用するアプリケーションは、更新をリアルタイムで反映します。新しいコンテンツは取得可能になり、削除されたコンテンツはアクセスできなくなります。
データクエリまたは画像 Q&A ナレッジベースは API を使用して更新することはできません。詳細については、「ナレッジベースの更新」をご参照ください。
- 増分更新: サポートされている唯一の方法は、更新されたファイルをアップロードし、ファイルをナレッジベースに追加してから古いファイルを削除するという 3 段階のプロセスです。
- 完全更新: ナレッジベース内の各ファイルについて、3 つのステップを実行して更新を完了します。
- 自動更新または同期: 詳細については、「ナレッジベースを自動的に更新または同期する方法」をご参照ください。
- 単一更新のファイル制限: 一度に更新するファイルは 10,000 ファイル以下にすることを推奨します。この制限を超えると、ナレッジベースが正しく更新されない可能性があります。
1. 更新されたファイルのアップロードナレッジベースの作成:ステップ 2 の手順に従って、更新されたファイルをナレッジベースを含むワークスペースにアップロードします。更新されたファイル用に新しいアップロードパラメータのセットを生成するために、新しいファイルアップロードリースをリクエストしてください。 | |
2. ナレッジベースへのファイルの追加 | |
2.1. 追加タスクの送信アップロードされたファイルが解析された後、SubmitIndexAddDocumentsJob 操作を呼び出して、新しいファイルをナレッジベースに追加し、ナレッジベースインデックスを再構築します。
Data.Id が返されます。次のステップでこの ID を使用して、タスクのステータスをクエリします。 | Python
リクエスト例
レスポンス例 |
2.2. タスク完了の待機インデックス作成タスクの完了には時間がかかります。ピーク時には、このプロセスに数時間かかることがあります。GetIndexJobStatus 操作を呼び出して、その実行ステータスをクエリできます。
Data.Status フィールドの値が COMPLETED であることは、更新されたすべてのファイルがナレッジベースに正常に追加されたことを示します。応答内の | Python
リクエスト例
レスポンス例 |
3. 古いファイルの削除最後に、DeleteIndexDocument 操作を呼び出して、ナレッジベースから古いバージョンのファイルを永久に削除します。これにより、古い情報が誤って取得されるのを防ぎます。
インポートに失敗した (INSERT_ERROR) またはインポートに成功した (FINISH) ステータスのファイルのみを削除できます。ナレッジベース内のファイルのステータスをクエリするには、ListIndexDocuments 操作を呼び出すことができます。 | Python
リクエスト例
レスポンス例 |
ナレッジベースの管理
ナレッジベースの作成と使用は API を通じてサポートされていません。これらのタスクは Model Studio コンソールで実行する必要があります。
ナレッジベースの表示指定されたワークスペース内のナレッジベースを表示するには、ListIndices 操作を呼び出します。
| Python
リクエスト例
レスポンス例 |
ナレッジベースの削除ナレッジベースを永久に削除するには、DeleteIndex 操作を呼び出します。ナレッジベースを削除する前に、Model Studio コンソールでリンクされているすべての Alibaba Cloud Model Studio アプリケーションから関連付けを解除する必要があります。そうしないと、削除は失敗します。
| Python
リクエスト例
レスポンス例 |
API
ナレッジベース API とそのリクエストおよびレスポンスパラメータの完全なリストについては、「API カタログ (ナレッジベース)」をご参照ください。
よくある質問
-
ナレッジベースの更新と同期を自動化するにはどうすればよいですか?
- ドキュメント検索
- データクエリと画像 Q&A
Object Storage Service (OSS)、Function Compute (FC)、および Model Studio ナレッジベースの API を統合します。以下の手順に従ってください:- バケットの作成: OSS コンソールに移動して、ソースファイルを保存するための OSS バケットを作成します。
- ナレッジベースの作成: プライベートな知識コンテンツを保存するために、ドキュメント検索ナレッジベースを作成します。
- カスタム関数の作成: FC コンソールに移動し、追加や削除などのファイル変更イベント用の関数を作成します。「関数の作成」をご参照ください。これらの関数は、「ナレッジベースの更新」で説明されている関連 API を呼び出すことにより、OSS からナレッジベースへのファイル変更を同期します。
- OSS トリガーの作成: FC で、前のステップで作成したカスタム関数に OSS トリガーを関連付けます。OSS への新しいファイルのアップロードなど、ファイルの変更イベントが検出されると、トリガーがアクティブになり、FC が関数を実行します。「トリガー」をご参照ください。
- 新しいナレッジベースが空なのはなぜですか? これは通常、インデックスジョブの送信ステップが失敗した場合に発生します。CreateIndex API を呼び出しても SubmitIndexJob API の呼び出しが失敗すると、ナレッジベースは空になります。これを解決するには、再度インデックスジョブを送信し、インデックスジョブが完了するのを待ってください。
- 「アップロードしたファイルへのアクセスに失敗しました。アップロード操作が成功したか確認してください」というエラーが表示された場合はどうすればよいですか? このエラーは通常、ファイルを一時ストレージにアップロードするステップが正常に実行されなかったために発生します。AddFile API 操作を呼び出す前に、このステップが正常に実行されることを確認してください。
-
「アクセスが拒否されました:このワークスペースへのアクセス権がないか、ワークスペースが存在しません」というエラーが表示された場合はどうすればよいですか?
このエラーは通常、以下の理由で発生します:
-
リクエストされたサービスエンドポイント (サービスエンドポイント) が正しくありません: インターネット経由でアクセスする場合、中国サイト (パブリッククラウド) のユーザーは中国 (北京) のサービスエンドポイントを使用し、国際サイトのユーザーはシンガポールのサービスエンドポイントを使用する必要があります。オンラインデバッグ機能を使用している場合は、次の図に示すように、正しいサービスエンドポイントを選択していることを確認してください。

-
WorkspaceIdの値が正しくない、またはワークスペースのメンバーではない場合: API を呼び出す前に、WorkspaceIdが正しいこと、およびワークスペースのメンバーであることを確認してください。指定されたワークスペースへのメンバーの追加方法
-
リクエストされたサービスエンドポイント (サービスエンドポイント) が正しくありません: インターネット経由でアクセスする場合、中国サイト (パブリッククラウド) のユーザーは中国 (北京) のサービスエンドポイントを使用し、国際サイトのユーザーはシンガポールのサービスエンドポイントを使用する必要があります。オンラインデバッグ機能を使用している場合は、次の図に示すように、正しいサービスエンドポイントを選択していることを確認してください。
-
「指定されたアクセスキーが見つからないか、無効です」というエラーが表示された場合はどうすればよいですか?
このエラーは通常、指定された
access_key_idまたはaccess_key_secretが正しくない場合、あるいはaccess_key_idが 無効化されている 場合に発生します。 API を呼び出す前に、access_key_idが正しく、無効化されていないことを確認してください。 -
「カテゴリが一致しません」というエラーが表示された場合はどうすればよいですか?
このエラーは、
ApplyFileUploadLeaseAPI 呼び出しで使用されるCategoryIdが、後続のAddFileAPI 呼び出しで渡されるCategoryIdと異なる場合に一般的に発生します。ApplyFileUploadLeaseからAddFileまでのファイルアップロードフロー全体を通して、必ず同じCategoryIdを使用してください。ListCategoryAPI を呼び出して現在のワークスペースにあるカテゴリのリストを取得し、使用しているCategoryIdが正しいことを確認できます。
課金
- すべてのナレッジベース機能と API 呼び出しは無料です。「ナレッジベース:課金」をご参照ください。
- Model Studio にインポートされたファイルなどのデータのストレージスペースは無料です。
