84.图RAG-llamaindex图谱关系提取器-动态提取器
内容参考于图灵AI大模型全栈图谱关系提取器的选择提取器类型用途实现逻辑是否调用LLM推荐指数SimpleLLMPathExtractor三元组抽取快速构建知识图谱Prompt → LLM → 抽取 Entity-Relation-Entity✅⭐⭐DynamicLLMPathExtractor动态图谱抽取自动发现实体类型和关系类型Prompt → LLM → 实体分类 → 关系推断✅⭐⭐⭐SchemaLLMPathExtractorSchema约束抽取企业级GraphRAGPrompt Schema → LLM → 验证 → 输出✅⭐⭐⭐⭐⭐ImplicitPathExtractor隐式关系抽取保留文档结构关系根据Node Relationship自动生成边❌⭐⭐⭐⭐通过默认的提取器生成的知识图谱内容很怪如下图红框它的分类看起来就很怪如果看不出来继续往下看对比一下就看出来了DynamicLLMPathExtractor动态提取器逻辑首先还是获取文档然后对文档进行分割分割完的数据跟大模型提示词组合提示词的组合逻辑如下图4中请从以下文本中抽取实体及实体之间的关系按照给定的格式返回文本xxx返回结果然后提取所有的实体然后提取关系然后过滤然后写到数据库中它的逻辑和默认提取器差不多但是它多了可配置参数可以限制 entity_tupes实体类型relation_types关系类型等就是可以选择这个节点实体它必须是人物或其它什么东西我们可以对它进行限制默认提取器的提示词源码查看步骤按着CTRL鼠标左键单击下图红框然后再按着CTRL鼠标左键单击下图红框然后再按着CTRL鼠标左键单击下图红框然后就可以看到默认提取器使用的提示词来如下图红框翻译的中文如下图DynamicLLMPathExtractor生成的分类它生成的就很好它和默认提取器的区别就是提示词不一样但是它是英文的默认提示词就会是英文的还有一个提取器会使用它进行完整的图生成DynamicLLMPathExtractor的提示词按着CTRL鼠标左键单击下图红框如下图红框它有两种提示词如下图红框如果有指定实体类型也就是设置了 allowed_entity_props它的值或者设置了关系类型也就是设置了allowed_relation_props它的值就会使用DEFAULT_DYNAMIC_EXTRACT_PROMPT这个提示词大模型就会尽力根据我们指定的类型进行提取比如让大模型必须提取出人物、地点这些数据如果实在不匹配它就按着自己的逻辑进行提取也就是说按着我们指定的逻辑提出不出来内容就按着大模型自己的逻辑进行提取这就是动态提取这种的虽然我们可以干预结果但是还是差点事下一节还有提取器更好用什么参数都不传递它会使用下图红框的提示词按着CTRL鼠标左键单击下图红框然后再按着CTRL鼠标左键单击下图红框下图红框就是它的提示词中文翻译“从给定文本中提取最多{max_knowledge_triplets}个知识三元组。” 每个三元组应该以head、relation、tail的形式存在并具有各自的类型和属性。\n “----------------------\n” “初始本体\n” “实体类型{allowed_Entity_Types}\n” “实体属性{allowed_Entity_Properties}\n” “关系类型{allowed_Relation_Types}\n” “关系属性{allowed_Relation_Properties}\n” “\n” 使用这些类型作为起点但如果需要请根据上下文引入新类型。\n “\n” “指南\n” “-JSON格式的输出[{{headhead_typehead_props{{…}}关系关系_props:{{¡­}}、tail、tail_type:tail_props]\n” -对实体使用最完整的形式例如“美利坚合众国”而不是“美国”\n “-保持实体简洁最多3-5个字\n” “-将复杂短语分解为多个三元组\n” “-确保知识图连贯且易于理解\n” “----------------------\n” “示例\n” 文本苹果公司AppleInc.首席执行官蒂姆·库克TimCook宣布推出新的苹果手表用于监测心脏健康 “加州大学伯克利分校的研究人员研究了苹果的好处。\n” “输出\n” “[{{headTim Cookhead_typePERSONhead_props{{prop1val…}}关系CEO_OF关系_props:{{rop1val…}tail苹果公司尾类型公司tail_props:{{prop1val…{}}}}、\n” “{{headApple Inc.head_typeCOMPANYhead_props{{prop1val…}}relation产品关系_props{{prop1val…}尾巴苹果手表尾巴类型PRODUCTtail_props:{{rop1val…{}}}。\n” “{{head苹果手表head_type产品head_props{{prop1val…}}关系监视器relation_props:{{rop1val…}tail心脏健康尾巴类型健康H_METRICtail_props:{prop2val…{}}}}、\n” “{{headUC Berkeleyhead_type大学head_props{{prop1val…}}关系研究relation_props:{{rop1val…}tail苹果的好处tail_type:RESEARCH_TOPICtail_props:{prop1val…{}}}]\n” “----------------------\n” “文本{Text}\n” “输出\n”然后另一个提示词按着CTRL鼠标左键单击下图红框然后再按着CTRL鼠标左键单击下图红框如下图红框它的提示词中文翻译“从给定文本中提取最多{max_knowledge_triplets}个知识三元组。” 每个三元组应该以头、关系、尾的形式存在并具有各自的类型。\n “----------------------\n” “初始本体\n” “实体类型{allowed_Entity_Types}\n” “关系类型{allowed_Relation_Types}\n” “\n” 使用这些类型作为起点但如果需要请根据上下文引入新类型。\n “\n” “指南\n” “-JSON格式的输出[{{headhead_type、关系tail尾类型}]\n” -对实体使用最完整的形式例如“美利坚合众国”而不是“美国”\n “-保持实体简洁最多3-5个字\n” “-将复杂短语分解为多个三元组\n” “-确保知识图连贯且易于理解\n” “----------------------\n” “示例\n” 文本苹果公司AppleInc.首席执行官蒂姆·库克TimCook宣布推出新的苹果手表用于监测心脏健康 “加州大学伯克利分校的研究人员研究了苹果的好处。\n” “输出\n” “[{{headTim Cookhead_typePERSON关系CEO_OFtailApple Inc.尾类型COMPANY}\n” “{{head苹果公司head_type公司关系产品尾巴Apple Watch尾类型商品}}\n” “{{head苹果手表head_type产品关系监视器尾巴心脏健康尾类型健康H_METRIC}\n” “{{头部加州大学伯克利分校头部类型大学关系研究尾巴苹果的好处尾部类型RESEARCH_TOPIC}]\n” “----------------------\n” “文本{Text}\n” “输出\n”代码运行效果图可以看到大模型给我们的CQL语法的查询逻辑它就会根据查询出来的内容进行拼接然后给大模型进行回答问题代码import asyncio from pathlib import Path from llama_index.core import SimpleDirectoryReader, Settings from llama_index.core.node_parser import SentenceSplitter from llama_index.core.indices.property_graph import PropertyGraphIndex, DynamicLLMPathExtractor from llama_index.core.ingestion import IngestionPipeline, IngestionCache from llama_index.core.storage.kvstore import SimpleKVStore from llama_index.graph_stores.neo4j import Neo4jPropertyGraphStore from base_llm import llm, embed_model # 设置全局大模型 Settings.llm llm # 创建Neo4j数据库连接 graph_store Neo4jPropertyGraphStore( usernameneo4j, password11111111, urlbolt://localhost:7687, ) # 读取文档 documents SimpleDirectoryReader( input_files[./data_file/小说.txt] ).load_data() # 缓存地址 path ./cache/cache.json # 获取文件对象 file_path Path(path) # 判断文件是否存在也就是判断缓存是否存在 if file_path.is_file(): print(缓存文件存在) # 创建缓存模式kv缓存 kvstore SimpleKVStore.from_persist_path(path) # 创建缓存 cache IngestionCache( cachekvstore ) else: print(缓存文件不存在) # 创建缓存模式kv缓存 kvstore SimpleKVStore() # 创建缓存 cache IngestionCache( cachekvstore ) # 创建摄取管道 pipeline IngestionPipeline( # 设置文档处理器 transformations[ # 文本分割器 SentenceSplitter(chunk_size512, chunk_overlap50), # 动态提取 DynamicLLMPathExtractor(llmllm) ], # 设置缓存 cachecache # 本地缓存避免重复调用 LLM ) # 使用摄取器生成节点自动处理缓存/增量 nodes pipeline.run(documentsdocuments, show_progressTrue) print(nodes) # 构建 PropertyGraphIndex 并写入 Neo4j也就是创建图索引 index PropertyGraphIndex( nodesnodes, # 设置数据库连接 property_graph_storegraph_store, # 设置大模型 llmllm, # 设置向量模型 embed_modelembed_model ) kvstore.persist(path) print(图谱处理完成含缓存增量机制) # 创建查询引擎 query_engine index.as_query_engine(llmllm) res query_engine.query(萧炎的父亲是谁?) print(回答:, res) # 使用检索器查看上下文节点 retriever index.as_retriever() nodes retriever.retrieve(萧炎的父亲是谁?) for node in nodes: print(*50) print(node.text) print() # 关闭 Neo4j连接 graph_store.close() asyncio.run(graph_store._async_driver.close())

相关新闻

3分钟学会:用这个开源工具轻松下载无水印抖音视频 [特殊字符]

3分钟学会:用这个开源工具轻松下载无水印抖音视频 [特殊字符]

3分钟学会:用这个开源工具轻松下载无水印抖音视频 🚀 【免费下载链接】douyin_downloader 抖音短视频无水印下载 win编译版本下载:https://www.lanzous.com/i9za5od 项目地址: https://gitcode.com/gh_mirrors/dou/douyin_downloader …

2026/10/17 9:52:57 阅读更多 →
Spring Boot房车营地管理系统:从需求到实现的毕业设计实战指南

Spring Boot房车营地管理系统:从需求到实现的毕业设计实战指南

最近在辅导学生毕设选题时,发现很多同学对“管理系统”类项目存在误解,认为只有电商、OA、图书管理才算“正经”选题。其实,结合具体、新颖的业务场景,比如旅游露营、房车营地,同样能做出技术扎实、功能完整、亮点突出…

2026/10/17 9:54:37 阅读更多 →
C++字典树(Trie)模板详解:原理、实现与实战应用

C++字典树(Trie)模板详解:原理、实现与实战应用

1. 项目概述:为什么字典树是C算法工具箱里的“瑞士军刀”?在C的算法世界里,我们常常需要处理字符串集合的快速查找、前缀匹配这类问题。比如,搜索引擎的输入提示、通讯录的姓名快速检索,或者检查一个单词是否在百万级的…

2026/10/17 9:56:36 阅读更多 →

最新新闻

极小函数依赖集求解算法:拆、删、消三步与手算例题

极小函数依赖集求解算法:拆、删、消三步与手算例题

函数依赖的极小化,大概是数据库原理课里最让人“背得下定义却下不了笔”的考点了。提到极小函数依赖集,多数人都能背出三条:右部单属性、没有冗余依赖、没有冗余属性。可真给你一张函数依赖集F,让你求Fmin,很多人第一步…

2026/10/19 20:55:12 阅读更多 →
数据可视化全流程实操:Python+Seaborn从选图到避坑

数据可视化全流程实操:Python+Seaborn从选图到避坑

某高校的数据能力提升营走到第7天,主题就是数据可视化。这个营我们内部一直叫它“疏锦行”,名字听着文艺,实际任务却很务实:一周时间,从数据采集一路练到统计建模,而第7天这一天,不带任何新模型…

2026/10/19 20:55:12 阅读更多 →
线性回归从手写梯度下降到sklearn实战:原理、特征工程与过拟合避坑

线性回归从手写梯度下降到sklearn实战:原理、特征工程与过拟合避坑

如果你只会调包,那线性回归等于没学会作为数据分析或者机器学习入门的第一课,线性回归几乎是所有人都会遇到的第一个模型。我见过太多人上来就from sklearn.linear_model import LinearRegression,然后fit、predict、打印个 R 就算完事。真要…

2026/10/19 20:55:12 阅读更多 →
达梦数据库大小写敏感机制详解:从原理到实践避坑

达梦数据库大小写敏感机制详解:从原理到实践避坑

1. 项目概述:达梦大小写敏感到底是个什么事做数据库开发或者运维的朋友,只要是第一次接触达梦数据库,十有八九会遇到一个让人摸不着头脑的现象:明明建表时写的是 "USER_INFO",去查询的时候写 "user_inf…

2026/10/19 20:52:07 阅读更多 →
C++ std::bind实战:占位符、引用陷阱与lambda取舍

C++ std::bind实战:占位符、引用陷阱与lambda取舍

1. 我为什么又回头研究bind:代码里最不起眼的粘连剂搞C时间一长,你会发现真正让代码"绕起来"的往往不是那些宏大设计,而是一堆不起眼的小工具。std::bind就是其中之一。最近接手的某调度模块里,回调参数七零八落&#x…

2026/10/19 20:52:07 阅读更多 →
双麦克风语音分离:基于GCC-PHAT与IVA的轻量级实时声源解耦方案

双麦克风语音分离:基于GCC-PHAT与IVA的轻量级实时声源解耦方案

简介:本资源是一套基于MATLAB实现的双麦克风语音分离完整源码工程,面向音频信号处理初学者、语音算法研究者及高校相关课程实践者,聚焦于利用TDOA与空间滤波技术从混合语音中分离目标声源,适用于噪声抑制、会议系统增强与语音识别…

2026/10/19 20:52:07 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

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

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/18 12:16:16 阅读更多 →