如果您在請求 Retrieve 介面時返回的結果包含較多幹擾資訊,可以參考本文樣本,在請求時傳入SearchFilters設定個人化的檢索條件,對語義檢索結果進行過濾,以排除與查詢Query無關的資訊(該方法尤其適合結構化資料)。
指知識庫的Retrieve介面。
效果對比
請求Retrieve介面(未傳入SearchFilters) | 請求Retrieve介面(傳入SearchFilters) |
Retrieve請求體: | Retrieve請求體: |
Retrieve請求返回:
傳統語義檢索返回了一些與查詢Query(張三)不太相關的文本切片。 | Retrieve介面返回:
通過設定檢索條件(SearchFilters),過濾語義檢索結果中與查詢Query(張三)無關的文本切片。 |
文法說明
SearchFilters可以包含一個或多個子分組(如下方樣本包含了兩個子分組)。每個子分組由一組或多組Key-Value索引值對(檢索欄位:欄位值)組成,對通過使用者提示詞找到的文本切片進行進一步過濾。子分組之間預設採用 AND 語義,且不可更改。關於如何使用子分組,請參見子分組查詢樣本。
{
"searchFilters": [
{
"姓名": "張三",
"性別": "男"
},
{
"崗位": "技術員"
}
]
}子分組內的檢索欄位支援單值查詢、多值查詢、範圍查詢、模糊查詢和標籤(Tag)查詢。
單值查詢:欄位類型只支援數值(long或double)、字串(string)。關於如何使用單值查詢,請參見單值查詢樣本。
多值查詢:只支援由純數值(long或double)或純字串(string)組成的數組。關於如何使用多值查詢,請參見多值查詢樣本。
範圍查詢:支援等值查詢和區間查詢。關於如何使用範圍查詢,請參見範圍查詢樣本。
等值查詢:支援
eq(等於)、neq(不等於) 屬性,欄位類型支援數值(long或double)和字串(string)。一個欄位不可配置多個值(不區分大小寫)。區間查詢:支援
gt(大於)、gte(大於等於)、lt(小於)、lte(小於等於) 屬性,欄位類型只支援數值(long, double)。
模糊查詢:欄位類型只支援字串(string)。支援
like屬性。關於如何使用模糊查詢,請參見模糊查詢樣本。標籤(Tag)查詢:只支援文檔搜尋類知識庫。關於如何使用標籤查詢,請參見標籤(Tag)查詢樣本。
前置步驟
子帳號(主帳號不需要)需擷取AliyunBailianDataFullAccess策略,並加入一個業務空間,然後才能使用阿里雲API操作知識庫。
子帳號只能操作自己已加入的業務空間中的知識庫;主帳號可操作所有業務空間下的知識庫。
安裝了阿里雲百鍊SDK並配置好了環境。
準備員工資訊表員工資訊表.xlsx(包含三條記錄),用於建立知識庫(下文樣本中會用到)。建立和使用知識庫說明
知識庫配置:
知識庫類型:資料查詢
資料來源:上傳資料表
資料表欄位結構:姓名、性別、崗位(string類型)和年齡(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:
"""
使用AK&SK初始化帳號Client
@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']
)
# Endpoint 請參考 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 = '公司中叫張三的員工'
# 必填,請傳入實際的知識庫ID。
retrieve_request.index_id = '請傳入實際的知識庫ID'
# 分組1查詢屬性為姓名,值為張三。分組2查詢屬性為性別,值為女。可替換為實際需要查詢的屬性和值。
retrieve_request.search_filters = [
{"姓名": "張三"},
{"性別": "女"}
]
# 進行檢索,傳入業務空間ID和retrieve_request對象。
resp = client.retrieve('請傳入實際的業務空間ID', retrieve_request)
print(UtilClient.to_jsonstring(resp))
except Exception as error:
# 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
# 錯誤 message
print(error.message)
@staticmethod
def single_query() -> None:
try:
client = SearchFiltersFullExample.create_client()
# 建立retrieve_request對象。
retrieve_request = bailian_20231229_models.RetrieveRequest()
# 必填,可傳入使用者實際輸入的提示詞。
retrieve_request.query = '公司中叫張三的員工'
# 必填,請傳入實際的知識庫ID。
retrieve_request.index_id = '請傳入實際的知識庫ID'
# 單值查詢屬性為姓名,值為張三。可替換為實際需要查詢的屬性和值。
retrieve_request.search_filters = [
{"姓名": "張三"}
]
# 進行檢索,傳入業務空間ID和retrieve_request對象。
resp = client.retrieve('請傳入實際的業務空間ID', retrieve_request)
print(UtilClient.to_jsonstring(resp.body))
except Exception as error:
# 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
# 錯誤 message
print(error.message)
@staticmethod
def multi_query() -> None:
try:
client = SearchFiltersFullExample.create_client()
# 建立retrieve_request對象。
retrieve_request = bailian_20231229_models.RetrieveRequest()
# 必填,可傳入使用者實際輸入的提示詞。
retrieve_request.query = '公司中所有員工'
# 必填,請傳入實際的知識庫ID。
retrieve_request.index_id = '請傳入實際的知識庫ID'
# 建立一個列表,用於存放多值。
names = ["張三", "李四"]
# 多值查詢屬性為姓名,對應上方names列表。值為上方指定的多值“張三”和“李四”。可替換為實際需要查詢的屬性和值。
retrieve_request.search_filters = [{"姓名": json.dumps(names)}]
# 進行檢索,傳入業務空間ID和retrieve_request對象。
resp = client.retrieve('請傳入實際的業務空間ID', retrieve_request)
print(UtilClient.to_jsonstring(resp.body))
except Exception as error:
# 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
# 錯誤 message
print(error.message)
@staticmethod
def range_query() -> None:
try:
client = SearchFiltersFullExample.create_client()
# 建立retrieve_request對象。
retrieve_request = bailian_20231229_models.RetrieveRequest()
# 必填,可傳入使用者實際輸入的提示詞。
retrieve_request.query = '公司中所有員工'
# 必填,請傳入實際的知識庫ID。
retrieve_request.index_id = '請傳入實際的知識庫ID'
# 查詢屬性為年齡,值為範圍。可替換為實際需要查詢的屬性和值。
age_range = SearchFiltersFullExample.Range(20, 27)
retrieve_request.search_filters = [
{"崗位": "技術員"}, # 分組1: 崗位篩選條件
{"年齡": json.dumps(age_range.to_dict())} # 分組2: 年齡範圍篩選條件
]
# 進行檢索,傳入業務空間ID和retrieve_request對象。
resp = client.retrieve('請傳入實際的業務空間ID', retrieve_request)
print(UtilClient.to_jsonstring(resp.body))
except Exception as error:
# 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
# 錯誤 message
print(error.message)
@staticmethod
def wildcard_query() -> None:
try:
client = SearchFiltersFullExample.create_client()
# 建立retrieve_request對象。
retrieve_request = bailian_20231229_models.RetrieveRequest()
# 必填,可傳入使用者實際輸入的提示詞。
retrieve_request.query = '公司中的男性員工'
# 必填,請傳入實際的知識庫ID。
retrieve_request.index_id = '請傳入實際的知識庫ID'
# 模糊查詢屬性為崗位,值為技 % 員,此處 % 代表匹配任一字元(包括零個字元)。可替換為實際值。
position = SearchFiltersFullExample.QueryObject('技%員')
retrieve_request.search_filters = [
{"姓名": "張三"}, # 姓名篩選條件。可替換為實際要查詢的屬性和值。
{"崗位": json.dumps(position.to_dict())} # 崗位(模糊查詢)篩選條件。可替換為實際要查詢的屬性和值。
]
# 進行檢索,傳入業務空間ID和retrieve_request對象。
resp = client.retrieve('請傳入實際的業務空間ID', retrieve_request)
print(UtilClient.to_jsonstring(resp.body))
except Exception as error:
# 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
# 錯誤 message
print(error.message)
@staticmethod
def tag_query() -> None:
try:
client = SearchFiltersFullExample.create_client()
# 建立retrieve_request對象。
retrieve_request = bailian_20231229_models.RetrieveRequest()
# 必填,可傳入使用者實際輸入的提示詞。
retrieve_request.query = '請提供一些候選人'
# 必填,請傳入實際的知識庫ID。
retrieve_request.index_id = '請傳入實際的知識庫ID'
# 建立一個列表,用於存放標籤。多個標籤之間是或(OR)的關係,不是與(AND)的關係。
tags = ["A大學", "學生會主席"]
retrieve_request.search_filters = [
{"tags": json.dumps(tags)}
]
# 進行檢索,傳入業務空間ID和retrieve_request對象。
resp = client.retrieve('請傳入實際的業務空間ID', retrieve_request)
print(UtilClient.to_jsonstring(resp.body))
except Exception as error:
# 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
# 錯誤 message
print(error.message)
@staticmethod
def tag_query2() -> None:
try:
client = SearchFiltersFullExample.create_client()
# 建立retrieve_request對象。
retrieve_request = bailian_20231229_models.RetrieveRequest()
# 必填,可傳入使用者實際輸入的提示詞。
retrieve_request.query = '請提供一些候選人'
# 必填,請傳入實際的知識庫ID。
retrieve_request.index_id = '請傳入實際的知識庫ID'
# 建立兩個列表,用於存放標籤。
tag1 = ["A大學"]
tag2 = ["體育特長生"]
retrieve_request.search_filters = [
{"tags": json.dumps(tag1)},
{"tags": json.dumps(tag2)}
]
# 進行檢索,傳入業務空間ID和retrieve_request對象。
resp = client.retrieve('請傳入實際的業務空間ID', retrieve_request)
print(UtilClient.to_jsonstring(resp.body))
except Exception as error:
# 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
# 錯誤 message
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 {
/**
* <b>description</b> :
* <p>使用AK&SK初始化帳號Client</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"));
// Endpoint 請參考 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("公司中叫張三的員工");
// 必填,請傳入實際的知識庫ID。
request.setIndexId("請傳入實際的知識庫ID");
Map<String, String> map1 = new HashMap<>();
// 分組1查詢屬性為姓名,值為張三。可替換為實際需要查詢的屬性和值。
map1.put("姓名", "張三");
Map<String, String> map2 = new HashMap<>();
// 分組2查詢屬性為性別,值為女。可替換為實際需要查詢的屬性和值。
map2.put("性別", "女");
List<Map<String, String>> searchFilters = new ArrayList<>();
searchFilters.add(map1);
searchFilters.add(map2);
request.setSearchFilters(searchFilters);
// 進行檢索,傳入業務空間ID和RetrieveRequest。
RetrieveResponse resp = client.retrieve("請傳入實際的業務空間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("公司中叫張三的員工");
// 必填,請傳入實際的知識庫ID。
request.setIndexId("請傳入實際的知識庫ID");
Map<String, String> map = new HashMap<>();
// 單值查詢屬性為姓名,值為張三。可替換為實際需要查詢的屬性和值。
map.put("姓名", "張三");
List<Map<String, String>> searchFilters = new ArrayList<>();
searchFilters.add(map);
request.setSearchFilters(searchFilters);
// 進行檢索,傳入業務空間ID和RetrieveRequest。
RetrieveResponse resp = client.retrieve("請傳入實際的業務空間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("公司中所有員工");
// 必填,請傳入實際的知識庫ID。
request.setIndexId("請傳入實際的知識庫ID");
// 建立一個JsonArray,用於存放多值
JsonArray array = new JsonArray();
array.add("張三");
array.add("李四");
Map<String, String> map = new HashMap<>();
// 多值查詢屬性為姓名,值為上方指定的多值“張三”和“李四”。可替換為實際需要查詢的屬性和值。
map.put("姓名", array.toString());
List<Map<String, String>> searchFilters = new ArrayList<>();
searchFilters.add(map);
request.setSearchFilters(searchFilters);
// 進行檢索,傳入業務空間ID和RetrieveRequest。
RetrieveResponse resp = client.retrieve("請傳入實際的業務空間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("公司中所有員工");
// 必填,請傳入實際的知識庫ID。
request.setIndexId("請傳入實際的知識庫ID");
Map<String, String> map1 = new HashMap<>();
// 分組1查詢屬性為性別,值為男。可替換為實際需要查詢的屬性和值。
map1.put("性別", "男");
// 分組2查詢屬性為年齡,值為範圍。可替換為實際需要查詢的屬性和值。
Map<String, String> map2 = new HashMap<>();
Range range = new Range(20, 27);
map2.put("年齡", 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("請傳入實際的業務空間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("公司中的男性員工");
// 必填,請傳入實際的知識庫ID。
request.setIndexId("請傳入實際的知識庫ID");
// 分組1查詢屬性為姓名,值為張三。可替換為實際需要查詢的屬性和值。
Map<String, String> map1 = new HashMap<>();
map1.put("姓名", "張三");
// 分組2查詢屬性為崗位,值為技%員,此處%代表匹配任一字元(包括零個字元)。可替換為實際需要查詢的屬性和值。
Map<String, String> map2 = new HashMap<>();
QueryObject queryObject = new QueryObject("技%員");
map2.put("崗位", 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("請傳入實際的業務空間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("請提供一些候選人");
// 必填,請傳入實際的知識庫ID。
request.setIndexId("請傳入實際的知識庫ID");
// 建立一個JsonArray,用於存放標籤。多個標籤之間是或(OR)的關係,不是與(AND)的關係。
JsonArray array = new JsonArray();
array.add("A大學");
array.add("學生會主席");
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("請傳入實際的業務空間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("請提供一些候選人");
// 必填,請傳入實際的知識庫ID。
request.setIndexId("請傳入實際的知識庫ID");
// 建立一個JsonArray,用於存放標籤。
JsonArray tag1 = new JsonArray();
tag1.add("A大學");
JsonArray tag2 = new JsonArray();
tag2.add("體育特長生");
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("請傳入實際的業務空間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 語義,且不可更改。
樣本:檢索員工資訊知識庫,並篩選出姓名為張三且性別為女的記錄(該知識庫中不存在這樣的記錄)。
{
"searchFilters": [
{
"姓名": "張三"
},
{
"性別": "女"
}
]
}展開下方摺疊面板查看範例程式碼。
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:
"""
使用AK&SK初始化帳號Client
@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']
)
# Endpoint 請參考 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 = '公司中叫張三的員工'
# 必填,請傳入實際的知識庫ID。
retrieve_request.index_id = '請傳入實際的知識庫ID'
# 分組1查詢屬性為姓名,值為張三。分組2查詢屬性為性別,值為女。可替換為實際需要查詢的屬性和值。
retrieve_request.search_filters = [
{"姓名": "張三"},
{"性別": "女"}
]
# 進行檢索,傳入業務空間ID和retrieve_request對象。
resp = client.retrieve('請傳入實際的業務空間ID', retrieve_request)
print(UtilClient.to_jsonstring(resp))
except Exception as error:
# 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
# 錯誤 message
print(error.message)
if __name__ == '__main__':
SubGroupQueryExample.main(sys.argv[1:])
請求樣本
{
"indexId": "27ubwxxxxx",
"WorkspaceId":"llm-4u5xpd1xdjxxxxxx",
"query": "公司中叫張三的員工",
"searchFilters": [
{
"姓名": "張三"
},
{
"性別": "女"
}
]
}響應樣本
{
"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 {
/**
* <b>description</b> :
* <p>使用AK&SK初始化帳號Client</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"));
// Endpoint 請參考 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("公司中叫張三的員工");
// 必填,請傳入實際的知識庫ID。
request.setIndexId("請傳入實際的知識庫ID");
Map<String, String> map1 = new HashMap<>();
// 分組1查詢屬性為姓名,值為張三。可替換為實際需要查詢的屬性和值。
map1.put("姓名","張三");
Map<String, String> map2 = new HashMap<>();
// 分組2查詢屬性為性別,值為女。可替換為實際需要查詢的屬性和值。
map2.put("性別","女");
List<Map<String, String>> searchFilters = new ArrayList<>();
searchFilters.add(map1);
searchFilters.add(map2);
request.setSearchFilters(searchFilters);
// 進行檢索,傳入業務空間ID和RetrieveRequest。
RetrieveResponse resp = client.retrieve("請傳入實際的業務空間ID", request);
System.out.println(new Gson().toJson(resp.getBody()));
} catch (Exception e) {
// 知識庫檢索失敗處理。
// 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
System.out.println(e.getMessage());
}
}
}
請求樣本
{
"indexId": "27ubwxxxxx",
"WorkspaceId":"llm-4u5xpd1xdjxxxxxx",
"query": "公司中叫張三的員工",
"searchFilters": [
{
"姓名": "張三"
},
{
"性別": "女"
}
]
}響應樣本
{
"code": "Success",
"data": {
"nodes": []
},
"message": "success",
"requestId": "5BA30772-xxxx-560C-B1F7-C1DA737A9D80",
"status": "200",
"success": true
}單值查詢樣本
在單值查詢時,需要為檢索欄位傳入唯一的值。
樣本:檢索員工資訊知識庫,並篩選出姓名為張三的記錄。
{
"searchFilters": [
{
"姓名": "張三"
}
]
}展開下方摺疊面板查看範例程式碼。
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:
"""
使用AK&SK初始化帳號Client
@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']
)
# Endpoint 請參考 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 = '公司中叫張三的員工'
# 必填,請傳入實際的知識庫ID。
retrieve_request.index_id = '請傳入實際的知識庫ID'
# 單值查詢屬性為姓名,值為張三。可替換為實際需要查詢的屬性和值。
retrieve_request.search_filters = [
{"姓名": "張三"}
]
try:
# 進行檢索,傳入業務空間ID和retrieve_request對象。
resp = client.retrieve('請傳入實際的業務空間ID', retrieve_request)
print(UtilClient.to_jsonstring(resp.body))
except Exception as error:
# 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
# 錯誤 message
print(error.message)
if __name__ == '__main__':
SingleQueryExample.main(sys.argv[1:])
請求樣本
{
"indexId": "27ubwxxxxx",
"WorkspaceId":"llm-4u5xpd1xdjxxxxxx",
"query": "公司中叫張三的員工",
"searchFilters": [
{
"姓名": "張三"
}
]
}響應樣本
{
"code": "Success",
"data": {
"nodes": [
{
"metadata": {
"_rc_v_score": 0.32581159472465515,
"_q_score": 1,
"source": "0",
"_score": 0.4556944966316223,
"doc_id": "table_xxxx75507aab4bd9a24c18d098b2e8ac_10285263_1",
"性別": "男",
"_rc_score": 0,
"姓名": "張三",
"doc_name": "員工表",
"_id": "llm-xxxxpd1xdjqp8itj_27ubwxxxxx_table_200275507aab4bd9a24c18d098b2e8ac_10285263_1",
"年齡": "25",
"崗位": "技術員"
},
"score": 0.4556944966316223,
"text": "姓名:張三 年齡:25 崗位:技術員 性別:男"
}
]
},
"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 {
/**
* <b>description</b> :
* <p>使用AK&SK初始化帳號Client</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"));
// Endpoint 請參考 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("公司中叫張三的員工");
// 必填,請傳入實際的知識庫ID。
request.setIndexId("請傳入實際的知識庫ID");
Map<String, String> map = new HashMap<>();
// 單值查詢屬性為姓名,值為張三。可替換為實際需要查詢的屬性和值。
map.put("姓名","張三");
List<Map<String, String>> searchFilters = new ArrayList<>();
searchFilters.add(map);
request.setSearchFilters(searchFilters);
// 進行檢索,傳入業務空間ID和RetrieveRequest。
RetrieveResponse resp = client.retrieve("請傳入實際的業務空間ID", request);
System.out.println(new Gson().toJson(resp.getBody()));
} catch (Exception e) {
// 知識庫檢索失敗處理。
// 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
System.out.println(e.getMessage());
}
}
}請求樣本
{
"indexId": "27ubwxxxxx",
"WorkspaceId":"llm-4u5xpd1xdjxxxxxx",
"query": "公司中叫張三的員工",
"searchFilters": [
{
"姓名": "張三"
}
]
}響應樣本
{
"code": "Success",
"data": {
"nodes": [
{
"metadata": {
"_rc_v_score": 0.32581159472465515,
"_q_score": 1,
"source": "0",
"_score": 0.4556944966316223,
"doc_id": "table_xxxx75507aab4bd9a24c18d098b2e8ac_10285263_1",
"性別": "男",
"_rc_score": 0,
"姓名": "張三",
"doc_name": "員工表",
"_id": "llm-xxxxpd1xdjqp8itj_27ubwxxxxx_table_xxxx75507aab4bd9a24c18d098b2e8ac_10285263_1",
"年齡": "25",
"崗位": "技術員"
},
"score": 0.4556944966316223,
"text": "姓名:張三 年齡:25 崗位:技術員 性別:男"
}
]
},
"message": "success",
"requestId": "2FA4113E-xxxx-59C1-BDB2-5B930D8C9B1C",
"status": "200",
"success": true
}多值查詢樣本
多值查詢允許為檢索欄位傳入多個值,效果類似於SQL中的IN操作符。
樣本:檢索員工資訊知識庫,並篩選出姓名為張三或李四的記錄。
{
"searchFilters": [
{
"姓名": "["張三","李四"]"
}
]
}展開下方摺疊面板查看範例程式碼。
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:
"""
使用AK&SK初始化帳號Client
@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']
)
# Endpoint 請參考 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 = '公司中所有員工'
# 必填,請傳入實際的知識庫ID。
retrieve_request.index_id = '請傳入實際的知識庫ID'
# 建立一個列表,用於存放多值。
names = ["張三", "李四"]
# 多值查詢屬性為姓名,對應上方names列表。值為上方指定的多值“張三”和“李四”。可替換為實際需要查詢的屬性和值。
retrieve_request.search_filters = [{"姓名": json.dumps(names)}]
# 進行檢索,傳入業務空間ID和retrieve_request對象。
resp = client.retrieve('請傳入實際的業務空間ID', retrieve_request)
print(UtilClient.to_jsonstring(resp.body))
except Exception as error:
# 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
# 錯誤 message
print(error.message)
if __name__ == '__main__':
MultiQueryExample.main(sys.argv[1:])請求樣本
{
"indexId": "27ubwxxxxx",
"WorkspaceId":"llm-4u5xpd1xdjxxxxxx",
"query": "公司中所有員工",
"searchFilters": [
{
"姓名": "[\"張三\",\"李四\"]"
}
]
}響應樣本
{
"code": "Success",
"data": {
"nodes": [
{
"metadata": {
"_rc_v_score": 0.3016361088048254,
"_q_score": 1,
"source": "0",
"_score": 0.3322954773902893,
"doc_id": "table_xxxxad1c331c424780a8023376a73fac_10285263_1",
"性別": "男",
"_rc_score": 0,
"姓名": "張三",
"doc_name": "員工表",
"_id": "llm-xxxxpd1xdjqp8itj_27ubwxxxxx_table_xxxxad1c331c424780a8023376a73fac_10285263_1",
"年齡": "25.0",
"崗位": "技術員"
},
"score": 0.3322954773902893,
"text": "姓名:張三 年齡:25.0 崗位:技術員 性別:男"
},
{
"metadata": {
"_rc_v_score": 0.2531493306159973,
"_q_score": 0.8392540654998252,
"source": "0",
"_score": 0.25632044672966003,
"doc_id": "table_xxxxad1c331c424780a8023376a73fac_10285263_2",
"性別": "女",
"_rc_score": 0,
"姓名": "李四",
"doc_name": "員工表",
"_id": "llm-xxxxpd1xdjqp8itj_27ubwxxxxx_table_xxxxad1c331c424780a8023376a73fac_10285263_2",
"年齡": "31.0",
"崗位": "銷售"
},
"score": 0.25632044672966003,
"text": "姓名:李四 年齡:31.0 崗位:銷售 性別:女"
}
]
},
"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 {
/**
* <b>description</b> :
* <p>使用AK&SK初始化帳號Client</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"));
// Endpoint 請參考 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("公司中所有員工");
// 必填,請傳入實際的知識庫ID。
request.setIndexId("請傳入實際的知識庫ID");
// 建立一個JsonArray,用於存放多值
JsonArray array = new JsonArray();
array.add("張三");
array.add("李四");
Map<String, String> map = new HashMap<>();
// 多值查詢屬性為姓名,值為上方指定的多值“張三”和“李四”。可替換為實際需要查詢的屬性和值。
map.put("姓名", array.toString());
List<Map<String, String>> searchFilters = new ArrayList<>();
searchFilters.add(map);
request.setSearchFilters(searchFilters);
// 進行檢索,傳入業務空間ID和RetrieveRequest。
RetrieveResponse resp = client.retrieve("請傳入實際的業務空間ID", request);
System.out.println(new Gson().toJson(resp.getBody()));
} catch (Exception e) {
// 知識庫檢索失敗處理。
// 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
System.out.println(e.getMessage());
}
}
}
請求樣本
{
"indexId": "27ubwxxxxx",
"WorkspaceId":"llm-4u5xpd1xdjxxxxxx",
"query": "公司中所有員工",
"searchFilters": [
{
"姓名": "[\"張三\",\"李四\"]"
}
]
}響應樣本
{
"code": "Success",
"data": {
"nodes": [
{
"metadata": {
"_rc_v_score": 0.3016361088048254,
"_q_score": 1,
"source": "0",
"_score": 0.3322954773902893,
"doc_id": "table_xxxxad1c331c424780a8023376a73fac_10285263_1",
"性別": "男",
"_rc_score": 0,
"姓名": "張三",
"doc_name": "員工表",
"_id": "llm-xxxxpd1xdjqp8itj_27ubwxxxxx_table_xxxxad1c331c424780a8023376a73fac_10285263_1",
"年齡": "25.0",
"崗位": "技術員"
},
"score": 0.3322954773902893,
"text": "姓名:張三 年齡:25.0 崗位:技術員 性別:男"
},
{
"metadata": {
"_rc_v_score": 0.2531493306159973,
"_q_score": 0.8392540654998252,
"source": "0",
"_score": 0.25632044672966003,
"doc_id": "table_xxxxad1c331c424780a8023376a73fac_10285263_2",
"性別": "女",
"_rc_score": 0,
"姓名": "李四",
"doc_name": "員工表",
"_id": "llm-xxxxpd1xdjqp8itj_27ubwxxxxx_table_xxxxad1c331c424780a8023376a73fac_10285263_2",
"年齡": "31.0",
"崗位": "銷售"
},
"score": 0.25632044672966003,
"text": "姓名:李四 年齡:31.0 崗位:銷售 性別:女"
}
]
},
"message": "success",
"requestId": "1DFE5E9E-xxxx-5C37-8011-8FA2E2875309",
"status": "200",
"success": true
}範圍查詢樣本
通過範圍查詢,可找出檢索欄位(如年齡)值在指定範圍內滿足條件的所有記錄。
樣本:檢索員工資訊知識庫,並篩選出崗位為技術員(單值查詢),且年齡在20至25歲之間(範圍查詢)的記錄。
{
"searchFilters": [
{
"崗位": "技術員"
},
{
"年齡": {
"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:
"""
使用AK&SK初始化帳號Client
@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']
)
# Endpoint 請參考 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 = '公司中所有員工'
# 必填,請傳入實際的知識庫ID。
retrieve_request.index_id = '請傳入實際的知識庫ID'
# 查詢屬性為年齡,值為範圍。可替換為實際需要查詢的屬性和值。
age_range = RangeQueryExample.Range(20, 27)
retrieve_request.search_filters = [
{"崗位": "技術員"}, # 分組1: 崗位篩選條件
{"年齡": json.dumps(age_range.to_dict())} # 分組2: 年齡範圍篩選條件
]
# 進行檢索,傳入業務空間ID和retrieve_request對象。
resp = client.retrieve('請傳入實際的業務空間ID', retrieve_request)
print(UtilClient.to_jsonstring(resp.body))
except Exception as error:
# 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
# 錯誤 message
print(error.message)
if __name__ == '__main__':
RangeQueryExample.main(sys.argv[1:])
請求樣本
{
"indexId": "27ubwxxxxx",
"WorkspaceId":"llm-4u5xpd1xdjxxxxxx",
"query": "公司中所有員工",
"searchFilters": [
{
"性別": "男"
},
{
"年齡": "{\"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",
"性別": "男",
"_rc_score": 0,
"姓名": "張三",
"doc_name": "員工表",
"_id": "llm-xxxxpd1xdjqp8itj_27ubwxxxxx_table_xxxxad1c331c424780a8023376a73fac_10285263_1",
"年齡": "25.0",
"崗位": "技術員"
},
"score": 0.3322954773902893,
"text": "姓名:張三 年齡:25.0 崗位:技術員 性別:男"
}
]
},
"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 {
/**
* <b>description</b> :
* <p>使用AK&SK初始化帳號Client</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"));
// Endpoint 請參考 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("公司中所有員工");
// 必填,請傳入實際的知識庫ID。
request.setIndexId("請傳入實際的知識庫ID");
Map<String, String> map1 = new HashMap<>();
// 分組1查詢屬性為性別,值為男。可替換為實際需要查詢的屬性和值。
map1.put("性別", "男");
// 分組2查詢屬性為年齡,值為範圍。可替換為實際需要查詢的屬性和值。
Map<String, String> map2 = new HashMap<>();
Range range = new Range(20, 27);
map2.put("年齡", 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("請傳入實際的業務空間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": "公司中所有員工",
"searchFilters": [
{
"性別": "男"
},
{
"年齡": "{\"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",
"性別": "男",
"_rc_score": 0,
"姓名": "張三",
"doc_name": "員工表",
"_id": "llm-xxxxpd1xdjqp8itj_27ubwxxxxx_table_xxxxad1c331c424780a8023376a73fac_10285263_1",
"年齡": "25.0",
"崗位": "技術員"
},
"score": 0.3322954773902893,
"text": "姓名:張三 年齡:25.0 崗位:技術員 性別:男"
}
]
},
"message": "success",
"requestId": "AE0B5ABC-xxxx-54A1-9ED4-91865B859DF6",
"status": "200",
"success": true
}模糊查詢樣本
模糊查詢通過指定萬用字元尋找包含特定字元序列的記錄,效果類似於SQL中的LIKE操作符。
SearchFilters模糊查詢支援以下萬用字元(和SQL文法一致):
萬用字元 | 描述 |
% | 替代 0 個或多個字元。 |
_ | 替代一個字元。 |
樣本:檢索員工資訊知識庫,並篩選出姓名為張三,崗位包含技和員兩個字(可能是技術員,也可能是技術人員等)的記錄。
{
"searchFilters": [
{
"姓名": "張三"
},
{
"崗位": {
"like": "技%員"
}
}
]
}展開下方摺疊面板查看範例程式碼。
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:
"""
使用AK&SK初始化帳號Client
@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']
)
# Endpoint 請參考 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 = '公司中的男性員工'
# 必填,請傳入實際的知識庫ID。
retrieve_request.index_id = '請傳入實際的知識庫ID'
# 模糊查詢屬性為崗位,值為技 % 員,此處 % 代表匹配任一字元(包括零個字元)。可替換為實際值。
position = WildcardQueryExample.QueryObject('技%員')
retrieve_request.search_filters = [
{"姓名": "張三"}, # 姓名篩選條件。可替換為實際要查詢的屬性和值。
{"崗位": json.dumps(position.to_dict())} # 崗位(模糊查詢)篩選條件。可替換為實際要查詢的屬性和值。
]
# 進行檢索,傳入業務空間ID和retrieve_request對象。
resp = client.retrieve('請傳入實際的業務空間ID', retrieve_request)
print(UtilClient.to_jsonstring(resp.body))
except Exception as error:
# 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
# 錯誤 message
print(error.message)
if __name__ == '__main__':
WildcardQueryExample.main(sys.argv[1:])
請求樣本
{
"indexId": "27ubwxxxxx",
"WorkspaceId":"llm-4u5xpd1xdjxxxxxx",
"query": "公司中的男性員工",
"searchFilters": [
{
"姓名": "張三"
},
{
"崗位": "{\"like\":\"技%員\"}"
}
]
}響應樣本
{
"code": "Success",
"data": {
"nodes": [
{
"metadata": {
"_rc_v_score": 0.41137335930387275,
"_q_score": 1,
"source": "0",
"_score": 0.46098726987838745,
"doc_id": "table_xxxxad1c331c424780a8023376a73fac_10285263_1",
"性別": "男",
"_rc_score": 0,
"姓名": "張三",
"doc_name": "員工表",
"_id": "llm-xxxxpd1xdjqp8itj_27ubwxxxxx_table_xxxxad1c331c424780a8023376a73fac_10285263_1",
"年齡": "25.0",
"崗位": "技術員"
},
"score": 0.46098726987838745,
"text": "姓名:張三 年齡:25.0 崗位:技術員 性別:男"
}
]
},
"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 {
/**
* <b>description</b> :
* <p>使用AK&SK初始化帳號Client</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"));
// Endpoint 請參考 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("公司中的男性員工");
// 必填,請傳入實際的知識庫ID。
request.setIndexId("請傳入實際的知識庫ID");
// 分組1查詢屬性為姓名,值為張三。可替換為實際需要查詢的屬性和值。
Map<String, String> map1 = new HashMap<>();
map1.put("姓名", "張三");
// 分組2查詢屬性為崗位,值為技%員,此處%代表匹配任一字元(包括零個字元)。可替換為實際需要查詢的屬性和值。
Map<String, String> map2 = new HashMap<>();
QueryObject queryObject = new QueryObject("技%員");
map2.put("崗位", 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("請傳入實際的業務空間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": "公司中的男性員工",
"searchFilters": [
{
"姓名": "張三"
},
{
"崗位": "{\"like\":\"技%員\"}"
}
]
}響應樣本
{
"code": "Success",
"data": {
"nodes": [
{
"metadata": {
"_rc_v_score": 0.41137335930387275,
"_q_score": 1,
"source": "0",
"_score": 0.46098726987838745,
"doc_id": "table_xxxxad1c331c424780a8023376a73fac_10285263_1",
"性別": "男",
"_rc_score": 0,
"姓名": "張三",
"doc_name": "員工表",
"_id": "llm-xxxxpd1xdjqp8itj_27ubwxxxxx_table_xxxxad1c331c424780a8023376a73fac_10285263_1",
"年齡": "25.0",
"崗位": "技術員"
},
"score": 0.46098726987838745,
"text": "姓名:張三 年齡:25.0 崗位:技術員 性別:男"
}
]
},
"message": "success",
"requestId": "FA759FEC-xxxx-50B7-A64D-BE49A7DF56B8",
"status": "200",
"success": true
}標籤(Tag)查詢樣本
檢索文檔搜尋類知識庫時,可通過標籤篩選檔案,提高檢索效率與準確性。
樣本:建立一個文檔搜尋類知識庫,其中包含張三、李四和王五三人的資訊。

以上檔案分別添加了以下標籤:
檔案 | 標籤 |
張三簡曆 |
|
李四簡曆 |
|
王五簡曆 |
|
例如使用SearchFilters查詢人才知識庫,要求返迴文件標籤含A大學或學生會主席的相關文本切片:
多個標籤之間是邏輯或(OR)的關係,不是邏輯與(AND)的關係。可通過子分組查詢實現“邏輯與”。
{
"searchFilters": [
{
"tags": "["A大學","學生會主席"]"
}
]
}展開下方摺疊面板查看範例程式碼。
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:
"""
使用AK&SK初始化帳號Client
@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']
)
# Endpoint 請參考 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 = '請提供一些候選人'
# 必填,請傳入實際的知識庫ID。
retrieve_request.index_id = '請傳入實際的知識庫ID'
# 建立一個列表,用於存放標籤。多個標籤之間是或(OR)的關係,不是與(AND)的關係。
tags = ["A大學", "學生會主席"]
retrieve_request.search_filters = [
{"tags": json.dumps(tags)}
]
try:
# 進行檢索,傳入業務空間ID和retrieve_request對象。
resp = client.retrieve('請傳入實際的業務空間ID', retrieve_request)
print(UtilClient.to_jsonstring(resp.body))
except Exception as error:
# 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
# 錯誤 message
print(error.message)
if __name__ == '__main__':
TagQueryExample.main(sys.argv[1:])請求樣本
{
"IndexId": "8mbtdxxxxx",
"WorkspaceId": "llm-4u5xpd1xdjxxxxxx",
"Query": "請提供一些候選人",
"SearchFilters": "[{\"tags\":\"[\\\"A大學\\\", \\\"學生會主席\\\"]\"}]"
}響應樣本
{
"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": "姓名:張三性別:男年齡:23",
"_rc_score": 0,
"workspace_id": "llm-4u5xpd1xdjxxxxxx",
"hier_title": "",
"page_number": [
0
],
"doc_name": "張三簡曆",
"pipeline_id": "8mbtdxxxxx",
"_id": "llm-4u5xpd1xdjxxxxxx_8mbtdxxxxx_file_e787926158704f95aad6bc967619f176_10285263_0_0"
},
"Score": 0.1736905574798584,
"Text": "姓名:張三性別:男年齡: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": "姓名:王五性別:男年齡:23",
"_rc_score": 0,
"workspace_id": "llm-4u5xpd1xdjxxxxxx",
"hier_title": "",
"page_number": [
0
],
"doc_name": "王五簡曆",
"pipeline_id": "8mbtdxxxxx",
"_id": "llm-4u5xpd1xdjxxxxxx_8mbtdxxxxx_file_63563df5df66488cb8e28bfff11e40eb_10285263_0_0"
},
"Score": 0.15737050771713257,
"Text": "姓名:王五性別:男年齡: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 {
/**
* <b>description</b> :
* <p>使用AK&SK初始化帳號Client</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"));
// Endpoint 請參考 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("請提供一些候選人");
// 必填,請傳入實際的知識庫ID。
request.setIndexId("請傳入實際的知識庫ID");
// 建立一個JsonArray,用於存放標籤。多個標籤之間是或(OR)的關係,不是與(AND)的關係。
JsonArray array = new JsonArray();
array.add("A大學");
array.add("學生會主席");
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("請傳入實際的業務空間ID", request);
System.out.println(new Gson().toJson(resp.getBody()));
} catch (Exception e) {
// 知識庫檢索失敗處理。
// 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
System.out.println(e.getMessage());
}
}
}
請求樣本
{
"IndexId": "8mbtdxxxxx",
"WorkspaceId": "llm-4u5xpd1xdjxxxxxx",
"Query": "請提供一些候選人",
"SearchFilters": "[{\"tags\":\"[\\\"A大學\\\", \\\"學生會主席\\\"]\"}]"
}響應樣本
{
"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": "姓名:張三性別:男年齡:23",
"_rc_score": 0,
"workspace_id": "llm-4u5xpd1xdjxxxxxx",
"hier_title": "",
"page_number": [
0
],
"doc_name": "張三簡曆",
"pipeline_id": "8mbtdxxxxx",
"_id": "llm-4u5xpd1xdjxxxxxx_8mbtdxxxxx_file_e787926158704f95aad6bc967619f176_10285263_0_0"
},
"Score": 0.1736905574798584,
"Text": "姓名:張三性別:男年齡: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": "姓名:王五性別:男年齡:23",
"_rc_score": 0,
"workspace_id": "llm-4u5xpd1xdjxxxxxx",
"hier_title": "",
"page_number": [
0
],
"doc_name": "王五簡曆",
"pipeline_id": "8mbtdxxxxx",
"_id": "llm-4u5xpd1xdjxxxxxx_8mbtdxxxxx_file_63563df5df66488cb8e28bfff11e40eb_10285263_0_0"
},
"Score": 0.15737050771713257,
"Text": "姓名:王五性別:男年齡:23"
}
]
},
"Message": "success",
"RequestId": "12A5F9C6-xxxx-5593-8955-86D52585EE27",
"Status": 200,
"Success": true
}樣本:使用SearchFilters查詢人才知識庫,要求返迴文檔標籤含A大學與體育特長生的相關文本切片(邏輯與):
{
"searchFilters": [
{
"tags": "['A大學']"
},
{
"tags": "['體育特長生']"
}
]
}展開下方摺疊面板查看範例程式碼。
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:
"""
使用AK&SK初始化帳號Client
@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']
)
# Endpoint 請參考 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 = '請提供一些候選人'
# 必填,請傳入實際的知識庫ID。
retrieve_request.index_id = '請傳入實際的知識庫ID'
# 建立兩個列表,用於存放標籤。
tag1 = ["A大學"]
tag2 = ["體育特長生"]
retrieve_request.search_filters = [
{"tags": json.dumps(tag1)},
{"tags": json.dumps(tag2)}
]
try:
# 進行檢索,傳入業務空間ID和retrieve_request對象。
resp = client.retrieve('請傳入實際的業務空間ID', retrieve_request)
print(UtilClient.to_jsonstring(resp.body))
except Exception as error:
# 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
# 錯誤 message
print(error.message)
if __name__ == '__main__':
TagQueryExample2.main(sys.argv[1:]) 請求樣本
{
"IndexId": "8mbtdxxxxx",
"WorkspaceId": "llm-4u5xpd1xdjxxxxxx",
"Query": "請提供一些候選人",
"SearchFilters": "[{\"tags\":\"[\\\"A大學\\\"]\"},{\"tags\":\"[\\\"體育特長生\\\"]\"}]"
}響應樣本
{
"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": "姓名:張三性別:男年齡:23",
"_rc_score": 0,
"workspace_id": "llm-4u5xpd1xdjxxxxxx",
"hier_title": "",
"page_number": [
0
],
"doc_name": "張三簡曆",
"pipeline_id": "8mbtdxxxxx",
"_id": "llm-4u5xpd1xdjxxxxxx_8mbtdxxxxx_file_e787926158704f95aad6bc967619f176_10285263_0_0"
},
"Score": 0.1736905574798584,
"Text": "姓名:張三性別:男年齡: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 {
/**
* <b>description</b> :
* <p>使用AK&SK初始化帳號Client</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"));
// Endpoint 請參考 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("請提供一些候選人");
// 必填,請傳入實際的知識庫ID。
request.setIndexId("請傳入實際的知識庫ID");
// 建立一個JsonArray,用於存放標籤。
JsonArray tag1 = new JsonArray();
tag1.add("A大學");
JsonArray tag2 = new JsonArray();
tag2.add("體育特長生");
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("請傳入實際的業務空間ID", request);
System.out.println(new Gson().toJson(resp.getBody()));
} catch (Exception e) {
// 知識庫檢索失敗處理。
// 此處僅做列印展示,請謹慎對待異常處理,在工程專案中切勿直接忽略異常。
System.out.println(e.getMessage());
}
}
}
請求樣本
{
"IndexId": "8mbtdxxxxx",
"WorkspaceId": "llm-4u5xpd1xdjxxxxxx",
"Query": "請提供一些候選人",
"SearchFilters": "[{\"tags\":\"[\\\"A大學\\\"]\"},{\"tags\":\"[\\\"體育特長生\\\"]\"}]"
}響應樣本
{
"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": "姓名:張三性別:男年齡:23",
"_rc_score": 0,
"workspace_id": "llm-4u5xpd1xdjxxxxxx",
"hier_title": "",
"page_number": [
0
],
"doc_name": "張三簡曆",
"pipeline_id": "8mbtdxxxxx",
"_id": "llm-4u5xpd1xdjxxxxxx_8mbtdxxxxx_file_e787926158704f95aad6bc967619f176_10285263_0_0"
},
"Score": 0.1736905574798584,
"Text": "姓名:張三性別:男年齡:23"
}
]
},
"Message": "success",
"RequestId": "1ED6CECE-xxxx-5B21-91DB-410E0219412A",
"Status": 200,
"Success": true
}
相關文檔
知識庫使用者指南 | 請參見建立和使用知識庫。 |
檢索知識庫 | 可調用Retrieve介面檢索知識庫並返迴文本切片。 |
子帳號調用 | RAM使用者(子帳號)請先擷取阿里雲百鍊的資料許可權再調用Retrieve介面,請參見授權RAM使用者API許可權。 |
錯誤碼
如果調用失敗並收到報錯資訊,請參見錯誤中心進行解決。

