用自然语言查询轻松探索Ontotext GraphDB

116 阅读2分钟

介绍

GraphDB 是一种功能丰富的图数据库,能够与 RDF 和 SPARQL 兼容。通过利用大语言模型(LLMs),我们可以将自然语言查询(NLQ)转换为 SPARQL 查询,从而让用户更直观地与数据进行交互。在这篇文章中,我们将探讨如何使用 LLMs 将自然语言查询转化为 GraphDB 的 SPARQL 查询。

主要内容

GraphDB 的 LLM 功能

GraphDB 提供了多种 LLM 集成功能:

  • GPT 查询:通过知识图谱(KG)获取文本、列表或表格。
  • 查询和结果解释:支持结果总结、重述和翻译。
  • 检索-graphdb-连接器:在向量数据库中索引 KG 实体,支持嵌入算法。

设置环境

要进行实验,我们需要在本地运行 GraphDB 实例。以下步骤展示如何用 Docker 设置 GraphDB,并使用 Star Wars 数据集进行查询。

本地运行 GraphDB

  1. 安装 Docker:确保 Docker 和 Docker Compose 已安装。

  2. 克隆仓库:执行 git clone 克隆 langchain-graphdb-qa-chain-demo

  3. 启动 GraphDB:在仓库目录中运行以下命令:

    docker build --tag graphdb .
    docker compose up -d graphdb
    
  4. 访问 GraphDB:等待几秒钟后,访问 http://localhost:7200/

代码示例

我们将使用 OntotextGraphDBQAChain 对 Star Wars 数据集进行问题解答:

import os
from langchain.chains import OntotextGraphDBQAChain
from langchain_openai import ChatOpenAI

# 设置 OpenAI API 密钥
os.environ["OPENAI_API_KEY"] = "sk-***"

chain = OntotextGraphDBQAChain.from_llm(
    ChatOpenAI(temperature=0, model_name="gpt-4-1106-preview"),
    graph=graph,
    verbose=True,
)

# 问题示例
result = chain.invoke({chain.input_key: "What is the climate on Tatooine?"})[chain.output_key]
print(result)

在问题中,我们用自然语言问询塔图因星球的气候,LLM 生成相应的 SPARQL 查询,并返回结果。

常见问题和解决方案

网络连接问题

由于某些地区网络限制,访问 API 时可能需要使用 API 代理服务 来提高访问稳定性。

SPARQL 语法错误

当 LLM 生成不正确的 SPARQL 查询时,可使用 SPARQL 修复提示进行修正。

总结和进一步学习资源

本文介绍了如何利用 LLMs 和 SPARQL 查询来探索 GraphDB 数据。通过这种方式,用户能够以更直观的方式与复杂数据模型交互。进一步学习建议:

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---