修复 rewrite_query 的问题

This commit is contained in:
Wenjie Zhang 2024-11-23 20:53:51 +08:00
parent 23a11c8679
commit 6854a7812f
7 changed files with 37 additions and 23 deletions

View File

@ -17,7 +17,7 @@ RERANKER_LIST = _models["RERANKER_LIST"]
class SimpleConfig(dict):
def __key(self, key):
return "" if key is None else key.lower()
return "" if key is None else key.lower() # 目前忘记了这里为什么要 lower 了,只能说配置项最好不要有大写的
def __str__(self):
return json.dumps(self)
@ -61,6 +61,7 @@ class Config(SimpleConfig):
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("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="本地模型路径")
### <<< 默认配置结束
@ -113,7 +114,7 @@ class Config(SimpleConfig):
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}"
def load(self):
"""根据传入的文件覆盖掉默认配置"""

View File

@ -118,7 +118,11 @@ class Retriever:
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":
rewritten_query = query
else:

View File

@ -42,6 +42,7 @@ def chat_post(
chunk = make_chunk("", "searching", history=None)
yield chunk
meta["config"] = startup.config
new_query, refs = startup.retriever(query, history_manager.messages, meta)
refs_pool[cur_res_id] = refs
else:

View File

@ -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">
搜索引擎Bing <div @click.stop><a-switch v-model:checked="meta.use_web" /></div>
</div>
<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']"/>
</div>
<!-- <div class="flex-center" v-if="configStore.config.enable_knowledge_base && meta.enable_retrieval">
重写查询 <a-segmented v-model:value="meta.use_rewrite_query" :options="['off', 'on', 'hyde']"/>
</div> -->
</div>
</div>
</div>
@ -191,11 +191,7 @@ const panel = ref(null)
const modelCard = ref(null)
const examples = ref([
'写一个冒泡排序',
'肉碱的分子量是多少?直接回答',
'总结大蒜的功效是什么?',
'今天天气怎么样?',
'吃饭吃出苍蝇可以索赔吗?',
'帮我写一个请假条',
'贾宝玉今年多少岁?',
])
@ -211,7 +207,7 @@ const meta = reactive(JSON.parse(localStorage.getItem('meta')) || {
use_graph: false,
use_web: false,
graph_name: "neo4j",
rewriteQuery: "off",
// use_rewrite_query: "off",
selectedKB: null,
stream: true,
summary_title: true,

View File

@ -2,8 +2,8 @@
<div class="refs" v-if="showRefs">
<div class="tags">
<span class="item btn" @click="copyText(msg.text)"><CopyOutlined /></span>
<span class="item btn" @click="likeThisResponse(msg)"><LikeOutlined /></span>
<span class="item btn" @click="dislikeThisResponse(msg)"><DislikeOutlined /></span>
<!-- <span class="item btn" @click="likeThisResponse(msg)"><LikeOutlined /></span> -->
<!-- <span class="item btn" @click="dislikeThisResponse(msg)"><DislikeOutlined /></span> -->
<span class="item"><GlobalOutlined /> {{ msg.model_name }}</span>
<span
class="item btn"

View File

@ -132,7 +132,7 @@
<div class="params-group">
<div class="params-item col">
<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 }">
<div>
<p style="margin: 4px 0">{{ payload.subTitle }}</p>
@ -251,13 +251,13 @@ const meta = reactive({
mode: 'search',
maxQueryCount: 30,
filter: true,
rewriteQuery: 'off',
use_rewrite_query: 'off',
rerankThreshold: 0.1,
distanceThreshold: 0.3,
topK: 10,
});
const rewriteQueryOptions = ref([
const use_rewrite_queryOptions = ref([
{ value: 'off', payload: { title: 'off', subTitle: '不启用' } },
{ value: 'on', payload: { title: 'on', subTitle: '启用重写' } },
{ value: 'hyde', payload: { title: 'hyde', subTitle: '伪文档生成' } },
@ -546,10 +546,7 @@ watch(() => meta, () => {
//
const queryExamples = ref([
'食品添加剂的安全性如何?',
'如何识别和预防食物中毒?',
'转基因食品对人体健康有什么影响?',
'如何正确储存和处理生鲜食品?'
'贾宝玉的丫鬟有哪些?',
]);
// 使

View File

@ -79,6 +79,21 @@
/>
</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 class="setting" v-if="state.section === 'model'">
<h3>模型配置</h3>
@ -161,10 +176,10 @@
</div>
<div class="model-provider-card" v-for="(item, key) in notModelKeys" :key="key">
<div class="card-header">
<h3>{{ modelNames[item].name }}</h3>
<a :href="modelNames[item].url" target="_blank">详情</a>
<h3 style="font-weight: 400">{{ modelNames[item].name }}</h3>
<a :href="modelNames[item].url" target="_blank"><InfoCircleOutlined /></a>
<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>