将事件名称转义成中文及优化关键字检索

This commit is contained in:
wanyaokun
2024-09-05 09:24:35 +08:00
parent ae19725d72
commit aba6475c5a
2 changed files with 42 additions and 4 deletions
+20 -2
View File
@@ -32,6 +32,24 @@ v1_router = v = APIRouter()
gEvent_handler = None gEvent_handler = None
CH_Event_map={
'CHUNKING':'文本切片',
'NODE_PARSING':'节点解析',
'EMBEDDING':'生成向量',
'LLM':'知识问答',
'QUERY':'查询',
'RETRIEVE':'检索',
'SYNTHESIZE':'答案合成',
'TREE':'总结',
'SUB_QUESTION':'问题分解',
'TEMPLATING':'生成提示词模板',
'FUNCTION_CALL':'函数调用',
'RERANKING':'节点重排',
'EXCEPTION':'执行异常',
'AGENT_STEP':'单步执行'
}
class ChatCallbackEvent(BaseModel): class ChatCallbackEvent(BaseModel):
event_type: ChatEventType event_type: ChatEventType
payload: Optional[Dict[str, Any]] = None payload: Optional[Dict[str, Any]] = None
@@ -99,7 +117,7 @@ class ChatCallbackEvent(BaseModel):
"id": self.payload.get('nodeid'), "id": self.payload.get('nodeid'),
"node_id": self.payload.get('nodeid'), "node_id": self.payload.get('nodeid'),
"node_type": "http-request", "node_type": "http-request",
"title": f"正在执行事件:{self.payload.get('title')}", "title": CH_Event_map[self.payload.get('title')],
"index": self.payload.get('index'), "index": self.payload.get('index'),
"predecessor_node_id": self.payload.get('predecessor_node_id'), "predecessor_node_id": self.payload.get('predecessor_node_id'),
"inputs": '', "inputs": '',
@@ -117,7 +135,7 @@ class ChatCallbackEvent(BaseModel):
"id": self.payload.get('nodeid'), "id": self.payload.get('nodeid'),
"node_id": self.payload.get('nodeid'), "node_id": self.payload.get('nodeid'),
"node_type": "http-request", "node_type": "http-request",
"title": f"事件执行结束:{self.payload.get('title')}", "title": CH_Event_map[self.payload.get('title')],
"index": self.payload.get('index'), "index": self.payload.get('index'),
"predecessor_node_id": self.payload.get('predecessor_node_id'), "predecessor_node_id": self.payload.get('predecessor_node_id'),
"inputs": '', "inputs": '',
@@ -43,6 +43,16 @@ class HybridRetriever(BaseRetriever):
for node in bmNodes: for node in bmNodes:
bmDic[node.node_id] = node bmDic[node.node_id] = node
vecScores = [node_with_score.score for node_with_score in vecNodes]
bmSores = [node_with_score.score for node_with_score in bmNodes]
vec_min_score = min(vecScores)
vec_max_score = max(vecScores)
bm_min_score = min(bmSores)
bm_max_score = max(bmSores)
result_tups = [] result_tups = []
for i in range(len(vecNodes)): for i in range(len(vecNodes)):
node = vecNodes[i] node = vecNodes[i]
@@ -52,7 +62,11 @@ class HybridRetriever(BaseRetriever):
bmDic.pop(node.node_id) bmDic.pop(node.node_id)
else: else:
bmScore = 0.0 bmScore = 0.0
full_similarity = (self._alpha * node.score) + (
bmScore = self.normal_score(bmScore,bm_min_score,bm_max_score)
vecScore = self.normal_score(node.score,vec_min_score,vec_max_score)
full_similarity = (self._alpha * vecScore) + (
(1 - self._alpha) * bmScore (1 - self._alpha) * bmScore
) )
result_tups.append((full_similarity, node)) result_tups.append((full_similarity, node))
@@ -64,4 +78,10 @@ class HybridRetriever(BaseRetriever):
result_tups = sorted(result_tups, key=lambda x: x[0], reverse=True) result_tups = sorted(result_tups, key=lambda x: x[0], reverse=True)
for full_score, node in result_tups: for full_score, node in result_tups:
node.score = full_score node.score = full_score
return [n for _, n in result_tups][:self._out_top_k] return [n for _, n in result_tups][:self._out_top_k]
def normal_score(self,score,min,max):
if min == max:
return 1.0 if score > 0 else 0.0
else:
return (score - min) / (max - min)