知识库 API
产品概述
知识库是灵矽AI平台智能体的核心能力之一,允许您为智能体注入专业领域知识,提升问答的准确性和专业性。通过知识库API,您可以:
- 文档管理:上传、编辑和删除知识文档
- 智能检索:基于语义理解的知识检索能力
- 智能体集成:将知识库与智能体绑定,实现智能问答
一、创建知识库
创建一个新的知识库,为后续文档上传和知识管理做准备。每个知识库都可以独立配置和管理,支持多个智能体同时使用。
接口信息
请求方式: POST /v1/datasets
请求示例
POST /v1/datasets
Content-Type: application/json
Authorization: Bearer <token>{
"name": <string>,// 知识库名称
"desc": <string>, // 描述信息
"retrieval_model": {
"top_k": int,
"score_threshold": float32
}
}响应示例
成功创建知识库后,返回知识库的详细信息:
Response
200
{
"data": {
"id": <string>,// 知识库 id
"name": <string>, // 知识库名称
"desc": <string>,// 描述信息
"retrieval_model": {
"top_k": int,
"score_threshold": float32
},
"created_at": <string>, // 创建时间
"updated_at": <string>// 更新时间
}
}获取知识库信息
请求方式: GET /v1/datasets/{dataset_id}
接口说明: 获取指定知识库的详细信息
请求头:
Authorization: Bearer <token>响应示例:
{
"code": 0,
"msg": "success",
"data": {
"id": "<string>",
"name": "<string>",
"desc": "<string>",
"retrieval_model": {
"top_k": 5,
"score_threshold": 0.7
},
"created_at": "<string>",
"updated_at": "<string>"
}
}删除知识库
请求方式: DELETE /v1/datasets/{dataset_id}
接口说明: 删除指定知识库,需要检查是否被智能体引用以及知识库下面是否存在文档
请求头:
Authorization: Bearer <token>响应示例:
{
"code": 0,
"msg": "success",
"data": {}
}二、上传文档
向知识库中上传文档,系统会自动进行文本提取、分块处理和向量化存储。支持多种文档格式,确保知识内容能够被智能体有效利用。
接口信息
请求方式: POST /v1/datasets/{dataset_id}/documents
请求示例
POST /v1/datasets/{dataset_id}/documents
Content-Type: multipart/form-data
Authorization: Bearer <token>{
"name": <string>,
"url": <string>, // 上传文件的 url
"process_rule": {
"mode": "automatic", // 模式,固定值
"rules": {
"segmentation": {
// 相当于递归分割参数
"separator": "\n\n",
"max_tokens": 1024
}
}
}
}响应示例
文档上传并处理完成后,返回文档信息:
{
"data": {
"id": <string>, // 文档ID
"name": <string>, // 文件名称
"created_at": <string>, // 创建时间
"updated_at": <string>, // 更新时间
}
}处理流程
文档上传后会进入处理队列,系统会自动进行文本提取和向量化处理。处理完成后,文档状态会更新为 "completed",此时知识内容就可以被智能体检索和使用了。
三、知识检索
基于用户问题进行语义检索,从知识库中找到最相关的知识片段。这是智能问答功能的核心接口,支持多种检索策略和结果排序。
接口信息
请求方式: POST /v1/datasets/{dataset_id}/retrieve
请求示例
POST //v1/datasets/{dataset_id}/retrieve
Content-Type: application/json
Authorization: Bearer <token>{
"query": <string>,
"retrieval_model": {
"top_k": <int>,
"score_threshold": <float32> // 阈值
}
}响应示例
返回最相关的知识片段:
{
"data": {
"records": [
{
"segment": {
"id": "7fa6f24f-8679-48b3-bc9d-bdf28d73f218", // 片段id
"index": 0, // 片段序号
"content": "Operation guide", // 片段内容
"document_id": "xxx", // 文档 id
"document_name": "xxx" // 文档名字
},
"score": 3.73,
}
]
}
}四、获取知识库列表
获取当前用户下的所有知识库,支持分页和筛选。这个接口通常用于管理界面展示和知识库选择功能。
接口信息
请求方式: GET /v1/datasets
请求示例
GET /v1/datasets
Authorization: Bearer <token>响应示例
返回知识库列表:
{
"data": {
"datesets": [
{
"id": <string>,
"name": <string>,
"description": <string>,
"created_at": <string>,
"updated_at": <string>
}
]
}
}五、更新知识库
修改知识库的基本信息,如名称、描述、处理参数等。某些参数修改后可能需要重新处理已有文档。
接口信息
请求方式: PUT /v1/datasets
请求示例
PUT /v1/datasets
Content-Type: application/json
Authorization: Bearer <token>{
"name": <string>, // 知识库名称
"desc": <string>, // 描述信息
"retrieval_model": {
"top_k": int,
"score_threshold": float32
}
}响应示例
更新成功后返回完整的知识库信息:
{
"data": {
"id": <string>,// 知识库 id
"name": <string>, // 知识库名称
"desc": <string>,// 描述信息
"retrieval_model": {
"top_k": int,
"score_threshold": float32
},
"created_at": <string>, // 创建时间
"updated_at": <string>// 更新时间
}
}其他API接口
更新文档
请求方式: PUT /v1/datasets/{dataset_id}/documents/{document_id}
接口说明: 当前只支持更新文档名称,需要校验用户是否拥有这个知识库
请求头:
Content-Type: application/json
Authorization: Bearer <token>请求体:
{
"name": "<string>"
}响应示例:
{
"code": 0,
"msg": "success",
"data": {
"id": "<string>",
"name": "<string>",
"status": "<string>",
"created_at": "<string>",
"updated_at": "<string>"
}
}删除文档
请求方式: DELETE /v1/datasets/{dataset_id}/documents/{document_id}
接口说明: 删除指定文档,需要校验用户是否拥有这个知识库
请求头:
Authorization: Bearer <token>响应示例:
{
"code": 0,
"msg": "success",
"data": {}
}列举文档
请求方式: GET /v1/datasets/{dataset_id}/documents
接口说明: 获取指定知识库下的所有文档列表,需要校验用户是否拥有这个知识库
请求头:
Authorization: Bearer <token>响应示例:
{
"code": 0,
"msg": "success",
"data": {
"documents": [
{
"id": "<string>",
"name": "<string>",
"created_at": "<string>",
"updated_at": "<string>"
}
]
}
}列举文档段落
请求方式: GET /v1/datasets/{dataset_id}/documents/{document_id}/segments
接口说明: 获取指定文档的所有分段内容,需要校验用户是否拥有这个知识库
请求头:
Authorization: Bearer <token>响应示例:
{
"code": 0,
"msg": "success",
"data": {
"segments": [
{
"id": "<string>",
"index": 0,
"content": "Operation guide"
}
]
}
}