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/8/13 1:37:58 阅读更多 →
Spring Boot房车营地管理系统:从需求到实现的毕业设计实战指南

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

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

2026/8/13 1:37:58 阅读更多 →
C++字典树(Trie)模板详解:原理、实现与实战应用

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

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

2026/8/13 1:37:58 阅读更多 →

最新新闻

Windows 10 多版本Java环境配置与动态切换实战指南

Windows 10 多版本Java环境配置与动态切换实战指南

1. 项目概述:为什么我们需要同时管理多个Java版本?如果你是一名Java开发者,或者你的工作环境需要运行基于不同Java版本构建的应用程序,那么“一台机器,多个JDK”几乎是绕不开的配置。我自己的开发机上就常年共存着Java…

2026/8/13 2:29:18 阅读更多 →
Windows 10双版本Java环境配置:脚本切换与IDE集成实战

Windows 10双版本Java环境配置:脚本切换与IDE集成实战

1. 项目概述:为什么我们需要双版本Java?如果你是一个Java开发者,或者你的工作环境里需要运行一些基于不同Java版本的老项目和新工具,那么“同时安装Java 8和Java 17”这个需求,大概率你已经遇到了,或者即将…

2026/8/13 2:29:18 阅读更多 →
AI应用成本控制实战:从Canva与Figma看推理成本与商业模式平衡

AI应用成本控制实战:从Canva与Figma看推理成本与商业模式平衡

这次我们来看一个关于AI应用公司商业模式和成本压力的深度分析。标题“AI应用公司毛利故事遭遇首次‘体检’:Canva主动降速,Figma自吞推理成本”直接点出了当前AI应用层公司面临的核心挑战:当技术红利期过去,真实的商业成本和盈利…

2026/8/13 2:29:18 阅读更多 →
使用Fiddler与Wireshark深度分析Cookie与Session:从原理到实战排查

使用Fiddler与Wireshark深度分析Cookie与Session:从原理到实战排查

1. 项目概述:从“黑盒”到“白盒”的会话追踪在日常的Web开发、测试或者安全分析工作中,我们经常听到“Cookie”和“Session”这两个词。它们就像是网站用来记住“你是谁”的身份证和通行证。前端工程师可能会在浏览器的开发者工具(F12&#…

2026/8/13 2:29:18 阅读更多 →
微信机器人终极指南:30分钟构建多平台AI助手系统

微信机器人终极指南:30分钟构建多平台AI助手系统

微信机器人终极指南:30分钟构建多平台AI助手系统 【免费下载链接】wechat-bot 🤖 Multi-platform IM AI Agent for Telegram, WhatsApp, Lark, and WeChat. Connects ChatGPT / Claude / Kimi / DeepSeek / Ollama / Pi for auto-replies, community ana…

2026/8/13 2:29:18 阅读更多 →
前端加密实战:crypto-js与jsencrypt的对称与非对称加密应用

前端加密实战:crypto-js与jsencrypt的对称与非对称加密应用

1. 项目概述:为什么前端开发者需要掌握加密在今天的Web开发里,数据安全早就不是后端工程师的专属话题了。一个合格的前端开发者,必须有能力在数据离开浏览器、踏上网络征途之前,为它披上一层可靠的“盔甲”。这不仅仅是保护用户密…

2026/8/13 2:28:17 阅读更多 →

日新闻

Visual Studio新建项目解决方案为空:系统性排查与修复指南

Visual Studio新建项目解决方案为空:系统性排查与修复指南

1. 问题现象与本质剖析如果你是一位.NET开发者,或者正准备踏入这个领域,那么Visual Studio(后面简称VS)绝对是你绕不开的伙伴。但有时候,这个伙伴会跟你开一个不大不小的玩笑:你满怀期待地点击“创建新项目…

2026/8/13 0:00:09 阅读更多 →
长春建设厅网站:普通人买房办事必看的真实指南与避坑攻略

长春建设厅网站:普通人买房办事必看的真实指南与避坑攻略

说实话,每次提起“长春建设厅网站”这几个字,我心里都挺有感触的。不是因为它有多高大上,也不是因为那里藏着什么不可告人的秘密,恰恰相反,是因为它太“接地气”了,或者说,它是咱们普通人想要在这个城市好好生活、安稳买房时,必须得翻过的一座“数据山”。很多新朋友第…

2026/8/13 0:00:09 阅读更多 →
Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案

Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案

Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案 【免费下载链接】rdpwrap.ini RDPWrap.ini for RDP Wrapper Library by StasM 项目地址: https://gitcode.com/GitHub_Trending/rd/rdpwrap.ini 你是否曾为Windows家庭版无法支持多用户远程桌面…

2026/8/13 0:00:09 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/12 1:11:09 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/12 1:11:09 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/12 1:11:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/11 17:09:45 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/12 1:11:10 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/11 17:09:45 阅读更多 →