feat: 新增LPMM知识库模块及工具支持
- 新增LPMM知识库模块,包括实体提取、RDF构建、Embedding存储、KG管理等功能 - 新增`lpmm_get_knowledge`工具,支持从LPMM知识库中检索相关信息 - 新增OpenIE数据处理模块,支持信息提取、数据导入等功能 - 新增知识库初始化脚本,支持从原始数据到知识库的完整处理流程 - 新增配置文件`lpmm_config.toml`,支持自定义知识库相关参数 - 新增日志模块`LPMM_STYLE_CONFIG`,支持知识库相关日志输出 - 新增`raw_data_preprocessor.py`、`info_extraction.py`、`import_openie.py`等脚本,支持知识库数据预处理
This commit is contained in:
@@ -5,14 +5,15 @@ from ...individuality.individuality import Individuality
|
||||
from src.plugins.utils.prompt_builder import Prompt, global_prompt_manager
|
||||
from src.plugins.utils.chat_message_builder import build_readable_messages, get_raw_msg_before_timestamp_with_chat
|
||||
from src.plugins.person_info.relationship_manager import relationship_manager
|
||||
from src.plugins.chat.utils import parse_text_timestamps
|
||||
from src.plugins.chat.utils import get_embedding, parse_text_timestamps
|
||||
import time
|
||||
from typing import Union
|
||||
from ...common.database import db
|
||||
from ..chat.utils import get_embedding, get_recent_group_speaker
|
||||
from ..chat.utils import get_recent_group_speaker
|
||||
from ..moods.moods import MoodManager
|
||||
from ..memory_system.Hippocampus import HippocampusManager
|
||||
from ..schedule.schedule_generator import bot_schedule
|
||||
from ..knowledge.knowledge_lib import qa_manager
|
||||
|
||||
logger = get_module_logger("prompt")
|
||||
|
||||
@@ -325,11 +326,10 @@ class PromptBuilder:
|
||||
|
||||
return prompt
|
||||
|
||||
async def get_prompt_info(self, message: str, threshold: float):
|
||||
async def get_prompt_info_old(self, message: str, threshold: float):
|
||||
start_time = time.time()
|
||||
related_info = ""
|
||||
logger.debug(f"获取知识库内容,元消息:{message[:30]}...,消息长度: {len(message)}")
|
||||
|
||||
# 1. 先从LLM获取主题,类似于记忆系统的做法
|
||||
topics = []
|
||||
# try:
|
||||
@@ -475,6 +475,31 @@ class PromptBuilder:
|
||||
logger.info(f"知识库检索总耗时: {time.time() - start_time:.3f}秒")
|
||||
return related_info
|
||||
|
||||
async def get_prompt_info(self, message: str, threshold: float):
|
||||
|
||||
related_info = ""
|
||||
start_time = time.time()
|
||||
|
||||
logger.debug(f"获取知识库内容,元消息:{message[:30]}...,消息长度: {len(message)}")
|
||||
# 从LPMM知识库获取知识
|
||||
found_knowledge_from_lpmm = qa_manager.get_knowledge(message)
|
||||
|
||||
end_time = time.time()
|
||||
if found_knowledge_from_lpmm is not None:
|
||||
logger.debug(f"从LPMM知识库获取知识,相关信息:{found_knowledge_from_lpmm[:100]}...,信息长度: {len(found_knowledge_from_lpmm)}")
|
||||
related_info += found_knowledge_from_lpmm
|
||||
logger.debug(f"获取知识库内容耗时: {(end_time - start_time):.3f}秒")
|
||||
logger.debug(f"获取知识库内容,相关信息:{related_info[:100]}...,信息长度: {len(related_info)}")
|
||||
return related_info
|
||||
else:
|
||||
logger.debug("从LPMM知识库获取知识失败,使用旧版数据库进行检索")
|
||||
knowledge_from_old = await self.get_prompt_info_old(message, threshold=0.38)
|
||||
related_info += knowledge_from_old
|
||||
logger.debug(f"获取知识库内容,相关信息:{related_info[:100]}...,信息长度: {len(related_info)}")
|
||||
return related_info
|
||||
|
||||
|
||||
|
||||
@staticmethod
|
||||
def get_info_from_db(
|
||||
query_embedding: list, limit: int = 1, threshold: float = 0.5, return_raw: bool = False
|
||||
|
||||
Reference in New Issue
Block a user