学习笔记 · Obsidian

SAP HANA SPARQL QA Chain

LangChainPython

固定流水线

HanaSparqlQAChain 位于 langchain-hana,把四个阶段串起来:

  1. SPARQL_GENERATION_SELECT_PROMPT 接收 Turtle schema 和用户 prompt;
  2. 从模型输出抽取 SPARQL,缺少时注入 FROM <graph_uri> 和常见 RDF/RDFS/OWL/XSD prefix;
  3. graph.query(generated_sparql) 执行;
  4. SPARQL_QA_PROMPT 仅根据 query result context 和原问题组织自然语言答案。

初始化用 HanaSparqlQAChain.from_llm(...)。自定义 generation prompt 必须含 schema,prompt,answer prompt 必须含 context,prompt。页面只展示同步 invoke()。

危险请求确认

示例明确传 allow_dangerous_requests=True。这只是调用方确认风险,不是 query sandbox。生产仍需只读 HANA 用户、固定 graph、SPARQL AST/关键词 allowlist、limit/timeout、资源预算和结果 DLP。verbose=True 会暴露生成 query 与中间结果,只适合受控调试,不应默认进入生产用户响应或普通日志。

与 agent 相比,chain 的阶段更固定、更易观测和测试,但没有页面所述的迭代 ontology 工具与自我修正循环。对可预测只读问答优先固定 chain;需要动态 schema/多步修正时才承担 agent 的额外成本和攻击面。

验证边界

已精读唯一官方 Markdown 路由和 prompt/后处理/执行契约。未连接 SAP HANA,未验证实际生成 query、权限、超时或结果正确性。