`Retrieve` 操作で関連性のない情報が返された場合、リクエストで `SearchFilters` パラメーターを使用してカスタムの取得条件を定義できます。これにより、セマンティック検索の結果がフィルター処理され、クエリに関連しない情報が除外されます。この方法は、特に構造化データに対して有効です。
詳細については、ナレッジベースの「Retrieve」 API をご参照ください。
比較
`SearchFilters` を使用せずに `Retrieve` 操作を呼び出す場合 | `SearchFilters` を使用して `Retrieve` 操作を呼び出す場合 |
Retrieve リクエスト本文: | Retrieve リクエスト本文: |
応答の取得:
従来のセマンティック取得では、クエリ "San Zhang" との関連性が高くないテキストセグメントが返されます。 | Retrieve 応答:
`SearchFilters` パラメーターはセマンティック検索の結果をフィルター処理し、クエリ「San Zhang」に関連しないテキストセグメントを除外します。 |
構文
`SearchFilters` には 1 つ以上のサブグループを含めることができます。次の例には 2 つのサブグループが含まれています。各サブグループは、セマンティック検索から取得されたテキストセグメントをフィルター処理するために使用される、`取得フィールド: フィールド値` などの 1 つ以上のキーと値のペアで構成されます。デフォルトでは、サブグループ間には AND セマンティクスが適用され、この動作は変更できません。サブグループの使用方法の詳細については、「サブグループクエリの例」をご参照ください。
{
"searchFilters": [
{
"Name": "San Zhang",
"Sex": "Male"
},
{
"Position": "Technician"
}
]
}サブグループ内の取得フィールドは、単一値クエリ、複数値クエリ、範囲クエリ、あいまい検索、およびタグクエリをサポートします。
単一値クエリ:フィールドタイプは数値 (long または double) または文字列です。詳細については、「単一値クエリの例」をご参照ください。
複数値クエリ:このクエリは、数値 (long または double) のみ、または文字列値のみを含む配列をサポートします。詳細については、「複数値クエリの例」をご参照ください。
範囲クエリ: 等価クエリと範囲クエリをサポートします。詳細については、「範囲クエリの例」をご参照ください。
等価クエリ:
eq(等しい) およびneq(等しくない) プロパティをサポートします。フィールドタイプは数値 (long または double) または文字列です。単一のフィールドに複数の値を設定することはできません。値の大文字と小文字は区別されません。間隔クエリ:
gt(より大きい)、gte(以上)、lt(より小さい)、およびlte(以下) プロパティをサポートします。フィールドタイプは数値 (long または double) である必要があります。
あいまい検索:フィールドタイプは文字列である必要があります。
likeプロパティがサポートされています。詳細については、「あいまい検索の例」をご参照ください。タグクエリ:このクエリは、ドキュメント検索のナレッジベースでのみサポートされます。詳細については、「タグクエリの例」をご参照ください。
前提条件
Alibaba Cloud API を使用してナレッジベースを管理する前に、Resource Access Management (RAM) ユーザーは `AliyunBailianDataFullAccess` ポリシーを取得し、ワークスペースのメンバーになる必要があります。この要件は Alibaba Cloud アカウントには適用されません。
RAM ユーザーは、所属するワークスペース内のナレッジベースのみを管理できます。Alibaba Cloud アカウントは、すべてのワークスペースのナレッジベースを管理できます。
Alibaba Cloud Model Studio SDK がインストールされ、環境が構成されていること。
3 つのレコードを含む EmployeeInformation.xlsx ファイルが、以下の例のナレッジベースを作成するために準備されていること。詳細については、「ナレッジベースの作成と使用」をご参照ください。
ナレッジベースの構成:
ナレッジベースタイプ: データクエリ
データソース: データテーブルのアップロード
データテーブルのフィールド構造:`Name`、`Sex`、`Position` フィールドは文字列型、`Age` フィールドは double 型です。
インデックス設定:すべてのフィールドが取得およびモデルの応答で使用されます。

