feat:优化记忆查询表现

This commit is contained in:
SengokuCola
2025-11-18 19:38:45 +08:00
parent a392608b7e
commit 43754b5c18
6 changed files with 95 additions and 110 deletions

View File

@@ -98,8 +98,13 @@ class QAManager:
return result, ppr_node_weights
async def get_knowledge(self, question: str) -> Optional[str]:
"""获取知识"""
async def get_knowledge(self, question: str, limit: int = 5) -> Optional[str]:
"""获取知识
Args:
question: 查询问题
limit: 返回的相关知识条数
"""
# 处理查询
processed_result = await self.process_query(question)
if processed_result is not None:
@@ -109,6 +114,8 @@ class QAManager:
logger.debug("知识库查询结果为空,可能是知识库中没有相关内容")
return None
limit = max(1, limit) if isinstance(limit, int) else 5
knowledge = [
(
self.embed_manager.paragraphs_embedding_store.store[res[0]].str,
@@ -116,9 +123,18 @@ class QAManager:
)
for res in query_res
]
found_knowledge = "\n".join(
[f"{i + 1}条知识:{k[0]}\n 该条知识对于问题的相关性:{k[1]}" for i, k in enumerate(knowledge)]
)
# max_score = max([k[1] for k in knowledge]) if knowledge else None
selected_knowledge = knowledge[:limit]
formatted_knowledge = [
f"{i + 1}条知识:{k[0]}\n 该条知识对于问题的相关性:{k[1]}"
for i, k in enumerate(selected_knowledge)
]
# if max_score is not None:
# formatted_knowledge.insert(0, f"最高相关系数:{max_score}")
found_knowledge = "\n".join(formatted_knowledge)
if len(found_knowledge) > MAX_KNOWLEDGE_LENGTH:
found_knowledge = found_knowledge[:MAX_KNOWLEDGE_LENGTH] + "\n"
return found_knowledge