mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-06 21:35:52 +08:00
feat: 添加嵌入维度配置 (#3947)
This commit is contained in:
parent
be323b6304
commit
4a027892b9
@ -11,6 +11,7 @@ export default class VoyageEmbeddings extends BaseEmbeddings {
|
|||||||
if (!this.configuration.outputDimension) {
|
if (!this.configuration.outputDimension) {
|
||||||
throw new Error('You need to pass in the optional dimensions parameter for this model')
|
throw new Error('You need to pass in the optional dimensions parameter for this model')
|
||||||
}
|
}
|
||||||
|
console.log('VoyageEmbeddings', this.configuration)
|
||||||
this.model = new _VoyageEmbeddings(this.configuration)
|
this.model = new _VoyageEmbeddings(this.configuration)
|
||||||
}
|
}
|
||||||
override async getDimensions(): Promise<number> {
|
override async getDimensions(): Promise<number> {
|
||||||
|
|||||||
@ -243,18 +243,6 @@ export const EMBEDDING_MODELS = [
|
|||||||
id: 'mistral-embed',
|
id: 'mistral-embed',
|
||||||
max_context: 8000
|
max_context: 8000
|
||||||
},
|
},
|
||||||
{
|
|
||||||
id: 'voyage-3-large',
|
|
||||||
max_context: 1024
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 'voyage-3-large',
|
|
||||||
max_context: 256
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 'voyage-3-large',
|
|
||||||
max_context: 512
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
id: 'voyage-3-large',
|
id: 'voyage-3-large',
|
||||||
max_context: 2048
|
max_context: 2048
|
||||||
|
|||||||
@ -445,7 +445,11 @@
|
|||||||
"topN_tooltip": "The number of matching results returned; the larger the value, the more matching results, but also the more tokens consumed.",
|
"topN_tooltip": "The number of matching results returned; the larger the value, the more matching results, but also the more tokens consumed.",
|
||||||
"url_added": "URL added",
|
"url_added": "URL added",
|
||||||
"url_placeholder": "Enter URL, multiple URLs separated by Enter",
|
"url_placeholder": "Enter URL, multiple URLs separated by Enter",
|
||||||
"urls": "URLs"
|
"urls": "URLs",
|
||||||
|
"dimensions": "Embedding dimension",
|
||||||
|
"dimensions_size_tooltip": "The size of the embedding dimension; the larger the value, the larger the embedding dimension, but it also consumes more tokens.",
|
||||||
|
"dimensions_size_placeholder": "Default value (modification not recommended)",
|
||||||
|
"dimensions_size_too_large": "The embedding dimension cannot exceed the model's context limit ({{max_context}})."
|
||||||
},
|
},
|
||||||
"languages": {
|
"languages": {
|
||||||
"arabic": "Arabic",
|
"arabic": "Arabic",
|
||||||
@ -1438,4 +1442,4 @@
|
|||||||
"visualization": "Visualization"
|
"visualization": "Visualization"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -445,7 +445,11 @@
|
|||||||
"topN_tooltip": "返されるマッチ結果の数は、数値が大きいほどマッチ結果が多くなりますが、消費されるトークンも増えます。",
|
"topN_tooltip": "返されるマッチ結果の数は、数値が大きいほどマッチ結果が多くなりますが、消費されるトークンも増えます。",
|
||||||
"url_added": "URLが追加されました",
|
"url_added": "URLが追加されました",
|
||||||
"url_placeholder": "URLを入力, 複数のURLはEnterで区切る",
|
"url_placeholder": "URLを入力, 複数のURLはEnterで区切る",
|
||||||
"urls": "URL"
|
"urls": "URL",
|
||||||
|
"dimensions": "埋め込み次元",
|
||||||
|
"dimensions_size_tooltip": "埋め込み次元のサイズは、数値が大きいほど埋め込み次元も大きくなりますが、消費するトークンも増えます。",
|
||||||
|
"dimensions_size_placeholder": "デフォルト値(変更はお勧めしません)",
|
||||||
|
"dimensions_size_too_large": "埋め込み次元はモデルのコンテキスト制限({{max_context}})を超えてはなりません。"
|
||||||
},
|
},
|
||||||
"languages": {
|
"languages": {
|
||||||
"arabic": "アラビア語",
|
"arabic": "アラビア語",
|
||||||
@ -1438,4 +1442,4 @@
|
|||||||
"visualization": "可視化"
|
"visualization": "可視化"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -445,7 +445,11 @@
|
|||||||
"topN_tooltip": "Количество возвращаемых совпадений; чем больше значение, тем больше совпадений, но и потребление токенов тоже возрастает.",
|
"topN_tooltip": "Количество возвращаемых совпадений; чем больше значение, тем больше совпадений, но и потребление токенов тоже возрастает.",
|
||||||
"url_added": "URL добавлен",
|
"url_added": "URL добавлен",
|
||||||
"url_placeholder": "Введите URL, несколько URL через Enter",
|
"url_placeholder": "Введите URL, несколько URL через Enter",
|
||||||
"urls": "URL-адреса"
|
"urls": "URL-адреса",
|
||||||
|
"dimensions": "векторное пространство",
|
||||||
|
"dimensions_size_tooltip": "Размерность вложения, чем больше значение, тем больше размерность вложения, но и потребляемых токенов также становится больше.",
|
||||||
|
"dimensions_size_placeholder": "Значение по умолчанию (не рекомендуется изменять)",
|
||||||
|
"dimensions_size_too_large": "Размерность вложения не может превышать ограничение контекста модели ({{max_context}})"
|
||||||
},
|
},
|
||||||
"languages": {
|
"languages": {
|
||||||
"arabic": "Арабский",
|
"arabic": "Арабский",
|
||||||
@ -1438,4 +1442,4 @@
|
|||||||
"visualization": "Визуализация"
|
"visualization": "Визуализация"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -399,6 +399,10 @@
|
|||||||
"clear_selection": "清除选择",
|
"clear_selection": "清除选择",
|
||||||
"delete": "删除",
|
"delete": "删除",
|
||||||
"delete_confirm": "确定要删除此知识库吗?",
|
"delete_confirm": "确定要删除此知识库吗?",
|
||||||
|
"dimensions": "嵌入维度",
|
||||||
|
"dimensions_size_tooltip": "嵌入维度大小,数值越大,嵌入维度越大,但消耗的 Token 也越多",
|
||||||
|
"dimensions_size_placeholder": " 默认值(不建议修改)",
|
||||||
|
"dimensions_size_too_large": "嵌入维度不能超过模型上下文限制({{max_context}})",
|
||||||
"directories": "目录",
|
"directories": "目录",
|
||||||
"directory_placeholder": "请输入目录路径",
|
"directory_placeholder": "请输入目录路径",
|
||||||
"document_count": "请求文档片段数量",
|
"document_count": "请求文档片段数量",
|
||||||
@ -1438,4 +1442,4 @@
|
|||||||
"visualization": "可视化"
|
"visualization": "可视化"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -445,7 +445,11 @@
|
|||||||
"topN_tooltip": "返回的匹配結果數量,數值越大,匹配結果越多,但消耗的 Token 也越多",
|
"topN_tooltip": "返回的匹配結果數量,數值越大,匹配結果越多,但消耗的 Token 也越多",
|
||||||
"url_added": "網址已新增",
|
"url_added": "網址已新增",
|
||||||
"url_placeholder": "請輸入網址,多個網址用換行符號分隔",
|
"url_placeholder": "請輸入網址,多個網址用換行符號分隔",
|
||||||
"urls": "網址"
|
"urls": "網址",
|
||||||
|
"dimensions": "嵌入維度",
|
||||||
|
"dimensions_size_tooltip": "嵌入維度大小,數值越大,嵌入維度越大,但消耗的 Token 也越多",
|
||||||
|
"dimensions_size_placeholder": "預設值(不建議修改)",
|
||||||
|
"dimensions_size_too_large": "嵌入維度不能超過模型上下文限制({{max_context}})"
|
||||||
},
|
},
|
||||||
"languages": {
|
"languages": {
|
||||||
"arabic": "阿拉伯文",
|
"arabic": "阿拉伯文",
|
||||||
@ -1438,4 +1442,4 @@
|
|||||||
"visualization": "視覺化"
|
"visualization": "視覺化"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -23,6 +23,7 @@ interface FormData {
|
|||||||
name: string
|
name: string
|
||||||
model: string
|
model: string
|
||||||
documentCount?: number
|
documentCount?: number
|
||||||
|
dimensions?: number
|
||||||
chunkSize?: number
|
chunkSize?: number
|
||||||
chunkOverlap?: number
|
chunkOverlap?: number
|
||||||
threshold?: number
|
threshold?: number
|
||||||
@ -87,6 +88,7 @@ const PopupContainer: React.FC<Props> = ({ base: _base, resolve }) => {
|
|||||||
...base,
|
...base,
|
||||||
name: values.name,
|
name: values.name,
|
||||||
documentCount: values.documentCount || DEFAULT_KNOWLEDGE_DOCUMENT_COUNT,
|
documentCount: values.documentCount || DEFAULT_KNOWLEDGE_DOCUMENT_COUNT,
|
||||||
|
dimensions: values.dimensions || base.dimensions,
|
||||||
chunkSize: values.chunkSize,
|
chunkSize: values.chunkSize,
|
||||||
chunkOverlap: values.chunkOverlap,
|
chunkOverlap: values.chunkOverlap,
|
||||||
threshold: values.threshold ?? undefined,
|
threshold: values.threshold ?? undefined,
|
||||||
@ -185,6 +187,32 @@ const PopupContainer: React.FC<Props> = ({ base: _base, resolve }) => {
|
|||||||
</AdvancedSettingsButton>
|
</AdvancedSettingsButton>
|
||||||
|
|
||||||
<div style={{ display: showAdvanced ? 'block' : 'none' }}>
|
<div style={{ display: showAdvanced ? 'block' : 'none' }}>
|
||||||
|
<Form.Item
|
||||||
|
name="dimensions"
|
||||||
|
label={t('knowledge.dimensions')}
|
||||||
|
layout="horizontal"
|
||||||
|
initialValue={base.dimensions}
|
||||||
|
tooltip={{ title: t('knowledge.dimensions_size_tooltip') }}
|
||||||
|
rules={[
|
||||||
|
{
|
||||||
|
validator(_, value) {
|
||||||
|
const maxContext = getEmbeddingMaxContext(base.model.id)
|
||||||
|
if (value && maxContext && value > maxContext) {
|
||||||
|
return Promise.reject(
|
||||||
|
new Error(t('knowledge.dimensions_size_too_large', { max_context: maxContext }))
|
||||||
|
)
|
||||||
|
}
|
||||||
|
return Promise.resolve()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]}>
|
||||||
|
<InputNumber
|
||||||
|
style={{ width: '100%' }}
|
||||||
|
defaultValue={base.dimensions}
|
||||||
|
placeholder={t('knowledge.dimensions_size_placeholder')}
|
||||||
|
disabled={base.model.id !== 'voyage-3-large'}
|
||||||
|
/>
|
||||||
|
</Form.Item>
|
||||||
<Form.Item
|
<Form.Item
|
||||||
name="chunkSize"
|
name="chunkSize"
|
||||||
label={t('knowledge.chunk_size')}
|
label={t('knowledge.chunk_size')}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user