完全なコード例
次のパネルを展開して、このトピックで提供されている完全な Python および Java のコード例を表示します。これらの例に基づいて、他の言語のコードを実装できます。
サンプルコードを実行する前に、AccessKey と AccessKey Secret を取得し、環境変数として構成する必要があります。
Python
SearchFiltersFullExample.py
# このサンプルコードは参照用です。本番環境では使用しないでください。
import json
import os
import sys
from typing import List
from alibabacloud_bailian20231229 import models as bailian_20231229_models
from alibabacloud_bailian20231229.client import Client as bailian20231229Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_tea_util.client import Client as UtilClient
class SearchFiltersFullExample:
class QueryObject:
def __init__(self, prefix):
self.like = prefix
def to_dict(self):
return {
"like": self.like
}
class Range:
def __init__(self, gte, lte):
self.gte = gte
self.lte = lte
def to_dict(self):
return {
"gte": self.gte,
"lte": self.lte
}
def __init__(self):
pass
@staticmethod
def create_client() -> bailian20231229Client:
"""
AccessKey ペアを使用してクライアントを初期化します。
@return: Client
@throws Exception
"""
# AccessKey ペアを含むコードが漏洩すると、アカウント内のすべてのリソースのセキュリティが脅かされます。以下のサンプルコードは参照用です。
# セキュリティトークンサービス (STS) などのより安全な方法を使用して、アクセス認証情報を管理することを推奨します。詳細については、https://www.alibabacloud.com/help/sdk/developer-reference/v2-manage-access-credentials をご参照ください。
config = open_api_models.Config(
# 必須。ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が設定されていることを確認してください。
access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
# 必須。ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
)
# エンドポイントの詳細については、https://www.alibabacloud.com/help/model-studio/api-bailian-2023-12-29-endpoint をご参照ください。
config.endpoint = f'bailian.ap-southeast-1.aliyuncs.com'
return bailian20231229Client(config)
@staticmethod
def sub_group_query() -> None:
try:
client = SearchFiltersFullExample.create_client()
# retrieve_request オブジェクトを作成します。
retrieve_request = bailian_20231229_models.RetrieveRequest()
# 必須。実際のプロンプトを入力できます。
retrieve_request.query = 'Employees in the company named San Zhang'
# 必須。実際のナレッジベース ID を入力します。
retrieve_request.index_id = 'Enter the actual knowledge base ID'
# グループ 1 のクエリプロパティは Name で、値は San Zhang です。グループ 2 のクエリプロパティは Sex で、値は Female です。実際のプロパティと値に置き換えることができます。
retrieve_request.search_filters = [
{"Name": "San Zhang"},
{"Sex": "Female"}
]
# 取得を実行します。ワークスペース ID と retrieve_request オブジェクトを入力します。
resp = client.retrieve('Enter the actual workspace ID', retrieve_request)
print(UtilClient.to_jsonstring(resp))
except Exception as error:
# これはデモンストレーション用です。例外の処理には注意してください。プロジェクトで例外を無視しないでください。
# エラーメッセージ
print(error.message)
@staticmethod
def single_query() -> None:
try:
client = SearchFiltersFullExample.create_client()
# retrieve_request オブジェクトを作成します。
retrieve_request = bailian_20231229_models.RetrieveRequest()
# 必須。実際のプロンプトを入力できます。
retrieve_request.query = 'Employees in the company named San Zhang'
# 必須。実際のナレッジベース ID を入力します。
retrieve_request.index_id = 'Enter the actual knowledge base ID'
# 単一値クエリのプロパティは Name で、値は San Zhang です。実際のプロパティと値に置き換えることができます。
retrieve_request.search_filters = [
{"Name": "San Zhang"}
]
# 取得を実行します。ワークスペース ID と retrieve_request オブジェクトを入力します。
resp = client.retrieve('Enter the actual workspace ID', retrieve_request)
print(UtilClient.to_jsonstring(resp.body))
except Exception as error:
# これはデモンストレーション用です。例外の処理には注意してください。プロジェクトで例外を無視しないでください。
# エラーメッセージ
print(error.message)
@staticmethod
def multi_query() -> None:
try:
client = SearchFiltersFullExample.create_client()
# retrieve_request オブジェクトを作成します。
retrieve_request = bailian_20231229_models.RetrieveRequest()
# 必須。実際のプロンプトを入力できます。
retrieve_request.query = 'All employees in the company'
# 必須。実際のナレッジベース ID を入力します。
retrieve_request.index_id = 'Enter the actual knowledge base ID'
# 複数の値を格納するリストを作成します。
names = ["San Zhang", "Si Li"]
# 複数値クエリのプロパティは Name で、names リストに対応します。値は指定された "San Zhang" と "Si Li" です。実際のプロパティと値に置き換えることができます。
retrieve_request.search_filters = [{"Name": json.dumps(names)}]
# 取得を実行します。ワークスペース ID と retrieve_request オブジェクトを入力します。
resp = client.retrieve('Enter the actual workspace ID', retrieve_request)
print(UtilClient.to_jsonstring(resp.body))
except Exception as error:
# これはデモンストレーション用です。例外の処理には注意してください。プロジェクトで例外を無視しないでください。
# エラーメッセージ
print(error.message)
@staticmethod
def range_query() -> None:
try:
client = SearchFiltersFullExample.create_client()
# retrieve_request オブジェクトを作成します。
retrieve_request = bailian_20231229_models.RetrieveRequest()
# 必須。実際のプロンプトを入力できます。
retrieve_request.query = 'All employees in the company'
# 必須。実際のナレッジベース ID を入力します。
retrieve_request.index_id = 'Enter the actual knowledge base ID'
# クエリプロパティは Age で、値は範囲です。実際のプロパティと値に置き換えることができます。
age_range = SearchFiltersFullExample.Range(20, 27)
retrieve_request.search_filters = [
{"Position": "Technician"}, # グループ 1:Position フィルター条件
{"Age": json.dumps(age_range.to_dict())} # グループ 2:Age 範囲フィルター条件
]
# 取得を実行します。ワークスペース ID と retrieve_request オブジェクトを入力します。
resp = client.retrieve('Enter the actual workspace ID', retrieve_request)
print(UtilClient.to_jsonstring(resp.body))
except Exception as error:
# これはデモンストレーション用です。例外の処理には注意してください。プロジェクトで例外を無視しないでください。
# エラーメッセージ
print(error.message)
@staticmethod
def wildcard_query() -> None:
try:
client = SearchFiltersFullExample.create_client()
# retrieve_request オブジェクトを作成します。
retrieve_request = bailian_20231229_models.RetrieveRequest()
# 必須。実際のプロンプトを入力できます。
retrieve_request.query = 'Male employees in the company'
# 必須。実際のナレッジベース ID を入力します。
retrieve_request.index_id = 'Enter the actual knowledge base ID'
# あいまい検索のプロパティは Position で、値は Tech%ian です。% ワイルドカード文字は、0 文字以上の任意の文字列に一致します。実際の値に置き換えることができます。
position = SearchFiltersFullExample.QueryObject('Tech%ian')
retrieve_request.search_filters = [
{"Name": "San Zhang"}, # Name フィルター条件。実際のプロパティと値に置き換えることができます。
{"Position": json.dumps(position.to_dict())} # Position (あいまい検索) フィルター条件。実際のプロパティと値に置き換えることができます。
]
# 取得を実行します。ワークスペース ID と retrieve_request オブジェクトを入力します。
resp = client.retrieve('Enter the actual workspace ID', retrieve_request)
print(UtilClient.to_jsonstring(resp.body))
except Exception as error:
# これはデモンストレーション用です。例外の処理には注意してください。プロジェクトで例外を無視しないでください。
# エラーメッセージ
print(error.message)
@staticmethod
def tag_query() -> None:
try:
client = SearchFiltersFullExample.create_client()
# retrieve_request オブジェクトを作成します。
retrieve_request = bailian_20231229_models.RetrieveRequest()
# 必須。実際のプロンプトを入力できます。
retrieve_request.query = 'Provide some candidates'
# 必須。実際のナレッジベース ID を入力します。
retrieve_request.index_id = 'Enter the actual knowledge base ID'
# タグを格納するリストを作成します。複数のタグ間の論理関係は AND ではなく OR です。
tags = ["University A", "Student Union President"]
retrieve_request.search_filters = [
{"tags": json.dumps(tags)}
]
# 取得を実行します。ワークスペース ID と retrieve_request オブジェクトを入力します。
resp = client.retrieve('Enter the actual workspace ID', retrieve_request)
print(UtilClient.to_jsonstring(resp.body))
except Exception as error:
# これはデモンストレーション用です。例外の処理には注意してください。プロジェクトで例外を無視しないでください。
# エラーメッセージ
print(error.message)
@staticmethod
def tag_query2() -> None:
try:
client = SearchFiltersFullExample.create_client()
# retrieve_request オブジェクトを作成します。
retrieve_request = bailian_20231229_models.RetrieveRequest()
# 必須。実際のプロンプトを入力できます。
retrieve_request.query = 'Provide some candidates'
# 必須。実際のナレッジベース ID を入力します。
retrieve_request.index_id = 'Enter the actual knowledge base ID'
# タグを格納する 2 つのリストを作成します。
tag1 = ["University A"]
tag2 = ["Sports Specialist Student"]
retrieve_request.search_filters = [
{"tags": json.dumps(tag1)},
{"tags": json.dumps(tag2)}
]
# 取得を実行します。ワークスペース ID と retrieve_request オブジェクトを入力します。
resp = client.retrieve('Enter the actual workspace ID', retrieve_request)
print(UtilClient.to_jsonstring(resp.body))
except Exception as error:
# これはデモンストレーション用です。例外の処理には注意してください。プロジェクトで例外を無視しないでください。
# エラーメッセージ
print(error.message)
@staticmethod
def main(args: List[str]) -> None:
SearchFiltersFullExample.sub_group_query()
SearchFiltersFullExample.single_query()
SearchFiltersFullExample.multi_query()
SearchFiltersFullExample.range_query()
SearchFiltersFullExample.wildcard_query()
SearchFiltersFullExample.tag_query()
SearchFiltersFullExample.tag_query2()
if __name__ == '__main__':
SearchFiltersFullExample.main(sys.argv[1:])Java
SearchFiltersFullExample.java
// このサンプルコードは参照用です。本番環境では使用しないでください。
import com.aliyun.bailian20231229.models.RetrieveRequest;
import com.aliyun.bailian20231229.models.RetrieveResponse;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class SearchFiltersFullExample {
/**
* description :
* <p>AccessKey ペアを使用してクライアントを初期化します。</p>
*
* @return Client
* @throws Exception
*/
public static com.aliyun.bailian20231229.Client createClient() throws Exception {
// AccessKey ペアを含むコードが漏洩すると、アカウント内のすべてのリソースのセキュリティが脅かされます。以下のサンプルコードは参照用です。
// セキュリティトークンサービス (STS) などのより安全な方法を使用して、アクセス認証情報を管理することを推奨します。詳細については、https://www.alibabacloud.com/help/sdk/developer-reference/v2-manage-access-credentials をご参照ください。
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// 必須。ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が設定されていることを確認してください。
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// 必須。ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// エンドポイントの詳細については、https://www.alibabacloud.com/help/model-studio/api-bailian-2023-12-29-endpoint をご参照ください。
config.endpoint = "bailian.ap-southeast-1.aliyuncs.com";
return new com.aliyun.bailian20231229.Client(config);
}
public static void subgroupQuery() {
try {
com.aliyun.bailian20231229.Client client = createClient();
// RetrieveRequest オブジェクトを作成します。
RetrieveRequest request = new RetrieveRequest();
// 必須。実際のプロンプトを入力できます。
request.setQuery("Employees in the company named San Zhang");
// 必須。実際のナレッジベース ID を入力します。
request.setIndexId("Enter the actual knowledge base ID");
Map<String, String> map1 = new HashMap<>();
// グループ 1 のクエリプロパティは Name で、値は San Zhang です。実際のプロパティと値に置き換えることができます。
map1.put("Name", "San Zhang");
Map<String, String> map2 = new HashMap<>();
// グループ 2 のクエリプロパティは Sex で、値は Female です。実際のプロパティと値に置き換えることができます。
map2.put("Sex", "Female");
List<Map<String, String>> searchFilters = new ArrayList<>();
searchFilters.add(map1);
searchFilters.add(map2);
request.setSearchFilters(searchFilters);
// 取得を実行します。ワークスペース ID と RetrieveRequest オブジェクトを入力します。
RetrieveResponse resp = client.retrieve("Enter the actual workspace ID", request);
System.out.println(new Gson().toJson(resp.getBody()));
} catch (Exception e) {
// ナレッジベースの取得失敗を処理します。
// これはデモンストレーション用です。例外の処理には注意してください。プロジェクトで例外を無視しないでください。
System.out.println(e.getMessage());
}
}
public static void singleQuery() {
try {
com.aliyun.bailian20231229.Client client = createClient();
// RetrieveRequest オブジェクトを作成します。
RetrieveRequest request = new RetrieveRequest();
// 必須。実際のプロンプトを入力できます。
request.setQuery("Employees in the company named San Zhang");
// 必須。実際のナレッジベース ID を入力します。
request.setIndexId("Enter the actual knowledge base ID");
Map<String, String> map = new HashMap<>();
// 単一値クエリのプロパティは Name で、値は San Zhang です。実際のプロパティと値に置き換えることができます。
map.put("Name", "San Zhang");
List<Map<String, String>> searchFilters = new ArrayList<>();
searchFilters.add(map);
request.setSearchFilters(searchFilters);
// 取得を実行します。ワークスペース ID と RetrieveRequest オブジェクトを入力します。
RetrieveResponse resp = client.retrieve("Enter the actual workspace ID", request);
System.out.println(new Gson().toJson(resp.getBody()));
} catch (Exception e) {
// ナレッジベースの取得失敗を処理します。
// これはデモンストレーション用です。例外の処理には注意してください。プロジェクトで例外を無視しないでください。
System.out.println(e.getMessage());
}
}
public static void multiQuery() {
try {
com.aliyun.bailian20231229.Client client = createClient();
// RetrieveRequest オブジェクトを作成します。
RetrieveRequest request = new RetrieveRequest();
// 必須。実際のプロンプトを入力できます。
request.setQuery("All employees in the company");
// 必須。実際のナレッジベース ID を入力します。
request.setIndexId("Enter the actual knowledge base ID");
// 複数の値を格納する JsonArray を作成します。
JsonArray array = new JsonArray();
array.add("San Zhang");
array.add("Si Li");
Map<String, String> map = new HashMap<>();
// 複数値クエリのプロパティは Name で、値は指定された "San Zhang" と "Si Li" です。実際のプロパティと値に置き換えることができます。
map.put("Name", array.toString());
List<Map<String, String>> searchFilters = new ArrayList<>();
searchFilters.add(map);
request.setSearchFilters(searchFilters);
// 取得を実行します。ワークスペース ID と RetrieveRequest オブジェクトを入力します。
RetrieveResponse resp = client.retrieve("Enter the actual workspace ID", request);
System.out.println(new Gson().toJson(resp.getBody()));
} catch (Exception e) {
// ナレッジベースの取得失敗を処理します。
// これはデモンストレーション用です。例外の処理には注意してください。プロジェクトで例外を無視しないでください。
System.out.println(e.getMessage());
}
}
public static void rangeQuery() {
try {
com.aliyun.bailian20231229.Client client = createClient();
// RetrieveRequest オブジェクトを作成します。
RetrieveRequest request = new RetrieveRequest();
// 必須。実際のプロンプトを入力できます。
request.setQuery("All employees in the company");
// 必須。実際のナレッジベース ID を入力します。
request.setIndexId("Enter the actual knowledge base ID");
Map<String, String> map1 = new HashMap<>();
// グループ 1 のクエリプロパティは Sex で、値は Male です。実際のプロパティと値に置き換えることができます。
map1.put("Sex", "Male");
// グループ 2 のクエリプロパティは Age で、値は範囲です。実際のプロパティと値に置き換えることができます。
Map<String, String> map2 = new HashMap<>();
Range range = new Range(20, 27);
map2.put("Age", new Gson().toJson(range));
List<Map<String, String>> searchFilters = new ArrayList<>();
searchFilters.add(map1);
searchFilters.add(map2);
request.setSearchFilters(searchFilters);
// 取得を実行します。ワークスペース ID と RetrieveRequest オブジェクトを入力します。
RetrieveResponse resp = client.retrieve("Enter the actual workspace ID", request);
System.out.println(new Gson().toJson(resp.getBody()));
} catch (Exception e) {
// ナレッジベースの取得失敗を処理します。
// これはデモンストレーション用です。例外の処理には注意してください。プロジェクトで例外を無視しないでください。
System.out.println(e.getMessage());
}
}
public static void wildcardQuery() {
try {
com.aliyun.bailian20231229.Client client = createClient();
// RetrieveRequest オブジェクトを作成します。
RetrieveRequest request = new RetrieveRequest();
// 必須。実際のプロンプトを入力できます。
request.setQuery("Male employees in the company");
// 必須。実際のナレッジベース ID を入力します。
request.setIndexId("Enter the actual knowledge base ID");
// グループ 1 のクエリプロパティは Name で、値は San Zhang です。実際のプロパティと値に置き換えることができます。
Map<String, String> map1 = new HashMap<>();
map1.put("Name", "San Zhang");
// グループ 2 のクエリプロパティは Position で、値は Tech%ian です。% ワイルドカード文字は、0 文字以上の任意の文字列に一致します。実際の値に置き換えることができます。
Map<String, String> map2 = new HashMap<>();
QueryObject queryObject = new QueryObject("Tech%ian");
map2.put("Position", new Gson().toJson(queryObject));
List<Map<String, String>> searchFilters = new ArrayList<>();
searchFilters.add(map1);
searchFilters.add(map2);
request.setSearchFilters(searchFilters);
// 取得を実行します。ワークスペース ID と RetrieveRequest オブジェクトを入力します。
RetrieveResponse resp = client.retrieve("Enter the actual workspace ID", request);
System.out.println(new Gson().toJson(resp.getBody()));
} catch (Exception e) {
// ナレッジベースの取得失敗を処理します。
// これはデモンストレーション用です。例外の処理には注意してください。プロジェクトで例外を無視しないでください。
System.out.println(e.getMessage());
}
}
public static void tagQuery() {
try {
com.aliyun.bailian20231229.Client client = createClient();
// RetrieveRequest オブジェクトを作成します。
RetrieveRequest request = new RetrieveRequest();
// 必須。実際のプロンプトを入力できます。
request.setQuery("Provide some candidates");
// 必須。実際のナレッジベース ID を入力します。
request.setIndexId("Enter the actual knowledge base ID");
// タグを格納する JsonArray を作成します。複数のタグ間の論理関係は AND ではなく OR です。
JsonArray array = new JsonArray();
array.add("University A");
array.add("Student Union President");
Map<String, String> map = new HashMap<>();
map.put("tags", array.toString());
List<Map<String, String>> searchFilters = new ArrayList<>();
searchFilters.add(map);
request.setSearchFilters(searchFilters);
// 取得を実行します。ワークスペース ID と RetrieveRequest オブジェクトを入力します。
RetrieveResponse resp = client.retrieve("Enter the actual workspace ID", request);
System.out.println(new Gson().toJson(resp.getBody()));
} catch (Exception e) {
// ナレッジベースの取得失敗を処理します。
// これはデモンストレーション用です。例外の処理には注意してください。プロジェクトで例外を無視しないでください。
System.out.println(e.getMessage());
}
}
public static void tagQuery2() {
try {
com.aliyun.bailian20231229.Client client = createClient();
// RetrieveRequest オブジェクトを作成します。
RetrieveRequest request = new RetrieveRequest();
// 必須。実際のプロンプトを入力できます。
request.setQuery("Provide some candidates");
// 必須。実際のナレッジベース ID を入力します。
request.setIndexId("Enter the actual knowledge base ID");
// タグを格納する JsonArray を作成します。
JsonArray tag1 = new JsonArray();
tag1.add("University A");
JsonArray tag2 = new JsonArray();
tag2.add("Sports Specialist Student");
Map<String, String> map1 = new HashMap<>();
map1.put("tags", tag1.toString());
Map<String, String> map2 = new HashMap<>();
map2.put("tags", tag2.toString());
List<Map<String, String>> searchFilters = new ArrayList<>();
searchFilters.add(map1);
searchFilters.add(map2);
request.setSearchFilters(searchFilters);
// 取得を実行します。ワークスペース ID と RetrieveRequest オブジェクトを入力します。
RetrieveResponse resp = client.retrieve("Enter the actual workspace ID", request);
System.out.println(new Gson().toJson(resp.getBody()));
} catch (Exception e) {
// ナレッジベースの取得失敗を処理します。
// これはデモンストレーション用です。例外の処理には注意してください。プロジェクトで例外を無視しないでください。
System.out.println(e.getMessage());
}
}
public static void main(String[] args) {
subgroupQuery();
singleQuery();
multiQuery();
rangeQuery();
wildcardQuery();
tagQuery();
tagQuery2();
}
static class Range {
double gte;
double lte;
public Range(double gte, double lte) {
this.gte = gte;
this.lte = lte;
}
}
static class QueryObject {
String like;
public QueryObject(String prefix) {
this.like = prefix;
}
public String getLike() {
return like;
}
public void setLike(String like) {
this.like = like;
}
}
}使用方法
以下のセクションでは、SearchFilters をクエリに使用する方法について説明します。
サブグループクエリの例
サブグループは、ナレッジベースからの取得結果をフィルター処理し、特定の条件を満たすテキストセグメントのみを返すために使用されます。`SearchFilters` には、条件を表す複数のサブグループを追加できます。デフォルトでは、サブグループは AND オペレーターを使用して結合され、この動作は変更できません。
例:従業員情報のナレッジベースから、Name が San Zhang で、Sex が 女性 であるレコードを取得します。このナレッジベースには、そのようなレコードは存在しません。
{
"searchFilters": [
{
"Name": "San Zhang"
},
{
"Sex": "Female"
}
]
}次のパネルを展開して、サンプルコードを表示します。
Python
SubGroupQueryExample.py
# サンプルコードは参照用です。本番環境では使用しないでください。
import os
import sys
from typing import List
from alibabacloud_bailian20231229 import models as bailian_20231229_models
from alibabacloud_bailian20231229.client import Client as bailian20231229Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_tea_util.client import Client as UtilClient
class SubGroupQueryExample:
def __init__(self):
pass
@staticmethod
def create_client() -> bailian20231229Client:
"""
AccessKey ペアを使用してクライアントを初期化します。
@return: Client
@throws Exception
"""
# AccessKey ペアを含むコードが漏洩すると、アカウント内のすべてのリソースのセキュリティが脅かされます。次のサンプルコードは参照用です。
# Security Token Service (STS) などのより安全な方法を使用してアクセスクレデンシャルを管理することをお勧めします。詳細については、https://www.alibabacloud.com/help/sdk/developer-reference/v2-manage-access-credentials をご参照ください。
config = open_api_models.Config(
# 必須。ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が設定されていることを確認してください。
access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
# 必須。ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
)
# エンドポイントの詳細については、https://www.alibabacloud.com/help/model-studio/api-bailian-2023-12-29-endpoint をご参照ください。
config.endpoint = f'bailian.ap-southeast-1.aliyuncs.com'
return bailian20231229Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
try:
client = SubGroupQueryExample.create_client()
# retrieve_request オブジェクトを作成します。
retrieve_request = bailian_20231229_models.RetrieveRequest()
# 必須。実際のプロンプトを入力できます。
retrieve_request.query = 'Employees in the company named San Zhang'
# 必須。実際のナレッジベース ID を入力します。
retrieve_request.index_id = 'Enter the actual knowledge base ID'
# グループ 1 のクエリプロパティは Name で、値は San Zhang です。グループ 2 のクエリプロパティは Sex で、値は Female です。これらを実際のプロパティと値に置き換えることができます。
retrieve_request.search_filters = [
{"Name": "San Zhang"},
{"Sex": "Female"}
]
# 取得を実行します。ワークスペース ID と retrieve_request オブジェクトを入力します。
resp = client.retrieve('Enter the actual workspace ID', retrieve_request)
print(UtilClient.to_jsonstring(resp))
except Exception as error:
# これはデモンストレーションのみを目的としています。例外は慎重に処理してください。プロジェクトで例外を無視しないでください。
# エラーメッセージ
print(error.message)
if __name__ == '__main__':
SubGroupQueryExample.main(sys.argv[1:])
リクエストの例
{
"indexId": "27ubwxxxxx",
"WorkspaceId":"llm-4u5xpd1xdjxxxxxx",
"query": "Employees in the company named San Zhang",
"searchFilters": [
{
"Name": "San Zhang"
},
{
"Sex": "Female"
}
]
}応答の例
{
"code": "Success",
"data": {
"nodes": []
},
"message": "success",
"requestId": "5BA30772-xxxx-560C-B1F7-C1DA737A9D80",
"status": "200",
"success": true
}Java
SubGroupQueryExample.java
// このサンプルコードは参照用です。本番環境では使用しないでください。
import com.aliyun.bailian20231229.models.RetrieveRequest;
import com.aliyun.bailian20231229.models.RetrieveResponse;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class SubGroupQueryExample {
/**
* description :
* <p>AccessKey ペアを使用してクライアントを初期化します。</p>
* @return Client
*
* @throws Exception
*/
public static com.aliyun.bailian20231229.Client createClient() throws Exception {
// AccessKey ペアを含むコードが漏洩すると、アカウント内のすべてのリソースのセキュリティが脅かされます。以下のサンプルコードは参照用です。
// セキュリティトークンサービス (STS) などのより安全な方法を使用して、アクセス認証情報を管理することを推奨します。詳細については、https://www.alibabacloud.com/help/sdk/developer-reference/v2-manage-access-credentials をご参照ください。
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// 必須。ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が設定されていることを確認してください。
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// 必須。ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// エンドポイントの詳細については、https://www.alibabacloud.com/help/model-studio/api-bailian-2023-12-29-endpoint をご参照ください。
config.endpoint = "bailian.ap-southeast-1.aliyuncs.com";
return new com.aliyun.bailian20231229.Client(config);
}
public static void main(String[] args) {
try {
com.aliyun.bailian20231229.Client client = createClient();
// RetrieveRequest オブジェクトを作成します。
RetrieveRequest request = new RetrieveRequest();
// 必須。実際のプロンプトを入力できます。
request.setQuery("Employees in the company named San Zhang");
// 必須。実際のナレッジベース ID を入力します。
request.setIndexId("Enter the actual knowledge base ID");
Map<String, String> map1 = new HashMap<>();
// グループ 1 のクエリプロパティは Name で、値は San Zhang です。実際のプロパティと値に置き換えることができます。
map1.put("Name","San Zhang");
Map<String, String> map2 = new HashMap<>();
// グループ 2 のクエリプロパティは Sex で、値は Female です。実際のプロパティと値に置き換えることができます。
map2.put("Sex","Female");
List<Map<String, String>> searchFilters = new ArrayList<>();
searchFilters.add(map1);
searchFilters.add(map2);
request.setSearchFilters(searchFilters);
// 取得を実行します。ワークスペース ID と RetrieveRequest オブジェクトを入力します。
RetrieveResponse resp = client.retrieve("Enter the actual workspace ID", request);
System.out.println(new Gson().toJson(resp.getBody()));
} catch (Exception e) {
// ナレッジベースの取得失敗を処理します。
// これはデモンストレーション用です。例外の処理には注意してください。プロジェクトで例外を無視しないでください。
System.out.println(e.getMessage());
}
}
}
サンプルリクエスト
{
"indexId": "27ubwxxxxx",
"WorkspaceId":"llm-4u5xpd1xdjxxxxxx",
"query": "Employees in the company named San Zhang",
"searchFilters": [
{
"Name": "San Zhang"
},
{
"Sex": "Female"
}
]
}応答の例
{
"code": "Success",
"data": {
"nodes": []
},
"message": "success",
"requestId": "5BA30772-xxxx-560C-B1F7-C1DA737A9D80",
"status": "200",
"success": true
}単一値クエリの例
単一値クエリでは、取得フィールドに単一の値を渡します。
例:従業員情報ナレッジベースから、Name が San Zhang であるレコードを取得します。
{
"searchFilters": [
{
"name": "Zhang San"
}
]
}次のパネルを展開して、サンプルコードを表示します。
Python
SingleQueryExample.py
# サンプルコードは参照用です。本番環境では使用しないでください。
import os
import sys
from typing import List
from alibabacloud_bailian20231229 import models as bailian_20231229_models
from alibabacloud_bailian20231229.client import Client as bailian20231229Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_tea_util.client import Client as UtilClient
class SingleQueryExample:
def __init__(self):
pass
@staticmethod
def create_client() -> bailian20231229Client:
"""
AccessKey ペアを使用してクライアントを初期化します。
@return: Client
@throws Exception
"""
# AccessKey ペアを含むコードが漏洩すると、アカウント内のすべてのリソースのセキュリティが脅かされます。次のサンプルコードは参照用です。
# Security Token Service (STS) などのより安全な方法を使用してアクセスクレデンシャルを管理することをお勧めします。詳細については、https://www.alibabacloud.com/help/sdk/developer-reference/v2-manage-access-credentials をご参照ください。
config = open_api_models.Config(
# 必須。ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が設定されていることを確認してください。
access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
# 必須。ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
)
# エンドポイントの詳細については、https://www.alibabacloud.com/help/model-studio/api-bailian-2023-12-29-endpoint をご参照ください。
config.endpoint = f'bailian.ap-southeast-1.aliyuncs.com'
return bailian20231229Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
client = SingleQueryExample.create_client()
# retrieve_request オブジェクトを作成します。
retrieve_request = bailian_20231229_models.RetrieveRequest()
# 必須。実際のプロンプトを入力できます。
retrieve_request.query = 'Employees in the company named San Zhang'
# 必須。実際のナレッジベース ID を入力します。
retrieve_request.index_id = 'Enter the actual knowledge base ID'
# 単一値クエリのプロパティは Name で、値は San Zhang です。これらを実際のプロパティと値に置き換えることができます。
retrieve_request.search_filters = [
{"Name": "San Zhang"}
]
try:
# 取得を実行します。ワークスペース ID と retrieve_request オブジェクトを入力します。
resp = client.retrieve('Enter the actual workspace ID', retrieve_request)
print(UtilClient.to_jsonstring(resp.body))
except Exception as error:
# これはデモンストレーションのみを目的としています。例外は慎重に処理してください。プロジェクトで例外を無視しないでください。
# エラーメッセージ
print(error.message)
if __name__ == '__main__':
SingleQueryExample.main(sys.argv[1:])
リクエストの例
{
"indexId": "27ubwxxxxx",
"WorkspaceId":"llm-4u5xpd1xdjxxxxxx",
"query": "employees named Zhang San",
"searchFilters": [
{
"name": "Zhang San"
}
]
}応答の例
{
"code": "Success",
"data": {
"nodes": [
{
"metadata": {
"_rc_v_score": 0.32581159472465515,
"_q_score": 1,
"source": "0",
"_score": 0.4556944966316223,
"doc_id": "table_xxxx75507aab4bd9a24c18d098b2e8ac_10285263_1",
"Sex": "Male",
"_rc_score": 0,
"Name": "San Zhang",
"doc_name": "Employee Sheet",
"_id": "llm-xxxxpd1xdjqp8itj_27ubwxxxxx_table_200275507aab4bd9a24c18d098b2e8ac_10285263_1",
"Age": "25",
"Position": "Technician"
},
"score": 0.4556944966316223,
"text": "Name:San Zhang Age:25 Position:Technician Sex:Male"
}
]
},
"message": "success",
"requestId": "2FA4113E-xxxx-59C1-BDB2-5B930D8C9B1C",
"status": "200",
"success": true
}Java
SingleQueryExample.java
// このサンプルコードは参照用です。本番環境では使用しないでください。
import com.aliyun.bailian20231229.models.RetrieveRequest;
import com.aliyun.bailian20231229.models.RetrieveResponse;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class SingleQueryExample {
/**
* description :
* <p>AccessKey ペアを使用してクライアントを初期化します。</p>
* @return Client
*
* @throws Exception
*/
public static com.aliyun.bailian20231229.Client createClient() throws Exception {
// AccessKey ペアを含むコードが漏洩すると、アカウント内のすべてのリソースのセキュリティが脅かされます。以下のサンプルコードは参照用です。
// セキュリティトークンサービス (STS) などのより安全な方法を使用して、アクセス認証情報を管理することを推奨します。詳細については、https://www.alibabacloud.com/help/sdk/developer-reference/v2-manage-access-credentials をご参照ください。
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// 必須。ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が設定されていることを確認してください。
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// 必須。ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// エンドポイントの詳細については、https://www.alibabacloud.com/help/model-studio/api-bailian-2023-12-29-endpoint をご参照ください。
config.endpoint = "bailian.ap-southeast-1.aliyuncs.com";
return new com.aliyun.bailian20231229.Client(config);
}
public static void main(String[] args) {
try {
com.aliyun.bailian20231229.Client client = createClient();
// RetrieveRequest オブジェクトを作成します。
RetrieveRequest request = new RetrieveRequest();
// 必須。実際のプロンプトを入力できます。
request.setQuery("Employees in the company named San Zhang");
// 必須。実際のナレッジベース ID を入力します。
request.setIndexId("Enter the actual knowledge base ID");
Map<String, String> map = new HashMap<>();
// 単一値クエリのプロパティは Name で、値は San Zhang です。実際のプロパティと値に置き換えることができます。
map.put("Name","San Zhang");
List<Map<String, String>> searchFilters = new ArrayList<>();
searchFilters.add(map);
request.setSearchFilters(searchFilters);
// 取得を実行します。ワークスペース ID と RetrieveRequest オブジェクトを入力します。
RetrieveResponse resp = client.retrieve("Enter the actual workspace ID", request);
System.out.println(new Gson().toJson(resp.getBody()));
} catch (Exception e) {
// ナレッジベースの取得失敗を処理します。
// これはデモンストレーション用です。例外の処理には注意してください。プロジェクトで例外を無視しないでください。
System.out.println(e.getMessage());
}
}
}リクエストの例
{
"indexId": "27ubwxxxxx",
"WorkspaceId":"llm-4u5xpd1xdjxxxxxx",
"query": "Employees in the company named San Zhang",
"searchFilters": [
{
"Name": "San Zhang"
}
]
}応答の例
{
"code": "Success",
"data": {
"nodes": [
{
"metadata": {
"_rc_v_score": 0.32581159472465515,
"_q_score": 1,
"source": "0",
"_score": 0.4556944966316223,
"doc_id": "table_xxxx75507aab4bd9a24c18d098b2e8ac_10285263_1",
"Sex": "Male",
"_rc_score": 0,
"Name": "San Zhang",
"doc_name": "Employee Sheet",
"_id": "llm-xxxxpd1xdjqp8itj_27ubwxxxxx_table_xxxx75507aab4bd9a24c18d098b2e8ac_10285263_1",
"Age": "25",
"Position": "Technician"
},
"score": 0.4556944966316223,
"text": "Name:San Zhang Age:25 Position:Technician Sex:Male"
}
]
},
"message": "success",
"requestId": "2FA4113E-xxxx-59C1-BDB2-5B930D8C9B1C",
"status": "200",
"success": true
}複数値クエリの例
複数値クエリでは、SQL の IN 演算子と同様に、取得フィールドに複数の値を渡すことができます。
例: 従業員情報ナレッジベースから、Name が San Zhang または Si Li であるレコードを取得します。
{
"searchFilters": [
{
"Name": ["Zhang San","Li Si"]
}
]
}次のパネルを展開して、サンプルコードを表示します。
Python
MultiQueryExample.py
# サンプルコードは参照用です。本番環境では使用しないでください。
import json
import os
import sys
from typing import List
from alibabacloud_bailian20231229 import models as bailian_20231229_models
from alibabacloud_bailian20231229.client import Client as bailian20231229Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_tea_util.client import Client as UtilClient
class MultiQueryExample:
def __init__(self):
pass
@staticmethod
def create_client() -> bailian20231229Client:
"""
AccessKey ペアを使用してクライアントを初期化します。
@return: Client
@throws Exception
"""
# AccessKey ペアを含むコードが漏洩すると、アカウント内のすべてのリソースのセキュリティが脅かされます。次のサンプルコードは参照用です。
# Security Token Service (STS) などのより安全な方法を使用してアクセスクレデンシャルを管理することをお勧めします。詳細については、https://www.alibabacloud.com/help/sdk/developer-reference/v2-manage-access-credentials をご参照ください。
config = open_api_models.Config(
# 必須。ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が設定されていることを確認してください。
access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
# 必須。ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
)
# エンドポイントの詳細については、https://www.alibabacloud.com/help/model-studio/api-bailian-2023-12-29-endpoint をご参照ください。
config.endpoint = f'bailian.ap-southeast-1.aliyuncs.com'
return bailian20231229Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
try:
client = MultiQueryExample.create_client()
# retrieve_request オブジェクトを作成します。
retrieve_request = bailian_20231229_models.RetrieveRequest()
# 必須。実際のプロンプトを入力できます。
retrieve_request.query = 'All employees in the company'
# 必須。実際のナレッジベース ID を入力します。
retrieve_request.index_id = 'Enter the actual knowledge base ID'
# 複数の値を格納するリストを作成します。
names = ["San Zhang", "Si Li"]
# 複数値クエリのプロパティは Name で、names リストに対応します。値は指定された "San Zhang" と "Si Li" です。これらを実際のプロパティと値に置き換えることができます。
retrieve_request.search_filters = [{"Name": json.dumps(names)}]
# 取得を実行します。ワークスペース ID と retrieve_request オブジェクトを入力します。
resp = client.retrieve('Enter the actual workspace ID', retrieve_request)
print(UtilClient.to_jsonstring(resp.body))
except Exception as error:
# これはデモンストレーションのみを目的としています。例外は慎重に処理してください。プロジェクトで例外を無視しないでください。
# エラーメッセージ
print(error.message)
if __name__ == '__main__':
MultiQueryExample.main(sys.argv[1:])リクエストの例
{
"indexId": "27ubwxxxxx",
"WorkspaceId":"llm-4u5xpd1xdjxxxxxx",
"query": "All employees in the company",
"searchFilters": [
{
"Name": ["San Zhang", "Si Li"]
}
]
}応答の例
{
"code": "Success",
"data": {
"nodes": [
{
"metadata": {
"_rc_v_score": 0.3016361088048254,
"_q_score": 1,
"source": "0",
"_score": 0.3322954773902893,
"doc_id": "table_xxxxad1c331c424780a8023376a73fac_10285263_1",
"Sex": "Male",
"_rc_score": 0,
"Name": "San Zhang",
"doc_name": "Employee Sheet",
"_id": "llm-xxxxpd1xdjqp8itj_27ubwxxxxx_table_xxxxad1c331c424780a8023376a73fac_10285263_1",
"Age": "25.0",
"Position": "Technician"
},
"score": 0.3322954773902893,
"text": "Name:San Zhang Age:25.0 Position:Technician Sex:Male"
},
{
"metadata": {
"_rc_v_score": 0.2531493306159973,
"_q_score": 0.8392540654998252,
"source": "0",
"_score": 0.25632044672966003,
"doc_id": "table_xxxxad1c331c424780a8023376a73fac_10285263_2",
"Sex": "Female",
"_rc_score": 0,
"Name": "Si Li",
"doc_name": "Employee Sheet",
"_id": "llm-xxxxpd1xdjqp8itj_27ubwxxxxx_table_xxxxad1c331c424780a8023376a73fac_10285263_2",
"Age": "31.0",
"Position": "Sales"
},
"score": 0.25632044672966003,
"text": "Name:Si Li Age:31.0 Position:Sales Sex:Female"
}
]
},
"message": "success",
"requestId": "1DFE5E9E-xxxx-5C37-8011-8FA2E2875309",
"status": "200",
"success": true
}Java
MultiQueryExample.java
// このサンプルコードは参照用です。本番環境では使用しないでください。
import com.aliyun.bailian20231229.models.RetrieveRequest;
import com.aliyun.bailian20231229.models.RetrieveResponse;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MultiQueryExample {
/**
* description :
* <p>AccessKey ペアを使用してクライアントを初期化します。</p>
* @return Client
*
* @throws Exception
*/
public static com.aliyun.bailian20231229.Client createClient() throws Exception {
// AccessKey ペアを含むコードが漏洩すると、アカウント内のすべてのリソースのセキュリティが脅かされます。以下のサンプルコードは参照用です。
// セキュリティトークンサービス (STS) などのより安全な方法を使用して、アクセス認証情報を管理することを推奨します。詳細については、https://www.alibabacloud.com/help/sdk/developer-reference/v2-manage-access-credentials をご参照ください。
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// 必須。ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が設定されていることを確認してください。
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// 必須。ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// エンドポイントの詳細については、https://www.alibabacloud.com/help/model-studio/api-bailian-2023-12-29-endpoint をご参照ください。
config.endpoint = "bailian.ap-southeast-1.aliyuncs.com";
return new com.aliyun.bailian20231229.Client(config);
}
public static void main(String[] args) {
try {
com.aliyun.bailian20231229.Client client = createClient();
// RetrieveRequest オブジェクトを作成します。
RetrieveRequest request = new RetrieveRequest();
// 必須。実際のプロンプトを入力できます。
request.setQuery("All employees in the company");
// 必須。実際のナレッジベース ID を入力します。
request.setIndexId("Enter the actual knowledge base ID");
// 複数の値を格納する JsonArray を作成します。
JsonArray array = new JsonArray();
array.add("San Zhang");
array.add("Si Li");
Map<String, String> map = new HashMap<>();
// 複数値クエリのプロパティは Name で、値は指定された "San Zhang" と "Si Li" です。実際のプロパティと値に置き換えることができます。
map.put("Name", array.toString());
List<Map<String, String>> searchFilters = new ArrayList<>();
searchFilters.add(map);
request.setSearchFilters(searchFilters);
// 取得を実行します。ワークスペース ID と RetrieveRequest オブジェクトを入力します。
RetrieveResponse resp = client.retrieve("Enter the actual workspace ID", request);
System.out.println(new Gson().toJson(resp.getBody()));
} catch (Exception e) {
// ナレッジベースの取得失敗を処理します。
// これはデモンストレーション用です。例外の処理には注意してください。プロジェクトで例外を無視しないでください。
System.out.println(e.getMessage());
}
}
}
リクエストの例
{
"indexId": "27ubwxxxxx",
"WorkspaceId":"llm-4u5xpd1xdjxxxxxx",
"query": "All employees in the company",
"searchFilters": [
{
"Name": ["San Zhang", "Si Li"]
}
]
}応答の例
{
"code": "Success",
"data": {
"nodes": [
{
"metadata": {
"_rc_v_score": 0.3016361088048254,
"_q_score": 1,
"source": "0",
"_score": 0.3322954773902893,
"doc_id": "table_xxxxad1c331c424780a8023376a73fac_10285263_1",
"Sex": "Male",
"_rc_score": 0,
"Name": "San Zhang",
"doc_name": "Employee Sheet",
"_id": "llm-xxxxpd1xdjqp8itj_27ubwxxxxx_table_xxxxad1c331c424780a8023376a73fac_10285263_1",
"Age": "25.0",
"Position": "Technician"
},
"score": 0.3322954773902893,
"text": "Name:San Zhang Age:25.0 Position:Technician Sex:Male"
},
{
"metadata": {
"_rc_v_score": 0.2531493306159973,
"_q_score": 0.8392540654998252,
"source": "0",
"_score": 0.25632044672966003,
"doc_id": "table_xxxxad1c331c424780a8023376a73fac_10285263_2",
"Sex": "Female",
"_rc_score": 0,
"Name": "Si Li",
"doc_name": "Employee Sheet",
"_id": "llm-xxxxpd1xdjqp8itj_27ubwxxxxx_table_xxxxad1c331c424780a8023376a73fac_10285263_2",
"Age": "31.0",
"Position": "Sales"
},
"score": 0.25632044672966003,
"text": "Name:Si Li Age:31.0 Position:Sales Sex:Female"
}
]
},
"message": "success",
"requestId": "1DFE5E9E-xxxx-5C37-8011-8FA2E2875309",
"status": "200",
"success": true
}範囲クエリの例
範囲クエリを使用すると、年齢などの取得フィールドの値が指定された範囲内にあるすべてのレコードを検索できます。
例: 従業員情報ナレッジベースから、Position が Technician (単一値クエリ) で、Age が 20 から 25 の間 (範囲クエリ) であるレコードを取得します。
{
"searchFilters": [
{
"Position": "Technician"
},
{
"Age": {
"gte": 20,
"lte": 25
}
}
]
}次のパネルを展開して、サンプルコードを表示します。
Python
RangeQueryExample.py
# このサンプルコードは参照用です。本番環境では使用しないでください。
import json
import os
import sys
from typing import List
from alibabacloud_bailian20231229 import models as bailian_20231229_models
from alibabacloud_bailian20231229.client import Client as bailian20231229Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_tea_util.client import Client as UtilClient
class RangeQueryExample:
class Range:
def __init__(self, gte, lte):
self.gte = gte
self.lte = lte
def to_dict(self):
return {
"gte": self.gte,
"lte": self.lte
}
def __init__(self):
pass
@staticmethod
def create_client() -> bailian20231229Client:
"""
AccessKey ペアを使用してクライアントを初期化します。
@return: Client
@throws Exception
"""
# AccessKey ペアを含むコードが漏洩すると、アカウント内のすべてのリソースのセキュリティが脅かされます。以下のサンプルコードは参照用です。
# セキュリティトークンサービス (STS) などのより安全な方法を使用して、アクセス認証情報を管理することを推奨します。詳細については、https://www.alibabacloud.com/help/sdk/developer-reference/v2-manage-access-credentials をご参照ください。
config = open_api_models.Config(
# 必須。ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が設定されていることを確認してください。
access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
# 必須。ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
)
# エンドポイントの詳細については、https://www.alibabacloud.com/help/model-studio/api-bailian-2023-12-29-endpoint をご参照ください。
config.endpoint = f'bailian.ap-southeast-1.aliyuncs.com'
return bailian20231229Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
try:
client = RangeQueryExample.create_client()
# retrieve_request オブジェクトを作成します。
retrieve_request = bailian_20231229_models.RetrieveRequest()
# 必須。実際のプロンプトを入力できます。
retrieve_request.query = 'All employees in the company'
# 必須。実際のナレッジベース ID を入力します。
retrieve_request.index_id = 'Enter the actual knowledge base ID'
# クエリプロパティは Age で、値は範囲です。実際のプロパティと値に置き換えることができます。
age_range = RangeQueryExample.Range(20, 27)
retrieve_request.search_filters = [
{"Position": "Technician"}, # グループ 1:Position フィルター条件
{"Age": json.dumps(age_range.to_dict())} # グループ 2:Age 範囲フィルター条件
]
# 取得を実行します。ワークスペース ID と retrieve_request オブジェクトを入力します。
resp = client.retrieve('Enter the actual workspace ID', retrieve_request)
print(UtilClient.to_jsonstring(resp.body))
except Exception as error:
# これはデモンストレーション用です。例外の処理には注意してください。プロジェクトで例外を無視しないでください。
# エラーメッセージ
print(error.message)
if __name__ == '__main__':
RangeQueryExample.main(sys.argv[1:])
リクエストの例
{
"indexId": "27ubwxxxxx",
"WorkspaceId":"llm-4u5xpd1xdjxxxxxx",
"query": "All employees in the company",
"searchFilters": [
{
"Sex": "Male"
},
{
"Age": "{\"gte\":20.0,\"lte\":27.0}"
}
]
}応答の例
{
"code": "Success",
"data": {
"nodes": [
{
"metadata": {
"_rc_v_score": 0.3016361088048254,
"_q_score": 1,
"source": "0",
"_score": 0.3322954773902893,
"doc_id": "table_xxxxad1c331c424780a8023376a73fac_10285263_1",
"Sex": "Male",
"_rc_score": 0,
"Name": "San Zhang",
"doc_name": "Employee Sheet",
"_id": "llm-xxxxpd1xdjqp8itj_27ubwxxxxx_table_xxxxad1c331c424780a8023376a73fac_10285263_1",
"Age": "25.0",
"Position": "Technician"
},
"score": 0.3322954773902893,
"text": "Name:San Zhang Age:25.0 Position:Technician Sex:Male"
}
]
},
"message": "success",
"requestId": "AE0B5ABC-xxxx-54A1-9ED4-91865B859DF6",
"status": "200",
"success": true
}Java
RangeQueryExample.java
// このサンプルコードは参照用です。本番環境では使用しないでください。
import com.aliyun.bailian20231229.models.RetrieveRequest;
import com.aliyun.bailian20231229.models.RetrieveResponse;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class RangeQueryExample {
/**
* description :
* <p>AccessKey ペアを使用してクライアントを初期化します。</p>
* @return Client
*
* @throws Exception
*/
public static com.aliyun.bailian20231229.Client createClient() throws Exception {
// AccessKey ペアを含むコードが漏洩すると、アカウント内のすべてのリソースのセキュリティが脅かされます。以下のサンプルコードは参照用です。
// セキュリティトークンサービス (STS) などのより安全な方法を使用して、アクセス認証情報を管理することを推奨します。詳細については、https://www.alibabacloud.com/help/sdk/developer-reference/v2-manage-access-credentials をご参照ください。
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// 必須。ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が設定されていることを確認してください。
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// 必須。ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// エンドポイントの詳細については、https://www.alibabacloud.com/help/model-studio/api-bailian-2023-12-29-endpoint をご参照ください。
config.endpoint = "bailian.ap-southeast-1.aliyuncs.com";
return new com.aliyun.bailian20231229.Client(config);
}
public static void main(String[] args) {
try {
com.aliyun.bailian20231229.Client client = createClient();
// RetrieveRequest オブジェクトを作成します。
RetrieveRequest request = new RetrieveRequest();
// 必須。実際のプロンプトを入力できます。
request.setQuery("All employees in the company");
// 必須。実際のナレッジベース ID を入力します。
request.setIndexId("Enter the actual knowledge base ID");
Map<String, String> map1 = new HashMap<>();
// グループ 1 のクエリプロパティは Sex で、値は Male です。実際のプロパティと値に置き換えることができます。
map1.put("Sex", "Male");
// グループ 2 のクエリプロパティは Age で、値は範囲です。実際のプロパティと値に置き換えることができます。
Map<String, String> map2 = new HashMap<>();
Range range = new Range(20, 27);
map2.put("Age", new Gson().toJson(range));
List<Map<String, String>> searchFilters = new ArrayList<>();
searchFilters.add(map1);
searchFilters.add(map2);
request.setSearchFilters(searchFilters);
// 取得を実行します。ワークスペース ID と RetrieveRequest オブジェクトを入力します。
RetrieveResponse resp = client.retrieve("Enter the actual workspace ID", request);
System.out.println(new Gson().toJson(resp.getBody()));
} catch (Exception e) {
// ナレッジベースの取得失敗を処理します。
// これはデモンストレーション用です。例外の処理には注意してください。プロジェクトで例外を無視しないでください。
System.out.println(e.getMessage());
}
}
static class Range {
double gte;
double lte;
public Range(double gte, double lte) {
this.gte = gte;
this.lte = lte;
}
}
}リクエストの例
{
"indexId": "27ubwxxxxx",
"WorkspaceId":"llm-4u5xpd1xdjxxxxxx",
"query": "All employees in the company",
"searchFilters": [
{
"Sex": "Male"
},
{
"Age": "{\"gte\":20.0,\"lte\":27.0}"
}
]
}応答の例
{
"code": "Success",
"data": {
"nodes": [
{
"metadata": {
"_rc_v_score": 0.3016361088048254,
"_q_score": 1,
"source": "0",
"_score": 0.3322954773902893,
"doc_id": "table_xxxxad1c331c424780a8023376a73fac_10285263_1",
"Sex": "Male",
"_rc_score": 0,
"Name": "San Zhang",
"doc_name": "Employee Sheet",
"_id": "llm-xxxxpd1xdjqp8itj_27ubwxxxxx_table_xxxxad1c331c424780a8023376a73fac_10285263_1",
"Age": "25.0",
"Position": "Technician"
},
"score": 0.3322954773902893,
"text": "Name:San Zhang Age:25.0 Position:Technician Sex:Male"
}
]
},
"message": "success",
"requestId": "AE0B5ABC-xxxx-54A1-9ED4-91865B859DF6",
"status": "200",
"success": true
}あいまい検索の例
あいまい検索では、ワイルドカード文字を使用して、SQL の LIKE 演算子と同様に、特定の文字シーケンスを含むレコードを検索します。
SearchFilters のあいまい検索は、SQL 構文と一致する次のワイルドカード文字をサポートしています。
ワイルドカード文字 | 説明 |
% | 0 個以上の文字を置き換えます。 |
_ | 1 文字を置き換えます。 |
例:従業員情報ナレッジベースから、Name が Zhang San で、Position に技と员の両方の文字が含まれるレコードを取得します (たとえば、「技術者」や「技術スタッフ」など)。
{
"searchFilters": [
{
"name": "Zhang San"
},
{
"position": {
"like": "Tech%ian"
}
}
]
}次のパネルを展開して、サンプルコードを表示します。
Python
WildcardQueryExample.py
# このサンプルコードは参照用です。本番環境では使用しないでください。
import json
import os
import sys
from typing import List
from alibabacloud_bailian20231229 import models as bailian_20231229_models
from alibabacloud_bailian20231229.client import Client as bailian20231229Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_tea_util.client import Client as UtilClient
class WildcardQueryExample:
class QueryObject:
def __init__(self, prefix):
self.like = prefix
def to_dict(self):
return {
"like": self.like
}
def __init__(self):
pass
@staticmethod
def create_client() -> bailian20231229Client:
"""
AccessKey ペアを使用してクライアントを初期化します。
@return: Client
@throws Exception
"""
# AccessKey ペアを含むコードが漏洩すると、アカウント内のすべてのリソースのセキュリティが脅かされます。以下のサンプルコードは参照用です。
# セキュリティトークンサービス (STS) などのより安全な方法を使用して、アクセス認証情報を管理することを推奨します。詳細については、https://www.alibabacloud.com/help/sdk/developer-reference/v2-manage-access-credentials をご参照ください。
config = open_api_models.Config(
# 必須。ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が設定されていることを確認してください。
access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
# 必須。ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
)
# エンドポイントの詳細については、https://www.alibabacloud.com/help/model-studio/api-bailian-2023-12-29-endpoint をご参照ください。
config.endpoint = f'bailian.ap-southeast-1.aliyuncs.com'
return bailian20231229Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
try:
client = WildcardQueryExample.create_client()
# retrieve_request オブジェクトを作成します。
retrieve_request = bailian_20231229_models.RetrieveRequest()
# 必須。実際のプロンプトを入力できます。
retrieve_request.query = 'Male employees in the company'
# 必須。実際のナレッジベース ID を入力します。
retrieve_request.index_id = 'Enter the actual knowledge base ID'
# あいまい検索のプロパティは Position で、値は Tech%ian です。% ワイルドカード文字は、0 文字以上の任意の文字列に一致します。実際の値に置き換えることができます。
position = WildcardQueryExample.QueryObject('Tech%ian')
retrieve_request.search_filters = [
{"Name": "San Zhang"}, # Name フィルター条件。実際のプロパティと値に置き換えることができます。
{"Position": json.dumps(position.to_dict())} # Position (あいまい検索) フィルター条件。実際のプロパティと値に置き換えることができます。
]
# 取得を実行します。ワークスペース ID と retrieve_request オブジェクトを入力します。
resp = client.retrieve('Enter the actual workspace ID', retrieve_request)
print(UtilClient.to_jsonstring(resp.body))
except Exception as error:
# これはデモンストレーション用です。例外の処理には注意してください。プロジェクトで例外を無視しないでください。
# エラーメッセージ
print(error.message)
if __name__ == '__main__':
WildcardQueryExample.main(sys.argv[1:])
リクエストの例
{
"indexId": "27ubwxxxxx",
"WorkspaceId":"llm-4u5xpd1xdjxxxxxx",
"query": "male employees in the company",
"searchFilters": [
{
"Name": "Zhang San"
},
{
"Position": "{\"like\":\"Tech%ian\"}"
}
]
}応答の例
{
"code": "Success",
"data": {
"nodes": [
{
"metadata": {
"_rc_v_score": 0.41137335930387275,
"_q_score": 1,
"source": "0",
"_score": 0.46098726987838745,
"doc_id": "table_xxxxad1c331c424780a8023376a73fac_10285263_1",
"Sex": "Male",
"_rc_score": 0,
"Name": "San Zhang",
"doc_name": "Employee Sheet",
"_id": "llm-xxxxpd1xdjqp8itj_27ubwxxxxx_table_xxxxad1c331c424780a8023376a73fac_10285263_1",
"Age": "25.0",
"Position": "Technician"
},
"score": 0.46098726987838745,
"text": "Name:San Zhang Age:25.0 Position:Technician Sex:Male"
}
]
},
"message": "success",
"requestId": "FA759FEC-xxxx-50B7-A64D-BE49A7DF56B8",
"status": "200",
"success": true
}Java
WildcardQueryExample.java
// このサンプルコードは参照用です。本番環境では使用しないでください。
import com.aliyun.bailian20231229.models.RetrieveRequest;
import com.aliyun.bailian20231229.models.RetrieveResponse;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class WildcardQueryExample {
/**
* description :
* <p>AccessKey ペアを使用してクライアントを初期化します。</p>
*
* @return Client
* @throws Exception
*/
public static com.aliyun.bailian20231229.Client createClient() throws Exception {
// AccessKey ペアを含むコードが漏洩すると、アカウント内のすべてのリソースのセキュリティが脅かされます。以下のサンプルコードは参照用です。
// セキュリティトークンサービス (STS) などのより安全な方法を使用して、アクセス認証情報を管理することを推奨します。詳細については、https://www.alibabacloud.com/help/sdk/developer-reference/v2-manage-access-credentials をご参照ください。
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// 必須。ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が設定されていることを確認してください。
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// 必須。ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// エンドポイントの詳細については、https://www.alibabacloud.com/help/model-studio/api-bailian-2023-12-29-endpoint をご参照ください。
config.endpoint = "bailian.ap-southeast-1.aliyuncs.com";
return new com.aliyun.bailian20231229.Client(config);
}
public static void main(String[] args_) {
try {
com.aliyun.bailian20231229.Client client = createClient();
// RetrieveRequest オブジェクトを作成します。
RetrieveRequest request = new RetrieveRequest();
// 必須。実際のプロンプトを入力できます。
request.setQuery("Male employees in the company");
// 必須。実際のナレッジベース ID を入力します。
request.setIndexId("Enter the actual knowledge base ID");
// グループ 1 のクエリプロパティは Name で、値は San Zhang です。実際のプロパティと値に置き換えることができます。
Map<String, String> map1 = new HashMap<>();
map1.put("Name", "San Zhang");
// グループ 2 のクエリプロパティは Position で、値は Tech%ian です。% ワイルドカード文字は、0 文字以上の任意の文字列に一致します。実際の値に置き換えることができます。
Map<String, String> map2 = new HashMap<>();
QueryObject queryObject = new QueryObject("Tech%ian");
map2.put("Position", new Gson().toJson(queryObject));
List<Map<String, String>> searchFilters = new ArrayList<>();
searchFilters.add(map1);
searchFilters.add(map2);
request.setSearchFilters(searchFilters);
// 取得を実行します。ワークスペース ID と RetrieveRequest オブジェクトを入力します。
RetrieveResponse resp = client.retrieve("Enter the actual workspace ID", request);
System.out.println(new Gson().toJson(resp.getBody()));
} catch (Exception e) {
// ナレッジベースの取得失敗を処理します。
// これはデモンストレーション用です。例外の処理には注意してください。プロジェクトで例外を無視しないでください。
System.out.println(e.getMessage());
}
}
static class QueryObject {
String like;
public QueryObject(String prefix) {
this.like = prefix;
}
public String getLike() {
return like;
}
public void setLike(String like) {
this.like = like;
}
}
}リクエストの例
{
"indexId": "27ubwxxxxx",
"WorkspaceId":"llm-4u5xpd1xdjxxxxxx",
"query": "male employees in the company",
"searchFilters": [
{
"Name": "Zhang San"
},
{
"Position": "{\"like\":\"Tech%ian\"}"
}
]
}応答の例
{
"code": "Success",
"data": {
"nodes": [
{
"metadata": {
"_rc_v_score": 0.41137335930387275,
"_q_score": 1,
"source": "0",
"_score": 0.46098726987838745,
"doc_id": "table_xxxxad1c331c424780a8023376a73fac_10285263_1",
"Sex": "Male",
"_rc_score": 0,
"Name": "San Zhang",
"doc_name": "Employee Sheet",
"_id": "llm-xxxxpd1xdjqp8itj_27ubwxxxxx_table_xxxxad1c331c424780a8023376a73fac_10285263_1",
"Age": "25.0",
"Position": "Technician"
},
"score": 0.46098726987838745,
"text": "Name:San Zhang Age:25.0 Position:Technician Sex:Male"
}
]
},
"message": "success",
"requestId": "FA759FEC-xxxx-50B7-A64D-BE49A7DF56B8",
"status": "200",
"success": true
}タグクエリの例
ドキュメント検索のナレッジベースを検索する際、タグを使用してファイルをフィルター処理し、取得の効率と精度を向上させることができます。
例: San Zhang、Si Li、Wu Wang の 3 人の個人に関する情報を含むドキュメント検索ナレッジベースを作成します。

