学习笔记 · Obsidian

Graph Integrations:查询生成与最小权限

LangChainPython

路由地图

路由包/接口查询模式
amazon_neptune_open_cypherlangchain-aws / NeptuneGraph、NeptuneAnalyticsGraph、create_neptune_opencypher_qa_chainNeptune Database/Analytics 上生成 openCypher、执行并组织答案;可用 RunnableWithMessageHistory 加会话历史。
kuzu_dblangchain-kuzu / KuzuGraph、KuzuQAChain嵌入式 Kùzu、Cypher、schema refresh,可分开 query LLM 与 answer LLM;示例依赖不再维护的 experimental graph transformer。
memgraphlangchain-memgraph / MemgraphLangChain、MemgraphQAChainCypher QA、prompt refinement、return direct/intermediate、result limit,以及从文本构建图。
neo4j_cypherlangchain-neo4j / Neo4jGraph、GraphCypherQAChainschema/enhanced schema、Cypher generation、direct/intermediate、limit、few-shot、类型排除和方向校验。
sap_hana_rdf_graphlangchain-hana / HanaRdfGraphRDF/SPARQL,支持 default/URI graph、远程 ontology、自定义 ontology query、本地 RDF 和自动 ontology 抽取。
timbrlangchain-timbrontology semantic layer 上的 SQL agent/chains/nodes:识别概念、生成/校验 SQL、执行和回答。

安全边界

Kuzu、Memgraph、Neo4j 示例显式要求 allow_dangerous_requests=True,这表示调用方承认模型生成查询可能有危险,不表示框架已经把它变安全。validate_cypher=True 当前只用于校验/修正 relationship direction,不能阻止写查询、笛卡尔积、资源耗尽或数据越权。

生产要求:

  • 使用只读数据库账号、限定 database/graph/schema/view,并在服务端拒绝 mutation、DDL、procedure、文件/网络访问。
  • 对 query 长度、AST、node/edge type、traversal depth、result limit、statement timeout 和并发做确定性限制。
  • schema/ontology 可能暴露敏感实体和字段;只向模型提供当前租户、当前角色需要的最小视图。
  • query result 先做 ACL/DLP/size gate,再交给回答模型;verbose/intermediate steps 不进入用户响应或普通日志。
  • Memgraph 的 LLM graph extraction 页面明确说明非确定性;写图时使用 staging、stable IDs、审核和可回滚 upsert。

正确性与运营

schema refresh 需要和 migration/deploy 协调,否则模型会按旧 schema 生成查询。生成 query、执行 query、答案组织要分别记录耗时和错误类型。回答必须基于实际 result,并保留 query/result count/provenance;空结果不能让模型靠常识补齐。

这些页面主要展示同步 query/invoke,没有建立统一 async 或 streaming 契约。大图查询不应靠 async 包装规避资源限制;应由数据库超时、cost guard、分页和取消机制控制。

验证边界

已逐页核对 6 个官方 Markdown 路由。未连接真实图数据库验证查询计划、权限、方言和性能;allow_dangerous_requests 场景必须在隔离数据与只读身份下做专项安全测试。