修复 rewrite_query 的问题
This commit is contained in:
parent
23a11c8679
commit
6854a7812f
@ -17,7 +17,7 @@ RERANKER_LIST = _models["RERANKER_LIST"]
|
|||||||
class SimpleConfig(dict):
|
class SimpleConfig(dict):
|
||||||
|
|
||||||
def __key(self, key):
|
def __key(self, key):
|
||||||
return "" if key is None else key.lower()
|
return "" if key is None else key.lower() # 目前忘记了这里为什么要 lower 了,只能说配置项最好不要有大写的
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return json.dumps(self)
|
return json.dumps(self)
|
||||||
@ -61,6 +61,7 @@ class Config(SimpleConfig):
|
|||||||
self.add_item("model_name", default=None, des="模型名称")
|
self.add_item("model_name", default=None, des="模型名称")
|
||||||
self.add_item("embed_model", default="zhipu-embedding-3", des="Embedding 模型", choices=list(EMBED_MODEL_INFO.keys()))
|
self.add_item("embed_model", default="zhipu-embedding-3", des="Embedding 模型", choices=list(EMBED_MODEL_INFO.keys()))
|
||||||
self.add_item("reranker", default="bge-reranker-v2-m3", des="Re-Ranker 模型", choices=list(RERANKER_LIST.keys()))
|
self.add_item("reranker", default="bge-reranker-v2-m3", des="Re-Ranker 模型", choices=list(RERANKER_LIST.keys()))
|
||||||
|
self.add_item("use_rewrite_query", default="off", des="重写查询", choices=["off", "on", "hyde"])
|
||||||
self.add_item("model_local_paths", default={}, des="本地模型路径")
|
self.add_item("model_local_paths", default={}, des="本地模型路径")
|
||||||
### <<< 默认配置结束
|
### <<< 默认配置结束
|
||||||
|
|
||||||
@ -113,7 +114,7 @@ class Config(SimpleConfig):
|
|||||||
self.valuable_model_provider = [k for k, v in self.model_provider_status.items() if v]
|
self.valuable_model_provider = [k for k, v in self.model_provider_status.items() if v]
|
||||||
assert len(self.valuable_model_provider) > 0, f"No model provider available, please check your `.env` file. API_KEY_LIST: {conds}"
|
assert len(self.valuable_model_provider) > 0, f"No model provider available, please check your `.env` file. API_KEY_LIST: {conds}"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def load(self):
|
def load(self):
|
||||||
"""根据传入的文件覆盖掉默认配置"""
|
"""根据传入的文件覆盖掉默认配置"""
|
||||||
|
|||||||
@ -118,7 +118,11 @@ class Retriever:
|
|||||||
|
|
||||||
def rewrite_query(self, query, history, refs):
|
def rewrite_query(self, query, history, refs):
|
||||||
"""重写查询"""
|
"""重写查询"""
|
||||||
rewrite_query_span = refs["meta"].get("rewriteQuery", "off")
|
if refs["meta"].get("mode") == "search": # 如果是搜索模式,就使用 meta 的配置,否则就使用全局的配置
|
||||||
|
rewrite_query_span = refs["meta"].get("use_rewrite_query", "off")
|
||||||
|
else:
|
||||||
|
rewrite_query_span = refs["meta"]["config"].get("use_rewrite_query", "off")
|
||||||
|
|
||||||
if rewrite_query_span == "off":
|
if rewrite_query_span == "off":
|
||||||
rewritten_query = query
|
rewritten_query = query
|
||||||
else:
|
else:
|
||||||
|
|||||||
@ -42,6 +42,7 @@ def chat_post(
|
|||||||
chunk = make_chunk("", "searching", history=None)
|
chunk = make_chunk("", "searching", history=None)
|
||||||
yield chunk
|
yield chunk
|
||||||
|
|
||||||
|
meta["config"] = startup.config
|
||||||
new_query, refs = startup.retriever(query, history_manager.messages, meta)
|
new_query, refs = startup.retriever(query, history_manager.messages, meta)
|
||||||
refs_pool[cur_res_id] = refs
|
refs_pool[cur_res_id] = refs
|
||||||
else:
|
else:
|
||||||
|
|||||||
@ -81,9 +81,9 @@
|
|||||||
<div class="flex-center" @click="meta.use_web = !meta.use_web" v-if="configStore.config.enable_search_engine && meta.enable_retrieval">
|
<div class="flex-center" @click="meta.use_web = !meta.use_web" v-if="configStore.config.enable_search_engine && meta.enable_retrieval">
|
||||||
搜索引擎(Bing) <div @click.stop><a-switch v-model:checked="meta.use_web" /></div>
|
搜索引擎(Bing) <div @click.stop><a-switch v-model:checked="meta.use_web" /></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex-center" v-if="configStore.config.enable_knowledge_base && meta.enable_retrieval">
|
<!-- <div class="flex-center" v-if="configStore.config.enable_knowledge_base && meta.enable_retrieval">
|
||||||
重写查询 <a-segmented v-model:value="meta.rewriteQuery" :options="['off', 'on', 'hyde']"/>
|
重写查询 <a-segmented v-model:value="meta.use_rewrite_query" :options="['off', 'on', 'hyde']"/>
|
||||||
</div>
|
</div> -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -191,11 +191,7 @@ const panel = ref(null)
|
|||||||
const modelCard = ref(null)
|
const modelCard = ref(null)
|
||||||
const examples = ref([
|
const examples = ref([
|
||||||
'写一个冒泡排序',
|
'写一个冒泡排序',
|
||||||
'肉碱的分子量是多少?直接回答',
|
|
||||||
'总结大蒜的功效是什么?',
|
|
||||||
'今天天气怎么样?',
|
'今天天气怎么样?',
|
||||||
'吃饭吃出苍蝇可以索赔吗?',
|
|
||||||
'帮我写一个请假条',
|
|
||||||
'贾宝玉今年多少岁?',
|
'贾宝玉今年多少岁?',
|
||||||
])
|
])
|
||||||
|
|
||||||
@ -211,7 +207,7 @@ const meta = reactive(JSON.parse(localStorage.getItem('meta')) || {
|
|||||||
use_graph: false,
|
use_graph: false,
|
||||||
use_web: false,
|
use_web: false,
|
||||||
graph_name: "neo4j",
|
graph_name: "neo4j",
|
||||||
rewriteQuery: "off",
|
// use_rewrite_query: "off",
|
||||||
selectedKB: null,
|
selectedKB: null,
|
||||||
stream: true,
|
stream: true,
|
||||||
summary_title: true,
|
summary_title: true,
|
||||||
|
|||||||
@ -2,8 +2,8 @@
|
|||||||
<div class="refs" v-if="showRefs">
|
<div class="refs" v-if="showRefs">
|
||||||
<div class="tags">
|
<div class="tags">
|
||||||
<span class="item btn" @click="copyText(msg.text)"><CopyOutlined /></span>
|
<span class="item btn" @click="copyText(msg.text)"><CopyOutlined /></span>
|
||||||
<span class="item btn" @click="likeThisResponse(msg)"><LikeOutlined /></span>
|
<!-- <span class="item btn" @click="likeThisResponse(msg)"><LikeOutlined /></span> -->
|
||||||
<span class="item btn" @click="dislikeThisResponse(msg)"><DislikeOutlined /></span>
|
<!-- <span class="item btn" @click="dislikeThisResponse(msg)"><DislikeOutlined /></span> -->
|
||||||
<span class="item"><GlobalOutlined /> {{ msg.model_name }}</span>
|
<span class="item"><GlobalOutlined /> {{ msg.model_name }}</span>
|
||||||
<span
|
<span
|
||||||
class="item btn"
|
class="item btn"
|
||||||
|
|||||||
@ -132,7 +132,7 @@
|
|||||||
<div class="params-group">
|
<div class="params-group">
|
||||||
<div class="params-item col">
|
<div class="params-item col">
|
||||||
<p>重写查询<small>(修改后需重新检索)</small>:</p>
|
<p>重写查询<small>(修改后需重新检索)</small>:</p>
|
||||||
<a-segmented v-model:value="meta.rewriteQuery" :options="rewriteQueryOptions">
|
<a-segmented v-model:value="meta.use_rewrite_query" :options="use_rewrite_queryOptions">
|
||||||
<template #label="{ payload }">
|
<template #label="{ payload }">
|
||||||
<div>
|
<div>
|
||||||
<p style="margin: 4px 0">{{ payload.subTitle }}</p>
|
<p style="margin: 4px 0">{{ payload.subTitle }}</p>
|
||||||
@ -251,13 +251,13 @@ const meta = reactive({
|
|||||||
mode: 'search',
|
mode: 'search',
|
||||||
maxQueryCount: 30,
|
maxQueryCount: 30,
|
||||||
filter: true,
|
filter: true,
|
||||||
rewriteQuery: 'off',
|
use_rewrite_query: 'off',
|
||||||
rerankThreshold: 0.1,
|
rerankThreshold: 0.1,
|
||||||
distanceThreshold: 0.3,
|
distanceThreshold: 0.3,
|
||||||
topK: 10,
|
topK: 10,
|
||||||
});
|
});
|
||||||
|
|
||||||
const rewriteQueryOptions = ref([
|
const use_rewrite_queryOptions = ref([
|
||||||
{ value: 'off', payload: { title: 'off', subTitle: '不启用' } },
|
{ value: 'off', payload: { title: 'off', subTitle: '不启用' } },
|
||||||
{ value: 'on', payload: { title: 'on', subTitle: '启用重写' } },
|
{ value: 'on', payload: { title: 'on', subTitle: '启用重写' } },
|
||||||
{ value: 'hyde', payload: { title: 'hyde', subTitle: '伪文档生成' } },
|
{ value: 'hyde', payload: { title: 'hyde', subTitle: '伪文档生成' } },
|
||||||
@ -546,10 +546,7 @@ watch(() => meta, () => {
|
|||||||
|
|
||||||
// 添加示例查询
|
// 添加示例查询
|
||||||
const queryExamples = ref([
|
const queryExamples = ref([
|
||||||
'食品添加剂的安全性如何?',
|
'贾宝玉的丫鬟有哪些?',
|
||||||
'如何识别和预防食物中毒?',
|
|
||||||
'转基因食品对人体健康有什么影响?',
|
|
||||||
'如何正确储存和处理生鲜食品?'
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// 使用示例查询的方法
|
// 使用示例查询的方法
|
||||||
|
|||||||
@ -79,6 +79,21 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<h3>检索配置</h3>
|
||||||
|
<div class="section">
|
||||||
|
<div class="card">
|
||||||
|
<span class="label">{{ items?.use_rewrite_query.des }}</span>
|
||||||
|
<a-select style="width: 200px"
|
||||||
|
:value="configStore.config?.use_rewrite_query"
|
||||||
|
@change="handleChange('use_rewrite_query', $event)"
|
||||||
|
>
|
||||||
|
<a-select-option
|
||||||
|
v-for="(name, idx) in items?.use_rewrite_query.choices" :key="idx"
|
||||||
|
:value="name">{{ name }}
|
||||||
|
</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="setting" v-if="state.section === 'model'">
|
<div class="setting" v-if="state.section === 'model'">
|
||||||
<h3>模型配置</h3>
|
<h3>模型配置</h3>
|
||||||
@ -161,10 +176,10 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="model-provider-card" v-for="(item, key) in notModelKeys" :key="key">
|
<div class="model-provider-card" v-for="(item, key) in notModelKeys" :key="key">
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<h3>{{ modelNames[item].name }}</h3>
|
<h3 style="font-weight: 400">{{ modelNames[item].name }}</h3>
|
||||||
<a :href="modelNames[item].url" target="_blank">详情</a>
|
<a :href="modelNames[item].url" target="_blank"><InfoCircleOutlined /></a>
|
||||||
<div class="missing-keys">
|
<div class="missing-keys">
|
||||||
需配置 <span v-for="(key, idx) in modelNames[item].env" :key="idx">{{ key }}</span>
|
<small>需配置</small> <span v-for="(key, idx) in modelNames[item].env" :key="idx">{{ key }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user