前述のファイルには次のタグがあります。
ファイル | タグ |
San Zhang の履歴書 |
|
Si Li の履歴書 |
|
Wang Wu の履歴書 |
|
例として、`SearchFilters` を使用して人材ナレッジベースをクエリし、University A または Student Union President のタグを持つファイルからテキストセグメントを返します:
複数のタグには論理 AND 関係ではなく、論理 OR 関係が適用されます。論理 AND を実装するには、サブグループクエリを使用できます。
{
"searchFilters": [
{
"tags": ["University A","Student Union President"]
}
]
}次のパネルを展開して、サンプルコードを表示します。
Python
TagQueryExample.py
# サンプルコードは参照用です。本番環境では使用しないでください。
import json
import os
import sys
from typing import List
from alibabacloud_bailian20231229 import models as bailian_20231229_models
from alibabacloud_bailian20231229.client import Client as bailian20231229Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_tea_util.client import Client as UtilClient
class TagQueryExample:
def __init__(self):
pass
@staticmethod
def create_client() -> bailian20231229Client:
"""
AccessKey ペアを使用してクライアントを初期化します。
@return: Client
@throws Exception
"""
# AccessKey ペアを含むコードが漏洩すると、アカウント内のすべてのリソースのセキュリティが脅かされます。次のサンプルコードは参照用です。
# Security Token Service (STS) などのより安全な方法を使用してアクセスクレデンシャルを管理することをお勧めします。詳細については、https://www.alibabacloud.com/help/zh/sdk/developer-reference/v2-manage-python-access-credentials をご参照ください。
config = open_api_models.Config(
# 必須。ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が設定されていることを確認してください。
access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
# 必須。ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
)
# エンドポイントの詳細については、https://www.alibabacloud.com/help/model-studio/api-bailian-2023-12-29-endpoint をご参照ください。
config.endpoint = f'bailian.ap-southeast-1.aliyuncs.com'
return bailian20231229Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
client = TagQueryExample.create_client()
# retrieve_request オブジェクトを作成します。
retrieve_request = bailian_20231229_models.RetrieveRequest()
# 必須。実際のプロンプトを入力できます。
retrieve_request.query = 'Provide some candidates'
# 必須。実際のナレッジベース ID を入力します。
retrieve_request.index_id = 'Enter the actual knowledge base ID'
# タグを格納するリストを作成します。複数のタグ間の論理関係は AND ではなく OR です。
tags = ["University A", "Student Union President"]
retrieve_request.search_filters = [
{"tags": json.dumps(tags)}
]
try:
# 取得を実行します。ワークスペース ID と retrieve_request オブジェクトを入力します。
resp = client.retrieve('Enter the actual workspace ID', retrieve_request)
print(UtilClient.to_jsonstring(resp.body))
except Exception as error:
# これはデモンストレーションのみを目的としています。例外は慎重に処理してください。プロジェクトで例外を無視しないでください。
# エラーメッセージ
print(error.message)
if __name__ == '__main__':
TagQueryExample.main(sys.argv[1:])リクエストの例
{
"IndexId": "8mbtdxxxxx",
"WorkspaceId": "llm-4u5xpd1xdjxxxxxx",
"Query": "Provide some candidates",
"SearchFilters": [{"tags":["University A", "Student Union President"]}]
}応答の例
{
"Code": "Success",
"Data": {
"Nodes": [
{
"Metadata": {
"file_path": "https://bailian-datahub-data-prod.oss-cn-beijing.aliyuncs.com/10285263/multimodal/docJson/Zhang_San_Resume_1746760910599.json?Expires=1747020348&OSSAccessKeyId=LTAI************&Signature=roY%2Falbh6smkLdPuA6wjnZRVMa4%3D",
"is_displayed_chunk_content": "true",
"_rc_v_score": 0.1422617520249937,
"image_url": [],
"nid": "ba8a14099f43308734538c29271cc7cd|b99e98835c3c6d8f6496df5a43de0ba5|aa3ed8fc4aae8bbb78872994b01e0fda",
"_q_score": 0.8935035934804278,
"source": "0",
"_score": 0.1736905574798584,
"title": "",
"doc_id": "file_e787926158704f95aad6bc967619f176_10285263",
"content": "Name: San Zhang Sex: Male Age: 23",
"_rc_score": 0,
"workspace_id": "llm-4u5xpd1xdjxxxxxx",
"hier_title": "",
"page_number": [
0
],
"doc_name": "San Zhang's Resume",
"pipeline_id": "8mbtdxxxxx",
"_id": "llm-4u5xpd1xdjxxxxxx_8mbtdxxxxx_file_e787926158704f95aad6bc967619f176_10285263_0_0"
},
"Score": 0.1736905574798584,
"Text": "Name: San Zhang Sex: Male Age: 23"
},
{
"Metadata": {
"file_path": "https://bailian-datahub-data-prod.oss-cn-beijing.aliyuncs.com/10285263/multimodal/docJson/Wang_Wu_Resume_1746760946844.json?Expires=1747020348&OSSAccessKeyId=LTAI************&Signature=gTGPTce5xUu9mtcMcmyMEeb5azk%3D",
"is_displayed_chunk_content": "true",
"_rc_v_score": 0.1592178845871759,
"image_url": [],
"nid": "ba8a14099f43308734538c29271cc7cd|d4a048b6799ce07e08430f018af091a0|fe90f8248ea64f70ea37c0df7afcfc12",
"_q_score": 1,
"source": "0",
"_score": 0.15737050771713257,
"title": "",
"doc_id": "file_63563df5df66488cb8e28bfff11e40eb_10285263",
"content": "Name: Wu Wang Sex: Male Age: 23",
"_rc_score": 0,
"workspace_id": "llm-4u5xpd1xdjxxxxxx",
"hier_title": "",
"page_number": [
0
],
"doc_name": "Wu Wang's Resume",
"pipeline_id": "8mbtdxxxxx",
"_id": "llm-4u5xpd1xdjxxxxxx_8mbtdxxxxx_file_63563df5df66488cb8e28bfff11e40eb_10285263_0_0"
},
"Score": 0.15737050771713257,
"Text": "Name: Wu Wang Sex: Male Age: 23"
}
]
},
"Message": "success",
"RequestId": "12A5F9C6-xxxx-5593-8955-86D52585EE27",
"Status": 200,
"Success": true
}Java
TagQueryExample.java
// このサンプルコードは参照用です。本番環境では使用しないでください。
import com.aliyun.bailian20231229.models.RetrieveRequest;
import com.aliyun.bailian20231229.models.RetrieveResponse;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class TagQueryExample {
/**
* description :
* <p>AccessKey ペアを使用してクライアントを初期化します。</p>
*
* @return Client
* @throws Exception
*/
public static com.aliyun.bailian20231229.Client createClient() throws Exception {
// AccessKey ペアを含むコードが漏洩すると、アカウント内のすべてのリソースのセキュリティが脅かされます。以下のサンプルコードは参照用です。
// セキュリティトークンサービス (STS) などのより安全な方法を使用して、アクセス認証情報を管理することを推奨します。詳細については、https://www.alibabacloud.com/help/sdk/developer-reference/v2-manage-access-credentials をご参照ください。
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// 必須。ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が設定されていることを確認してください。
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// 必須。ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// エンドポイントの詳細については、https://www.alibabacloud.com/help/model-studio/api-bailian-2023-12-29-endpoint をご参照ください。
config.endpoint = "bailian.ap-southeast-1.aliyuncs.com";
return new com.aliyun.bailian20231229.Client(config);
}
public static void main(String[] args) {
try {
com.aliyun.bailian20231229.Client client = createClient();
// RetrieveRequest オブジェクトを作成します。
RetrieveRequest request = new RetrieveRequest();
// 必須。実際のプロンプトを入力できます。
request.setQuery("Provide some candidates");
// 必須。実際のナレッジベース ID を入力します。
request.setIndexId("Enter the actual knowledge base ID");
// タグを格納する JsonArray を作成します。複数のタグ間の論理関係は AND ではなく OR です。
JsonArray array = new JsonArray();
array.add("University A");
array.add("Student Union President");
Map<String, String> map = new HashMap<>();
map.put("tags", array.toString());
List<Map<String, String>> searchFilters = new ArrayList<>();
searchFilters.add(map);
request.setSearchFilters(searchFilters);
// 取得を実行します。ワークスペース ID と RetrieveRequest オブジェクトを入力します。
RetrieveResponse resp = client.retrieve("Enter the actual workspace ID", request);
System.out.println(new Gson().toJson(resp.getBody()));
} catch (Exception e) {
// ナレッジベースの取得失敗を処理します。
// これはデモンストレーション用です。例外の処理には注意してください。プロジェクトで例外を無視しないでください。
System.out.println(e.getMessage());
}
}
}
リクエストの例
{
"IndexId": "8mbtdxxxxx",
"WorkspaceId": "llm-4u5xpd1xdjxxxxxx",
"Query": "Provide some candidates",
"SearchFilters": "[{\"tags\":[\"University A\", \"Student Union President\"]}]"
}応答の例
{
"Code": "Success",
"Data": {
"Nodes": [
{
"Metadata": {
"file_path": "https://bailian-datahub-data-prod.oss-cn-beijing.aliyuncs.com/10285263/multimodal/docJson/%E5%BC%A0%E4%B8%89%E7%AE%80%E5%8E%86_1746760910599.json?Expires=1747020348&OSSAccessKeyId=LTAI************&Signature=roY%2Falbh6smkLdPuA6wjnZRVMa4%3D",
"is_displayed_chunk_content": "true",
"_rc_v_score": 0.1422617520249937,
"image_url": [],
"nid": "ba8a14099f43308734538c29271cc7cd|b99e98835c3c6d8f6496df5a43de0ba5|aa3ed8fc4aae8bbb78872994b01e0fda",
"_q_score": 0.8935035934804278,
"source": "0",
"_score": 0.1736905574798584,
"title": "",
"doc_id": "file_e787926158704f95aad6bc967619f176_10285263",
"content": "Name: San Zhang Sex: Male Age: 23",
"_rc_score": 0,
"workspace_id": "llm-4u5xpd1xdjxxxxxx",
"hier_title": "",
"page_number": [
0
],
"doc_name": "San Zhang's Resume",
"pipeline_id": "8mbtdxxxxx",
"_id": "llm-4u5xpd1xdjxxxxxx_8mbtdxxxxx_file_e787926158704f95aad6bc967619f176_10285263_0_0"
},
"Score": 0.1736905574798584,
"Text": "Name: San Zhang Sex: Male Age: 23"
},
{
"Metadata": {
"file_path": "https://bailian-datahub-data-prod.oss-cn-beijing.aliyuncs.com/10285263/multimodal/docJson/%E7%8E%8B%E4%BA%94%E7%AE%80%E5%8E%86_1746760946844.json?Expires=1747020348&OSSAccessKeyId=LTAI************&Signature=gTGPTce5xUu9mtcMcmyMEeb5azk%3D",
"is_displayed_chunk_content": "true",
"_rc_v_score": 0.1592178845871759,
"image_url": [],
"nid": "ba8a14099f43308734538c29271cc7cd|d4a048b6799ce07e08430f018af091a0|fe90f8248ea64f70ea37c0df7afcfc12",
"_q_score": 1,
"source": "0",
"_score": 0.15737050771713257,
"title": "",
"doc_id": "file_63563df5df66488cb8e28bfff11e40eb_10285263",
"content": "Name: Wu Wang Sex: Male Age: 23",
"_rc_score": 0,
"workspace_id": "llm-4u5xpd1xdjxxxxxx",
"hier_title": "",
"page_number": [
0
],
"doc_name": "Wu Wang's Resume",
"pipeline_id": "8mbtdxxxxx",
"_id": "llm-4u5xpd1xdjxxxxxx_8mbtdxxxxx_file_63563df5df66488cb8e28bfff11e40eb_10285263_0_0"
},
"Score": 0.15737050771713257,
"Text": "Name: Wu Wang Sex: Male Age: 23"
}
]
},
"Message": "success",
"RequestId": "12A5F9C6-xxxx-5593-8955-86D52585EE27",
"Status": 200,
"Success": true
}例: SearchFilters を使用して人材ナレッジベースをクエリし、University A と Sports Specialist Student の両方のタグを持つファイルからテキストセグメントを返します (論理 AND)。
{
"searchFilters": [
{
"tags": ["University A"]
},
{
"tags": ["Sports Specialist Student"]
}
]
}次のパネルを展開して、サンプルコードを表示します。
Python
TagQueryExample2.py
import json
import os
import sys
from typing import List
from alibabacloud_bailian20231229 import models as bailian_20231229_models
from alibabacloud_bailian20231229.client import Client as bailian20231229Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_tea_util.client import Client as UtilClient
class TagQueryExample2:
def __init__(self):
pass
@staticmethod
def create_client() -> bailian20231229Client:
"""
AccessKey ペアを使用してクライアントを初期化します。
@return: Client
@throws Exception
"""
# AccessKey ペアを含むコードが漏洩すると、アカウント内のすべてのリソースのセキュリティが脅かされます。以下のサンプルコードは参照用です。
# セキュリティトークンサービス (STS) などのより安全な方法を使用して、アクセス認証情報を管理することを推奨します。詳細については、https://www.alibabacloud.com/help/zh/sdk/developer-reference/v2-manage-python-access-credentials をご参照ください。
config = open_api_models.Config(
# 必須。ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が設定されていることを確認してください。
access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
# 必須。ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
)
# エンドポイントの詳細については、https://www.alibabacloud.com/help/model-studio/api-bailian-2023-12-29-endpoint をご参照ください。
config.endpoint = f'bailian.ap-southeast-1.aliyuncs.com'
return bailian20231229Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
client = TagQueryExample2.create_client()
# retrieve_request オブジェクトを作成します。
retrieve_request = bailian_20231229_models.RetrieveRequest()
# 必須。実際のプロンプトを入力できます。
retrieve_request.query = 'Provide some candidates'
# 必須。実際のナレッジベース ID を入力します。
retrieve_request.index_id = 'Enter the actual knowledge base ID'
# タグを格納する 2 つのリストを作成します。
tag1 = ["University A"]
tag2 = ["Sports Specialist Student"]
retrieve_request.search_filters = [
{"tags": json.dumps(tag1)},
{"tags": json.dumps(tag2)}
]
try:
# 取得を実行します。ワークスペース ID と retrieve_request オブジェクトを入力します。
resp = client.retrieve('Enter the actual workspace ID', retrieve_request)
print(UtilClient.to_jsonstring(resp.body))
except Exception as error:
# これはデモンストレーション用です。例外の処理には注意してください。プロジェクトで例外を無視しないでください。
# エラーメッセージ
print(error.message)
if __name__ == '__main__':
TagQueryExample2.main(sys.argv[1:]) リクエストの例
{
"IndexId": "8mbtdxxxxx",
"WorkspaceId": "llm-4u5xpd1xdjxxxxxx",
"Query": "Provide some candidates",
"SearchFilters": [{"tags":["University A"]},{"tags":["Sports Specialist Student"]}]
}応答の例
{
"Code": "Success",
"Data": {
"Nodes": [
{
"Metadata": {
"file_path": "https://bailian-datahub-data-prod.oss-cn-beijing.aliyuncs.com/10285263/multimodal/docJson/%E5%BC%A0%E4%B8%89%E7%AE%80%E5%8E%86_1746760910599.json?Expires=1747020348&OSSAccessKeyId=LTAI************&Signature=roY%2Falbh6smkLdPuA6wjnZRVMa4%3D",
"is_displayed_chunk_content": "true",
"_rc_v_score": 0.1422617520249937,
"image_url": [],
"nid": "ba8a14099f43308734538c29271cc7cd|b99e98835c3c6d8f6496df5a43de0ba5|aa3ed8fc4aae8bbb78872994b01e0fda",
"_q_score": 1,
"source": "0",
"_score": 0.1736905574798584,
"title": "",
"doc_id": "file_e787926158704f95aad6bc967619f176_10285263",
"content": "Name: San Zhang Sex: Male Age: 23",
"_rc_score": 0,
"workspace_id": "llm-4u5xpd1xdjxxxxxx",
"hier_title": "",
"page_number": [
0
],
"doc_name": "San Zhang's Resume",
"pipeline_id": "8mbtdxxxxx",
"_id": "llm-4u5xpd1xdjxxxxxx_8mbtdxxxxx_file_e787926158704f95aad6bc967619f176_10285263_0_0"
},
"Score": 0.1736905574798584,
"Text": "Name: San Zhang Sex: Male Age: 23"
}
]
},
"Message": "success",
"RequestId": "1ED6CECE-xxxx-5B21-91DB-410E0219412A",
"Status": 200,
"Success": true
}
Java
TagQueryExample2.java
import com.aliyun.bailian20231229.models.RetrieveRequest;
import com.aliyun.bailian20231229.models.RetrieveResponse;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class TagQueryExample2 {
/**
* description :
* <p>AccessKey ペアを使用してクライアントを初期化します。</p>
*
* @return Client
* @throws Exception
*/
public static com.aliyun.bailian20231229.Client createClient() throws Exception {
// AccessKey ペアを含むコードが漏洩すると、アカウント内のすべてのリソースのセキュリティが脅かされます。以下のサンプルコードは参照用です。
// セキュリティトークンサービス (STS) などのより安全な方法を使用して、アクセス認証情報を管理することを推奨します。詳細については、https://www.alibabacloud.com/help/sdk/developer-reference/v2-manage-access-credentials をご参照ください。
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// 必須。ALIBABA_CLOUD_ACCESS_KEY_ID 環境変数が設定されていることを確認してください。
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// 必須。ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// エンドポイントの詳細については、https://www.alibabacloud.com/help/model-studio/api-bailian-2023-12-29-endpoint をご参照ください。
config.endpoint = "bailian.ap-southeast-1.aliyuncs.com";
return new com.aliyun.bailian20231229.Client(config);
}
public static void main(String[] args) {
try {
com.aliyun.bailian20231229.Client client = createClient();
// RetrieveRequest オブジェクトを作成します。
RetrieveRequest request = new RetrieveRequest();
// 必須。実際のプロンプトを入力できます。
request.setQuery("Provide some candidates");
// 必須。実際のナレッジベース ID を入力します。
request.setIndexId("Enter the actual knowledge base ID");
// タグを格納する JsonArray を作成します。
JsonArray tag1 = new JsonArray();
tag1.add("University A");
JsonArray tag2 = new JsonArray();
tag2.add("Sports Specialist Student");
Map<String, String> map1 = new HashMap<>();
map1.put("tags", tag1.toString());
Map<String, String> map2 = new HashMap<>();
map2.put("tags", tag2.toString());
List<Map<String, String>> searchFilters = new ArrayList<>();
searchFilters.add(map1);
searchFilters.add(map2);
request.setSearchFilters(searchFilters);
// 取得を実行します。ワークスペース ID と RetrieveRequest オブジェクトを入力します。
RetrieveResponse resp = client.retrieve("Enter the actual workspace ID", request);
System.out.println(new Gson().toJson(resp.getBody()));
} catch (Exception e) {
// ナレッジベースの取得失敗を処理します。
// これはデモンストレーション用です。例外の処理には注意してください。プロジェクトで例外を無視しないでください。
System.out.println(e.getMessage());
}
}
}
リクエストの例
{
"IndexId": "8mbtdxxxxx",
"WorkspaceId": "llm-4u5xpd1xdjxxxxxx",
"Query": "Provide some candidates",
"SearchFilters": [{"tags":["University A"]},{"tags":["Sports Specialist Student"]}]
}応答の例
{
"Code": "Success",
"Data": {
"Nodes": [
{
"Metadata": {
"file_path": "https://bailian-datahub-data-prod.oss-cn-beijing.aliyuncs.com/10285263/multimodal/docJson/%E5%BC%A0%E4%B8%89%E7%AE%80%E5%8E%86_1746760910599.json?Expires=1747020348&OSSAccessKeyId=LTAI************&Signature=roY%2Falbh6smkLdPuA6wjnZRVMa4%3D",
"is_displayed_chunk_content": "true",
"_rc_v_score": 0.1422617520249937,
"image_url": [],
"nid": "ba8a14099f433087c7cd|b99e98835c3c6d8f6496df5a43de0ba5|aa3ed8fc4aae8bbb78872994b01e0fda",
"_q_score": 1,
"source": "0",
"_score": 0.1736905574798584,
"title": "",
"doc_id": "file_e787926158704f95aad6bc967619f176_10285263",
"content": "Name: San Zhang Sex: Male Age: 23",
"_rc_score": 0,
"workspace_id": "llm-4u5xpd1xdjxxxxxx",
"hier_title": "",
"page_number": [
0
],
"doc_name": "San Zhang's Resume",
"pipeline_id": "8mbtdxxxxx",
"_id": "llm-4u5xpd1xdjxxxxxx_8mbtdxxxxx_file_e787926158704f95aad6bc967619f176_10285263_0_0"
},
"Score": 0.1736905574798584,
"Text": "Name: San Zhang Sex: Male Age: 23"
}
]
},
"Message": "success",
"RequestId": "1ED6CECE-xxxx-5B21-91DB-410E0219412A",
"Status": 200,
"Success": true
}
リファレンス
ナレッジベースユーザーガイド | 詳細については、「ナレッジベースの作成と使用」をご参照ください。 |
ナレッジベースからの取得 | Retrieve API を呼び出してナレッジベースから取得し、テキストセグメントを返すことができます。 |
RAM ユーザーによる呼び出し | RAM ユーザーが Retrieve API を呼び出す前に、ユーザーは Alibaba Cloud Model Studio のデータ権限を取得する必要があります。詳細については、「RAM ユーザーへの API 権限の付与」をご参照ください。 |
エラーコード
呼び出しが失敗し、エラーメッセージが返された場合は、エラーセンター を参照して問題をトラブルシューティングしてください。

