From d56774fd5996ad199c5cba8ffa82c9b8d37ced7d Mon Sep 17 00:00:00 2001 From: Chen Tao <70054568+eeee0717@users.noreply.github.com> Date: Sat, 22 Mar 2025 22:14:25 +0800 Subject: [PATCH] fix(knowledge): show more info (#3790) * feat: remove rerank model from embedded model * feat: add rerank model info * fix: embedding and rerank model end without `/v1` bug --- src/main/reranker/JinaReranker.ts | 14 ++-- src/main/reranker/SiliconFlowReranker.ts | 14 ++-- .../src/pages/knowledge/KnowledgeContent.tsx | 64 ++++++++++++++++--- .../components/AddKnowledgePopup.tsx | 15 +++-- .../components/KnowledgeSettingsPopup.tsx | 2 +- 5 files changed, 84 insertions(+), 25 deletions(-) diff --git a/src/main/reranker/JinaReranker.ts b/src/main/reranker/JinaReranker.ts index dbee063c..3dfede19 100644 --- a/src/main/reranker/JinaReranker.ts +++ b/src/main/reranker/JinaReranker.ts @@ -10,9 +10,15 @@ export default class JinaReranker extends BaseReranker { } public rerank = async (query: string, searchResults: ExtractChunkData[]): Promise => { - const baseURL = this.base?.rerankBaseURL?.endsWith('/') + let baseURL = this.base?.rerankBaseURL?.endsWith('/') ? this.base.rerankBaseURL.slice(0, -1) : this.base.rerankBaseURL + + // 必须携带/v1,否则会404 + if (baseURL && !baseURL.endsWith('/v1')) { + baseURL = `${baseURL}/v1` + } + const url = `${baseURL}/rerank` const requestBody = { @@ -40,9 +46,9 @@ export default class JinaReranker extends BaseReranker { }) .filter((doc): doc is ExtractChunkData => doc !== undefined) .sort((a, b) => b.score - a.score) - } catch (error) { - console.error('Jina Reranker API 错误:', error) - throw error + } catch (error: any) { + console.error('Jina Reranker API 错误:', error.status) + throw new Error(`${error} - BaseUrl: ${baseURL}`) } } } diff --git a/src/main/reranker/SiliconFlowReranker.ts b/src/main/reranker/SiliconFlowReranker.ts index ee82362e..1e47cca9 100644 --- a/src/main/reranker/SiliconFlowReranker.ts +++ b/src/main/reranker/SiliconFlowReranker.ts @@ -10,9 +10,15 @@ export default class SiliconFlowReranker extends BaseReranker { } public rerank = async (query: string, searchResults: ExtractChunkData[]): Promise => { - const baseURL = this.base?.rerankBaseURL?.endsWith('/') + let baseURL = this.base?.rerankBaseURL?.endsWith('/') ? this.base.rerankBaseURL.slice(0, -1) : this.base.rerankBaseURL + + // 必须携带/v1,否则会404 + if (baseURL && !baseURL.endsWith('/v1')) { + baseURL = `${baseURL}/v1` + } + const url = `${baseURL}/rerank` const requestBody = { @@ -42,9 +48,9 @@ export default class SiliconFlowReranker extends BaseReranker { }) .filter((doc): doc is ExtractChunkData => doc !== undefined) .sort((a, b) => b.score - a.score) - } catch (error) { - console.error('SiliconFlow Reranker API 错误:', error) - throw error + } catch (error: any) { + console.error('SiliconFlow Reranker API 错误:', error.status) + throw new Error(`${error} - BaseUrl: ${baseURL}`) } } } diff --git a/src/renderer/src/pages/knowledge/KnowledgeContent.tsx b/src/renderer/src/pages/knowledge/KnowledgeContent.tsx index 7fa16c27..a632fe86 100644 --- a/src/renderer/src/pages/knowledge/KnowledgeContent.tsx +++ b/src/renderer/src/pages/knowledge/KnowledgeContent.tsx @@ -61,6 +61,7 @@ const KnowledgeContent: FC = ({ selectedBase }) => { } = useKnowledge(selectedBase.id || '') const providerName = getProviderName(base?.model.provider || '') + const rerankModelProviderName = getProviderName(base?.rerankModel?.provider || '') const disabled = !base?.version || !providerName if (!base) { @@ -445,13 +446,34 @@ const KnowledgeContent: FC = ({ selectedBase }) => { - - - {base.model.name} - {t('models.dimensions', { dimensions: base.dimensions || 0 })} - {providerName && {providerName}} -