From 022e1aee4a2e8768009635d05a172f49b21818ef Mon Sep 17 00:00:00 2001 From: SuYao Date: Fri, 23 Jan 2026 20:34:54 +0800 Subject: [PATCH] fix(embeddings): truncate query content for temp doc query (#12573) * fix(embeddings): truncate query content for temp doc query * fix: use tokenService --- src/renderer/src/services/KnowledgeService.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/renderer/src/services/KnowledgeService.ts b/src/renderer/src/services/KnowledgeService.ts index ce9577c68d..debda4bac7 100644 --- a/src/renderer/src/services/KnowledgeService.ts +++ b/src/renderer/src/services/KnowledgeService.ts @@ -30,6 +30,7 @@ import { isEmpty } from 'lodash' import { getProviderByModel } from './AssistantService' import FileManager from './FileManager' import type { BlockManager } from './messageStreaming' +import { estimateTextTokens } from './TokenService' const logger = loggerService.withContext('RendererKnowledgeService') @@ -146,6 +147,16 @@ export const searchKnowledgeBase = async ( parentSpanId?: string, modelName?: string ): Promise> => { + // Truncate query based on embedding model's max_context to prevent embedding errors + const maxContext = getEmbeddingMaxContext(base.model.id) + if (maxContext) { + const estimatedTokens = estimateTextTokens(query) + if (estimatedTokens > maxContext) { + const ratio = maxContext / estimatedTokens + query = query.slice(0, Math.floor(query.length * ratio)) + } + } + let currentSpan: Span | undefined = undefined try { const baseParams = getKnowledgeBaseParams(base)