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:
parent
ed731db56a
commit
404ec095d4
@ -1,8 +1,8 @@
|
|||||||
# provider: generic
|
# provider: generic
|
||||||
# url: http://127.0.0.1:8080
|
# url: http://127.0.0.1:8080
|
||||||
# updaterCacheDirName: cherry-studio-updater
|
# updaterCacheDirName: cherry-studio-updater
|
||||||
# provider: github
|
provider: github
|
||||||
# repo: cherry-studio
|
repo: cherry-studio
|
||||||
# owner: kangfenmao
|
owner: kangfenmao
|
||||||
provider: generic
|
# provider: generic
|
||||||
url: https://cherrystudio.ocool.online
|
# url: https://cherrystudio.ocool.online
|
||||||
|
|||||||
@ -7,6 +7,7 @@ export default class DefaultReranker extends BaseReranker {
|
|||||||
constructor(base: KnowledgeBaseParams) {
|
constructor(base: KnowledgeBaseParams) {
|
||||||
super(base)
|
super(base)
|
||||||
}
|
}
|
||||||
|
|
||||||
async rerank(): Promise<ExtractChunkData[]> {
|
async rerank(): Promise<ExtractChunkData[]> {
|
||||||
throw new Error('Method not implemented.')
|
throw new Error('Method not implemented.')
|
||||||
}
|
}
|
||||||
|
|||||||
@ -93,6 +93,8 @@ export function getProviderLogo(providerId: string) {
|
|||||||
return PROVIDER_LOGO_MAP[providerId as keyof typeof PROVIDER_LOGO_MAP]
|
return PROVIDER_LOGO_MAP[providerId as keyof typeof PROVIDER_LOGO_MAP]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const SUPPORTED_REANK_PROVIDERS = ['silicon', 'jina']
|
||||||
|
|
||||||
export const PROVIDER_CONFIG = {
|
export const PROVIDER_CONFIG = {
|
||||||
openai: {
|
openai: {
|
||||||
api: {
|
api: {
|
||||||
|
|||||||
@ -563,7 +563,8 @@
|
|||||||
"vision": "Vision",
|
"vision": "Vision",
|
||||||
"websearch": "WebSearch",
|
"websearch": "WebSearch",
|
||||||
"rerank_model": "Reordering Model",
|
"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": {
|
"navbar": {
|
||||||
"expand": "Expand Dialog",
|
"expand": "Expand Dialog",
|
||||||
|
|||||||
@ -563,7 +563,8 @@
|
|||||||
"vision": "画像",
|
"vision": "画像",
|
||||||
"websearch": "ウェブ検索",
|
"websearch": "ウェブ検索",
|
||||||
"rerank_model": "再順序付けモデル",
|
"rerank_model": "再順序付けモデル",
|
||||||
"rerank_model_tooltip": "設定->モデルサービスに移動し、管理ボタンをクリックして追加します。"
|
"rerank_model_tooltip": "設定->モデルサービスに移動し、管理ボタンをクリックして追加します。",
|
||||||
|
"rerank_model_support_provider": "現在の再順序付けモデルは、{{provider}} のみサポートしています"
|
||||||
},
|
},
|
||||||
"navbar": {
|
"navbar": {
|
||||||
"expand": "ダイアログを展開",
|
"expand": "ダイアログを展開",
|
||||||
|
|||||||
@ -569,7 +569,8 @@
|
|||||||
"vision": "Визуальные",
|
"vision": "Визуальные",
|
||||||
"websearch": "Веб-поисковые",
|
"websearch": "Веб-поисковые",
|
||||||
"rerank_model": "Модель переупорядочивания",
|
"rerank_model": "Модель переупорядочивания",
|
||||||
"rerank_model_tooltip": "В настройках -> Служба модели нажмите кнопку \"Управление\", чтобы добавить."
|
"rerank_model_tooltip": "В настройках -> Служба модели нажмите кнопку \"Управление\", чтобы добавить.",
|
||||||
|
"rerank_model_support_provider": "Текущая модель переупорядочивания поддерживается только некоторыми поставщиками ({{provider}})"
|
||||||
},
|
},
|
||||||
"navbar": {
|
"navbar": {
|
||||||
"expand": "Развернуть диалоговое окно",
|
"expand": "Развернуть диалоговое окно",
|
||||||
|
|||||||
@ -164,20 +164,20 @@
|
|||||||
"topics.export.yuque": "导出到语雀",
|
"topics.export.yuque": "导出到语雀",
|
||||||
"topics.export.obsidian": "导出到 Obsidian",
|
"topics.export.obsidian": "导出到 Obsidian",
|
||||||
"topics.export.obsidian_not_configured": "Obsidian 未配置",
|
"topics.export.obsidian_not_configured": "Obsidian 未配置",
|
||||||
"topics.export.obsidian_title":"标题",
|
"topics.export.obsidian_title": "标题",
|
||||||
"topics.export.obsidian_title_placeholder":"请输入标题",
|
"topics.export.obsidian_title_placeholder": "请输入标题",
|
||||||
"topics.export.obsidian_title_required":"标题不能为空",
|
"topics.export.obsidian_title_required": "标题不能为空",
|
||||||
"topics.export.obsidian_tags":"标签",
|
"topics.export.obsidian_tags": "标签",
|
||||||
"topics.export.obsidian_tags_placeholder":"请输入标签,多个标签用英文逗号分隔,Obsidian不可用纯数字",
|
"topics.export.obsidian_tags_placeholder": "请输入标签,多个标签用英文逗号分隔,Obsidian不可用纯数字",
|
||||||
"topics.export.obsidian_created":"创建时间",
|
"topics.export.obsidian_created": "创建时间",
|
||||||
"topics.export.obsidian_created_placeholder":"请选择创建时间",
|
"topics.export.obsidian_created_placeholder": "请选择创建时间",
|
||||||
"topics.export.obsidian_source":"来源",
|
"topics.export.obsidian_source": "来源",
|
||||||
"topics.export.obsidian_source_placeholder":"请输入来源",
|
"topics.export.obsidian_source_placeholder": "请输入来源",
|
||||||
"topics.export.obsidian_operate":"处理方式",
|
"topics.export.obsidian_operate": "处理方式",
|
||||||
"topics.export.obsidian_operate_placeholder":"请选择处理方式",
|
"topics.export.obsidian_operate_placeholder": "请选择处理方式",
|
||||||
"topics.export.obsidian_operate_append":"追加",
|
"topics.export.obsidian_operate_append": "追加",
|
||||||
"topics.export.obsidian_operate_prepend":"前置",
|
"topics.export.obsidian_operate_prepend": "前置",
|
||||||
"topics.export.obsidian_operate_new_or_overwrite":"新建(如果存在就覆盖)",
|
"topics.export.obsidian_operate_new_or_overwrite": "新建(如果存在就覆盖)",
|
||||||
"topics.export.obsidian_atributes": "配置笔记属性",
|
"topics.export.obsidian_atributes": "配置笔记属性",
|
||||||
"topics.export.obsidian_btn": "确定",
|
"topics.export.obsidian_btn": "确定",
|
||||||
"topics.export.obsidian_export_success": "导出成功",
|
"topics.export.obsidian_export_success": "导出成功",
|
||||||
@ -540,6 +540,7 @@
|
|||||||
"embedding_model_tooltip": "在设置->模型服务中点击管理按钮添加",
|
"embedding_model_tooltip": "在设置->模型服务中点击管理按钮添加",
|
||||||
"rerank_model": "重排序模型",
|
"rerank_model": "重排序模型",
|
||||||
"rerank_model_tooltip": "在设置->模型服务中点击管理按钮添加",
|
"rerank_model_tooltip": "在设置->模型服务中点击管理按钮添加",
|
||||||
|
"rerank_model_support_provider": "目前重排序模型仅支持部分服务商 ({{provider}})",
|
||||||
"free": "免费",
|
"free": "免费",
|
||||||
"no_matches": "无可用模型",
|
"no_matches": "无可用模型",
|
||||||
"parameter_name": "参数名称",
|
"parameter_name": "参数名称",
|
||||||
|
|||||||
@ -164,7 +164,7 @@
|
|||||||
"topics.export.yuque": "匯出到語雀",
|
"topics.export.yuque": "匯出到語雀",
|
||||||
"topics.export.obsidian": "匯出到 Obsidian",
|
"topics.export.obsidian": "匯出到 Obsidian",
|
||||||
"topics.export.obsidian_not_configured": "Obsidian 未配置",
|
"topics.export.obsidian_not_configured": "Obsidian 未配置",
|
||||||
"topics.export.obsidian_title":"標題",
|
"topics.export.obsidian_title": "標題",
|
||||||
"topics.export.obsidian_title_placeholder": "請輸入標題",
|
"topics.export.obsidian_title_placeholder": "請輸入標題",
|
||||||
"topics.export.obsidian_title_required": "標題不能為空",
|
"topics.export.obsidian_title_required": "標題不能為空",
|
||||||
"topics.export.obsidian_tags": "標籤",
|
"topics.export.obsidian_tags": "標籤",
|
||||||
@ -566,7 +566,8 @@
|
|||||||
"vision": "視覺",
|
"vision": "視覺",
|
||||||
"websearch": "網路搜尋",
|
"websearch": "網路搜尋",
|
||||||
"rerank_model": "重排序模型",
|
"rerank_model": "重排序模型",
|
||||||
"rerank_model_tooltip": "在設定->模型服務中點擊管理按鈕添加"
|
"rerank_model_tooltip": "在設定->模型服務中點擊管理按鈕添加",
|
||||||
|
"rerank_model_support_provider": "目前重排序模型僅支持部分服務商 ({{provider}})"
|
||||||
},
|
},
|
||||||
"navbar": {
|
"navbar": {
|
||||||
"expand": "伸縮對話框",
|
"expand": "伸縮對話框",
|
||||||
|
|||||||
@ -1,7 +1,9 @@
|
|||||||
import { TopView } from '@renderer/components/TopView'
|
import { TopView } from '@renderer/components/TopView'
|
||||||
import { isEmbeddingModel, isRerankModel } from '@renderer/config/models'
|
import { isEmbeddingModel, isRerankModel } from '@renderer/config/models'
|
||||||
|
import { SUPPORTED_REANK_PROVIDERS } from '@renderer/config/providers'
|
||||||
import { useKnowledgeBases } from '@renderer/hooks/useKnowledge'
|
import { useKnowledgeBases } from '@renderer/hooks/useKnowledge'
|
||||||
import { useProviders } from '@renderer/hooks/useProvider'
|
import { useProviders } from '@renderer/hooks/useProvider'
|
||||||
|
import { SettingHelpText } from '@renderer/pages/settings'
|
||||||
import AiProvider from '@renderer/providers/AiProvider'
|
import AiProvider from '@renderer/providers/AiProvider'
|
||||||
import { getKnowledgeBaseParams } from '@renderer/services/KnowledgeService'
|
import { getKnowledgeBaseParams } from '@renderer/services/KnowledgeService'
|
||||||
import { getModelUniqId } from '@renderer/services/ModelService'
|
import { getModelUniqId } from '@renderer/services/ModelService'
|
||||||
@ -34,14 +36,17 @@ const PopupContainer: React.FC<Props> = ({ title, resolve }) => {
|
|||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
const { providers } = useProviders()
|
const { providers } = useProviders()
|
||||||
const { addKnowledgeBase } = useKnowledgeBases()
|
const { addKnowledgeBase } = useKnowledgeBases()
|
||||||
|
|
||||||
const allModels = providers
|
const allModels = providers
|
||||||
.map((p) => p.models)
|
.map((p) => p.models)
|
||||||
.flat()
|
.flat()
|
||||||
.filter((model) => isEmbeddingModel(model))
|
.filter((model) => isEmbeddingModel(model))
|
||||||
|
|
||||||
const rerankModels = providers
|
const rerankModels = providers
|
||||||
.map((p) => p.models)
|
.map((p) => p.models)
|
||||||
.flat()
|
.flat()
|
||||||
.filter((model) => isRerankModel(model))
|
.filter((model) => isRerankModel(model))
|
||||||
|
|
||||||
const nameInputRef = useRef<any>(null)
|
const nameInputRef = useRef<any>(null)
|
||||||
|
|
||||||
const selectOptions = providers
|
const selectOptions = providers
|
||||||
@ -60,6 +65,7 @@ const PopupContainer: React.FC<Props> = ({ title, resolve }) => {
|
|||||||
|
|
||||||
const rerankSelectOptions = providers
|
const rerankSelectOptions = providers
|
||||||
.filter((p) => p.models.length > 0)
|
.filter((p) => p.models.length > 0)
|
||||||
|
.filter((p) => SUPPORTED_REANK_PROVIDERS.includes(p.id))
|
||||||
.map((p) => ({
|
.map((p) => ({
|
||||||
label: p.isSystem ? t(`provider.${p.id}`) : p.name,
|
label: p.isSystem ? t(`provider.${p.id}`) : p.name,
|
||||||
title: 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' }}
|
tooltip={{ title: t('models.rerank_model_tooltip'), placement: 'right' }}
|
||||||
rules={[{ required: false, message: t('message.error.enter.model') }]}>
|
rules={[{ required: false, message: t('message.error.enter.model') }]}>
|
||||||
<Select style={{ width: '100%' }} options={rerankSelectOptions} placeholder={t('settings.models.empty')} />
|
<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.Item>
|
||||||
</Form>
|
</Form>
|
||||||
</Modal>
|
</Modal>
|
||||||
|
|||||||
@ -3,8 +3,10 @@ import { TopView } from '@renderer/components/TopView'
|
|||||||
import { DEFAULT_KNOWLEDGE_DOCUMENT_COUNT } from '@renderer/config/constant'
|
import { DEFAULT_KNOWLEDGE_DOCUMENT_COUNT } from '@renderer/config/constant'
|
||||||
import { getEmbeddingMaxContext } from '@renderer/config/embedings'
|
import { getEmbeddingMaxContext } from '@renderer/config/embedings'
|
||||||
import { isEmbeddingModel, isRerankModel } from '@renderer/config/models'
|
import { isEmbeddingModel, isRerankModel } from '@renderer/config/models'
|
||||||
|
import { SUPPORTED_REANK_PROVIDERS } from '@renderer/config/providers'
|
||||||
import { useKnowledge } from '@renderer/hooks/useKnowledge'
|
import { useKnowledge } from '@renderer/hooks/useKnowledge'
|
||||||
import { useProviders } from '@renderer/hooks/useProvider'
|
import { useProviders } from '@renderer/hooks/useProvider'
|
||||||
|
import { SettingHelpText } from '@renderer/pages/settings'
|
||||||
import { getModelUniqId } from '@renderer/services/ModelService'
|
import { getModelUniqId } from '@renderer/services/ModelService'
|
||||||
import { KnowledgeBase } from '@renderer/types'
|
import { KnowledgeBase } from '@renderer/types'
|
||||||
import { Alert, Form, Input, InputNumber, Modal, Select, Slider } from 'antd'
|
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
|
const rerankSelectOptions = providers
|
||||||
.filter((p) => p.models.length > 0)
|
.filter((p) => p.models.length > 0)
|
||||||
|
.filter((p) => SUPPORTED_REANK_PROVIDERS.includes(p.id))
|
||||||
.map((p) => ({
|
.map((p) => ({
|
||||||
label: p.isSystem ? t(`provider.${p.id}`) : p.name,
|
label: p.isSystem ? t(`provider.${p.id}`) : p.name,
|
||||||
title: p.name,
|
title: p.name,
|
||||||
@ -94,7 +97,7 @@ const PopupContainer: React.FC<Props> = ({ base: _base, resolve }) => {
|
|||||||
}
|
}
|
||||||
updateKnowledgeBase(newBase)
|
updateKnowledgeBase(newBase)
|
||||||
setOpen(false)
|
setOpen(false)
|
||||||
resolve(newBase)
|
setTimeout(() => resolve(newBase), 350)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Validation failed:', error)
|
console.error('Validation failed:', error)
|
||||||
}
|
}
|
||||||
@ -151,6 +154,11 @@ const PopupContainer: React.FC<Props> = ({ base: _base, resolve }) => {
|
|||||||
allowClear
|
allowClear
|
||||||
/>
|
/>
|
||||||
</Form.Item>
|
</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
|
<Form.Item
|
||||||
name="documentCount"
|
name="documentCount"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user