用知识图探索哈利波特的世界
目的
您是一名哈利波特迷,想要掌握哈利波特宇宙的一切吗?或者您只是想用一张很酷的图表来展示《哈利·波特》中不同角色如何组合在一起,给您的朋友留下深刻印象?看看知识图就知道了。
本指南将向您展示如何仅使用笔记本电脑和您最喜欢的书在 Neo4J 中获取知识图。
什么是知识图谱
根据维基百科:
知识图谱是使用图结构数据模型或拓扑来表示和操作数据的知识库。
你需要什么
硬件方面,你只需要一台电脑,最好是Nvidia显卡。为了完全自给自足,我将选择本地法学硕士设置,但也可以轻松使用 OpenAI API 来实现相同目的。
设置步骤
您将需要以下内容:
- Ollama,和你最喜欢的法学硕士
- Python 环境
- Neo4J
奥拉马
当我在 WSL2 中的 Ubuntu 24.04 上进行编码时,为了轻松传递任何 GPU 工作负载,我使用 Ollama docker。将 Ollama 作为 docker 容器运行非常简单,只需首先安装 Nvidia 容器工具包,然后执行以下操作:
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
如果您没有 Nvidia GPU,您可以在 CLI 中使用以下命令运行仅 CPU 的 Ollama:
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
完成后,您可以将您最喜欢的 LLM 模型拉入 Ollama。 Ollama 上可用的型号列表位于此处。例如,如果我想拉取 qwen2.5,我可以在 CLI 中运行以下命令:
docker exec -it ollama ollama run qwen2.5
Ollama 就完成了!
Python环境
您首先需要创建一个 python 虚拟环境,以便您安装的任何软件包或您所做的任何配置更改都仅限于该环境内,而不是全局应用。以下命令将创建一个虚拟环境 harry-potter-rag:
python -m venv harry-potter-rag
然后您可以使用以下命令激活虚拟环境:
source tutorial-env/bin/activate
接下来使用pip安装相关包,主要来自LangChain:
%pip install --upgrade --quiet langchain langchain-community langchain-openai langchain-experimental neo4j
设置 Neo4J
我们将把 Neo4J 设置为 Docker 容器。为了便于设置特定配置,我们使用 docker compose。您只需将以下内容复制到名为 docker-compose.yaml 的文件中,然后在同一目录中运行 docker-compose up -d 即可设置 Neo4J。
此设置还确保数据、日志和插件保留在本地文件夹中,即 /data。 /日志和插件。
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
构建知识图谱
我们现在可以开始在 Jupyter Notebook 中构建知识图了!我们首先使用以下命令设置 Ollama LLM 实例:
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
接下来,我们将 LLM 连接到 Neo4J:
docker exec -it ollama ollama run qwen2.5
现在,是时候抓取你最喜欢的哈利波特文本,或者任何最喜欢的书了,我们将使用 LangChain 将文本分割成块。分块是一种将长文本分解为多个部分的策略,然后我们可以将每个部分发送到 LLM 将其转换为节点和边,并将每个块的节点和边插入到 Neo4J 中。只是一个快速入门,节点是您在图表上看到的圆圈,每条边将两个节点连接在一起。
代码还会打印第一个块,以便快速预览这些块的外观。
python -m venv harry-potter-rag
现在,是时候让我们的 GPU 完成繁重的工作并将文本转换为知识图了!在深入研究整本书之前,让我们尝试一下提示,以更好地指导 LLM 以我们想要的方式返回图表。
提示本质上是我们期望的示例,或者是我们希望在响应中出现的内容的说明。在知识图谱的背景下,我们可以指示法学硕士仅提取人员和组织作为节点,并且仅接受给定实体的某些类型的关系。例如,我们可以允许配偶关系只发生在一个人与另一个人之间,而不是发生在一个人与一个组织之间。
我们现在可以在第一个文本块上使用 LLMGraphTransformer 来查看图形的结果。这是我们调整提示的好机会,直到结果符合我们的喜好。
以下示例期望节点可以是个人或组织,并且 allowed_relationships 指定允许的关系类型。为了让LLM能够捕获原文的多样性,我还将strict_mode设置为False,这样下面未定义的任何其他关系或实体也可以被捕获。如果您将 strict_mode 设置为 True,则不符合允许的实体和关系可能会被删除,或强制进入允许的范围(这可能不准确)。
source tutorial-env/bin/activate
对提示的微调感到满意后,现在是时候摄取知识图了。请注意,try - except 是为了显式处理无法正确插入 Neo4J 的任何响应 - 代码的设计是为了记录任何错误,但不会阻止循环继续将后续块转换为图形。
docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
上面的循环花了我大约 46 分钟来消化《哈利·波特与魔法石》、《哈利·波特与密室》和《哈利·波特与阿兹卡班的囚徒》。我最终得到了 4868 个独特的节点!下面提供了快速预览。你可以看到这张图真的很拥挤,而且很难区分谁与谁相关,以及以什么方式相关。
我们现在可以利用密码查询来查看邓布利多!
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
好吧,现在我们只剩下邓布利多本人了。来看看他和哈利波特有什么关系。
docker exec -it ollama ollama run qwen2.5
好的,现在我们对哈利和邓布利多所说的话感兴趣。
python -m venv harry-potter-rag
我们可以看到该图仍然非常混乱,需要查阅许多文档才能真正找到我们要找的东西。我们可以看到,文档作为节点的建模并不理想,还可以在 LLMGraphTransformer 上做进一步的工作,使图使用起来更加直观。
结论
您可以看到在自己的本地计算机上设置知识图是多么容易,甚至不需要连接到互联网。
github 存储库,其中还包含哈利波特宇宙的整个知识图谱,可在此处获取。
后记
要将 harry_potter.graphml 文件导入 Neo4J,请将 graphml 文件复制到 neo4j /import 文件夹中,然后在 Neo4J 浏览器上运行以下命令:
source tutorial-env/bin/activate
以上是用知识图探索哈利波特的世界的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。 Python以简洁和强大的生态系统着称,C 则以高性能和底层控制能力闻名。

