lsc 3 months ago
parent
commit
f13d000157

+ 1 - 1
dist/index.html

@@ -32,7 +32,7 @@
       width: 100%;
       background: #e6eaf0;
       font-family: '黑体';
-    }</style><link href=./static/css/app.c5ca412fe29b217e818629e0065414e1.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.053a57d5ed6454c8ed29.js></script><script type=text/javascript src=./static/js/app.a9b2cd1f3d398a4bf880.js></script></body></html><script>function stopSafari() {
+    }</style><link href=./static/css/app.803ad4d407450e07fea26b02f627f5d8.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.bc3479efe4e7d435ff02.js></script><script type=text/javascript src=./static/js/app.2a675d165341a5677b91.js></script></body></html><script>function stopSafari() {
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {

File diff suppressed because it is too large
+ 0 - 0
dist/static/css/app.803ad4d407450e07fea26b02f627f5d8.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/app.803ad4d407450e07fea26b02f627f5d8.css.map


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/app.c5ca412fe29b217e818629e0065414e1.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/app.c5ca412fe29b217e818629e0065414e1.css.map


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/app.2a675d165341a5677b91.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/app.2a675d165341a5677b91.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/app.a9b2cd1f3d398a4bf880.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/app.a9b2cd1f3d398a4bf880.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/vendor.053a57d5ed6454c8ed29.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/vendor.bc3479efe4e7d435ff02.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/vendor.bc3479efe4e7d435ff02.js.map


+ 1 - 0
src/assets/icon/testC/m_icon2.svg

@@ -0,0 +1 @@
+<svg class="chakra-icon css-iq3ppm" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" width="128" height="128" focusable="false"><path d="m413.696 719.36-98.304 56.832-215.04-124.416v205.312l215.04 124.416 181.248-104.96-82.944-47.616V719.36z" fill="#2B85FB"></path><path d="m751.616 435.2-43.008-25.088-179.2 103.424-80.384-45.056 81.92-47.104V311.808l-215.04-124.416-215.04 124.416v248.32l41.984 24.064 173.568 100.352 98.304-56.832V540.16l79.36 44.032V783.36l215.04 124.416L924.16 783.36V535.04L751.616 435.2z" fill="#2B85FB"></path><path d="m610.304 375.808 98.304-56.832 77.312 44.544V166.912L570.88 42.496 396.8 142.848l212.992 122.88.512 110.08z" fill="#2B85FB"></path></svg>

+ 1 - 0
src/assets/icon/testC/m_icon3.svg

@@ -0,0 +1 @@
+<svg class="chakra-icon css-iq3ppm" viewBox="0 0 1407 1024" xmlns="http://www.w3.org/2000/svg" width="128" height="128" focusable="false"><path d="M1202.775 15.826a48.65 48.65 0 0 0-68.58 0 48.064 48.064 0 0 0 0 67.993 607.835 607.835 0 0 1 0 855.19 48.65 48.65 0 0 0 0 68.579 53.34 53.34 0 0 0 34.583 14.067 48.064 48.064 0 0 0 33.997-14.067 703.377 703.377 0 0 0 0-991.762zM96.715 511.706A603.146 603.146 0 0 1 272.558 83.234a48.299 48.299 0 0 0-67.407-69.165 703.377 703.377 0 0 0-146.537 771.37 689.896 689.896 0 0 0 152.398 224.494 47.478 47.478 0 0 0 33.997 13.482 48.65 48.65 0 0 0 33.996-82.647 599.043 599.043 0 0 1-182.292-429.06z" fill="#5D78FD"></path><path d="M999.968 218.633a48.65 48.65 0 0 0-69.165 67.993 318.864 318.864 0 0 1 0 448.99 48.65 48.65 0 0 0 0 68.579 48.064 48.064 0 0 0 33.996 14.067 46.306 46.306 0 0 0 31.652-13.481 410.303 410.303 0 0 0 120.746-293.074 416.165 416.165 0 0 0-117.23-293.074zM383.927 511.707a319.45 319.45 0 0 1 93.197-226.84 48.064 48.064 0 1 0-66.82-66.234 416.165 416.165 0 0 0 0 586.148 47.478 47.478 0 0 0 33.41 14.067 48.65 48.65 0 0 0 35.169-14.067 48.064 48.064 0 0 0 0-68.58 315.347 315.347 0 0 1-94.956-224.494z" fill="#5D78FD"></path><path d="M599.63 511.707a103.748 103.748 0 1 0 206.91 0 103.748 103.748 0 0 0-206.91 0z" fill="#FEC743"></path></svg>

File diff suppressed because it is too large
+ 0 - 0
src/assets/icon/testC/setting.svg


File diff suppressed because it is too large
+ 0 - 0
src/assets/icon/testC/setting2.svg


+ 229 - 66
src/components/pages/knowledge/components/testBox.vue

@@ -1,7 +1,7 @@
 <template>
     <div class="testBox">
         <div class="test_right">
-            <div class="test_input_box" :class="{focus: isFocused}">
+            <div class="test_input_box" :class="{ focus: isFocused }">
                 <div class="setting">
                     <el-tooltip :content=lang.knowSearchConfig placement="bottom" effect="dark">
                         <!-- content to trigger tooltip here -->
@@ -13,11 +13,11 @@
                     resize="none" @focus="isFocused = true" @blur="isFocused = false">
                 </el-input>
                 <el-button class="btn" type="primary" size="mini" @click="testCheck"
-                    v-loading="isLoading">{{lang.test}}</el-button>
+                    v-loading="isLoading">{{ lang.test }}</el-button>
             </div>
 
             <div class="test_history" v-loading="isLoading2">
-                <div class="title">{{lang.testRecord}}</div>
+                <div class="title">{{ lang.testRecord }}</div>
                 <div class="test_history_box" v-for="(item, index) in ragArray" :key="index" @click="checkRag(item)"
                     :class="{ acitve: item.id == ragJson.id }">
                     <div class="typeIcon" :class="{
@@ -35,11 +35,11 @@
         </div>
         <div class="test_left">
             <div class="test_check" v-if="Object.keys(ragJson).length">
-                <div class="title">{{lang.testParameters}}</div>
+                <div class="title">{{ lang.testParameters }}</div>
                 <div class="can_box">
                     <div class="can_one" v-if="ragJson.setting">
                         <div class="one_box">
-                            <span>{{lang.searchWay}}</span>
+                            <span>{{ lang.searchWay }}</span>
                             <span class="typeIcon" :class="{
                                 type1: ragJson.setting.useType == 1,
                                 type2: ragJson.setting.useType == 2,
@@ -47,24 +47,24 @@
                             }">{{ getUseType(ragJson.setting.useType) }}</span>
                         </div>
                         <div class="one_box">
-                            <span>{{lang.citations}}</span>
+                            <span>{{ lang.citations }}</span>
                             <span>{{ ragJson.setting.tokens }}</span>
                         </div>
                         <div class="one_box">
-                            <span>{{lang.minRelevance}}</span>
+                            <span>{{ lang.minRelevance }}</span>
                             <span>{{ ragJson.setting.temperature }}</span>
                         </div>
                     </div>
                     <div class="can_one" v-if="ragJson.setting" style="margin-top: 10px">
                         <div class="one_box">
-                            <span>{{lang.testText}}</span>
+                            <span>{{ lang.testText }}</span>
                             <span>{{ ragJson.setting.query }}</span>
                         </div>
                     </div>
                 </div>
             </div>
             <div class="test_result" v-if="Object.keys(ragJson).length">
-                <div class="title">{{lang.testResult}}</div>
+                <div class="title">{{ lang.testResult }}</div>
                 <div v-if="ragJson.json && ragJson.json.chunkSearchResults" class="result_box">
                     <div v-for="(item, index) in ragJson.json.chunkSearchResults" :key="index" class="result">
                         <el-tooltip :content=lang.distance placement="bottom" effect="dark">
@@ -87,28 +87,71 @@
                 <div style="height: 50px; line-height: 50px; width: 47.4px">
                     <img style="width: 100%" src="../../../../assets/flieKong.svg" alt="" />
                 </div>
-                <div style="margin-top: 10px">{{lang.teResultArea}}</div>
+                <div style="margin-top: 10px">{{ lang.teResultArea }}</div>
             </div>
         </div>
         <el-dialog title="新建文件夹" :visible.sync="moveBox" width="650px" style="border-radius: 8px"
             @close="moveBox = false" class="canEditCss">
             <div class="canEditTit" slot="title">
                 <img src="../../../../assets/icon/testC/dialog_setting.svg" alt="" />
-                <span>{{lang.knowSearchConfig}}</span>
+                <span>{{ lang.knowSearchConfig }}</span>
             </div>
             <div style="width: 100%; padding: 10px 40px; box-sizing: border-box;">
                 <div class="setting_nav">
-                    <div class="setting_nav_box searchIcon active">
-                        <span>{{lang.searchFiltration}}</span>
+                    <div class="setting_nav_box settingIcon" :class="{ active: searchType == 1 }"
+                        @click="searchType = 1">
+                        <span>{{ lang.searchType }}</span>
                     </div>
+                    <div class="setting_nav_box searchIcon" :class="{ active: searchType == 2 }"
+                        @click="searchType = 2">
+                        <span>{{ lang.searchFiltration }}</span>
+                    </div>
+                </div>
+                <div class="setting_serach" v-if="searchType == 1">
+                    <div class="setting_type_box" @click="json.useType = 1" :class="{ active: json.useType == 1 }">
+                        <div class="checkBox">
+                            <el-radio v-model="json.useType" :label="1" fill="#3370ff"></el-radio>
+                        </div>
+                        <div class="setting_type_detail">
+                            <div class="title">{{ lang.semanticRetrieval }}</div>
+                            <div class="detail">{{ lang.semanticRetrievalD }}</div>
+                        </div>
+                    </div>
+                    <div class="setting_type_box" @click="json.useType = 2" :class="{ active: json.useType == 2 }">
+                        <div class="checkBox">
+                            <el-radio v-model="json.useType" :label="2" fill="#3370ff"></el-radio>
+                        </div>
+                        <div class="setting_type_detail">
+                            <div class="title">{{ lang.fullTextSearch }}</div>
+                            <div class="detail">{{lang.fullTextSearchD }}</div>
+                        </div>
+                    </div>
+                    <div class="setting_type_box" @click="json.useType = 3" :class="{ active: json.useType == 3 }">
+                        <div class="checkBox">
+                            <el-radio v-model="json.useType" :label="3" fill="#3370ff"></el-radio>
+                        </div>
+                        <div class="setting_type_detail">
+                            <div class="title">{{ lang.mixSearch }}</div>
+                            <div class="detail">{{ lang.mixSearchD }}</div>
+                            <div class="slider" v-show="json.useType == 3">
+                                <div style="display: flex; justify-content: space-between;">
+                                    <span>{{ lang.fullTextSearch }}: {{ 10 - json.mixSearchRatio }}</span>
+                                    <span>{{ lang.semanticRetrieval }}: {{ json.mixSearchRatio }}</span>
+                                </div>
+                                <el-slider v-model="json.mixSearchRatio" :min="1" :max="9" :step="1" :label-step="1"></el-slider>
+                            </div>
+                        </div>
+                    </div>
+
+
                 </div>
-                <div class="setting_serach">
+                <div class="setting_serach" v-if="searchType == 2">
                     <div class="setting_serach_box">
-                        <span class="title">{{lang.citations}}
+                        <span class="title">{{ lang.citations }}
                             <el-tooltip :content=lang.token placement="bottom" effect="dark" popper-class="maxWidth">
-                                    <!-- content to trigger tooltip here -->
-                                    <i class="tips"></i>
-                                </el-tooltip>
+                                <!-- content to trigger tooltip here -->
+                                <i class="tips"></i>
+                            </el-tooltip>
                         </span>
                         <el-slider class="slider" v-model="json.tokens" :min="100" :max="20000" :step="1"
                             :vertical="false"></el-slider>
@@ -116,22 +159,23 @@
                             min="100" max="20000" step="1"></el-input-number>
                     </div>
                     <div class="setting_serach_box">
-                        <span class="title">{{lang.minRelevance}}
-                            <el-tooltip :content=lang.refiltering placement="bottom" effect="dark" popper-class="maxWidth">
-                                    <!-- content to trigger tooltip here -->
-                                    <i class="tips"></i>
-                                </el-tooltip>
+                        <span class="title">{{ lang.minRelevance }}
+                            <el-tooltip :content=lang.refiltering placement="bottom" effect="dark"
+                                popper-class="maxWidth">
+                                <!-- content to trigger tooltip here -->
+                                <i class="tips"></i>
+                            </el-tooltip>
                         </span>
                         <el-slider class="slider" v-model="json.temperature" :min="0" :max="1" :step="0.01"
                             :vertical="false"></el-slider>
-                        <el-input-number class="number" controls-position="right" v-model="json.temperature" size="small"
-                            min="0" max="1" step="0.01"></el-input-number>
+                        <el-input-number class="number" controls-position="right" v-model="json.temperature"
+                            size="small" min="0" max="1" step="0.01"></el-input-number>
                     </div>
                 </div>
             </div>
             <span slot="footer">
-                <el-button @click="moveBox = false">{{lang.cancel}}</el-button>
-                <el-button type="primary" @click="confirmSetting">{{lang.confirm}}</el-button>
+                <el-button @click="moveBox = false">{{ lang.cancel }}</el-button>
+                <el-button type="primary" @click="confirmSetting">{{ lang.confirm }}</el-button>
             </span>
         </el-dialog>
     </div>
@@ -154,7 +198,10 @@ export default {
             json: {
                 temperature: 0,
                 tokens: 1500,
-            }
+            },
+            searchType: 1,
+            useType: 1,
+            mixSearchRatio: 5
         };
     },
     props: {
@@ -182,40 +229,56 @@ export default {
                     return this.lang.semanticRetrieval;
                 } else if (e == 2) {
                     return this.lang.fullTextSearch;
-                } else if (e == 2) {
+                } else if (e == 3) {
                     return this.lang.mixSearch;
                 }
             };
         },
     },
