利用Milvus向量数据库实现GraphRAG

大家好,GraphRAG技术借助知识图谱,给RAG应用注入了新的动力,使其能够在海量数据中精确检索所需信息。本文将介绍GraphRAG的实现方法,包括如何创建索引以及如何利用Milvus向量数据库进行查询,助力在信息检索的道路上事半功倍。

在运行本文中的代码之前,请确保已安装以下依赖项:

pip install --upgrade pymilvus
pip install git+https://github.com/zc277584121/graphrag.git

通过一个分支仓库来安装GraphRAG,这是因为Milvus的存储功能在本文编写时还未被官方正式合并。

1.数据准备

进行GraphRAG索引需要准备一个文本文件,从Gutenberg项目(https://www.gutenberg.org/)下载一个大约一千行的文本文件,这个文件包含了关于达芬奇的故事。

利用这个数据集,构建一个涉及达芬奇所有关系的知识图谱索引,并使用Milvus向量数据库来检索相关知识,以便回答相关问题。

以下是Python代码,用于下载文本文件并进行初步处理:

import nest_asyncio
nest_asyncio.apply()

import os
import urllib.request

index_root = os.path.join(os.getcwd(), 'graphrag_index')
os.makedirs(os.path.join(index_root, 'input'), exist_ok=True)
url = "https://www.gutenberg.org/cache/epub/7785/pg7785.txt"
file_path = os.path.join(index_root, 'input', 'davinci.txt')
urllib.request.urlretrieve(url, file_path)
with open(file_path, 'r+', encoding='utf-8') as file:
    # 使用文本文件的前934行,因为后面的行与本例无关。
    # 如果想节省API密钥成本,可以截断文本文件以减小大小。
    lines = file.readlines()
    file.seek(0)
    file.writelines(lines[:934])  # 如果想节省API密钥成本,可以减少这个数字。
    file.truncate()

2.配置环境并执行索引流程

现在,使用GraphRAG对文本文件进行索引。首先运行graphrag.index --init命令初始化工作空间。

python -m graphrag.index --init --root ./graphrag_index

在索引的根目录下,能找到一个名为.env的文件。要启用这个文件,请将OpenAI API密钥添加。

注意事项:

  • 本例将使用OpenAI模型作为一部分,请准备好自己的API密钥。

  • GraphRAG索引的成本相对较高,因为它需要用LLM处理整个文本语料库。运行这个演示可能会花费一些资金。为了节省成本,可以考虑将文本文件缩减尺寸。

运行索引需要一些时间,执行完毕后,可以在./graphrag_index/output/<timestamp>/路径下找到一个新创建的文件夹,里面包含了多个parquet格式的文件。

执行以下命令开始索引过程:

python -m graphrag.index --root ./graphrag_index

3.使用Milvus向量数据库进行查询

在查询阶段,使用Milvus来存储GraphRAG本地搜索中实体描述的向量嵌入。

这种方法将知识图谱的结构化数据与输入文档的非结构化数据相结合,为LLM提供了额外的相关实体信息,从而能够得出更准确的答案。

import os

import pandas as pd
import tiktoken
from graphrag.query.con
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

python慕遥

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

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

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

打赏作者

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

抵扣说明:

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

余额充值