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 正在运行并定义了向量索引
执行相似性搜索¶
虽然库中有比这里显示的更多检索器,但以下示例应该可以帮助您入门。
from neo4j import GraphDatabase
from neo4j_graphrag.embeddings.openai import OpenAIEmbeddings
from neo4j_graphrag.retrievers import VectorRetriever
URI = "neo4j://localhost:7687"
AUTH = ("neo4j", "password")
INDEX_NAME = "vector-index-name"
# Connect to Neo4j database
driver = GraphDatabase.driver(URI, auth=AUTH)
# Create Embedder object
# Note: An OPENAI_API_KEY environment variable is required here
embedder = OpenAIEmbeddings(model="text-embedding-3-large")
# Initialize the retriever
retriever = VectorRetriever(driver, INDEX_NAME, embedder)
# Run the similarity search
query_text = "How do I do similarity search in Neo4j?"
response = retriever.search(query_text=query_text, top_k=5)
注意
假设 Neo4j 正在运行,并且已填充了向量索引。
限制¶
向量索引上的查询是近似最近邻搜索,可能无法提供准确的结果。 有关更多详细信息,请参阅此参考资料。
开发¶
安装依赖项¶
poetry install --all-extras
入门¶
问题¶
如果您要报告错误或请求功能,请先 搜索以查看是否已存在问题。如果不存在相关问题,请使用相关 问题表单 提出新的问题。
如果您是 Neo4j Enterprise 客户,您也可以联系 客户支持。
如果您没有要报告的错误或要请求的功能,但您需要帮助使用该库;社区支持可通过 Neo4j 在线社区 和/或 Discord 获得。
进行更改¶
派生该仓库。
安装 Python 和 Poetry。
从 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