+    watch: {
+        folderid(newValue, oldValue) {
+            this.getRagData();
+
+        }
+    },
     methods: {
         testCheck() {
             this.isLoading = true;
+            let mixSearchRatio = 1
+            if (this.useType == 1) {
+                mixSearchRatio = 10
+            } else if (this.useType == 2) {
+                mixSearchRatio = 0
+            } else {
+                mixSearchRatio = this.mixSearchRatio
+            }
+
+            // let params = {
+            //     userid: this.userid,
+            //     ids: this.folderid,
+            //     query: this.value,
+            //     type: 2,
+            //     useType: this.useType,
+            //     fullTextWeight: 10 - mixSearchRatio,
+            //     semanticWeight: mixSearchRatio,
+            //     limit: 10,
+            //     temperature: this.temperature,
+            //     tokens: this.tokens,
+            // };
             let params = {
                 userid: this.userid,
-                ids: this.folderid,
+                documentids: "",
+                folderids: this.folderid,
                 query: this.value,
-                type: 2,
-                useType: 1,
-                fullTextWeight: 1,
-                semanticWeight: 5,
+                useType: this.useType,
+                fullTextWeight: 10 - mixSearchRatio,
+                semanticWeight: mixSearchRatio,
                 limit: 10,
                 temperature: this.temperature,
                 tokens: this.tokens,
             };
-            // let params = {
-            //     documentids: "",
-            //     folderids: this.folderid, 
-            //     query: this.value,
-            //     useType: 1,
-            //     fullTextWeight: 1,
-            //     semanticWeight: 5,
-            //     limit: 10,
-            //     temperature: this.temperature,
-            //     tokens: this.tokens,
-            // };
             this.ajax
-                .post(this.$store.state.fileApi + "ragFolder", [params])
+                .post(this.$store.state.fileApi + "searchFolder3", [params])
                 // .post(this.$store.state.fileApi + "searchFolder", [params])
                 .then((res) => {
                     this.isLoading = false;
@@ -247,6 +310,8 @@ export default {
                         this.ragJson = this.ragArray[0];
                         this.ragJson.setting = this.ragJson.setting;
                         this.ragJson.json = this.ragJson.json;
+                    } else {
+                        this.ragJson = {};
                     }
                 })
                 .catch((err) => {
@@ -319,13 +384,18 @@ export default {
         openSetting() {
             this.json = JSON.parse(JSON.stringify({
                 tokens: this.tokens,
-                temperature: this.temperature
+                temperature: this.temperature,
+                useType: this.useType,
+                mixSearchRatio: 5
             }));
+            this.searchType = 1
             this.moveBox = true;
         },
         confirmSetting() {
             this.tokens = this.json.tokens
             this.temperature = this.json.temperature
+            this.useType = this.json.useType
+            this.mixSearchRatio = this.json.mixSearchRatio
             this.moveBox = false;
         }
     },
@@ -595,6 +665,24 @@ export default {
     background-size: 100% 100%;
 }
 
+.type2:before {
+    content: "";
+    width: 14px;
+    height: 14px;
+    margin-right: 5px;
+    background-image: url(../../../../assets/icon/testC/m_icon2.svg);
+    background-size: 100% 100%;
+}
+
+.type3:before {
+    content: "";
+    width: 14px;
+    height: 14px;
+    margin-right: 5px;
+    background-image: url(../../../../assets/icon/testC/m_icon3.svg);
+    background-size: 100% 100%;
+}
+
 .result_box {
     width: 100%;
 }
@@ -679,7 +767,7 @@ export default {
 .setting_nav_box {
     display: flex;
     height: 100%;
-    width: calc(100% / 3);
+    width: calc(100% / 2);
     align-items: center;
     /* flex: 1; */
     color: #485264;
@@ -713,6 +801,16 @@ export default {
     background-image: url(../../../../assets/icon/testC/search2.svg);
 }
 
+.settingIcon::before {
+    background-image: url(../../../../assets/icon/testC/setting.svg);
+}
+
+.setting_nav_box:hover.settingIcon::before,
+.setting_nav_box.active.settingIcon::before {
+    background-image: url(../../../../assets/icon/testC/setting2.svg);
+}
+
+
 .setting_serach {
     width: 100%;
 }
@@ -735,12 +833,15 @@ export default {
 .setting_serach_box .slider {
     flex: 1;
 }
-.setting_serach_box .slider  >>> .el-slider__bar{
+
+.setting_serach_box .slider>>>.el-slider__bar {
     background: unset;
 }
-.setting_serach_box .slider  >>> .el-slider__button {
+
+.setting_serach_box .slider>>>.el-slider__button {
     border-color: #3370ff;
 }
+
 .setting_serach_box .number {
     flex: 0 0 120px;
 }
@@ -749,7 +850,7 @@ export default {
     margin-top: 30px;
 }
 
-.tips{
+.tips {
     display: block;
     background-image: url(../../../../assets/icon/testC/test_tips.svg);
     background-size: 100% 100%;
@@ -759,28 +860,90 @@ export default {
 }
 
 @media screen and (max-width: 1300px) {
-  .testBox {
-    flex-direction: column;
-  }
+    .testBox {
+        flex-direction: column;
+    }
+
+    .testBox .test_right {
+        flex-direction: row;
+        width: 100%;
+        height: 250px;
+    }
+
+    .testBox .test_right .test_input_box {
+        flex: 0 0 250px;
+    }
+
+    .testBox .test_right .test_history {
+        flex: 1;
+    }
+}
+
+.setting_type_box>>>.el-radio__input.is-checked .el-radio__inner {
+    border-color: #3370ff;
+    background: #3370ff;
+}
+
+.setting_type_box>>>.el-radio__label {
+    display: none;
+}
+
+.setting_type_box .slider {
+    margin-top: 15px;
+}
+
+.setting_type_box .slider>>>.el-slider__bar {
+    background: #3370ff;
+}
 
-  .testBox .test_right{
-    flex-direction: row;
+.setting_type_box .slider>>>.el-slider__runway {
+    background: #f9518e;
+}
+
+.setting_type_box .slider>>>.el-slider__button {
+    border-color: #3370ff;
+}
+
+.setting_type_box {
+    display: flex;
+    background: #f7f8fa;
+    padding: 12px;
+    box-sizing: border-box;
     width: 100%;
-    height: 250px;
-  }
-  
-  .testBox .test_right .test_input_box{
-    flex: 0 0 250px;
-  }
-  .testBox .test_right .test_history{
-    flex: 1;
-  }
+    border: 1px solid #eaedf1;
+    border-radius: 5px;
+    cursor: pointer;
+    transition: all .3s;
 }
 
+.setting_type_box.active,
+.setting_type_box:hover {
+    border: 1px solid #3370ff;
+}
+
+.setting_type_box+.setting_type_box {
+    margin-top: 15px;
+}
+
+.setting_type_box .checkBox {
+    margin-right: 12px;
+}
+
+.setting_type_box .setting_type_detail {}
+
+.setting_type_box .setting_type_detail>.title {
+    color: #111824;
+    margin-bottom: 3px;
+}
+
+.setting_type_box .setting_type_detail>.detail {
+    color: #667085;
+    word-break: break-word;
+}
 </style>
 
 <style>
-.maxWidth{
+.maxWidth {
     max-width: 240px;
     word-break: break-all;
 }

+ 4 - 0
src/lang/cn.json

@@ -117,11 +117,15 @@
   "viewFrom":"点击查看来源",
   "teResultArea":"测试结果将在这里展示",
   "searchFiltration":"搜索过滤",
+  "searchType":"搜索方式",
   "token":"单次搜索最大的 token 数量,中文约1字=1.7tokens,英文约1字=1token",
   "refiltering":"不同索引模型的相关度有区别,请通过搜索测试来选择合适的数值。使用 结果重排 时,使用重排结果进行过滤。",
   "semanticRetrieval":"语义检索",
+  "semanticRetrievalD":"使用向量进行文本相关性查询",
   "fullTextSearch":"全文检索",
+  "fullTextSearchD":"使用传统的全文检索,适合查找一些关键词和主谓语特殊的数据",
   "mixSearch":"混合检索",
+  "mixSearchD": "使用向量检索和全文检索的综合结果返回,使用RRF算法进行排序",
   "sureDeRecord":"确定删除该记录嘛?",
   "Summary":"文章摘要:",
   "FileName":"文档名",

+ 4 - 0
src/lang/en.json

@@ -117,11 +117,15 @@
   "viewFrom":"Click to view source",
   "teResultArea":"Test records will be displayed here",
   "searchFiltration":"Search Filtering",
+  "searchType":"Search Type",
   "token":"Maximum number of tokens for a single search, about 1 character = 1.7 tokens in Chinese, about 1 character = 1 token in English",
   "refiltering":"Re-filtering results based on the search results. The relevance of different index models varies, please choose the appropriate value through search testing. When using result reordering, use the reordered results for filtering.",
   "semanticRetrieval":"Semantic Retrieval",
+  "semanticRetrievalD":"Using vectors for text relevance queries",
   "fullTextSearch":"Full Text Search",
+  "fullTextSearchD":"Using traditional full-text search, suitable for finding some keyword and subject-predicate specific data",
   "mixSearch":"Mixed Search",
+  "mixSearchD": "Returns a combined result of vector search and full-text search, sorted using the RRF algorithm",
   "sureDeRecord":"Are you sure you want to delete this record?",
   "Summary":"Summary",
   "FileName":"File Name",

+ 4 - 0
src/lang/hk.json

@@ -117,11 +117,15 @@
   "viewFrom": "點擊查看來源",
   "teResultArea": "測試結果將在這裡展示",
   "searchFiltration": "搜索過濾",
+  "searchType":"搜索方式",
   "token": "單次搜索最大的 token 數量,中文約1字=1.7tokens,英文約1字=1token",
   "refiltering": "不同索引模型的相關度有區別,請通過搜索測試來選擇合適的數值。使用 結果重排 時,使用重排結果進行過濾。",
   "semanticRetrieval":"語義檢索",
+  "semanticRetrievalD":"使用向量進行文本相關性查詢",
   "fullTextSearch":"全文檢索",
+  "fullTextSearchD":"使用傳統的全文檢索,適合查找一些關鍵詞和主謂語特殊的數據",
   "mixSearch":"混合檢索",
+  "mixSearchD": "使用向量檢索和全文檢索的綜合結果返回,使用RRF算法進行排序",
   "sureDeRecord": "確定刪除該記錄嘛?",
   "Summary": "文章摘要:",
   "FileName":"文檔名",

Some files were not shown because too many files changed in this diff