使用知识图谱,大幅提升RAG准确性

大家好,图形检索—增强生成(GraphRAG)的发展势头日益强劲,已成为传统向量搜索检索方法的有力补充。这种方法利用图数据库的结构化特性,将数据组织为节点和关系,从而增强了检索信息的深度和上下文关联性。

图片

知识图谱示例

图形擅长以结构化方式表示和存储异构和互连的信息,能够轻松捕获不同数据类型之间的复杂关系和属性。相比之下,向量数据库通常难以处理此类结构化信息,因为它们的优势在于通过高维向量处理非结构化数据。在RAG应用程序中,可以将结构化的图数据与非结构文本的向量搜索相结合,以获得双方的优势。

一、知识图谱如何创建

构建知识图谱通常是最富挑战性的一步,它涉及数据的收集和结构化,这需要对领域和图建模有深入的理解。

为了简化这一过程,可以尝试使用大语言模型(LLM)。凭借对语言和上下文的深刻理解,LLM可以自动完成知识图谱创建过程的大部分工作。通过分析文本数据,这些模型可以识别实体、理解它们之间的关系,并建议如何在图结构中最好地表示它们。

作为这些实验的结果,已经在LangChain中添加了第一版的图构建模块,将在文中进行演示,代码可在GitHub上获取。

https://github.com/tomasonjo/blogs/blob/master/llm/enhancing_rag_with_graph.ipynb

需要设置一个Neo4j实例,请按照本文示例操作,最简单的方法是在Neo4j Aura(https://neo4j.com/cloud/platform/aura-graph-database/)上启动一个免费实例,它提供Neo4j数据库的云实例。也可下载Neo4j Desktop应用程序(https://neo4j.com/download/),并创建一个本地数据库实例,从而设置Neo4j数据库的本地实例。

os.environ["OPENAI_API_KEY"] = "sk-"
os.environ["NEO4J_URI"] = "bolt://localhost:7687"
os.environ["NEO4J_USERNAME"] = "neo4j"
os.environ["NEO4J_PASSWORD"] = "password"

graph = Neo4jGraph()

此外还必须提供一个OpenAI密钥,因为我们将使用他们的模型。

二、数据导入

我们将使用伊丽莎白一世的维基百科页面,可以使用LangChain加载器无缝地获取和拆分来自维基百科的文档。

【伊丽莎白一世维基百科】:https://en.wikipedia.org/wiki/Elizabeth_I

【LangChain加载器】:https://python.langchain.com/v0.1/docs/modules/data_connection/document_loaders/

# 读取维基百科文章
raw_documents = WikipediaLoader(query="Elizabeth I").load()
# 定义分块策略
text_splitter = TokenTextSplitter(chunk_size=512, chunk_overlap=24)
documents = text_splitter.split_documents(raw_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

python慕遥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值