From 2a9654a65f1184cdf10531250e61055aab78e0e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=A6=82=E5=A8=81?= Date: Thu, 10 Jul 2025 00:23:11 +0800 Subject: [PATCH] feat: rerank prompt --- services/rag_service.py | 43 +++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/services/rag_service.py b/services/rag_service.py index 0dc9bae..a5298d9 100644 --- a/services/rag_service.py +++ b/services/rag_service.py @@ -24,6 +24,7 @@ class AsyncRAGService: openai_api_key=self.openai_api_key, openai_api_base=self.openai_api_base, ) + self.rerank_llm = ChatOpenAI( model="deepseek-r1:8b", temperature=0.7, @@ -31,17 +32,27 @@ class AsyncRAGService: openai_api_base=self.openai_api_base, ) + self.rerank_prompt_template = PromptTemplate( + input_variables=["question", "content"], + template=( + "你是一个智能评分助手,请判断以下“文档片段”与“用户问题”的相关程度。\n" + "请只输出一个介于 0 到 1 之间的分数,数值越高表示相关性越强。\n\n" + "用户问题:\n" + "{question}\n\n" + "文档片段:\n" + "{content}" + ), + ) + self.prompt_template = PromptTemplate( input_variables=["context", "question"], - template=""" -基于以下上下文回答问题。如果上下文中没有相关信息,请说明无法从提供的文档中找到答案。 - -上下文: -{context} - -问题:{question} - -答案:""", + template=( + "基于以下上下文回答问题。如果上下文中没有相关信息,请说明无法从提供的文档中找到答案。\n\n" + "上下文:\n" + "{context}\n\n" + "问题:{question}\n\n" + "答案:" + ), ) self.logger.info("RAG服务初始化完成") @@ -216,16 +227,10 @@ class AsyncRAGService: """使用 rerank LLM 对搜索结果重新排序""" async def score_result(result: Dict[str, Any]) -> float: - prompt = f""" -你是一个智能评分助手,请判断以下“文档片段”与“用户问题”的相关程度。 -请只输出一个介于 0 到 1 之间的分数,数值越高表示相关性越强。 - -用户问题: -{question} - -文档片段: -{result['content'][:1000]} -""" + prompt = self.rerank_prompt_template.format( + content=result["content"][:1000], + question=question + ) try: response = await asyncio.to_thread(self.rerank_llm.invoke, prompt) score = float(response.content.strip())