随机检索是一种在未指定查询内容的情况下,从数据集中随机返回若干条记录的检索方式。随机检索同样支持过滤和对检索结果的后处理,可用于对比召回效果、数据过滤等场景。
public DataApiResponse<SearchResult> searchByRandom(SearchByRandomRequest request) throws ApiClientException, VectorApiException
参数 | 类型 | 是否必选 | 参数说明 |
|---|---|---|---|
filter | Map<String, Object> | 否 | 过滤条件,详见标量过滤
|
outputFields | List | 否 | 要返回的标量字段列表.
|
limit | Integer | 否 | 检索结果数量,最大5000个。 |
offset | Integer | 否 | 偏移量。仅分页场景下使用,不建议设置过大值,否则有深分页影响。默认值为0。设置值至少为0,语义和mysql的offset相同。 |
advance | SearchAdvance | 否 | 高级参数,不常用 |
属性 | 类型 | 说明 |
|---|---|---|
data | List | 见下 |
filterMatchedCount | Integer | 筛选匹配数量 |
totalReturnCount | Integer | 返回数量 |
realTextQuery | String | |
tokenUsage | Object | 使用token |
属性 | 类型 | 说明 |
|---|---|---|
id | Object | 主键 id。 |
fields | Map<String, Object> | 请求返回中的 fields 字段 |
score | Float | 相似度 |
annScore | Float | ann得分 |
package org.example.newsubproduct.data.search; import com.volcengine.vikingdb.runtime.core.ClientConfig; import com.volcengine.vikingdb.runtime.core.auth.AuthWithAkSk; import com.volcengine.vikingdb.runtime.enums.Scheme; import com.volcengine.vikingdb.runtime.exception.VectorApiException; import com.volcengine.vikingdb.runtime.vector.model.request.*; import com.volcengine.vikingdb.runtime.vector.model.response.*; import com.volcengine.vikingdb.runtime.vector.service.VectorService; import java.util.*; public class SearchByRandom { public static void main(String[] args) { VectorService vectorService = null; try { vectorService = new VectorService( Scheme.HTTPS, "api-vikingdb.vikingdb.cn-beijing.volces.com", // 填写向量库数据面v2的域名 https://www.volcengine.com/docs/84313/1792715 "cn-beijing", new AuthWithAkSk(System.getenv("AK"), System.getenv("SK")), ClientConfig.builder().build() ); } catch (Exception e) { System.err.println("Client initialization failed: " + e.getMessage()); e.printStackTrace(); return; } SearchByRandomRequest request = SearchByRandomRequest.builder() .collectionName("your_collection_name") // 替换为您的集合名称 .indexName("your_index_name") // 替换为您的索引名称 .limit(5) .filter(new HashMap<String, Object>(){{ put("op", "must_not"); put("field", "f_int64_2"); put("conds", Arrays.asList(3, 33)); }}) .advance(SearchAdvance.builder() .idsIn(Arrays.asList(1, 2, 3, 4, 5)).build()) .build(); try { DataApiResponse<SearchResult> response = vectorService.searchByRandom(request); System.out.println("request success:"); System.out.println(response); } catch (VectorApiException vectorApiException) { System.err.println("request vectorApiException:"); System.out.println("apiName: " + vectorApiException.getApiName()); System.out.println("httpStatusCode: " + vectorApiException.getHttpStatusCode()); System.out.println("code: " + vectorApiException.getCode()); System.out.println("message: " + vectorApiException.getMessage()); System.out.println("requestId: " + vectorApiException.getRequestId()); System.out.println("responseContext: " + vectorApiException.getResponseContext().getBody()); } catch (Exception e) { System.err.println("request exception, message : " + e.getMessage()); e.printStackTrace(); } } }