|
29 | 29 | :label="$t('views.workflow.nodes.documentSplitNode.splitStrategy.label')" |
30 | 30 | :rules="{ |
31 | 31 | required: true, |
32 | | - message: $t('views.workflow.nodes.documentSplitNode.splitStrategy.required'), |
| 32 | + message: $t('views.workflow.nodes.documentSplitNode.splitStrategy.requiredMessage'), |
33 | 33 | trigger: 'change' |
34 | 34 | }" |
35 | 35 | > |
|
52 | 52 | </el-form-item> |
53 | 53 | <el-form-item> |
54 | 54 | <template #label> |
55 | | - <div class="flex"> |
56 | | - <span>子分块长度</span> |
57 | | - <el-tooltip |
58 | | - effect="dark" |
59 | | - placement="top" |
60 | | - > |
61 | | - <template #content> |
62 | | - 核心目标是平衡检索精度与召回效率 <br/> |
63 | | - •避免过短拆分:单块<50 字易导致语义碎片化,检索时可能因缺少上下文无法匹配查询意图<br/> |
64 | | - •避免过长拆分:单块>500 字会增加冗余信息,降低检索精准度,且占用更多存储和计算资源 |
65 | | - </template> |
66 | | - <AppIcon iconName="app-warning" class="app-warning-icon"></AppIcon> |
67 | | - </el-tooltip> |
| 55 | + <div class="flex-between"> |
| 56 | + <span> |
| 57 | + <span>子分块长度</span> |
| 58 | + <el-tooltip |
| 59 | + effect="dark" |
| 60 | + placement="right" |
| 61 | + > |
| 62 | + <template #content> |
| 63 | + 核心目标是平衡检索精度与召回效率 <br/> |
| 64 | + •避免过短拆分:单块<50 字易导致语义碎片化,检索时可能因缺少上下文无法匹配查询意图<br/> |
| 65 | + •避免过长拆分:单块>500 字会增加冗余信息,降低检索精准度,且占用更多存储和计算资源 |
| 66 | + </template> |
| 67 | + <AppIcon iconName="app-warning" class="app-warning-icon"></AppIcon> |
| 68 | + </el-tooltip> |
| 69 | + </span> |
| 70 | + <el-select v-model="form_data.chunk_size_type" size="small" style="width: 100px"> |
| 71 | + <el-option |
| 72 | + :label="$t('views.workflow.nodes.searchDocumentNode.custom')" |
| 73 | + value="custom" |
| 74 | + /> |
| 75 | + <el-option |
| 76 | + :label="$t('views.workflow.variable.Referencing')" |
| 77 | + value="referencing" |
| 78 | + /> |
| 79 | + </el-select> |
68 | 80 | </div> |
69 | 81 | </template> |
70 | 82 | <el-input-number |
| 83 | + v-if="form_data.chunk_size_type === 'custom'" |
71 | 84 | v-model="form_data.chunk_size" |
72 | 85 | show-input |
73 | 86 | :min="50" |
74 | 87 | :max="100000" |
75 | 88 | /> |
| 89 | + <NodeCascader |
| 90 | + v-else |
| 91 | + ref="nodeCascaderRef4" |
| 92 | + :nodeModel="nodeModel" |
| 93 | + class="w-full" |
| 94 | + :placeholder="$t('views.chatLog.documentPlaceholder')" |
| 95 | + v-model="form_data.chunk_size_reference" |
| 96 | + /> |
76 | 97 | </el-form-item> |
77 | 98 | <div v-if="form_data.split_strategy === 'custom'"> |
78 | 99 | <div class="set-rules__form"> |
79 | 100 | <div class="form-item mb-16"> |
80 | | - <div class="title flex align-center mb-8"> |
81 | | - <span style="margin-right: 4px">{{ |
82 | | - $t('views.document.setRules.patterns.label') |
83 | | - }}</span> |
84 | | - <el-tooltip |
85 | | - effect="dark" |
86 | | - :content="$t('views.document.setRules.patterns.tooltip')" |
87 | | - placement="right" |
88 | | - > |
89 | | - <AppIcon iconName="app-warning" class="app-warning-icon"></AppIcon> |
90 | | - </el-tooltip> |
| 101 | + <div class="flex-between"> |
| 102 | + <div class="title flex align-center mb-8"> |
| 103 | + <span style="margin-right: 4px"> |
| 104 | + {{ $t('views.document.setRules.patterns.label') }} |
| 105 | + </span> |
| 106 | + <el-tooltip |
| 107 | + effect="dark" |
| 108 | + :content="$t('views.document.setRules.patterns.tooltip')" |
| 109 | + placement="right" |
| 110 | + > |
| 111 | + <AppIcon iconName="app-warning" class="app-warning-icon"></AppIcon> |
| 112 | + </el-tooltip> |
| 113 | + </div> |
| 114 | + <el-select v-model="form_data.patterns_type" size="small" style="width: 100px"> |
| 115 | + <el-option |
| 116 | + :label="$t('views.workflow.nodes.searchDocumentNode.custom')" |
| 117 | + value="custom" |
| 118 | + /> |
| 119 | + <el-option |
| 120 | + :label="$t('views.workflow.variable.Referencing')" |
| 121 | + value="referencing" |
| 122 | + /> |
| 123 | + </el-select> |
91 | 124 | </div> |
92 | 125 | <div @click.stop> |
93 | 126 | <el-select |
| 127 | + v-if="form_data.patterns_type === 'custom'" |
94 | 128 | v-model="form_data.patterns" |
95 | 129 | multiple |
96 | 130 | :reserve-keyword="false" |
|
107 | 141 | > |
108 | 142 | </el-option> |
109 | 143 | </el-select> |
| 144 | + <NodeCascader |
| 145 | + v-else |
| 146 | + ref="nodeCascaderRef5" |
| 147 | + :nodeModel="nodeModel" |
| 148 | + class="w-full" |
| 149 | + :placeholder="$t('views.chatLog.documentPlaceholder')" |
| 150 | + v-model="form_data.patterns_reference" |
| 151 | + /> |
110 | 152 | </div> |
111 | 153 | </div> |
112 | 154 | <div class="form-item mb-16"> |
113 | | - <div class="title mb-8"> |
114 | | - {{ $t('views.document.setRules.limit.label') }} |
| 155 | + <div class="flex-between"> |
| 156 | + <div class="title mb-8"> |
| 157 | + {{ $t('views.document.setRules.limit.label') }} |
| 158 | + </div> |
| 159 | + <el-select v-model="form_data.limit_type" size="small" style="width: 100px"> |
| 160 | + <el-option |
| 161 | + :label="$t('views.workflow.nodes.searchDocumentNode.custom')" |
| 162 | + value="custom" |
| 163 | + /> |
| 164 | + <el-option |
| 165 | + :label="$t('views.workflow.variable.Referencing')" |
| 166 | + value="referencing" |
| 167 | + /> |
| 168 | + </el-select> |
115 | 169 | </div> |
116 | 170 | <el-slider |
| 171 | + v-if="form_data.limit_type === 'custom'" |
117 | 172 | v-model="form_data.limit" |
118 | 173 | show-input |
119 | 174 | :show-input-controls="false" |
120 | 175 | :min="50" |
121 | 176 | :max="100000" |
122 | 177 | /> |
| 178 | + <NodeCascader |
| 179 | + v-else |
| 180 | + ref="nodeCascaderRef6" |
| 181 | + :nodeModel="nodeModel" |
| 182 | + class="w-full" |
| 183 | + :placeholder="$t('views.chatLog.documentPlaceholder')" |
| 184 | + v-model="form_data.limit_reference" |
| 185 | + /> |
123 | 186 | </div> |
124 | 187 | <div class="form-item mb-16"> |
125 | | - <div class="title mb-8"> |
126 | | - {{ $t('views.document.setRules.with_filter.label') }} |
| 188 | + <div class="flex-between"> |
| 189 | + <div class="title mb-8"> |
| 190 | + {{ $t('views.document.setRules.with_filter.label') }} |
| 191 | + </div> |
| 192 | + <el-select v-model="form_data.with_filter_type" size="small" style="width: 100px"> |
| 193 | + <el-option |
| 194 | + :label="$t('views.workflow.nodes.searchDocumentNode.custom')" |
| 195 | + value="custom" |
| 196 | + /> |
| 197 | + <el-option |
| 198 | + :label="$t('views.workflow.variable.Referencing')" |
| 199 | + value="referencing" |
| 200 | + /> |
| 201 | + </el-select> |
127 | 202 | </div> |
128 | | - <el-switch size="small" v-model="form_data.with_filter" /> |
| 203 | + <el-switch v-if="form_data.with_filter_type === 'custom'" size="small" v-model="form_data.with_filter" /> |
| 204 | + <NodeCascader |
| 205 | + v-else |
| 206 | + ref="nodeCascaderRef7" |
| 207 | + :nodeModel="nodeModel" |
| 208 | + class="w-full" |
| 209 | + :placeholder="$t('views.chatLog.documentPlaceholder')" |
| 210 | + v-model="form_data.with_filter_reference" |
| 211 | + /> |
129 | 212 | <div style="margin-top: 4px"> |
130 | 213 | <el-text type="info"> |
131 | 214 | {{ $t('views.document.setRules.with_filter.text') }} |
@@ -240,9 +323,17 @@ const form = { |
240 | 323 | document_name_relate_problem: false, |
241 | 324 | document_name_relate_problem_reference: [], |
242 | 325 | limit: 4096, |
| 326 | + limit_type: 'custom', |
| 327 | + limit_reference: [], |
243 | 328 | chunk_size: 256, |
| 329 | + chunk_size_type: 'custom', |
| 330 | + chunk_size_reference: [], |
244 | 331 | patterns: [], |
245 | | - with_filter: false |
| 332 | + patterns_type: 'custom', |
| 333 | + patterns_reference: [], |
| 334 | + with_filter: false, |
| 335 | + with_filter_type: 'custom', |
| 336 | + with_filter_reference: [] |
246 | 337 | } |
247 | 338 |
|
248 | 339 |
|
|
0 commit comments