尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
知识增强生成技术解析:从《三国演义》到KAG实践
1. 项目概述当《三国演义》遇上知识增强生成KAG这个项目本质上是在探索如何将古典文学《三国演义》作为知识源构建一套完整的知识增强生成KAG技术栈。不同于简单的RAG检索增强生成KAG更强调结构化知识知识图谱与非结构化知识向量检索的协同工作。我们选择《三国演义》作为实验对象有几个原因首先它的人物关系网络复杂但边界清晰其次事件时间线明确最重要的是作为公共版权作品不存在数据合规问题。整个流程可以拆解为四个关键阶段首先用LLM从文本中抽取结构化知识人物、事件、关系然后存入Neo4j图数据库构建知识图谱接着设计召回评测机制验证知识检索效果最终实现基于图谱的问答闭环。这个过程中最有趣的部分在于——如何让LLM理解温酒斩华雄这样的典故不仅是一个事件节点还关联着关羽的武力值、曹操的识人眼光等隐含属性。2. 核心组件与技术选型2.1 知识抽取LLM作为信息萃取器我们测试了Qwen-72B和Llama3-70B两个大模型在三国知识抽取上的表现。实际操作中发现几个关键点实体识别需要自定义实体类型体系。除了常规的人物、地点、时间我们还定义了计谋如火烧赤壁、兵器如青龙偃月刀等特殊类型。以下是示例promptdef build_ner_prompt(text): return f从以下《三国演义》文本中提取实体 文本{text} 要求 1. 识别类型包括人物、组织、地点、时间、计谋、兵器 2. 输出JSON格式包含entity、type、start_pos、end_pos 示例输出 {{entities: [{{entity: 诸葛亮, type: 人物, start_pos: 15, end_pos: 18}}]}}关系抽取采用两阶段策略。先用简单prompt识别可能存在关系的句子再用详细prompt解析具体关系。实测发现对三英战吕布这类事件需要显式定义关系类型如交战包含参与者、结果、时间等属性。2.2 知识存储Neo4j图数据库设计Neo4j的图模型设计直接影响后续检索效率。我们的schema经过三次迭代初始版本简单的人物-关系-人物三元组优化版本引入事件节点作为关系载体如赤壁之战作为中心节点连接参战方、时间、地点等最终版本添加元数据节点如史料来源每个节点携带置信度分数LLM抽取时生成部署建议对于中小规模知识图谱100万节点Neo4j Community版足够重要配置调整dbms.memory.heap.initial_size4G dbms.memory.heap.max_size8G dbms.memory.pagecache.size2G2.3 召回评测不只是准确率设计了三层评估体系基础召回检查查询是否能找到相关节点如关羽的武器应召回青龙偃月刀路径推理测试多跳查询能力如孙权的妹妹的丈夫是谁时效验证对有时间演进的知识验证版本管理如吕布先后效忠的不同势力评测时发现一个有趣现象简单查询上纯向量检索通过embedding的准确率比图谱查询高15%但在需要逻辑推理的复杂查询上图谱方案领先40%以上。3. 完整实现流程3.1 知识抽取实操数据预处理使用OpenCC将繁体原文转为简体按章回分割文本每章作为一个处理单元对特殊表述添加注释如玄德标注为刘备批量抽取脚本from llama_cpp import Llama import json llm Llama(model_pathqwen-72b-q4_0.gguf) def extract_knowledge(text): prompt build_ner_prompt(text) output llm.create_completion(prompt, max_tokens2000) try: return json.loads(output[choices][0][text]) except: print(f解析失败: {output}) return {entities: []}后处理技巧实体归一化如云长→关羽冲突解决当不同章回抽取结果矛盾时取出现频次高的版本人工校验高频实体前20%的高频实体100%复核3.2 Neo4j数据导入使用APOC库实现高效批量导入CALL apoc.periodic.iterate( UNWIND $entities AS e RETURN e, MERGE (n:Entity {name: e.name}) SET n apoc.map.clean(e, [name], []), {batchSize:1000, params:{entities:$entities}})实测数据原始文本约64万字抽取实体12,487个关系9,832条导入耗时8分23秒MacBook Pro M1 Max3.3 问答系统实现采用混合检索架构用户问题同时发送给向量检索引擎和图数据库结果融合策略简单事实类优先采用图谱结果开放性问题结合向量检索结果生成示例API端点app.post(/query) def handle_query(question: str): # 向量检索路径 vector_results vector_search(question) # 图谱查询路径 cypher question_to_cypher(question) graph_results neo4j_query(cypher) # 结果融合 blended blend_results(vector_results, graph_results) # 生成最终回复 return llm_generate(blended)4. 避坑指南与性能优化4.1 常见问题排查LLM抽取不一致现象同一实体在不同段落被识别为不同类型解决添加前后文窗口提取实体时附带前后3句话Neo4j查询超时现象复杂查询如5跳以上响应慢优化MATCH path(a)-[*1..3]-(b) // 限制跳数 WHERE a.name 曹操 WITH path, [n IN nodes(path) WHERE n.confidence 0.7] AS high_conf_nodes RETURN path ORDER BY size(high_conf_nodes) DESC LIMIT 10混合检索冲突现象向量检索和图谱结果矛盾策略设置优先级规则如时间属性以图谱为准4.2 性能优化记录索引优化为所有实体名称创建全文索引关系类型单独索引CREATE INDEX entity_name IF NOT EXISTS FOR (n:Entity) ON (n.name)缓存策略高频查询结果缓存5分钟实体embedding预计算存储批量操作使用UNWIND代替单条INSERTAPOC的periodic.iterate控制批次大小5. 效果验证与业务价值我们设计了三个测试维度基础事实问答如赵云的字是什么准确率92.3%响应时间平均380ms关系推理如谁同时担任过曹操和刘备的谋士准确率87.1%需要2-3跳查询事件分析如分析赤壁之战中各方的得失生成质量人工评分4.2/5关键优势能关联到后续的三气周瑜事件与传统方法对比指标纯LLM问答向量检索RAG本方案(KAG)事实准确率68%82%91%推理能力随机有限强可解释性差中等高长尾查询表现不稳定一般优秀这个方案特别适合需要严谨知识推理的场景比如教育领域的智能辅导系统金融领域的投研知识分析法律条文关联查询我在实现过程中最深刻的体会是知识图谱不是简单的数据存储而是认知框架的数字化。当看到系统能自动推断出诸葛亮与司马懿的较量本质上是后勤体系的比拼时确实感受到了知识结构化带来的质变。
RELATED

