Neo4j GraphRAG:1个Python包,轻松搞定RAG + 知识图谱!

如果你已经探索过使用 Neo4j 来实现 GraphRAG,你可能已经了解它在提升生成模型输出质量方面的潜力。传统上,这需要深入掌握 Neo4j 和 Cypher(Neo4j 的查询语言)。在本文中,您可以了解到一种更简单的方式,简化 Neo4j 与检索增强生成(RAG)应用的集成,使开发者更容易使用,那就是:适用于 Python 的官方 Neo4j GraphRAG 包(neo4j-graphrag)!

neo4j-graphrag:https://pypi.org/project/neo4j-graphrag/

该 Python 包为您提供了管理 RAG 过程中的检索与生成任务的高效工具。本文将展示如何使用该包执行检索任务。接下来的文章将介绍其生成功能,帮助您构建完整的端到端 RAG 流程。

什么是 GraphRAG?

neo4j-graphrag 包简化了图检索增强生成(GraphRAG)。在 Neo4j,我们相信将图数据库与向量搜索结合起来代表了 RAG 的下一步发展方向。

img

安装设置

首先,连接到一个预配置的 Neo4j 演示数据库,该数据库模拟了一个电影推荐知识图谱。您可以使用用户名和密码 “recommendations” 访问 https://demo.neo4jlabs.com:7473/browser/。这一设置提供了一个现实场景,向量嵌入数据已作为 Neo4j 数据库的一部分。

使用 Cypher 命令可视化数据:

MATCH (n) RETURN n LIMIT 25;

img

观察每个节点右侧详情中的 plotEmbedding 属性。我们将在演示中使用这些嵌入执行向量搜索。您可以通过以下 Cypher 命令检查是否存在 moviePlotsEmbedding 向量索引:

SHOW INDEXES YIELD * WHERE type='VECTOR';

在您的 Python 环境中,安装 neo4j-graphrag 包及其他依赖包:

pip install neo4j-graphrag neo4j openai

接着,使用 Neo4j Python 驱动程序连接到数据库:

在这里插入图片描述

确保您已设置 OpenAI API 密钥:

import os
os.environ["OPENAI_API_KEY"] = "sk-..."

检索操作

我们的包提供了适用于不同检索策略的多种检索器类(参见文档:https://neo4j.com/docs/neo4j-graphrag-python/current/)。在这里,我们使用 VectorRetriever 类:

在这里插入图片描述

我们使用 text-embedding-ada-002 模型,因为演示数据库中的电影情节嵌入是使用该模型生成的,从而使检索结果更加相关。您可以自定义返回的结果属性,这里我们指定了返回节点属性 titleplot

使用检索器搜索与查询最相关的电影情节,执行近似最近邻搜索以识别最佳匹配的前三个电影情节:

在这里插入图片描述

结果可以进一步解析为:
在这里插入图片描述

GraphRAG

让我们看看检索器如何集成到简单的 GraphRAG 流程中。要使用 neo4j-graphrag 包执行 GraphRAG 查询,需要以下几个组件:

  1. 一个 Neo4j 驱动——用于查询 Neo4j 数据库。
  2. 一个检索器——neo4j-graphrag 包提供了一些实现,并允许您编写自己的检索器。
  3. 一个 LLM——我们需要调用一个 LLM 来生成答案。neo4j-graphrag 包目前仅提供 OpenAI 的 LLM 实现,但其接口与 LangChain 的聊天模型兼容,并允许您编写自己的接口。

实际操作只需几行代码:

在这里插入图片描述

总结

我们展示了如何使用 neo4j-graphrag 包中的 VectorRetriever 类执行简单的检索查询。未来的文章将探讨其他检索策略以及如何在 GraphRAG 流程中使用不同的 LLM。敬请期待!

欢迎您将 neo4j-graphrag 包集成到您的项目中,并在公众号文章下方分享您的见解。

该包代码是开源的,您可以在 GitHub(https://github.com/neo4j/neo4j-graphrag-python) 上找到它,欢迎在上面提交问题。


如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

### 关于RAG检索增强生成、知识图谱和大型语言模型(LLM)的代码实现 #### 背景介绍 RAG(Retrieval-Augmented Generation,检索增强生成)是一种结合了检索模块和生成模块的方法,能够有效利用外部知识库来提升生成质量。通过引入知识图谱作为外部知识源,可以进一步提高系统的语义理解和推理能力[^2]。 以下是基于Hugging Face Transformers和Haystack框架的一个简单示例,展示如何将RAG知识图谱结合起来应用于实际场景: --- #### 实现步骤概述 1. **加载预训练的语言模型** 使用Hugging Face Transformers中的`T5`或`BART`等模型作为基础生成器。 2. **集成检索模块** 利用Haystack框架搭建一个文档存储和检索系统,该系统可以从知识图谱中提取结构化数据并将其转化为自然语言形式供模型使用。 3. **融合生成与检索结果** 将检索到的相关信息输入给生成模型,从而让其具备更强的事实依据支持下的文本生产能力。 --- #### 示例代码 下面是一个简单的Python脚本,演示如何设置这样的环境以及执行基本操作: ```python from transformers import pipeline, TFAutoModelForSeq2SeqLM, AutoTokenizer from haystack.document_stores import InMemoryDocumentStore from haystack.nodes import BM25Retriever from haystack.pipelines import ExtractiveQAPipeline # 初始化 Haystack 文档存储 document_store = InMemoryDocumentStore() document_store.write_documents([ {"content": "Graph RAG combines the power of knowledge graphs with retrieval-augmented generation."}, {"content": "Knowledge graphs provide structured data that can be used to enhance model understanding."} ]) # 设置检索器 retriever = BM25Retriever(document_store=document_store) # 加载生成模型 (这里以 T5 为例) model_name = "t5-small" generator_model = TFAutoModelForSeq2SeqLM.from_pretrained(model_name) tokenizer = AutoTokenizer.from_pretrained(model_name) def generate_with_rag(query): # 检索相关文档 retrieved_docs = retriever.retrieve(query=query, top_k=2) context = "\n".join([doc.content for doc in retrieved_docs]) # 构建提示词 input_text = f"question: {query} context: {context}" inputs = tokenizer(input_text, return_tensors="tf", truncation=True, padding=True) # 进行生成 outputs = generator_model.generate(inputs["input_ids"], max_length=50) answer = tokenizer.decode(outputs[0], skip_special_tokens=True) return answer # 测试函数 if __name__ == "__main__": query = "What is Graph RAG?" result = generate_with_rag(query) print(f"Query: {query}\nAnswer: {result}") ``` 上述代码展示了如何创建一个小型的知识库,并通过BM25算法从中获取最相关的条目;之后这些条目被传递至T5模型来进行最终的回答生成过程[^3]。 --- #### 技术细节说明 - **知识图谱的作用**:在更复杂的部署环境中,可以通过像Neo4j这样的图形数据库管理大规模的关系型数据集,再经由特定接口转换成适合机器学习处理的形式。 - **性能优化建议**:对于工业级应用来说,可能还需要考虑缓存机制减少重复计算开销等问题。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值