安装与配置
要使用此功能,安装langchain-hana包:
HanaSparqlQAChain整合了以下功能:
- 基于模式的SPARQL生成
- 对SAP HANA的查询执行
- 自然语言答案格式化
初始化
需要:- 一个用于生成和解析查询的 LLM
- 一个包含连接、
graph_uri和本体论的HanaRdfGraph
HanaRdfGraph实例的详细信息。
导入HanaSparqlQAChain
流程概述
- SPARQL生成
- 使用
SPARQL_GENERATION_SELECT_PROMPT - 输入:
schema(来自graph.get_schema的Turtle格式)prompt(用户的问题)
- 使用
- 查询后处理
- 从LLM响应中提取SPARQL代码
- 若缺失则注入
FROM <graph_uri> - 确保声明必需的公共前缀(
rdf:、rdfs:、owl:、xsd:)
- 执行
- 调用
graph.query(generated_sparql)
- 调用
- 答案生成
- 使用
SPARQL_QA_PROMPT - 输入:
context(原始查询结果)prompt(原始问题)
- 使用
提示词模板
”SPARQL生成”提示词
sparql_generation_prompt用于指导LLM根据用户问题及提供的模式生成SPARQL查询。
答案生成提示词
qa_prompt要求LLM仅基于数据库结果生成自然语言回答。
默认提示词可在此找到:prompts.py
自定义提示词
初始化时可覆盖默认值:
sparql_generation_prompt必须包含输入变量:["schema", "prompt"]qa_prompt必须包含输入变量:["context", "prompt"]
示例:基于“电影”知识图谱的问答
前提条件: 需在SAP HANA云实例中启用三元组存储功能。 详细配置步骤请参考:启用三元组存储加载
kgdocu_movies示例数据。详见Knowledge Graph示例。
具体操作步骤:
- 初始化指向“电影”数据图谱的
HanaRdfGraph - 用LLM构建
HanaSparqlQAChain - 提问并输出链式响应
内部机制解析
- SPARQL生成
链调用LLM,使用
SPARQL_GENERATION_SELECT_PROMPT处理格式化本体(graph.get_schema)和用户问题,生成适配模式的合法SELECT查询。 - 预处理与执行
- 提取与清理:从LLM响应中提取原始SPARQL文本
- 注入图上下文:若缺失则添加
FROM <graph_uri>,确保声明公共前缀(rdf:、rdfs:、owl:、xsd:) - 执行:通过
HanaRdfGraph.query()在命名图中运行优化后的查询
- 答案生成
返回的CSV(或Turtle)结果通过
SPARQL_QA_PROMPT再次输入LLM,生成严格基于数据且无虚构的简洁回答。
官方原文:src/oss/python/integrations/chains/sap_hana_sparql_qa_chain.mdx · 非官方翻译,译文由 AI 生成,以英文原文为准。