Skip to content

GraphRAG 索引 🤖

GraphRAG 索引包是一个数据管道和转换套件,旨在使用 LLM 从非结构化文本中提取有意义的结构化数据。

索引管道是可配置的。它们由工作流、标准和自定义步骤、提示模板以及输入/输出适配器组成。我们的标准管道设计用于:

  • 从原始文本中提取实体、关系和声明
  • 在实体中执行社区检测
  • 生成多粒度级别的社区摘要和报告
  • 将实体嵌入到图向量空间中
  • 将文本块嵌入到文本向量空间中

管道的输出可以存储在多种格式中,包括 JSON 和 Parquet,或者可以通过 Python API 手动处理。

入门指南

要求

有关设置开发环境的详细信息,请参阅 入门指南 中的 要求 部分。

索引引擎可以在默认配置模式或自定义管道模式下使用。要配置 GraphRAG,请参阅 配置 文档。在您拥有配置文件后,可以使用 CLI 或 Python API 运行管道。

使用方法

CLI

# 通过 Poetry
poetry run poe cli --root <data_root> # 默认配置模式
poetry run poe cli --config your_pipeline.yml # 自定义配置模式

# 通过 Node
yarn run:index --root <data_root> # 默认配置模式
yarn run:index --config your_pipeline.yml # 自定义配置模式

Python API

from graphrag.index import run_pipeline
from graphrag.index.config import PipelineWorkflowReference

workflows: list[PipelineWorkflowReference] = [
    PipelineWorkflowReference(
        steps=[
            {
                # 内置动词
                "verb": "derive",  # https://github.com/microsoft/datashaper/blob/main/python/datashaper/datashaper/verbs/derive.py
                "args": {
                    "column1": "col1",  # 来自上方
                    "column2": "col2",  # 来自上方
                    "to": "col_multiplied",  # 新列名
                    "operator": "*",  # 将两列相乘
                },
                # 由于我们试图对默认输入进行操作,因此不需要显式指定输入
            }
        ]
    ),
]

dataset = pd.DataFrame([{"col1": 2, "col2": 4}, {"col1": 5, "col2": 10}])
outputs = []
async for output in await run_pipeline(dataset=dataset, workflows=workflows):
    outputs.append(output)
pipeline_result = outputs[-1]
print(pipeline_result)

进一步阅读

  • 要开始在 GraphRAG 项目中进行开发,请参阅 入门指南
  • 要了解索引库的底层概念和执行模型,请参阅 架构文档
  • 要通过一系列示例运行,请参阅 示例文档
  • 要了解更多关于配置索引引擎的信息,请参阅 配置文档