【待修改】使用GraphRAG+LangChain+Ollama(LLaMa 3.1)知识图谱与向量数据库集成(Neo4j)

news/2024/10/19 10:16:06/

如何使用 LLama 3.1(一个本地运行的模型)来执行GraphRAG操作,总共就50号代码。

首先,什么是GraphRAG?GraphRAG是一种通过考虑实体和文档之间的关系来执行检索增强生成的方式,关键概念是节点和关系

图片

▲ 知识图谱与向量数据库集成

 知识图谱与向量数据库集成是GraphRAG 架构之一:这种方法利用知识图谱和向量数据库来收集相关信息。知识图谱的构建方式可以捕获向量块之间的关系,包括文档层次结构。知识图谱在从向量搜索中检索到的块附近提供结构化实体信息,从而通过有价值的附加上下文丰富提示。这个丰富的提示被输入到 LLM 中进行处理,然后 LLM 生成响应。最后,生成的答案返回给用户。此架构适用于客户支持、语义搜索和个性化推荐等用例。

节点代表从数据块中提取的实体或概念,例如人、组织、事件或地点

知识图谱中,每个节点都包含属性和特性,这些属性为实体提供了更多上下文信息。

然后我们定义节点之间的连接关系,这些连接可以包括各种类型的关联,例如层次结构(如父子关系)、时间顺序(如前后关系)或因果关系(因果关系)。

关系还具有描述连接性质和强度的属性。当你有很多文档时,你会得到一个很好的图来描述所有文档之间的关系。

让我们看一个非常简单的例子,在我们的数据集中,节点可以代表像苹果公司和蒂姆·库克这样的实体,而关系则可以描述蒂姆·库克是苹果公司的 CEO。

这种方法非常强大,但一个巨大的缺点是它计算成本很高,因为你必须从每个文档中提取实体,并使用 LLM 计算关系图。这就是为什么使用像 LLaMa 3.1 这样本地运行的模型来采用这种方法非常棒。

保姆级教程开始

在本文中,我们将结合使用LangChain、LLama 和 Ollama ,以及 Neo4j 作为图数据库。我们将创建一个关于一个拥有多家餐厅的大型意大利家庭的信息图,所以这里有很多关系需要建模。

先利用Ollama拉取llama3.1 8b模型:

图片

所有代码的链接我放在文末。。。

打开代码文件,来到VS Code 中,你可以在左边看到我们将使用的多个文件。

配置运行Neo4j数据库

在进入代码之前,我们将设置 Neo4j。我为你创建了一个 Docker Compose 文件。所以我们将使用 neo4j 文件夹,里面有一个 jar 文件,这是我们创建图所需的插件。

图片

要创建我们的数据库,只需运行 docker compose up:

图片

这将设置所有内容,并且可以直接使用。可能需要几秒钟,之后你会看到数据库正在运行。


http://www.ppmy.cn/news/1509437.html

相关文章

thinkcell甘特图怎么做thinkcell甘特图调整列宽

在项目管理和计划制定过程中,甘特图是一种非常实用的工具,能够直观地展示项目的时间线和进度。think-cell作为一款强大的PowerPoint插件,提供了制作甘特图的功能,帮助用户以直观的方式展示复杂的项目计划。本文将详细介绍如何在th…

sql注入漏洞以及PDO防御绕过

一、环境搭建 安装phpstudy: 下载并安装phpstudy并启动Apache、MySQL等服务。 配置数据库: 在phpmyadmin创建一个名为test_db的数据库。 CREATE DATABASE test_db; USE test_db;CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR…

【Hot100】LeetCode—56. 合并区间

目录 1- 思路贪心 2- 实现⭐56. 合并区间——题解思路 3- ACM 实现 原题连接:56. 合并区间 1- 思路 贪心 1- 先对数组根据首元素排序2- 遍历数组,根据 left 和 right 维护一个左右区间。判断是否重叠 不重叠:收集结果重叠:更新 r…

51单片机-LED实验

实现了按下独立按键&#xff0c;LED灯亮&#xff0c;松开独立按键&#xff0c;LED灯灭的功能 #include <8051.h>void delayms(unsigned char t){unsigned char i,j;i900;jt;do{jt;while (j--){/* code */}}while(i--); }void main(){// P2_01;while (1){if(P3_00){delay…

Hackademic.RTB1靶机复现

查看靶机的MAC地址 使用nmap进行扫描 使用dirsearch进行目录扫描 网站登录 点击紫色字体 进一步进行目录扫描 进行拼接 拼接wp-content 拼接wp-includes 点击Got root 测试发现不存在SQL注入 点击posted in Uncategorized 测试发现存在SQL注入 测试数据库 python sqlmap.py…

最近很火的生物单细胞测序算法!贝叶斯非负矩阵分解(CoGAPS 包)

生信碱移 贝叶斯NMF算法 病理、生理相关的生物学过程中&#xff0c;不同基因各司其职。一个普遍的假设是&#xff0c;执行特定功能的生物学过程往往具有一定的表达模式。非负矩阵分解&#xff08;NMF&#xff09;是一种适合高通量生物学的无监督聚类方法。然而&#xff0c;仅…

【Emacs】使用全教程

Emacs入门&#xff1a;使用全教程 启动 Emacs 要进入 Emacs&#xff0c;只需输入其名称&#xff1a; $ emacs:-:-C-z挂起 EmacsC-x C-c永久退出 Emacs 全局描述 :-:-C-<key>表示按住控件&#xff0c;然后按 <key>M-<key>表示按 Esc 一次&#xff0c;然后按 …

十三、list 类

Ⅰ . list 的介绍和使用 01 初识 list 我们已经学习过 string 和 vector 了&#xff0c;想必大家已经掌握了查文档的能力 现在我们去学习如何使用 list &#xff0c;最好仍然打开文档去学习 list - C Reference ① list 是一个顺序容器 允许在任意位置进行 O(1) 插入和删除…