@re-ai/volc-knowledge
Version:
火山引擎知识库接口接入SDK
213 lines (204 loc) • 10.4 kB
Markdown
该网页介绍了火山引擎向量数据库VikingDB的`/api/knowledge/collection/search_knowledge`接口,可对已创建的知识库进行检索及前后处理,支持多轮改写、文档聚合排序等功能,与`chat_completions`接口联动实现检索生成链路。下面是根据网页内容整理的接口文档:
# 知识库在线检索接口文档
## 一、接口概述
`/api/knowledge/collection/search_knowledge`接口用于对已创建的知识库进行检索及前后处理,默认对原始文本加工后的知识内容检索。相比原`search`接口,支持多轮改写、文档聚合排序等新功能,可与`chat_completions`接口联动实现标准检索生成链路。
## 二、前提条件
1. 完成知识库创建。
2. 完成文档导入且处理完毕。
3. 在“签名鉴权方式”页面完成注册账号、实名认证、AK/SK密钥获取和签名获取。
## 三、请求接口
|参数|详情|描述|
|---|---|---|
|URI|`/api/knowledge/collection/search_knowledge`|统一资源标识符|
|请求方法|POST|客户端对向量数据库服务器请求的操作类型|
|请求头|`Content-Type: application/json`<br>`Authorization: HMAC-SHA256 ***`|请求消息类型<br>鉴权|
## 四、请求参数
|参数|子参数|类型|是否必选|默认值|参数说明|
|---|---|---|---|---|---|
|name|--|string|否|--|知识库名称,由英文字母、数字、下划线组成,以英文字母开头,不能为空,长度在1 - 64之间|
|project|--|string|否|default|知识库所属项目,在【访问控制】-【资源管理】-【项目】中创建|
|resource_id|--|string|否|--|知识库唯一id,可单独传该参数,或同时传name和project作为唯一标识|
|query|--|string|是|--|检索文本,最大输入长度8000。超8000接口报错;小于所选embedding模型输入最大长度且大于8000时自动截断;小于模型输入最大长度时正常检索|
|limit|--|int|否|10|检索结果数量,取值范围为1 - 200|
|query_param|--|json|否|--|检索的过滤和返回设置|
|doc_filter|map|否|--|检索过滤条件,支持对doc的meta信息过滤,使用方式和支持字段见filter表达式,可筛选doc_id,需在创建知识库时将过滤字段添加到index_config的fields中|
|dense_weight|--|float|否|0.5|混合检索中稠密向量的权重,取值范围0.2 - 1,1表示纯稠密检索,0表示纯字面检索,仅在索引算法为hnsw_hybrid时有效|
|pre_processing|--|json|否|--|检索预处理|
|need_instruction|--|bool|否|False|是否拼接instruction进行检索|
|rewrite|--|bool|否|False|是否对query进行改写(仅改写非首轮问题)|
|return_token_usage|--|bool|否|False|是否返回search流程中各阶段的token使用量|
|messages|--|json|开启改写时必选|--|多轮对话信息,根据历史对话内容改写问题,参与者角色包括system、user、assistant|
|post_processing|--|json|否|--|检索后处理|
|rerank_switch|--|bool|否|False|是否自动对结果做rerank,开启后自动请求rerank模型排序|
|retrieve_count|--|int|否|25|进入重排的切片数量,仅在rerank_switch为True时生效,需大于等于limit,否则报错|
|chunk_diffusion_count|--|int|否|0|检索阶段返回命中文本片上下几片文本片,取值范围0 - 5,0表示不进行chunk diffusion|
|chunk_group|--|bool|否|False|文本聚合,默认不聚合,非结构化文件可开启,开启后按文档及顺序对切片重新聚合排序返回|
|rerank_model|--|string|否|`"m3-v2-rerank"`|rerank模型选择,仅在rerank_switch为True时生效,可选`"m3-v2-rerank"`(轻量小模型,多语言能力强,推理速度快)|
|rerank_only_chunk|--|bool|否|False|是否仅根据chunk内容计算重排分数,True为只根据chunk内容计算,False为根据chunk title + 内容一起计算|
|get_attachment_link|--|bool|否|False|是否获取切片中图片的临时下载链接|
## 五、响应消息
|参数|参数说明|
|---|---|
|code|状态码|
|message|返回信息|
|request_id|标识每个请求的唯一标识符|
|data|检索召回切片信息|
### data返回值
|字段|子字段|字段类型|说明|
|---|---|---|---|
|collection_name|--|string|检索知识库名字|
|count|--|int|检索返回的切片数量|
|rewrite_query|--|string|改写的query|
|token_usage|--|list|token用量信息|
|embedding_token_usage|prompt_tokens<br>completion_tokens<br>total_tokens|int|检索向量化阶段的token用量|
|rerank_token_usage|--|int|在重排阶段的token用量|
|rewrite_token_usage|--|int|query改写的token用量|
|result_list|--|list|返回切片信息|
|id|--|string|索引的主键|
|content|--|string|切片内容(非结构化文件为切片内容;faq文件为答案;结构化文件为参与索引的字段和取值,以K:V对拼接,用\n区隔)|
|score|--|float|检索得分|
|point_id|--|string|切片id|
|chunk_title|--|string|切片的标题|
|chunk_id|--|int|chunk的id|
|process_time|--|int|检索耗时|
|rerank_score|--|float|重排得分|
|doc_info|doc_id<br>doc_name<br>create_time<br>doc_type<br>doc_meta<br>source<br>title|string/int|文档信息(文档id、名字、创建时间、类型、元信息、来源、标题)|
|recall_position|--|int|检索召回位次|
|rerank_position|--|int|重排位次|
|table_chunk_fields|field_name<br>field_value|string|结构化数据检索返回单行全量数据(字段名称、字段取值)|
|original_question|--|string|faq数据检索召回答案对应的原始问题|
|chunk_type|--|string|切片所属类型|
|chunk_attachment|uuid<br>caption<br>type<br>link|string|检索召回附件(原始图片等)的临时下载链接(chunk_type为image时有效,含唯一标识、标题、类型、链接,链接有效期10分钟)|
## 六、状态码说明
|状态码|http状态码|返回信息|状态码说明|
|---|---|---|---|
|0|200|success|成功|
|1000001|401|unauthorized|缺乏鉴权信息|
|1000002|403|no permission|权限不足|
|1000003|400|invalid request:%s|非法参数|
|1000005|400|collection not exist|collection不存在|
## 七、完整示例
### (一)请求消息
```bash
curl -i -X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: HMAC-SHA256 ***' \
https://api-knowledgebase.mlp.cn-beijing.volces.com/api/knowledge/collection/search_knowledge \
-d '{
"name": "your_collection",
"query": "test",
"limit": 2,
"query_param" : {},
"dense_weight": 0.5,
"pre_processing": {
"need_instruction": true,
"rewrite": true,
"messages": [
{
"role": "system",
"content": "prompt template"
},
{
"role": "user",
"content": "history content"
},
{
"role": "assistant",
"content": "history content"
},
{
"role": "user",
"content": "history content"
},
{
"role": "assistant",
"content": "history content"
}
],
"return_token_usage": true
},
"post_processing": {
"rerank_switch": false,
"rerank_model": "m3-v2-rerank",
"rerank_only_chunk": false,
"retrieve_count": 25,
"endpoint_id": "ep",
"chunk_group": false,
"get_attachment_link": false
}
}'
```
### (二)响应消息
1. **执行成功返回**
```json
HTTP/1.1 200 OK
Content-Length: 209
Content-Type: application/json
{
"code": 0,
"data": {
"collection_name": "example",
"count": 2,
"rewrite_query": "xxx",
"token_usage": {
"embedding_token_usage": {
"prompt_tokens": 16,
"completion_tokens": 0,
"total_tokens": 16
},
"rerank_token_usage": 0
},
"result_list": [
{
"id": "_sys_auto_gen_doc_id-13411829101044883689-15",
"content": "content",
"score": 0.2639991044998169,
"point_id": "_sys_auto_gen_doc_id-13411829101044883689-15",
"chunk_title": "title",
"chunk_id": 15,
"process_time": 1727333127,
"doc_info": {
"doc_id": "_sys_auto_gen_doc_id-13411829101044883689",
"doc_name": "2404.08817v2.pdf",
"create_time": 1727333117,
"doc_type": "pdf",
"doc_meta": "[{\"field_name\":\"doc_id\",\"field_type\":\"string\",\"field_value\":\"_sys_auto_gen_doc_id-13411829101044883689\"}]",
"source": "tos_fe",
"title": "title"
},
"recall_position": 1,
"chunk_type": "text"
},
{
"id": "_sys_auto_gen_doc_id-13411829101044883689-7",
"content": "content",
"score": 0.2583845257759094,
"point_id": "_sys_auto_gen_doc_id-13411829101044883689-7",
"chunk_title": "title",
"chunk_id": 7,
"process_time": 1727333127,
"doc_info": {
"doc_id": "_sys_auto_gen_doc_id-13411829101044883689",
"doc_name": "2404.08817v2.pdf",
"create_time": 1727333117,
"doc_type": "pdf",
"doc_meta": "[{\"field_name\":\"doc_id\",\"field_type\":\"string\",\"field_value\":\"_sys_auto_gen_doc_id-13411829101044883689\"}]",
"source": "tos_fe",
"title": "title"
},
"recall_position": 2,
"chunk_type": "text"
}
]
},
"message": "success",
"request_id": "02172740884343900000000000000000000ffff0a00406f8a8861"
}
```
2. **执行失败返回**
```json
HTTP/1.1 400 OK
Content-Length: 43
Content-Type: application/json
{"code":1000003, "message":"invalid request:%s", "request_id": "021695029757920fd001de6666600000000000000000002569b8f"}
```