Skip to content

Commit 40702a7

Browse files
eeee0717E0riccs
authored andcommitted
feat: 添加嵌入维度配置 (CherryHQ#3947)
1 parent 9d749ea commit 40702a7

File tree

8 files changed

+58
-21
lines changed

8 files changed

+58
-21
lines changed

src/main/embeddings/VoyageEmbeddings.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export default class VoyageEmbeddings extends BaseEmbeddings {
1111
if (!this.configuration.outputDimension) {
1212
throw new Error('You need to pass in the optional dimensions parameter for this model')
1313
}
14+
console.log('VoyageEmbeddings', this.configuration)
1415
this.model = new _VoyageEmbeddings(this.configuration)
1516
}
1617
override async getDimensions(): Promise<number> {

src/renderer/src/config/embedings.ts

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -243,18 +243,6 @@ export const EMBEDDING_MODELS = [
243243
id: 'mistral-embed',
244244
max_context: 8000
245245
},
246-
{
247-
id: 'voyage-3-large',
248-
max_context: 1024
249-
},
250-
{
251-
id: 'voyage-3-large',
252-
max_context: 256
253-
},
254-
{
255-
id: 'voyage-3-large',
256-
max_context: 512
257-
},
258246
{
259247
id: 'voyage-3-large',
260248
max_context: 2048

src/renderer/src/i18n/locales/en-us.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,11 @@
445445
"topN_tooltip": "The number of matching results returned; the larger the value, the more matching results, but also the more tokens consumed.",
446446
"url_added": "URL added",
447447
"url_placeholder": "Enter URL, multiple URLs separated by Enter",
448-
"urls": "URLs"
448+
"urls": "URLs",
449+
"dimensions": "Embedding dimension",
450+
"dimensions_size_tooltip": "The size of the embedding dimension; the larger the value, the larger the embedding dimension, but it also consumes more tokens.",
451+
"dimensions_size_placeholder": "Default value (modification not recommended)",
452+
"dimensions_size_too_large": "The embedding dimension cannot exceed the model's context limit ({{max_context}})."
449453
},
450454
"languages": {
451455
"arabic": "Arabic",
@@ -1438,4 +1442,4 @@
14381442
"visualization": "Visualization"
14391443
}
14401444
}
1441-
}
1445+
}

src/renderer/src/i18n/locales/ja-jp.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,11 @@
445445
"topN_tooltip": "返されるマッチ結果の数は、数値が大きいほどマッチ結果が多くなりますが、消費されるトークンも増えます。",
446446
"url_added": "URLが追加されました",
447447
"url_placeholder": "URLを入力, 複数のURLはEnterで区切る",
448-
"urls": "URL"
448+
"urls": "URL",
449+
"dimensions": "埋め込み次元",
450+
"dimensions_size_tooltip": "埋め込み次元のサイズは、数値が大きいほど埋め込み次元も大きくなりますが、消費するトークンも増えます。",
451+
"dimensions_size_placeholder": "デフォルト値(変更はお勧めしません)",
452+
"dimensions_size_too_large": "埋め込み次元はモデルのコンテキスト制限({{max_context}})を超えてはなりません。"
449453
},
450454
"languages": {
451455
"arabic": "アラビア語",
@@ -1438,4 +1442,4 @@
14381442
"visualization": "可視化"
14391443
}
14401444
}
1441-
}
1445+
}

src/renderer/src/i18n/locales/ru-ru.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,11 @@
445445
"topN_tooltip": "Количество возвращаемых совпадений; чем больше значение, тем больше совпадений, но и потребление токенов тоже возрастает.",
446446
"url_added": "URL добавлен",
447447
"url_placeholder": "Введите URL, несколько URL через Enter",
448-
"urls": "URL-адреса"
448+
"urls": "URL-адреса",
449+
"dimensions": "векторное пространство",
450+
"dimensions_size_tooltip": "Размерность вложения, чем больше значение, тем больше размерность вложения, но и потребляемых токенов также становится больше.",
451+
"dimensions_size_placeholder": "Значение по умолчанию (не рекомендуется изменять)",
452+
"dimensions_size_too_large": "Размерность вложения не может превышать ограничение контекста модели ({{max_context}})"
449453
},
450454
"languages": {
451455
"arabic": "Арабский",
@@ -1438,4 +1442,4 @@
14381442
"visualization": "Визуализация"
14391443
}
14401444
}
1441-
}
1445+
}

