/index/search 接口用于实现检索,本页面主要介绍如何实现标量排序检索。
向量数据库中的标量排序检索指的是基于标量值的检索方法。在向量数据库中,每个向量都有一个或多个标量值,标量排序检索可以基于这些标量值进行检索,找到与查询相关的数据。例如文档检索中的作者特征检索。
说明
请求向量数据库 VikingDB 的 OpenAPI 接口时,需要构造签名进行鉴权,详细的 OpenAPI 签名调用方法请参见 API签名调用指南。
URI | /api/index/search | 统一资源标识符 |
---|---|---|
请求方法 | POST | 客户端对向量数据库服务器请求的操作类型 |
请求头 | Content-Type: application/json | 请求消息类型 |
Authorization: HMAC-SHA256 *** | 鉴权 |
在向量近邻检索的基础上,您可以使用 order_by_scalar 子参数进行标量检索。
参数 | 子参数 | 类型 | 是否必选 | 默认值 | 参数说明 |
---|---|---|---|---|---|
search | order_by_scalar | map | 是 | 根据标量字段做排序。
注意 order 和 field_name 两个参数必须同时配置,如果两个参数均未配置,则直接返回符合filter条件的limit条数据,且检索结果随机排序。 |
参数 | 参数说明 |
---|---|
code | 状态码 |
message | 返回信息 |
request_id | 标识每个请求的唯一标识符 |
data | 检索结果,标量检索会返回检索到的主键、score、fields。 |
状态码 | http状态码 | 返回信息 | 状态码说明 |
---|---|---|---|
0 | 200 | drop index success | Index 检索成功。 |
1000008 | 400 | index not exist | 指定的 Index 不存在。 |
1000003 | 400 | invalid request | 非法参数:
|
1000001 | 401 | unauthorized | 请求头中缺乏鉴权信息。 |
1000002 | 403 | no permission | 权限不足。 |
1000019 | 400 | dsl使用错误信息 | dsl格式错误 |
1000029 | 429 | 请求已达上限, 请调整CPU核数 | 需要调大 cpu_quota |
curl -i -X POST \ -H 'Content-Type: application/json' \ -H 'Authorization: HMAC-SHA256 ***' \ https://api-vikingdb.volces.com/api/index/search \ -d '{ "collection_name": "test_name", //用于检索的集合的名称 "index_name": "index_test", //用于检索的索引名称 "search": { "order_by_scalar": { //按标量字段排序的规则 "field_name": "house_price", //用于排序的字段名称:房价 "order": "desc", //排序顺序:降序 }, "limit": 2, //限制返回的结果数量为 2 } }'
执行成功返回:
HTTP/1.1 200 OK Content-Length: 43 Content-Type: application/json { "code":0, "msg":"search success", "request_id":"021695029736548fd001de66666000000000000000000029aa917", "data": [ [ { "id": 1, "score": 0.99, "fields": { "time": 1690529704, "author": "zhangsan" } }, { "id": 2, "score": 0.98, "fields": { "time": 1690529701, "author": "lisi" } } ], ] }
执行失败返回:
HTTP/1.1 400 OK Content-Length: 43 Content-Type: application/json {"code":1000008, "msg":"index not exist", "request_id":"021695029736548fd001de66666000000000000000000029aa917"}