1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import type { PageParam, PageResult } from '@vben/request';
 
import { requestClient } from '#/api/request';
 
export namespace AiKnowledgeSegmentApi {
  export interface KnowledgeSegment {
    id: number; // 编号
    documentId: number; // 文档编号
    knowledgeId: number; // 知识库编号
    vectorId: string; // 向量库编号
    content: string; // 切片内容
    contentLength: number; // 切片内容长度
    tokens: number; // token 数量
    retrievalCount: number; // 召回次数
    status: number; // 文档状态
    createTime: number; // 创建时间
    score?: number; // 相似度分数(0~1),仅搜索接口返回
    documentName?: string; // 来源文档名称,仅搜索接口返回
  }
 
  export interface SearchParams {
    knowledgeId: number;
    content: string;
    topK?: number;
    similarityThreshold?: number;
  }
 
  export interface SplitResult {
    content: string;
    contentLength: number;
    tokens: number;
  }
 
  export interface ProcessInfo {
    documentId: number;
    count: number;
    embeddingCount: number;
  }
}
 
/** 查询知识库分段分页 */
export function getKnowledgeSegmentPage(params: PageParam) {
  return requestClient.get<PageResult<AiKnowledgeSegmentApi.KnowledgeSegment>>(
    '/ai/knowledge/segment/page',
    { params },
  );
}
 
/** 查询知识库分段详情 */
export function getKnowledgeSegment(id: number) {
  return requestClient.get<AiKnowledgeSegmentApi.KnowledgeSegment>(
    `/ai/knowledge/segment/get?id=${id}`,
  );
}
 
/** 新增知识库分段 */
export function createKnowledgeSegment(
  data: AiKnowledgeSegmentApi.KnowledgeSegment,
) {
  return requestClient.post('/ai/knowledge/segment/create', data);
}
 
/** 修改知识库分段 */
export function updateKnowledgeSegment(
  data: AiKnowledgeSegmentApi.KnowledgeSegment,
) {
  return requestClient.put('/ai/knowledge/segment/update', data);
}
 
/** 修改知识库分段状态 */
export function updateKnowledgeSegmentStatus(id: number, status: number) {
  return requestClient.put('/ai/knowledge/segment/update-status', {
    id,
    status,
  });
}
 
/** 删除知识库分段 */
export function deleteKnowledgeSegment(id: number) {
  return requestClient.delete(`/ai/knowledge/segment/delete?id=${id}`);
}
 
/** 切片内容 */
export function splitContent(url: string, segmentMaxTokens: number) {
  return requestClient.get<AiKnowledgeSegmentApi.SplitResult[]>(
    '/ai/knowledge/segment/split',
    {
      params: { url, segmentMaxTokens },
    },
  );
}
 
/** 获取文档处理列表 */
export function getKnowledgeSegmentProcessList(documentIds: number[]) {
  return requestClient.get<AiKnowledgeSegmentApi.ProcessInfo[]>(
    '/ai/knowledge/segment/get-process-list',
    {
      params: { documentIds: documentIds.join(',') },
    },
  );
}
 
/** 搜索知识库分段(RAG 向量检索) */
export function searchKnowledgeSegment(
  params: AiKnowledgeSegmentApi.SearchParams,
) {
  return requestClient.post<AiKnowledgeSegmentApi.KnowledgeSegment[]>(
    '/ai/knowledge/segment/search',
    params,
  );
}