设置
要完成本指南,您需要安装 Docker 和 Python 3.x。 首次快速运行 Memgraph Platform(Memgraph 数据库 + MAGE 库 + Memgraph Lab),请执行以下操作: 在 Linux/MacOS 上:自然语言查询
Memgraph 与 LangChain 的集成包括自然语言查询。要使用它,首先要进行所有必要的导入。我们将根据它们在代码中出现的顺序进行讨论。 首先,实例化 `MemgraphGraph`。此对象保存与正在运行的 Memgraph 实例的连接。确保正确设置所有环境变量。填充数据库
要填充数据库,首先要确保它是空的。最有效的方法是切换到内存分析存储模式,删除图并返回到内存事务模式。了解更多关于 Memgraph 的存储模式。 我们将添加到数据库的数据是关于各种平台上提供的不同类型视频游戏以及与发布商相关的信息。刷新图模式
由于新的数据是在 Memgraph 中创建的,因此有必要刷新模式。生成的模式将由 `MemgraphQAChain` 使用,以指导 LLM 更好地生成 Cypher 查询。查询数据库
要与 OpenAI API 交互,您必须将您的 API 密钥配置为环境变量。这确保了您的请求的正确授权。您可以在此处找到获取 API 密钥的更多信息。要配置 API 密钥,您可以使用 Python os 包链修改器
要修改链的行为并获取更多上下文或附加信息,您可以修改链的参数。返回直接查询结果
`return_direct` 修饰符指定是返回已执行 Cypher 查询的直接结果还是经过处理的自然语言响应。返回查询中间步骤
`return_intermediate_steps` 链修改器通过在初始查询结果之外包含查询的中间步骤来增强返回的响应。限制查询结果数量
当您想要限制查询结果的最大数量时,可以使用 `top_k` 修饰符。高级查询
随着解决方案复杂性的增加,您可能会遇到需要谨慎处理的不同用例。确保应用程序的可扩展性对于保持流畅的用户流程至关重要。 让我们再次实例化我们的链,并尝试提出一些用户可能会问的问题。提示词优化
为了解决这个问题,我们可以调整 QA 链的初始 Cypher 提示词。这包括向 LLM 提供关于用户如何引用特定平台(例如本例中的 PS5)的指导。我们使用 LangChain 的 `PromptTemplate` 来实现这一点,创建一个修改后的初始提示词。然后将这个修改后的提示词作为参数提供给我们的优化后的 `MemgraphQAChain` 实例。构建知识图谱
将非结构化数据转换为结构化数据并非易事。本指南将展示如何利用 LLM 帮助我们完成此任务,以及如何在 Memgraph 中构建知识图谱。知识图谱创建完成后,您可以将其用于您的 GraphRAG 应用程序。 从文本构建知识图谱的步骤如下:- 从文本中提取结构化信息:LLM 用于从文本中以节点和关系的形式提取结构化图信息。
- 存储到 Memgraph:将提取的结构化图信息存储到 Memgraph 中。
从文本中提取结构化信息
除了设置部分中的所有导入外,还导入 `LLMGraphTransformer` 和 `Document`,它们将用于从文本中提取结构化信息。存储到 Memgraph
一旦您以 `GraphDocument` 格式(即节点和关系)准备好数据,您就可以使用 `add_graph_documents` 方法将其导入 Memgraph。该方法将 `graph_documents` 列表转换为需要在 Memgraph 中执行的适当 Cypher 查询。完成此操作后,知识图谱将存储在 Memgraph 中。图构建过程是非确定性的,因为用于从非结构化数据生成节点和关系的 LLM 是非确定性的。
附加选项
此外,您可以灵活地根据自己的要求定义要提取的特定类型的节点和关系。以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。