diff --git a/src/pages/api/model/data/delModelDataById.ts b/src/pages/api/model/data/delModelDataById.ts index 959a4baf9..9f34d8556 100644 --- a/src/pages/api/model/data/delModelDataById.ts +++ b/src/pages/api/model/data/delModelDataById.ts @@ -2,6 +2,8 @@ import type { NextApiRequest, NextApiResponse } from 'next'; import { jsonRes } from '@/service/response'; import { connectToDatabase, ModelData } from '@/service/mongo'; import { authToken } from '@/service/utils/tools'; +import { connectRedis } from '@/service/redis'; +import { VecModelDataIndex } from '@/constants/redis'; export default async function handler(req: NextApiRequest, res: NextApiResponse) { try { @@ -22,14 +24,27 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse< const userId = await authToken(authorization); await connectToDatabase(); + const redis = await connectRedis(); + + const data = await ModelData.findById(dataId); await ModelData.deleteOne({ _id: dataId, userId }); + // 删除 redis 数据 + data?.q.forEach(async (item) => { + try { + await redis.json.del(`${VecModelDataIndex}:${item.id}`); + } catch (error) { + console.log(error); + } + }); + jsonRes(res); } catch (err) { + console.log(err); jsonRes(res, { code: 500, error: err diff --git a/src/pages/api/model/del.ts b/src/pages/api/model/del.ts index 976ca96f6..a79610237 100644 --- a/src/pages/api/model/del.ts +++ b/src/pages/api/model/del.ts @@ -6,6 +6,8 @@ import { TrainingStatusEnum } from '@/constants/model'; import { getOpenAIApi } from '@/service/utils/chat'; import { TrainingItemType } from '@/types/training'; import { httpsAgent } from '@/service/utils/tools'; +import { connectRedis } from '@/service/redis'; +import { VecModelDataIndex } from '@/constants/redis'; /* 获取我的模型 */ export default async function handler(req: NextApiRequest, res: NextApiResponse) { @@ -25,6 +27,22 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse< const userId = await authToken(authorization); await connectToDatabase(); + const redis = await connectRedis(); + + const modelDataList = await ModelData.find({ + modelId + }); + + // 删除 redis + modelDataList?.forEach((modelData) => + modelData.q.forEach(async (item) => { + try { + await redis.json.del(`${VecModelDataIndex}:${item.id}`); + } catch (error) { + console.log(error); + } + }) + ); let requestQueue: any[] = []; // 删除对应的聊天 @@ -73,7 +91,8 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse< userId }) ); - await requestQueue; + + await Promise.all(requestQueue); jsonRes(res); } catch (err) { diff --git a/src/pages/model/detail/components/ModelDataCard.tsx b/src/pages/model/detail/components/ModelDataCard.tsx index 3b13bb5d4..d49c5b189 100644 --- a/src/pages/model/detail/components/ModelDataCard.tsx +++ b/src/pages/model/detail/components/ModelDataCard.tsx @@ -172,7 +172,7 @@ const ModelDataCard = ({ model }: { model: ModelSchema }) => { aria-label={'delete'} size={'sm'} onClick={async () => { - delOneModelData(item._id); + await delOneModelData(item._id); refetchData(pageNum); }} /> diff --git a/src/service/events/generateQA.ts b/src/service/events/generateQA.ts index 9e58bc246..3f60d7594 100644 --- a/src/service/events/generateQA.ts +++ b/src/service/events/generateQA.ts @@ -29,9 +29,6 @@ export async function generateQA(next = false): Promise { return; } - // 弹出文本 - await SplitData.findByIdAndUpdate(dataItem._id, { $pop: { textList: 1 } }); - const text = dataItem.textList[dataItem.textList.length - 1]; if (!text) { throw new Error('无文本'); @@ -83,21 +80,23 @@ export async function generateQA(next = false): Promise { result: splitText(res?.data.choices[0].message?.content || '') })); // 从 content 中提取 QA - // 插入 modelData 表,生成向量 - await ModelData.insertMany( - response.result.map((item) => ({ - modelId: dataItem.modelId, - userId: dataItem.userId, - text: item.a, - q: [ - { - id: nanoid(), - text: item.q - } - ], - status: 1 - })) - ); + await Promise.allSettled([ + SplitData.findByIdAndUpdate(dataItem._id, { $pop: { textList: 1 } }), + ModelData.insertMany( + response.result.map((item) => ({ + modelId: dataItem.modelId, + userId: dataItem.userId, + text: item.a, + q: [ + { + id: nanoid(), + text: item.q + } + ], + status: 1 + })) + ) + ]); console.log( '生成QA成功,time:', diff --git a/src/service/events/generateVector.ts b/src/service/events/generateVector.ts index b8e79f6fa..00267828d 100644 --- a/src/service/events/generateVector.ts +++ b/src/service/events/generateVector.ts @@ -48,7 +48,7 @@ export async function generateVector(next = false): Promise { .then((vector) => redis.sendCommand([ 'JSON.SET', - `${VecModelDataIndex}:${dataId}:${i}`, + `${VecModelDataIndex}:${item.id}`, '$', JSON.stringify({ dataId,