两小时内可以学到Python的基础知识。1.学习变量和数据类型,2.掌握控制结构如if语句和循环,3.了解函数的定义和使用。这些将帮助你开始编写简单的Python程序。

Python在游戏和GUI开发中表现出色。1)游戏开发使用Pygame,提供绘图、音频等功能,适合创建2D游戏。2)GUI开发可选择Tkinter或PyQt,Tkinter简单易用,PyQt功能丰富,适合专业开发。

2小时内可以学会Python的基本编程概念和技能。1.学习变量和数据类型,2.掌握控制流(条件语句和循环),3.理解函数的定义和使用,4.通过简单示例和代码片段快速上手Python编程。

Python更易学且易用,C 则更强大但复杂。1.Python语法简洁,适合初学者,动态类型和自动内存管理使其易用,但可能导致运行时错误。2.C 提供低级控制和高级特性,适合高性能应用,但学习门槛高,需手动管理内存和类型安全。

要在有限的时间内最大化学习Python的效率,可以使用Python的datetime、time和schedule模块。1.datetime模块用于记录和规划学习时间。2.time模块帮助设置学习和休息时间。3.schedule模块自动化安排每周学习任务。

Python在web开发、数据科学、机器学习、自动化和脚本编写等领域有广泛应用。1)在web开发中,Django和Flask框架简化了开发过程。2)数据科学和机器学习领域,NumPy、Pandas、Scikit-learn和TensorFlow库提供了强大支持。3)自动化和脚本编写方面,Python适用于自动化测试和系统管理等任务。

Python在自动化、脚本编写和任务管理中表现出色。1)自动化:通过标准库如os、shutil实现文件备份。2)脚本编写:使用psutil库监控系统资源。3)任务管理:利用schedule库调度任务。Python的易用性和丰富库支持使其在这些领域中成为首选工具。
