From 6854a7812f7435c5f814f5293a5ea4940ac67752 Mon Sep 17 00:00:00 2001 From: Wenjie Zhang Date: Sat, 23 Nov 2024 20:53:51 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20rewrite=5Fquery=20?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/config/__init__.py | 5 +++-- src/core/retriever.py | 6 +++++- src/routers/chat_router.py | 1 + web/src/components/ChatComponent.vue | 12 ++++-------- web/src/components/RefsComponent.vue | 4 ++-- web/src/views/DataBaseInfoView.vue | 11 ++++------- web/src/views/SettingView.vue | 21 ++++++++++++++++++--- 7 files changed, 37 insertions(+), 23 deletions(-) diff --git a/src/config/__init__.py b/src/config/__init__.py index 5be0e905..e19d86bc 100644 --- a/src/config/__init__.py +++ b/src/config/__init__.py @@ -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): """根据传入的文件覆盖掉默认配置""" diff --git a/src/core/retriever.py b/src/core/retriever.py index 3d21971e..46b31c7e 100644 --- a/src/core/retriever.py +++ b/src/core/retriever.py @@ -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: diff --git a/src/routers/chat_router.py b/src/routers/chat_router.py index 0f5659ef..1ef7ed5e 100644 --- a/src/routers/chat_router.py +++ b/src/routers/chat_router.py @@ -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: diff --git a/web/src/components/ChatComponent.vue b/web/src/components/ChatComponent.vue index 13b37d58..d9ea6fe8 100644 --- a/web/src/components/ChatComponent.vue +++ b/web/src/components/ChatComponent.vue @@ -81,9 +81,9 @@
搜索引擎(Bing)
-
- 重写查询 -
+ @@ -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, diff --git a/web/src/components/RefsComponent.vue b/web/src/components/RefsComponent.vue index 78f874ac..342994f7 100644 --- a/web/src/components/RefsComponent.vue +++ b/web/src/components/RefsComponent.vue @@ -2,8 +2,8 @@
- - + + {{ msg.model_name }}

重写查询(修改后需重新检索)

- +