本人项目地址大全:Victor94-king/NLP__ManVictor: 优快云 of ManVictor
写在前面: 笔者更新不易,希望走过路过点个关注和赞,笔芯!!!
写在前面: 笔者更新不易,希望走过路过点个关注和赞,笔芯!!!
写在前面: 笔者更新不易,希望走过路过点个关注和赞,笔芯!!!
GraphRAG技术借助知识图谱,给RAG应用注入了新的动力,使其能够在海量数据中精确检索所需信息。本文将带你了解GraphRAG的实现方法,包括如何创建索引以及如何利用Milvus向量数据库进行查询,助你在信息检索的道路上事半功倍。
1 先决条件
在运行本文中的代码之前,请确保已安装以下依赖项:
pip install --upgrade pymilvus
pip install git+https://github.com/zc277584121/graphrag.git
注意:通过一个分支仓库来安装GraphRAG,这是因为Milvus的存储功能在本文编写时还未被官方正式合并。
2 数据准备
为了进行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()
3 初始化工作空间
现在,使用GraphRAG对文本文件进行索引。首先运行 <span leaf="">graphrag.index --init</span>
命令初始化工作空间。
python -m graphrag.index --init --root ./graphrag_index
4 配置环境变量文件
在索引的根目录下,能找到一个名为 <span leaf="">.env</span>
的文件。要启用这个文件,请将你的OpenAI API密钥添加进去。
注意事项:
- 本例将使用OpenAI模型作为一部分,请准备好你的API密钥。
- GraphRAG索引的成本相对较高,因为它需要用LLM处理整个文本语料库。运行这个演示可能会花费一些资金。为了节省成本,你可以考虑将文本文件缩减尺寸。
5 执行索引流程
运行索引需要一些时间,请耐心等待。执行完毕后,你可以在 <span lea