将事件名称转义成中文及优化关键字检索
This commit is contained in:
@@ -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)
|
||||||
Reference in New Issue
Block a user