diff --git a/src/lib/Others/HypaV3Modal.svelte b/src/lib/Others/HypaV3Modal.svelte index 63ee1be4..41eb7169 100644 --- a/src/lib/Others/HypaV3Modal.svelte +++ b/src/lib/Others/HypaV3Modal.svelte @@ -413,11 +413,17 @@ } function isOrphan(summaryIndex: number): boolean { + const char = DBState.db.characters[$selectedCharID]; + const chat = char.chats[DBState.db.characters[$selectedCharID].chatPage]; const summary = hypaV3DataState.summaries[summaryIndex]; for (const chatMemo of summary.chatMemos) { - if (!getMessageFromChatMemo(chatMemo)) { - return true; + if (chatMemo == null) { + // Check first message exists + if (!getFirstMessage()) return true; + } else { + if (chat.message.findIndex((m) => m.chatId === chatMemo) === -1) + return true; } } @@ -437,8 +443,7 @@ const summary = hypaV3DataState.summaries[summaryIndex]; const toSummarize: OpenAIChat[] = await Promise.all( summary.chatMemos.map(async (chatMemo) => { - // Processed message - const message = await getProcessedMessageFromChatMemo(chatMemo); + const message = await getMessageFromChatMemo(chatMemo); return { role: (message.role === "char" @@ -495,31 +500,28 @@ summaryUIState.isRerolledTranslating = false; } - async function getProcessedMessageFromChatMemo( + async function getMessageFromChatMemo( chatMemo: string | null ): Promise { - const unprocessed = getMessageFromChatMemo(chatMemo); - - if (!unprocessed) { - return null; - } - - return getCurrentHypaV3Preset().settings.processRegexScript - ? await processRegexScript(unprocessed) - : unprocessed; - } - - function getMessageFromChatMemo(chatMemo: string | null): Message | null { const char = DBState.db.characters[$selectedCharID]; const chat = char.chats[DBState.db.characters[$selectedCharID].chatPage]; + const shouldProcess = getCurrentHypaV3Preset().settings.processRegexScript; + + let msg = null; + let msgIndex = -1; if (chatMemo == null) { const firstMessage = getFirstMessage(); - return firstMessage ? { role: "char", data: firstMessage } : null; + if (!firstMessage) return null; + msg = { role: "char", data: firstMessage }; + } else { + msgIndex = chat.message.findIndex((m) => m.chatId === chatMemo); + if (msgIndex === -1) return null; + msg = chat.message[msgIndex]; } - return chat.message.find((m) => m.chatId === chatMemo) || null; + return shouldProcess ? await processRegexScript(msg, msgIndex) : msg; } function getFirstMessage(): string | null { @@ -533,15 +535,17 @@ : null; } - async function processRegexScript(msg: Message): Promise { + async function processRegexScript( + msg: Message, + msgIndex: number = -1 + ): Promise { const char = DBState.db.characters[$selectedCharID]; - const chat = char.chats[DBState.db.characters[$selectedCharID].chatPage]; const newData: string = ( await processScriptFull( char, risuChatParser(msg.data, { chara: char, role: msg.role }), "editprocess", - -1, + msgIndex, { chatRole: msg.role, } @@ -593,8 +597,7 @@ return; } - // Processed message - const message = await getProcessedMessageFromChatMemo( + const message = await getMessageFromChatMemo( expandedMessageUIState.selectedChatMemo ); @@ -632,52 +635,41 @@ } } - async function getProcessedNextSummarizationTarget(): Promise { - const unprocessed = getNextSummarizationTarget(); - - if (!unprocessed) { - return null; - } - - return getCurrentHypaV3Preset().settings.processRegexScript - ? await processRegexScript(unprocessed) - : unprocessed; - } - - function getNextSummarizationTarget(): Message | null { + async function getNextSummarizationTarget(): Promise { const char = DBState.db.characters[$selectedCharID]; const chat = char.chats[DBState.db.characters[$selectedCharID].chatPage]; + const shouldProcess = getCurrentHypaV3Preset().settings.processRegexScript; // Summaries exist if (hypaV3DataState.summaries.length > 0) { const lastSummary = hypaV3DataState.summaries.at(-1); const lastMessageIndex = chat.message.findIndex( - (msg) => msg.chatId === lastSummary.chatMemos.at(-1) + (m) => m.chatId === lastSummary.chatMemos.at(-1) ); if (lastMessageIndex !== -1) { - const nextMessage = chat.message[lastMessageIndex + 1]; + const next = chat.message[lastMessageIndex + 1] ?? null; - if (nextMessage) { - return nextMessage; - } + return next && shouldProcess + ? await processRegexScript(next, lastMessageIndex + 1) + : next; } } + // When no summaries exist OR couldn't find last connected message, + // check if first message is available const firstMessage = getFirstMessage(); - // When no summaries exist OR couldn't find last connected message - // Check if first message is available - if (!firstMessage || firstMessage.trim() === "") { - if (chat.message.length > 0) { - return chat.message[0]; - } + if (!firstMessage) { + const next = chat.message[0] ?? null; - return null; + return next && shouldProcess ? await processRegexScript(next, 0) : next; } - // will summarize first message - return { role: "char", chatId: "first", data: firstMessage }; + // Will summarize first message + const next: Message = { role: "char", chatId: "first", data: firstMessage }; + + return shouldProcess ? await processRegexScript(next) : next; } function isHypaV2ConversionPossible(): boolean { @@ -1278,8 +1270,7 @@ {#if expandedMessageUIState?.summaryIndex === i}
- - {#await getProcessedMessageFromChatMemo(expandedMessageUIState.selectedChatMemo) then expandedMessage} + {#await getMessageFromChatMemo(expandedMessageUIState.selectedChatMemo) then expandedMessage} {#if expandedMessage}
@@ -1336,7 +1327,7 @@
- {#await getProcessedNextSummarizationTarget() then nextMessage} + {#await getNextSummarizationTarget() then nextMessage} {#if nextMessage} {@const chatId = nextMessage.chatId === "first" diff --git a/src/lib/Playground/PlaygroundEmbedding.svelte b/src/lib/Playground/PlaygroundEmbedding.svelte index b048c48b..76138bcd 100644 --- a/src/lib/Playground/PlaygroundEmbedding.svelte +++ b/src/lib/Playground/PlaygroundEmbedding.svelte @@ -5,6 +5,7 @@ import SelectInput from "../UI/GUI/SelectInput.svelte"; import Button from "../UI/GUI/Button.svelte"; import { HypaProcesser } from "src/ts/process/memory/hypamemory"; + import { DBState } from "src/ts/stores.svelte" let query = $state(""); let model = $state("MiniLM"); @@ -27,24 +28,43 @@

{language.embedding}

Model - + + {#if 'gpu' in navigator} + MiniLM L6 v2 (GPU) + Nomic Embed Text v1.5 (GPU) + BGE Small English (GPU) + BGE Medium 3 (GPU) + Multilingual MiniLM L12 v2 (GPU) + BGE Medium 3 Korean (GPU) + {/if} MiniLM L6 v2 (CPU) Nomic Embed Text v1.5 (CPU) - Nomic Embed Text v1.5 (GPU) BGE Small English (CPU) - BGE Small English (GPU) BGE Medium 3 (CPU) - BGE Medium 3 (GPU) + Multilingual MiniLM L12 v2 (CPU) + BGE Medium 3 Korean (CPU) OpenAI text-embedding-3-small OpenAI text-embedding-3-large + OpenAI Ada Custom (OpenAI-compatible) -{#if model === "custom"} - Custom Server URL - +{#if model === 'openai3small' || model === 'openai3large' || model === 'ada'} + OpenAI API Key + {/if} +{#if model === "custom"} + URL + + Key/Password + + Request Model + +{/if} + +
+ Query diff --git a/src/lib/Setting/Pages/OtherBotSettings.svelte b/src/lib/Setting/Pages/OtherBotSettings.svelte index 6d07eb4e..4de67d2f 100644 --- a/src/lib/Setting/Pages/OtherBotSettings.svelte +++ b/src/lib/Setting/Pages/OtherBotSettings.svelte @@ -123,7 +123,7 @@ } // End HypaV3 - let imageModel = ''; + let imageModel = $state(''); // add init NAI V4 // if(DBState.db.NAIImgConfig.autoSmea === undefined) DBState.db.NAIImgConfig.autoSmea = false; @@ -277,13 +277,6 @@ CFG rescale - Noise Schedule - - karras - exponential - polyexponential - - {#if !DBState.db.NAII2I || DBState.db.NAIImgConfig.sampler !== 'ddim_v3'} {:else if DBState.db.NAIImgModel === 'nai-diffusion-4-full' @@ -294,11 +287,6 @@ {#if DBState.db.NAIImgModel === 'nai-diffusion-4-full' || DBState.db.NAIImgModel === 'nai-diffusion-4-curated-preview'} - - Prompt Guidance Rescale - - - @@ -917,19 +905,21 @@ {/if} {language.embedding} - + {#if 'gpu' in navigator} MiniLM L6 v2 (GPU) Nomic Embed Text v1.5 (GPU) BGE Small English (GPU) BGE Medium 3 (GPU) Multilingual MiniLM L12 v2 (GPU) + BGE Medium 3 Korean (GPU) {/if} MiniLM L6 v2 (CPU) Nomic Embed Text v1.5 (CPU) BGE Small English (CPU) BGE Medium 3 (CPU) Multilingual MiniLM L12 v2 (CPU) + BGE Medium 3 Korean (CPU) OpenAI text-embedding-3-small OpenAI text-embedding-3-large OpenAI Ada @@ -942,12 +932,12 @@ {/if} {#if DBState.db.hypaModel === 'custom'} - URL - - Key/Password - - Request Model - + URL + + Key/Password + + Request Model + {/if} diff --git a/src/ts/process/memory/hypamemory.ts b/src/ts/process/memory/hypamemory.ts index 07af73d4..28afe631 100644 --- a/src/ts/process/memory/hypamemory.ts +++ b/src/ts/process/memory/hypamemory.ts @@ -21,6 +21,8 @@ export const localModels = { 'bgem3GPU': 'Xenova/bge-m3', 'multiMiniLM': 'Xenova/paraphrase-multilingual-MiniLM-L12-v2', 'multiMiniLMGPU': 'Xenova/paraphrase-multilingual-MiniLM-L12-v2', + 'bgeM3Ko': 'HyperBlaze/BGE-m3-ko', + 'bgeM3KoGPU': 'HyperBlaze/BGE-m3-ko', }, gpuModels:[ 'MiniLMGPU', @@ -28,6 +30,7 @@ export const localModels = { 'bgeSmallEnGPU', 'bgem3GPU', 'multiMiniLMGPU', + 'bgeM3KoGPU', ] } diff --git a/src/ts/process/memory/hypav3.ts b/src/ts/process/memory/hypav3.ts index 7985cf53..49f118b9 100644 --- a/src/ts/process/memory/hypav3.ts +++ b/src/ts/process/memory/hypav3.ts @@ -128,7 +128,7 @@ export async function hypaMemoryV3( } finally { if (settings.summarizationModel !== "subModel") { try { - unloadEngine(); + await unloadEngine(); } catch {} } } diff --git a/src/ts/process/transformers.ts b/src/ts/process/transformers.ts index ea3a32d6..2b3cf2de 100644 --- a/src/ts/process/transformers.ts +++ b/src/ts/process/transformers.ts @@ -66,7 +66,7 @@ export const runEmbedding = async (texts: string[], model:EmbeddingModel = 'Xeno } extractor = await pipeline('feature-extraction', model, { // Default dtype for webgpu is fp32, so we can use q8, which is the default dtype in wasm. - ...(device === 'webgpu' ? { dtype: "q8" } : {}), + dtype: "q8", device: device, progress_callback: (progress) => { console.log(progress) diff --git a/src/ts/storage/database.svelte.ts b/src/ts/storage/database.svelte.ts index e1c444d1..be5c16a0 100644 --- a/src/ts/storage/database.svelte.ts +++ b/src/ts/storage/database.svelte.ts @@ -310,9 +310,6 @@ export function setDatabase(data:Database){ legacy_uc:false, }; } - if(checkNullish(data.NAIImgConfig.cfg_rescale)){ - data.NAIImgConfig.cfg_rescale = 0; - } if(checkNullish(data.customTextTheme)){ data.customTextTheme = { FontColorStandard: "#f8f8f2",