|
@@ -65,12 +65,13 @@
|
|
|
<template v-if="state.embedding.show">
|
|
|
<div class="__czr-title_1 mb-[0.5rem]">Embedding 模型</div>
|
|
|
<CzrFormColumn
|
|
|
+ required
|
|
|
class="__czr-table-form-column"
|
|
|
:span="24"
|
|
|
label="模型类型"
|
|
|
v-model:param="state.embedding.value"
|
|
|
link="select"
|
|
|
- :options="[]"
|
|
|
+ :options="DictionaryStore.embeddingModels.list"
|
|
|
:clearable="false"
|
|
|
/>
|
|
|
</template>
|
|
@@ -107,6 +108,8 @@
|
|
|
<el-switch
|
|
|
size="small"
|
|
|
v-model="state.searchMethod[SearchMethodType.Vector].isRerank"
|
|
|
+ :active-value="1"
|
|
|
+ :inactive-value="0"
|
|
|
/>
|
|
|
Rerank 模型
|
|
|
<el-tooltip
|
|
@@ -120,6 +123,7 @@
|
|
|
v-if="state.searchMethod[SearchMethodType.Vector].isRerank"
|
|
|
>
|
|
|
<CzrFormColumn
|
|
|
+ required
|
|
|
class="__czr-table-form-column"
|
|
|
:span="24"
|
|
|
label-width="0px"
|
|
@@ -127,8 +131,9 @@
|
|
|
state.searchMethod[SearchMethodType.Vector].rerank
|
|
|
"
|
|
|
link="select"
|
|
|
- :options="[{ label: 'bga-reanskada-v2-sad-m3', value: 1 }]"
|
|
|
+ :options="DictionaryStore.rerankModels.list"
|
|
|
:clearable="false"
|
|
|
+ default-error-msg="请选择Rerank模型"
|
|
|
/>
|
|
|
</template>
|
|
|
<div class="flex gap-[1rem]">
|
|
@@ -159,6 +164,8 @@
|
|
|
v-model="
|
|
|
state.searchMethod[SearchMethodType.Vector].isScore
|
|
|
"
|
|
|
+ :active-value="1"
|
|
|
+ :inactive-value="0"
|
|
|
/>
|
|
|
Score 阈值
|
|
|
<el-tooltip
|
|
@@ -218,6 +225,8 @@
|
|
|
<el-switch
|
|
|
size="small"
|
|
|
v-model="state.searchMethod[SearchMethodType.Global].isRerank"
|
|
|
+ :active-value="1"
|
|
|
+ :inactive-value="0"
|
|
|
/>
|
|
|
Rerank 模型
|
|
|
<el-tooltip
|
|
@@ -238,8 +247,9 @@
|
|
|
state.searchMethod[SearchMethodType.Global].rerank
|
|
|
"
|
|
|
link="select"
|
|
|
- :options="[{ label: 'bga-reanskada-v2-sad-m3', value: 1 }]"
|
|
|
+ :options="DictionaryStore.rerankModels.list"
|
|
|
:clearable="false"
|
|
|
+ default-error-msg="请选择Rerank模型"
|
|
|
/>
|
|
|
</template>
|
|
|
<div class="flex gap-[1rem]">
|
|
@@ -273,6 +283,8 @@
|
|
|
v-model="
|
|
|
state.searchMethod[SearchMethodType.Global].isScore
|
|
|
"
|
|
|
+ :active-value="1"
|
|
|
+ :inactive-value="0"
|
|
|
/>
|
|
|
Score 阈值
|
|
|
<el-tooltip
|
|
@@ -439,8 +451,9 @@
|
|
|
label-width="0px"
|
|
|
v-model:param="state.searchMethod[SearchMethodType.Mix].rerank"
|
|
|
link="select"
|
|
|
- :options="[{ label: 'bga-reanskada-v2-sad-m3', value: 1 }]"
|
|
|
+ :options="DictionaryStore.rerankModels.list"
|
|
|
:clearable="false"
|
|
|
+ default-error-msg="请选择Rerank模型"
|
|
|
/>
|
|
|
</template>
|
|
|
</div>
|
|
@@ -473,6 +486,8 @@
|
|
|
<el-switch
|
|
|
size="small"
|
|
|
v-model="state.searchMethod[SearchMethodType.Mix].isScore"
|
|
|
+ :active-value="1"
|
|
|
+ :inactive-value="0"
|
|
|
/>
|
|
|
Score 阈值
|
|
|
<el-tooltip
|
|
@@ -505,8 +520,10 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
-import { getCurrentInstance, reactive, ref, watch } from 'vue'
|
|
|
+import { getCurrentInstance, onMounted, reactive, ref, watch } from 'vue'
|
|
|
+import { useDictionaryStore } from '@/stores'
|
|
|
|
|
|
+const DictionaryStore = useDictionaryStore()
|
|
|
const emit = defineEmits([])
|
|
|
const props = defineProps({})
|
|
|
const { proxy }: any = getCurrentInstance()
|
|
@@ -518,35 +535,35 @@ enum SearchMethodType {
|
|
|
const state: any = reactive({
|
|
|
indexMethod: {
|
|
|
show: true,
|
|
|
- value: 1,
|
|
|
+ value: '高质量',
|
|
|
},
|
|
|
embedding: {
|
|
|
show: true,
|
|
|
- value: 1,
|
|
|
+ value: '',
|
|
|
},
|
|
|
searchMethod: {
|
|
|
show: true,
|
|
|
value: SearchMethodType.Vector,
|
|
|
- vector: {
|
|
|
- isRerank: true,
|
|
|
+ [SearchMethodType.Vector]: {
|
|
|
+ isRerank: 1,
|
|
|
rerank: '',
|
|
|
topK: 5,
|
|
|
- isScore: true,
|
|
|
+ isScore: 1,
|
|
|
score: 0.5,
|
|
|
},
|
|
|
- global: {
|
|
|
- isRerank: true,
|
|
|
+ [SearchMethodType.Global]: {
|
|
|
+ isRerank: 1,
|
|
|
rerank: '',
|
|
|
topK: 5,
|
|
|
- isScore: true,
|
|
|
+ isScore: 1,
|
|
|
score: 0.5,
|
|
|
},
|
|
|
- mix: {
|
|
|
+ [SearchMethodType.Mix]: {
|
|
|
indexMethod: 1,
|
|
|
weight: 0.7,
|
|
|
rerank: '',
|
|
|
topK: 5,
|
|
|
- isScore: true,
|
|
|
+ isScore: 1,
|
|
|
score: 0.5,
|
|
|
},
|
|
|
},
|
|
@@ -554,7 +571,7 @@ const state: any = reactive({
|
|
|
const reset = () => {
|
|
|
state.indexMethod = {
|
|
|
show: true,
|
|
|
- value: 1,
|
|
|
+ value: '高质量',
|
|
|
}
|
|
|
state.embedding = {
|
|
|
show: true,
|
|
@@ -564,17 +581,17 @@ const reset = () => {
|
|
|
show: true,
|
|
|
value: SearchMethodType.Vector,
|
|
|
[SearchMethodType.Vector]: {
|
|
|
- isRerank: true,
|
|
|
+ isRerank: 1,
|
|
|
rerank: '',
|
|
|
topK: 5,
|
|
|
- isScore: true,
|
|
|
+ isScore: 1,
|
|
|
score: 0.5,
|
|
|
},
|
|
|
[SearchMethodType.Global]: {
|
|
|
- isRerank: true,
|
|
|
+ isRerank: 1,
|
|
|
rerank: '',
|
|
|
topK: 5,
|
|
|
- isScore: true,
|
|
|
+ isScore: 1,
|
|
|
score: 0.5,
|
|
|
},
|
|
|
[SearchMethodType.Mix]: {
|
|
@@ -582,7 +599,7 @@ const reset = () => {
|
|
|
weight: 0.7,
|
|
|
rerank: '',
|
|
|
topK: 5,
|
|
|
- isScore: true,
|
|
|
+ isScore: 1,
|
|
|
score: 0.5,
|
|
|
},
|
|
|
}
|
|
@@ -591,43 +608,36 @@ const getData = () => {
|
|
|
const result = {
|
|
|
indexingTechnique: state.indexMethod.value,
|
|
|
embeddingModelId: state.embedding.value,
|
|
|
+ embeddingModel: DictionaryStore.embeddingModels.map.get(
|
|
|
+ state.embedding.value,
|
|
|
+ ),
|
|
|
indexConfig: {},
|
|
|
}
|
|
|
switch (state.searchMethod.value) {
|
|
|
case SearchMethodType.Vector:
|
|
|
{
|
|
|
- result.indexConfig.isRerank = state.searchMethod[
|
|
|
- SearchMethodType.Vector
|
|
|
- ].isRerank
|
|
|
- ? 1
|
|
|
- : 0
|
|
|
+ result.indexConfig.isRerank =
|
|
|
+ state.searchMethod[SearchMethodType.Vector].isRerank
|
|
|
result.indexConfig.rerankType =
|
|
|
state.searchMethod[SearchMethodType.Vector].rerank
|
|
|
result.indexConfig.topK =
|
|
|
state.searchMethod[SearchMethodType.Vector].topK
|
|
|
- result.indexConfig.isScore = state.searchMethod[SearchMethodType.Vector]
|
|
|
- .isScore
|
|
|
- ? 1
|
|
|
- : 0
|
|
|
+ result.indexConfig.isScore =
|
|
|
+ state.searchMethod[SearchMethodType.Vector].isScore
|
|
|
result.indexConfig.score =
|
|
|
state.searchMethod[SearchMethodType.Vector].score
|
|
|
}
|
|
|
break
|
|
|
case SearchMethodType.Global:
|
|
|
{
|
|
|
- result.indexConfig.isRerank = state.searchMethod[
|
|
|
- SearchMethodType.Global
|
|
|
- ].isRerank
|
|
|
- ? 1
|
|
|
- : 0
|
|
|
+ result.indexConfig.isRerank =
|
|
|
+ state.searchMethod[SearchMethodType.Global].isRerank
|
|
|
result.indexConfig.rerankType =
|
|
|
state.searchMethod[SearchMethodType.Global].rerank
|
|
|
result.indexConfig.topK =
|
|
|
state.searchMethod[SearchMethodType.Global].topK
|
|
|
- result.indexConfig.isScore = state.searchMethod[SearchMethodType.Global]
|
|
|
- .isScore
|
|
|
- ? 1
|
|
|
- : 0
|
|
|
+ result.indexConfig.isScore =
|
|
|
+ state.searchMethod[SearchMethodType.Global].isScore
|
|
|
result.indexConfig.score =
|
|
|
state.searchMethod[SearchMethodType.Global].score
|
|
|
}
|
|
@@ -643,10 +653,8 @@ const getData = () => {
|
|
|
result.indexConfig.rerankType =
|
|
|
state.searchMethod[SearchMethodType.Mix].rerank
|
|
|
result.indexConfig.topK = state.searchMethod[SearchMethodType.Mix].topK
|
|
|
- result.indexConfig.isScore = state.searchMethod[SearchMethodType.Mix]
|
|
|
- .isScore
|
|
|
- ? 1
|
|
|
- : 0
|
|
|
+ result.indexConfig.isScore =
|
|
|
+ state.searchMethod[SearchMethodType.Mix].isScore
|
|
|
result.indexConfig.score =
|
|
|
state.searchMethod[SearchMethodType.Mix].score
|
|
|
}
|
|
@@ -654,51 +662,54 @@ const getData = () => {
|
|
|
}
|
|
|
return result
|
|
|
}
|
|
|
-const init = ({ indexMethod, embedding, searchMethod }) => {
|
|
|
- state.indexMethod.value = indexMethod
|
|
|
- state.embedding.value = embedding
|
|
|
- switch (searchMethod.type) {
|
|
|
+const init = ({ indexingTechnique, embeddingModelId, indexConfig }) => {
|
|
|
+ reset()
|
|
|
+ state.indexMethod.value = indexingTechnique
|
|
|
+ state.embedding.value = embeddingModelId
|
|
|
+ switch (indexConfig.type) {
|
|
|
case SearchMethodType.Vector:
|
|
|
{
|
|
|
state.searchMethod[SearchMethodType.Vector].isRerank =
|
|
|
- searchMethod.isRerank == 1
|
|
|
+ indexConfig.isRerank
|
|
|
state.searchMethod[SearchMethodType.Vector].rerank =
|
|
|
- searchMethod.rerankType
|
|
|
- state.searchMethod[SearchMethodType.Vector].topK = searchMethod.topK
|
|
|
+ indexConfig.rerankType
|
|
|
+ state.searchMethod[SearchMethodType.Vector].topK = indexConfig.topK
|
|
|
state.searchMethod[SearchMethodType.Vector].isScore =
|
|
|
- searchMethod.isScore == 1
|
|
|
- state.searchMethod[SearchMethodType.Vector].score = searchMethod.score
|
|
|
+ indexConfig.isScore
|
|
|
+ state.searchMethod[SearchMethodType.Vector].score = indexConfig.score
|
|
|
}
|
|
|
break
|
|
|
case SearchMethodType.Global:
|
|
|
{
|
|
|
state.searchMethod[SearchMethodType.Global].isRerank =
|
|
|
- searchMethod.isRerank == 1
|
|
|
+ indexConfig.isRerank
|
|
|
state.searchMethod[SearchMethodType.Global].rerank =
|
|
|
- searchMethod.rerankType
|
|
|
- state.searchMethod[SearchMethodType.Global].topK = searchMethod.topK
|
|
|
+ indexConfig.rerankType
|
|
|
+ state.searchMethod[SearchMethodType.Global].topK = indexConfig.topK
|
|
|
state.searchMethod[SearchMethodType.Global].isScore =
|
|
|
- searchMethod.isScore == 1
|
|
|
- state.searchMethod[SearchMethodType.Global].score = searchMethod.score
|
|
|
+ indexConfig.isScore
|
|
|
+ state.searchMethod[SearchMethodType.Global].score = indexConfig.score
|
|
|
}
|
|
|
break
|
|
|
case SearchMethodType.Mix:
|
|
|
{
|
|
|
state.searchMethod[SearchMethodType.Mix].indexMethod =
|
|
|
- searchMethod.weightRerank
|
|
|
+ indexConfig.weightRerank
|
|
|
state.searchMethod[SearchMethodType.Mix].weight = Number(
|
|
|
- searchMethod.semantics,
|
|
|
+ indexConfig.semantics,
|
|
|
)
|
|
|
- state.searchMethod[SearchMethodType.Mix].rerank =
|
|
|
- searchMethod.rerankType
|
|
|
- state.searchMethod[SearchMethodType.Mix].topK = searchMethod.topK
|
|
|
- state.searchMethod[SearchMethodType.Mix].isScore =
|
|
|
- searchMethod.isScore == 1
|
|
|
- state.searchMethod[SearchMethodType.Mix].score = searchMethod.score
|
|
|
+ state.searchMethod[SearchMethodType.Mix].rerank = indexConfig.rerankType
|
|
|
+ state.searchMethod[SearchMethodType.Mix].topK = indexConfig.topK
|
|
|
+ state.searchMethod[SearchMethodType.Mix].isScore = indexConfig.isScore
|
|
|
+ state.searchMethod[SearchMethodType.Mix].score = indexConfig.score
|
|
|
}
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
+onMounted(() => {
|
|
|
+ DictionaryStore.initRerankModels()
|
|
|
+ DictionaryStore.initEmbeddingModels()
|
|
|
+})
|
|
|
defineExpose({
|
|
|
reset,
|
|
|
getData,
|