/index/search 接口用于实现检索,本页面主要介绍如何实现非结构化数据检索。
非结构化数据检索是指向量数据库支持非结构化原始数据,可以直接通过文本搜索文本。当用户通过文本搜索时,向量数据库通过测量文本之间的距离来确定两段文本的相似程度,返回文本的相似度。该功能适用于重复识别、文本搜索与匹配、问答等场景。
说明
说明
请求向量数据库 VikingDB 的 OpenAPI 接口时,需要构造签名进行鉴权,详细的 OpenAPI 签名调用方法请参见 API签名调用指南。
URI | /api/index/search | 统一资源标识符 |
---|---|---|
请求方法 | POST | 客户端对向量数据库服务器请求的操作类型 |
请求头 | Content-Type: application/json | 请求消息类型 |
Authorization: HMAC-SHA256 *** | 鉴权 |
参数 | 子参数 | 类型 | 是否必选 | 默认值 | 参数说明 |
---|---|---|---|---|---|
collection_name/collection_alias | string | 是 | 指定检索的 Index 所属的 Collection 名称/别名。
| ||
index_name | string | 是 | 指定检索的 Index 名称。
| ||
search | order_by_raw | map | 是 | 非结构化数据检索,输入文本当前只支持以文本搜文本,字段如下:
| |
filter | map | 否 | 过滤条件,详见 filter 表达式说明。
| ||
need_instruction | bool | 否 | False | 用于非结构化检索场景对 query 做向量化时决定要不要在 query 前增加 instruction, 默认不加 | |
limit | int | 否 | 10 | 检索结果数量,最大5000个。 | |
dense_weight | float | 否 | 0.5 | 混合检索中稠密向量的权重,1 表示纯稠密检索 ,0表示纯字面检索。 | |
output_fields | list<string> | 否 | 过滤字段,指定要返回的标量或向量字段列表。
如果索引的距离方式为cosine,向量字段返回的向量是归一化后的向量。 | ||
partition | int64\string | 否 | "default" | 子索引名,类型与 partition_by 的 field_type一致,字段值对应 partition_by 的 field_value
|
算子 | 算子说明 | 示例 |
---|---|---|
must | 针对指定字段名生效,语义为必须在 [...] 之中,即 "must in"。 |
|
must_not | 针对指定字段名生效,语义为必须不在 [...] 之中,即 "must not in"。 |
|
range | 针对指定字段名生效,语义为必须在指定范围内。 |
|
range_out | 针对指定字段名生效,语义为必须在指定范围外。配置使用 |
|
and | 逻辑算子,针对逻辑查询需求,对多个条件取交集。 |
|
or | 逻辑算子,针对逻辑查询需求,对多个条件取并集。 |
|
参数 | 参数说明 |
---|---|
code | 状态码 |
message | 返回信息 |
request_id | 标识每个请求的唯一标识符 |
data | 检索结果,文本检索会返回检索到的主键、score、text、fields。 |
状态码 | http状态码 | 返回信息 | 状态码说明 |
---|---|---|---|
0 | 200 | drop index success | Index 检索成功。 |
1000008 | 400 | index not exist | 指定的 Index 不存在。 |
1000003 | 400 | invalid request:%s | 非法参数:
|
1000001 | 401 | unauthorized | 请求头中缺乏鉴权信息。 |
1000002 | 403 | no permission | 权限不足。 |
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_raw":{ "text":"hello" }, "dense_weight": 0.5, "limit": 3 } } }'
执行成功返回:
HTTP/1.1 200 OK Content-Length: 43 Content-Type: application/json { "message": "success", "code": 0, "request_id":"021695029736548fd001de66666000000000000000000029aa917", "data": [ [{ "score": 0.9027934670448303, "text": "hello world1", "id": 1001, "fields": { "time": 1690529704, "author": "zhangsan" } }, { "score": 0.8901656270027161, "text": "hello world3", "id": 1003, "fields": { "time": 1690529701, "author": "lisi" } }, { "score": 0.8855509757995605, "text": "hello world2", "id": 1002, "fields": { "time": 1690529708, "author": "wangwu" } }] ] }
执行失败返回:
HTTP/1.1 400 OK Content-Length: 43 Content-Type: application/json {"code":1000008, "msg":"index not exist", "request_id":"021695029736548fd001de66666000000000000000000029aa917"}