- 实现QA数据 - 优化现在创建知识库的体验 - 优化文件处理与加载方法 - 整体的格式检查与优化 - 优化 Embedding model 的加载逻辑,修复并行问题 - 优化整体的颜色布局 - 移除未使用的接口(前后端) - 优化知识库的 chunk 逻辑 - 添加新的 Embedding模型支持 - 修复新建知识库后,Agent无法reload的问题
216 lines
5.7 KiB
JavaScript
216 lines
5.7 KiB
JavaScript
import { apiGet, apiPost, apiPut, apiDelete } from './base'
|
||
import { useUserStore } from '@/stores/user'
|
||
|
||
/**
|
||
* 知识库管理API模块
|
||
* 包含数据库管理、文档管理、查询接口等功能
|
||
*/
|
||
|
||
// 检查当前用户是否有管理员权限
|
||
const checkAdminPermission = () => {
|
||
const userStore = useUserStore()
|
||
if (!userStore.isAdmin) {
|
||
throw new Error('需要管理员权限')
|
||
}
|
||
return true
|
||
}
|
||
|
||
// =============================================================================
|
||
// === 数据库管理分组 ===
|
||
// =============================================================================
|
||
|
||
export const databaseApi = {
|
||
/**
|
||
* 获取所有知识库
|
||
* @returns {Promise} - 知识库列表
|
||
*/
|
||
getDatabases: async () => {
|
||
checkAdminPermission()
|
||
return apiGet('/api/knowledge/databases', {}, true)
|
||
},
|
||
|
||
/**
|
||
* 创建知识库
|
||
* @param {Object} databaseData - 知识库数据
|
||
* @returns {Promise} - 创建结果
|
||
*/
|
||
createDatabase: async (databaseData) => {
|
||
checkAdminPermission()
|
||
return apiPost('/api/knowledge/databases', databaseData, {}, true)
|
||
},
|
||
|
||
/**
|
||
* 获取知识库详细信息
|
||
* @param {string} dbId - 知识库ID
|
||
* @returns {Promise} - 知识库信息
|
||
*/
|
||
getDatabaseInfo: async (dbId) => {
|
||
checkAdminPermission()
|
||
return apiGet(`/api/knowledge/databases/${dbId}`, {}, true)
|
||
},
|
||
|
||
/**
|
||
* 更新知识库信息
|
||
* @param {string} dbId - 知识库ID
|
||
* @param {Object} updateData - 更新数据
|
||
* @returns {Promise} - 更新结果
|
||
*/
|
||
updateDatabase: async (dbId, updateData) => {
|
||
checkAdminPermission()
|
||
return apiPut(`/api/knowledge/databases/${dbId}`, updateData, {}, true)
|
||
},
|
||
|
||
/**
|
||
* 删除知识库
|
||
* @param {string} dbId - 知识库ID
|
||
* @returns {Promise} - 删除结果
|
||
*/
|
||
deleteDatabase: async (dbId) => {
|
||
checkAdminPermission()
|
||
return apiDelete(`/api/knowledge/databases/${dbId}`, {}, true)
|
||
}
|
||
}
|
||
|
||
// =============================================================================
|
||
// === 文档管理分组 ===
|
||
// =============================================================================
|
||
|
||
export const documentApi = {
|
||
/**
|
||
* 添加文档到知识库
|
||
* @param {string} dbId - 知识库ID
|
||
* @param {Array} items - 文档列表
|
||
* @param {Object} params - 处理参数
|
||
* @returns {Promise} - 添加结果
|
||
*/
|
||
addDocuments: async (dbId, items, params = {}) => {
|
||
checkAdminPermission()
|
||
return apiPost(`/api/knowledge/databases/${dbId}/documents`, {
|
||
items,
|
||
params
|
||
}, {}, true)
|
||
},
|
||
|
||
/**
|
||
* 获取文档信息
|
||
* @param {string} dbId - 知识库ID
|
||
* @param {string} docId - 文档ID
|
||
* @returns {Promise} - 文档信息
|
||
*/
|
||
getDocumentInfo: async (dbId, docId) => {
|
||
checkAdminPermission()
|
||
return apiGet(`/api/knowledge/databases/${dbId}/documents/${docId}`, {}, true)
|
||
},
|
||
|
||
/**
|
||
* 删除文档
|
||
* @param {string} dbId - 知识库ID
|
||
* @param {string} docId - 文档ID
|
||
* @returns {Promise} - 删除结果
|
||
*/
|
||
deleteDocument: async (dbId, docId) => {
|
||
checkAdminPermission()
|
||
return apiDelete(`/api/knowledge/databases/${dbId}/documents/${docId}`, {}, true)
|
||
}
|
||
}
|
||
|
||
// =============================================================================
|
||
// === 查询分组 ===
|
||
// =============================================================================
|
||
|
||
export const queryApi = {
|
||
/**
|
||
* 查询知识库
|
||
* @param {string} dbId - 知识库ID
|
||
* @param {string} query - 查询文本
|
||
* @param {Object} meta - 查询参数
|
||
* @returns {Promise} - 查询结果
|
||
*/
|
||
queryKnowledgeBase: async (dbId, query, meta = {}) => {
|
||
checkAdminPermission()
|
||
return apiPost(`/api/knowledge/databases/${dbId}/query`, {
|
||
query,
|
||
meta
|
||
}, {}, true)
|
||
},
|
||
|
||
/**
|
||
* 测试查询知识库
|
||
* @param {string} dbId - 知识库ID
|
||
* @param {string} query - 查询文本
|
||
* @param {Object} meta - 查询参数
|
||
* @returns {Promise} - 测试结果
|
||
*/
|
||
queryTest: async (dbId, query, meta = {}) => {
|
||
checkAdminPermission()
|
||
return apiPost(`/api/knowledge/databases/${dbId}/query-test`, {
|
||
query,
|
||
meta
|
||
}, {}, true)
|
||
},
|
||
|
||
/**
|
||
* 获取知识库查询参数
|
||
* @param {string} dbId - 知识库ID
|
||
* @returns {Promise} - 查询参数
|
||
*/
|
||
getKnowledgeBaseQueryParams: async (dbId) => {
|
||
checkAdminPermission()
|
||
return apiGet(`/api/knowledge/databases/${dbId}/query-params`, {}, true)
|
||
}
|
||
}
|
||
|
||
// =============================================================================
|
||
// === 文件管理分组 ===
|
||
// =============================================================================
|
||
|
||
export const fileApi = {
|
||
/**
|
||
* 上传文件
|
||
* @param {File} file - 文件对象
|
||
* @param {string} dbId - 知识库ID(可选)
|
||
* @returns {Promise} - 上传结果
|
||
*/
|
||
uploadFile: async (file, dbId = null) => {
|
||
checkAdminPermission()
|
||
|
||
const formData = new FormData()
|
||
formData.append('file', file)
|
||
|
||
const url = dbId
|
||
? `/api/knowledge/files/upload?db_id=${dbId}`
|
||
: '/api/knowledge/files/upload'
|
||
|
||
return apiPost(url, formData, {
|
||
headers: {
|
||
'Content-Type': 'multipart/form-data'
|
||
}
|
||
}, true)
|
||
}
|
||
}
|
||
|
||
// =============================================================================
|
||
// === 知识库类型分组 ===
|
||
// =============================================================================
|
||
|
||
export const typeApi = {
|
||
/**
|
||
* 获取支持的知识库类型
|
||
* @returns {Promise} - 知识库类型列表
|
||
*/
|
||
getKnowledgeBaseTypes: async () => {
|
||
checkAdminPermission()
|
||
return apiGet('/api/knowledge/types', {}, true)
|
||
},
|
||
|
||
/**
|
||
* 获取知识库统计信息
|
||
* @returns {Promise} - 统计信息
|
||
*/
|
||
getStatistics: async () => {
|
||
checkAdminPermission()
|
||
return apiGet('/api/knowledge/stats', {}, true)
|
||
}
|
||
}
|
||
|