本项目融合知识图谱与 RAG 技术,实现基于知识图谱的智能问答。
一、任务核心
完成环境配置;
构建基于知识图谱和 LLM 的聊天引擎;
使用 Streamlit 开发前端交互界面。
二、后端功能模块
环境与模块导入
设置运行环境,导入基础库,配置 UTF - 8 编码和 INFO 级日志记录。
Streamlit 配置
引入 Streamlit 及组件,用于构建前端交互界面。
LLM 与 Embedding 配置
配置 OpenAI LLM,创建文本嵌入模型实例。
Service Context 设置
构建全局服务上下文,设定 LLM 和分块大小。
Nebula Graph 配置
通过环境变量连接 Nebula Graph,配置图存储相关参数,创建存储上下文。
索引管理
尝试加载已有索引,若失败则根据本地数据重建索引并保存。
查询引擎构建
基于知识图谱索引创建查询引擎。
聊天历史管理
用 ChatMemoryBuffer 记录聊天历史,控制内存,保障对话连贯。
聊天引擎创建
采用 react 模式,结合记忆缓冲区,创建基于知识图谱的聊天引擎。
三、前端交互界面
使用 Streamlit 搭建,实现用户提问、查看回答,侧边栏可查询图谱并可视化结果。
完成页面配置、标题描述设置,实现聊天记录初始化、用户输入处理、后端调用回复,以及侧边栏查询交互功能 。
四、关键函数解析
query_nebulagraph
执行 NebulaGraph 查询;
result_to_df
将查询结果转为 DataFrame;
create_pyvis_graph
用 Pyvis 绘制交互图;
render_pd_item
按元素类型添加到 PyVis 图中。
五、完整代码及操作说明
注意 day6 和 day5 代码版本不同,需新建 conda 环境。首次运行索引加载失败属正常,会自动建立索引,等待 1 - 2 分钟后可显示网页。
文件结构如下:
配置环境可任选 environment.yml 或 requirements.txt :
windows 用 environment.yml 创建环境可能有问题,建议用 requirements.txt;ubuntu 可直接使用 environment.yml 。
领取专属 10元无门槛券
私享最新 技术干货