src/renderer/src/i18n/locales/zh-cn.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -399,6 +399,10 @@
399399
"clear_selection": "清除选择",
400400
"delete": "删除",
401401
"delete_confirm": "确定要删除此知识库吗?",
402+
"dimensions": "嵌入维度",
403+
"dimensions_size_tooltip": "嵌入维度大小,数值越大,嵌入维度越大,但消耗的 Token 也越多",
404+
"dimensions_size_placeholder": " 默认值(不建议修改)",
405+
"dimensions_size_too_large": "嵌入维度不能超过模型上下文限制({{max_context}})",
402406
"directories": "目录",
403407
"directory_placeholder": "请输入目录路径",
404408
"document_count": "请求文档片段数量",
@@ -1438,4 +1442,4 @@
14381442
"visualization": "可视化"
14391443
}
14401444
}
1441-
}
1445+
}

src/renderer/src/i18n/locales/zh-tw.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,11 @@
445445
"topN_tooltip": "返回的匹配結果數量,數值越大,匹配結果越多,但消耗的 Token 也越多",
446446
"url_added": "網址已新增",
447447
"url_placeholder": "請輸入網址,多個網址用換行符號分隔",
448-
"urls": "網址"
448+
"urls": "網址",
449+
"dimensions": "嵌入維度",
450+
"dimensions_size_tooltip": "嵌入維度大小,數值越大,嵌入維度越大,但消耗的 Token 也越多",
451+
"dimensions_size_placeholder": "預設值(不建議修改)",
452+
"dimensions_size_too_large": "嵌入維度不能超過模型上下文限制({{max_context}})"
449453
},
450454
"languages": {
451455
"arabic": "阿拉伯文",
@@ -1438,4 +1442,4 @@
14381442
"visualization": "視覺化"
14391443
}
14401444
}
1441-
}
1445+
}

src/renderer/src/pages/knowledge/components/KnowledgeSettingsPopup.tsx

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ interface FormData {
2323
name: string
2424
model: string
2525
documentCount?: number
26+
dimensions?: number
2627
chunkSize?: number
2728
chunkOverlap?: number
2829
threshold?: number
@@ -87,6 +88,7 @@ const PopupContainer: React.FC<Props> = ({ base: _base, resolve }) => {
8788
...base,
8889
name: values.name,
8990
documentCount: values.documentCount || DEFAULT_KNOWLEDGE_DOCUMENT_COUNT,
91+
dimensions: values.dimensions || base.dimensions,
9092
chunkSize: values.chunkSize,
9193
chunkOverlap: values.chunkOverlap,
9294
threshold: values.threshold ?? undefined,
@@ -185,6 +187,32 @@ const PopupContainer: React.FC<Props> = ({ base: _base, resolve }) => {
185187
</AdvancedSettingsButton>
186188

187189
<div style={{ display: showAdvanced ? 'block' : 'none' }}>
190+
<Form.Item
191+
name="dimensions"
192+
label={t('knowledge.dimensions')}
193+
layout="horizontal"
194+
initialValue={base.dimensions}
195+
tooltip={{ title: t('knowledge.dimensions_size_tooltip') }}
196+
rules={[
197+
{
198+
validator(_, value) {
199+
const maxContext = getEmbeddingMaxContext(base.model.id)
200+
if (value && maxContext && value > maxContext) {
201+
return Promise.reject(
202+
new Error(t('knowledge.dimensions_size_too_large', { max_context: maxContext }))
203+
)
204+
}
205+
return Promise.resolve()
206+
}
207+
}
208+
]}>
209+
<InputNumber
210+
style={{ width: '100%' }}
211+
defaultValue={base.dimensions}
212+
placeholder={t('knowledge.dimensions_size_placeholder')}
213+
disabled={base.model.id !== 'voyage-3-large'}
214+
/>
215+
</Form.Item>
188216
<Form.Item
189217
name="chunkSize"
190218
label={t('knowledge.chunk_size')}

0 commit comments

Comments
 (0)