设置与安装
要使用此功能,请安装langchain-hana 包:
HanaSparqlQAChain 将以下功能整合在一起:
- 感知模式的 SPARQL 生成
- 查询执行(针对 SAP HANA)
- 自然语言答案格式化
初始化
你需要:- 一个用于生成和解释查询的 LLM
- 一个
HanaRdfGraph(包含连接、graph_uri和本体)
HanaRdfGraph 实例的信息。
导入 HanaSparqlQAChain
流程概览
- SPARQL 生成
- 使用
SPARQL_GENERATION_SELECT_PROMPT - 输入:
schema(来自graph.get_schema的 Turtle 格式)prompt(user’s question)
- 查询后处理
- 从 LLM 输出中提取 SPARQL 代码。
- 若缺少
FROM <graph_uri>则自动注入 - 确保声明所需的常用前缀(
rdf:、rdfs:、owl:、xsd:)
- 执行
- 调用
graph.query(generated_sparql)
- 答案生成
- Uses
SPARQL_QA_PROMPT - Inputs:
context(原始查询结果)prompt(原始问题)
提示词模板
”SPARQL 生成”提示词
sparql_generation_prompt 用于引导 LLM 根据用户问题和提供的模式生成 SPARQL 查询。
答案生成提示词
qa_prompt 指示 LLM 仅根据数据库结果生成自然语言答案。
默认提示词可在此处找到:prompts.py
自定义提示词
你可以在初始化时覆盖默认提示词:
sparql_generation_prompt的输入变量必须为:["schema", "prompt"]qa_prompt的输入变量必须为:["context", "prompt"]
示例:在“电影”知识图谱上进行问答
前提条件: 你必须拥有一个启用了三元组存储功能的 SAP HANA Cloud 实例。 详细说明请参阅:启用三元组存储加载
kgdocu_movies 示例数据。请参见知识图谱示例。
Below we’ll:
- 实例化指向“电影”数据图的
HanaRdfGraph - 将其包装在由 LLM 驱动的
HanaSparqlQAChain中 - Ask natural-language questions and print out the chain’s responses
幕后发生了什么?
- SPARQL Generation
The chain invokes the LLM with your Turtle-formatted ontology (
graph.get_schema) and the user’s question using theSPARQL_GENERATION_SELECT_PROMPT. The LLM then emits a validSELECTquery tailored to your schema. - 预处理与执行
- Extract & clean: Pull the raw SPARQL text out of the LLM’s response.
- Inject graph context: Add
FROM <graph_uri>if it’s missing and ensure common prefixes (rdf:,rdfs:,owl:,xsd:) are declared. - 在 HANA 上运行:通过
HanaRdfGraph.query()在命名图上执行最终查询。
- 答案生成
返回的 CSV(或 Turtle)结果再次传入 LLM——这次使用
SPARQL_QA_PROMPT。LLM 严格基于检索到的数据生成简洁、人类可读的答案,不产生幻觉。
将这些文档连接 到 Claude、VSCode 等,通过 MCP 获取实时解答。

