import { defHttp } from '../utils/http' import type { KnowledgeBase, KnowledgeDoc, KnowledgeSearchForm, KnowledgeDocSearchForm, EmbeddingHitResult, RebuildVectorParams } from '../types/knowledge' // API 端点枚举 enum Api { // 知识库管理 list = '/airag/knowledge/list', save = '/airag/knowledge/add', delete = '/airag/knowledge/delete', queryById = '/airag/knowledge/queryById', edit = '/airag/knowledge/edit', rebuild = '/airag/knowledge/rebuild', // 知识库文档 knowledgeDocList = '/airag/knowledge/doc/list', knowledgeEditDoc = '/airag/knowledge/doc/edit', knowledgeDeleteBatchDoc = '/airag/knowledge/doc/deleteBatch', knowledgeDeleteAllDoc = '/airag/knowledge/doc/deleteAll', knowledgeRebuildDoc = '/airag/knowledge/doc/rebuild', knowledgeEmbeddingHitTest = '/airag/knowledge/embedding/hitTest', } /** * 查询知识库列表 * @param params 查询参数 */ export const getKnowledgeList = (params: KnowledgeSearchForm & { pageNo?: number; pageSize?: number }) => { return defHttp.get<{ records: KnowledgeBase[] total: number size: number current: number }>({ url: Api.list, params }, { isTransformResponse: false }) } /** * 根据ID查询知识库详情 * @param params 查询参数 */ export const getKnowledgeById = (params: { id: string }) => { return defHttp.get({ url: Api.queryById, params }, { isTransformResponse: false }) } /** * 新增知识库 * @param params 知识库数据 */ export const createKnowledge = (params: Omit) => { return defHttp.post({ url: Api.save, params }) } /** * 编辑知识库 * @param params 知识库数据 */ export const updateKnowledge = (params: KnowledgeBase) => { return defHttp.put({ url: Api.edit, params }) } /** * 删除知识库 * @param params 删除参数 */ export const deleteKnowledge = (params: { id: string }) => { return defHttp.delete({ url: Api.delete, params }, { joinParamsToUrl: true }) } /** * 知识库向量化 * @param params 向量化参数 */ export const rebuildKnowledgeVector = (params: RebuildVectorParams) => { return defHttp.put({ url: Api.rebuild, params, timeout: 2 * 60 * 1000 }, { joinParamsToUrl: true, isTransformResponse: false }) } /** * 查询知识库文档列表 * @param params 查询参数 */ export const getKnowledgeDocList = (params: KnowledgeDocSearchForm & { knowledgeId: string pageNo?: number pageSize?: number }) => { return defHttp.get<{ records: KnowledgeDoc[] total: number size: number current: number }>({ url: Api.knowledgeDocList, params }, { isTransformResponse: false }) } /** * 新增/编辑知识库文档 * @param params 文档数据 */ export const saveKnowledgeDoc = (params: Partial) => { return defHttp.post({ url: Api.knowledgeEditDoc, params }) } /** * 批量删除文档 * @param params 删除参数 */ export const batchDeleteKnowledgeDocs = (params: { ids: string }) => { return defHttp.delete({ url: Api.knowledgeDeleteBatchDoc, params }, { joinParamsToUrl: true }) } /** * 清空所有文档 * @param knowledgeId 知识库ID */ export const deleteAllKnowledgeDocs = (knowledgeId: string) => { return defHttp.delete({ url: Api.knowledgeDeleteAllDoc, params: { knowledgeId } }, { joinParamsToUrl: true }) } /** * 文档向量化 * @param params 向量化参数 */ export const rebuildDocVector = (params: { docIds: string }) => { return defHttp.put({ url: Api.knowledgeRebuildDoc, params }, { joinParamsToUrl: true }) } /** * 向量化命中测试 * @param params 测试参数 */ export const embeddingHitTest = (params: { knowledgeId: string query: string topK?: number }) => { return defHttp.post({ url: Api.knowledgeEmbeddingHitTest, params }) } /** * 批量查询知识库 * @param params 查询参数 */ export const batchQueryKnowledgeById = (params: { ids: string }) => { return defHttp.get({ url: '/airag/knowledge/query/batch/byId', params }, { isTransformResponse: false }) }