refactor: update rerank model support and configuration

- Changed provider configuration in dev-app-update.yml to use GitHub.
- Added SUPPORTED_REANK_PROVIDERS constant to filter available rerank models.
- Updated tooltip messages in localization files to indicate supported providers.
- Enhanced AddKnowledgePopup and KnowledgeSettingsPopup components to display supported providers in the UI.
This commit is contained in:
kangfenmao 2025-03-22 16:30:54 +08:00
parent ed731db56a
commit 404ec095d4
10 changed files with 52 additions and 25 deletions

View File

@ -1,8 +1,8 @@
# provider: generic
# url: http://127.0.0.1:8080
# updaterCacheDirName: cherry-studio-updater
# provider: github
# repo: cherry-studio
# owner: kangfenmao
provider: generic
url: https://cherrystudio.ocool.online
provider: github
repo: cherry-studio
owner: kangfenmao
# provider: generic
# url: https://cherrystudio.ocool.online

View File

@ -7,6 +7,7 @@ export default class DefaultReranker extends BaseReranker {
constructor(base: KnowledgeBaseParams) {
super(base)
}
async rerank(): Promise<ExtractChunkData[]> {
throw new Error('Method not implemented.')
}

View File

@ -93,6 +93,8 @@ export function getProviderLogo(providerId: string) {
return PROVIDER_LOGO_MAP[providerId as keyof typeof PROVIDER_LOGO_MAP]
}
export const SUPPORTED_REANK_PROVIDERS = ['silicon', 'jina']
export const PROVIDER_CONFIG = {
openai: {
api: {

View File

@ -563,7 +563,8 @@
"vision": "Vision",
"websearch": "WebSearch",
"rerank_model": "Reordering Model",
"rerank_model_tooltip": "Click the Manage button in Settings -> Model Services to add."
"rerank_model_tooltip": "Click the Manage button in Settings -> Model Services to add.",
"rerank_model_support_provider": "Currently, the reordering model only supports some providers ({{provider}})"
},
"navbar": {
"expand": "Expand Dialog",

View File

@ -563,7 +563,8 @@
"vision": "画像",
"websearch": "ウェブ検索",
"rerank_model": "再順序付けモデル",
"rerank_model_tooltip": "設定->モデルサービスに移動し、管理ボタンをクリックして追加します。"
"rerank_model_tooltip": "設定->モデルサービスに移動し、管理ボタンをクリックして追加します。",
"rerank_model_support_provider": "現在の再順序付けモデルは、{{provider}} のみサポートしています"
},
"navbar": {
"expand": "ダイアログを展開",

View File

@ -569,7 +569,8 @@
"vision": "Визуальные",
"websearch": "Веб-поисковые",
"rerank_model": "Модель переупорядочивания",
"rerank_model_tooltip": "В настройках -> Служба модели нажмите кнопку \"Управление\", чтобы добавить."
"rerank_model_tooltip": "В настройках -> Служба модели нажмите кнопку \"Управление\", чтобы добавить.",
"rerank_model_support_provider": "Текущая модель переупорядочивания поддерживается только некоторыми поставщиками ({{provider}})"
},
"navbar": {
"expand": "Развернуть диалоговое окно",

View File

@ -540,6 +540,7 @@
"embedding_model_tooltip": "在设置->模型服务中点击管理按钮添加",
"rerank_model": "重排序模型",
"rerank_model_tooltip": "在设置->模型服务中点击管理按钮添加",
"rerank_model_support_provider": "目前重排序模型仅支持部分服务商 ({{provider}})",
"free": "免费",
"no_matches": "无可用模型",
"parameter_name": "参数名称",

View File

@ -566,7 +566,8 @@
"vision": "視覺",
"websearch": "網路搜尋",
"rerank_model": "重排序模型",
"rerank_model_tooltip": "在設定->模型服務中點擊管理按鈕添加"
"rerank_model_tooltip": "在設定->模型服務中點擊管理按鈕添加",
"rerank_model_support_provider": "目前重排序模型僅支持部分服務商 ({{provider}})"
},
"navbar": {
"expand": "伸縮對話框",

View File

@ -1,7 +1,9 @@
import { TopView } from '@renderer/components/TopView'
import { isEmbeddingModel, isRerankModel } from '@renderer/config/models'
import { SUPPORTED_REANK_PROVIDERS } from '@renderer/config/providers'
import { useKnowledgeBases } from '@renderer/hooks/useKnowledge'
import { useProviders } from '@renderer/hooks/useProvider'
import { SettingHelpText } from '@renderer/pages/settings'
import AiProvider from '@renderer/providers/AiProvider'
import { getKnowledgeBaseParams } from '@renderer/services/KnowledgeService'
import { getModelUniqId } from '@renderer/services/ModelService'
@ -34,14 +36,17 @@ const PopupContainer: React.FC<Props> = ({ title, resolve }) => {
const { t } = useTranslation()
const { providers } = useProviders()
const { addKnowledgeBase } = useKnowledgeBases()
const allModels = providers
.map((p) => p.models)
.flat()
.filter((model) => isEmbeddingModel(model))
const rerankModels = providers
.map((p) => p.models)
.flat()
.filter((model) => isRerankModel(model))
const nameInputRef = useRef<any>(null)
const selectOptions = providers
@ -60,6 +65,7 @@ const PopupContainer: React.FC<Props> = ({ title, resolve }) => {
const rerankSelectOptions = providers
.filter((p) => p.models.length > 0)
.filter((p) => SUPPORTED_REANK_PROVIDERS.includes(p.id))
.map((p) => ({
label: p.isSystem ? t(`provider.${p.id}`) : p.name,
title: p.name,
@ -164,6 +170,11 @@ const PopupContainer: React.FC<Props> = ({ title, resolve }) => {
tooltip={{ title: t('models.rerank_model_tooltip'), placement: 'right' }}
rules={[{ required: false, message: t('message.error.enter.model') }]}>
<Select style={{ width: '100%' }} options={rerankSelectOptions} placeholder={t('settings.models.empty')} />
<SettingHelpText style={{ marginTop: 10 }}>
{t('models.rerank_model_support_provider', {
provider: SUPPORTED_REANK_PROVIDERS.map((id) => t(`provider.${id}`))
})}
</SettingHelpText>
</Form.Item>
</Form>
</Modal>

View File

@ -3,8 +3,10 @@ import { TopView } from '@renderer/components/TopView'
import { DEFAULT_KNOWLEDGE_DOCUMENT_COUNT } from '@renderer/config/constant'
import { getEmbeddingMaxContext } from '@renderer/config/embedings'
import { isEmbeddingModel, isRerankModel } from '@renderer/config/models'
import { SUPPORTED_REANK_PROVIDERS } from '@renderer/config/providers'
import { useKnowledge } from '@renderer/hooks/useKnowledge'
import { useProviders } from '@renderer/hooks/useProvider'
import { SettingHelpText } from '@renderer/pages/settings'
import { getModelUniqId } from '@renderer/services/ModelService'
import { KnowledgeBase } from '@renderer/types'
import { Alert, Form, Input, InputNumber, Modal, Select, Slider } from 'antd'
@ -65,6 +67,7 @@ const PopupContainer: React.FC<Props> = ({ base: _base, resolve }) => {
const rerankSelectOptions = providers
.filter((p) => p.models.length > 0)
.filter((p) => SUPPORTED_REANK_PROVIDERS.includes(p.id))
.map((p) => ({
label: p.isSystem ? t(`provider.${p.id}`) : p.name,
title: p.name,
@ -94,7 +97,7 @@ const PopupContainer: React.FC<Props> = ({ base: _base, resolve }) => {
}
updateKnowledgeBase(newBase)
setOpen(false)
resolve(newBase)
setTimeout(() => resolve(newBase), 350)
} catch (error) {
console.error('Validation failed:', error)
}
@ -151,6 +154,11 @@ const PopupContainer: React.FC<Props> = ({ base: _base, resolve }) => {
allowClear
/>
</Form.Item>
<SettingHelpText style={{ marginTop: -15, marginBottom: 20 }}>
{t('models.rerank_model_support_provider', {
provider: SUPPORTED_REANK_PROVIDERS.map((id) => t(`provider.${id}`))
})}
</SettingHelpText>
<Form.Item
name="documentCount"