GraphRAG for Python

此软件包包含适用于 Python 的官方 Neo4j GraphRAG 功能。

此软件包的目的是为开发者提供一个第一方软件包,Neo4j 可以保证长期承诺和维护,同时能够快速发布新功能以及高性能的模式和方法。

⚠️ 此软件包是 neo4j-genai 的重命名延续。软件包 neo4j-genai 已弃用,将不再维护。我们鼓励所有用户迁移到这个新软件包,以便继续接收更新和支持。

支持的 Neo4j 版本

  • Neo4j >=5.18.1

  • Neo4j Aura >=5.18.0

支持的 Python 版本

  • Python 3.12

  • Python 3.11

  • Python 3.10

  • Python 3.9

主题

用法

安装

此软件包需要 Python (>=3.9)。

要安装最新的稳定版本,请使用

pip install neo4j-graphrag

注意

始终建议在虚拟环境中为用户空间安装 Python 软件包。

示例

创建向量索引

创建向量索引时,请确保索引中的维度数量与嵌入的维度数量匹配。

有关更多详细信息,请参阅 API 文档

from neo4j import GraphDatabase
from neo4j_graphrag.indexes import create_vector_index

URI = "neo4j://localhost:7687"
AUTH = ("neo4j", "password")

INDEX_NAME = "vector-index-name"

# Connect to Neo4j database
driver = GraphDatabase.driver(URI, auth=AUTH)

# Creating the index
create_vector_index(
    driver,
    INDEX_NAME,
    label="Document",
    embedding_property="vectorProperty",
    dimensions=1536,
    similarity_fn="euclidean",
)

注意

假设 Neo4j 正在运行

填充 Neo4j 向量索引

请注意,以下示例不是您将数据插入 Neo4j 数据库的唯一方法。例如,您也可以利用 Neo4j Python 驱动程序

from neo4j import GraphDatabase
from neo4j_graphrag.indexes import upsert_vector

URI = "neo4j://localhost:7687"
AUTH = ("neo4j", "password")

# Connect to Neo4j database
driver = GraphDatabase.driver(URI, auth=AUTH)

# Upsert the vector
vector = ...
upsert_vector(
    driver,
    node_id=1,
    embedding_property="vectorProperty",
    vector=vector,
)

注意

假设 Neo4j 正在运行并定义了向量索引

限制

向量索引上的查询是近似最近邻搜索,可能无法提供准确的结果。 有关更多详细信息,请参阅此参考资料

开发

安装依赖项

poetry install --all-extras

入门

问题

如果您要报告错误或请求功能,请先 搜索以查看是否已存在问题。如果不存在相关问题,请使用相关 问题表单 提出新的问题。

如果您是 Neo4j Enterprise 客户,您也可以联系 客户支持

如果您没有要报告的错误或要请求的功能,但您需要帮助使用该库;社区支持可通过 Neo4j 在线社区 和/或 Discord 获得。

进行更改

  1. 派生该仓库。

  2. 安装 Python 和 Poetry。

  3. main 创建一个工作分支,并开始您的更改!

拉取请求

完成更改后,创建拉取请求,也称为 PR。

  • 确保您已 签署 CLA

  • 确保您的 PR 的基础设置为 main

  • 如果您要解决某个问题,请不要忘记 将您的 PR 与问题关联

  • 选中复选框以 允许维护者编辑,以便维护者可以进行任何必要的调整并更新您的分支以进行合并。

  • 审阅者可能会要求在 PR 可以合并之前进行更改,可以使用 建议的更改 或普通的拉取请求注释。您可以通过 UI 直接应用建议的更改,任何其他更改都可以在您的派生仓库中进行,并提交到 PR 分支。

  • 在更新 PR 并应用更改时,将每个对话标记为 已解决

运行测试

打开一个新的虚拟环境,然后运行测试。

poetry shell
pytest

单元测试

安装依赖项后,这应该可以开箱即用。

poetry run pytest tests/unit

端到端测试

要运行端到端测试,您需要在本地运行一些服务

  • neo4j

  • weaviate

  • weaviate-text2vec-transformers

最简单的方法是通过 Docker Compose 启动和运行它

docker compose -f tests/e2e/docker-compose.yml up

注意

如果您怀疑数据库中存在缓存,请运行 docker compose -f tests/e2e/docker-compose.yml down 以完全删除它们

服务运行后,执行以下命令运行端到端测试。

poetry run pytest tests/e2e

更多信息

索引和表格