相关推荐

出入尘世间

出入尘世间

截一缕青丝化为山水间一丝清风带走红尘岁月沉淀万古传统习俗梦一场借三生缘石续上人间春秋情话延续水石之约再现渊源生发空色愿为芳留四时雨露作别阡陌熙攘故旧出离中又见炊烟门庭院外里岸上望

📅 2026/9/14 9:11:05
MCP协议:大模型与工具交互的高效RPC方案

MCP协议:大模型与工具交互的高效RPC方案

1. MCP协议:大模型与工具交互的新范式 最近在调试一个基于大语言模型的自动化工作流时,我发现传统API调用方式存在明显的效率瓶颈。每次工具调用都需要完整地生成JSON请求体,这种"请求-等待-解析"的串行模式让响应时间变得难以接受…

📅 2026/9/13 12:03:18
YOLOv10在工业泄漏检测中的实战应用与优化

YOLOv10在工业泄漏检测中的实战应用与优化

## 1. 项目概述:当工业设备遇上AI火眼金睛去年在化工厂做安全巡检时,我发现老师傅们每天要花3小时拿着红外仪逐个检查管道接口。有次压缩机法兰盘微漏被漏检,差点酿成事故。这个经历让我决心开发一套基于YOLOv10的智能泄漏检测系统&#xff0…

📅 2026/9/17 14:05:41
MORE NEWS

更多资讯

📰

FP7209单节锂电升48V:单极/两级选型与24V改48V变更

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

从AIGC检测到降AI率:8个工具与实操避坑指南

开篇先讲个真实场景:前阵子帮几个专科生看课程论文,他们不是没写,是真写了——先用AI搭框架,再自己补数据、贴案例、熬夜改了两轮。结果提交到学校的写作系统,直接弹出一个刺眼的“疑似AI生成”。申诉吧,检…

📰

Win10家庭版中文用户名故障根因与三步修复法

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

原生多模态Agent:从工作流编排到感知融合的架构跃迁

1. 这不是“换了个壳”,而是多模态 Agent 架构逻辑的根本性迁移最近在几个技术群里,总有人拿着“火山引擎原生多模态”和“传统工作流编排”放在一起比参数、比吞吐量、比响应延迟——这就像拿一台燃油车的百公里油耗,去对比一辆电驱混动系统…

📰

数字频带传输系统全解析:2ASK/2FSK/2PSK原理、带宽与误码率仿真

简介:面向通信工程、电子信息等专业学生的数字频带传输系统学习资料,系统讲解数字调制系统的基本框架与核心原理,涵盖2ASK、2FSK等键控方式的信号产生、功率谱分析及带宽计算,可辅助课程复习、考研备战与自学入门。资源为单个PDF文…

📰

IDEA EasyYapi:代码驱动YApi接口文档双向同步实践

接口文档这件事,做后端的朋友应该都有体会:代码改完了,文档还得手动同步一遍。字段改个名、加个必填校验、路径从 /user/list 挪到 /user/page,这些东西在 YApi 上不改吧,前端联调时就要来问你;改吧&#x…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