
LangChain4j 自然语言查数据库三步跑通问一句、出一张表【免费下载链接】langchain4jLangChain4j is an idiomatic, open-source Java library for building LLM-powered applications on the JVM. It offers a unified API over popular LLM providers and vector stores, and makes implementing tool calling (including MCP support), agents and RAG easy. It integrates seamlessly with enterprise Java frameworks like Quarkus and Spring Boot.项目地址: https://gitcode.com/GitHub_Trending/la/langchain4jLangChain4j 自然语言查数据库功能让你直接用一句人话比如我们有多少客户从关系型数据库里查出结果不用手写一条 SQL。读完这篇入门导读你就能用SqlDatabaseContentRetriever最快配置方式搭起自己的 NL2SQL 问答。️ 一句话讲清它是什么把它想象成公司里一位刚入职的实习生 DBA你问他业务问题他翻开建表文档现场写一句SELECT跑完把结果递给你。LangChain4j 的 SQL 内容检索器就是这个实习生——输入是自然语言问题输出是查询语句 执行结果。它本质是 LangChain4j RAG 体系里的一个ContentRetriever只是检索源不是向量库而是你的数据库。 它能帮你解决什么业务同事不会写 SQL运营、销售天天追着你跑数现在他们自己问哪个季度销售额最高就能拿到答案临时取数排期太长分析师不再当人肉 SQL 机简单查询让模型先扛一道数据探索门槛高新人接手一个陌生库用嘴问表之间的关联比翻文档快得多⚙️ 背后是怎么跑的自然语言转 SQL 的三步先摸家底首次构建时它从你给的DataSource里读出数据库产品名称当 SQL 方言再遍历所有表拼出一份CREATE TABLE形式的结构描述含主键、外键、列注释再写 SQL把方言、表结构、你的问题塞进提示词让 LLM 只输出一条SELECT语句最后验货取数先用 JSqlParser 检查语句确实是SELECT不是就静默放弃通过后执行把结果按 CSV 格式自动处理引号、逗号、换行打包成Content返回给 RAG 流程 三步跑起来依赖、参数、首次调用第一步加依赖在项目的 pom 里引入这个实验模块依赖清单见 模块配置文件它还带了 JSqlParser 用于 SQL 校验dependency groupIddev.langchain4j/groupId artifactIdlangchain4j-experimental-sql/artifactId /dependency第二步认清 6 个关键参数参数必填不填时会怎样dataSource✅无默认值必须有chatModel✅无默认值必须有sqlDialect❌自动从连接读取数据库产品名称databaseStructure❌自动扫描全部表生成 DDL所有表都会暴露给模型promptTemplate❌用内置默认模板maxRetries❌默认 0SQL 报错不重试第三步首次调用SqlDatabaseContentRetriever retriever SqlDatabaseContentRetriever.builder() .dataSource(dataSource) // 任意 javax.sql.DataSource .chatModel(chatModel) // 任意 LangChain4j ChatModel .sqlDialect(PostgreSQL) .maxRetries(1) .build(); ListContent result retriever.retrieve(Query.from(How many customers do we have?));result里就是一段执行过的 SQL CSV 结果可以直接喂给 LLM 生成最终回答。官方在 RAG 教程文档 的 SQL Database Content Retriever 一节也有同样说明。⚠️ 避坑清单上生产前必查的 5 项数据库账号必须只读。源码类注释里官方加粗警告该模块dangerous数据库用户权限要压到最低这是第一道也是最重要的闸门见 SqlDatabaseContentRetriever 源码不指定databaseStructure等于全库裸奔默认会把库里每张表都写进提示词敏感表名和字段会原样进 LLM 上下文建议自己传一份只含业务表的 DDL非 SELECT 一律拒绝模型若生成DROP/DELETE/INSERTisSelect校验会直接返回空列表、不执行——这是第二道保险但别指望它保证 SQL 绝对无害默认不重试maxRetries默认 0SQL 一跑失败就放弃。测试里想更稳可以设 1代价是失败时模型会收到错误信息再改一次它是实验模块带Experimental标记API 后续可能变内置提示模板官方也明说未高度优化上线前拿自己的问题集跑一轮再调模板 谁适合用做内部取数工具 / 自助报表的团队把找分析师变成问一句话给数据库加对话入口的产品它返回的是标准Content天然能接进 AiServices 和 RAG 管道想学 NL2SQL 怎么落地的开发者这个类几百行从元数据采集到结果格式化全看得见是最好的入门教材下一步挑一个你手边的小库比如测试里的 customers/products/orders 三张表照着三步跑起来把 builder 跑通再拿一句真实业务问题试试它答得准不准。【免费下载链接】langchain4jLangChain4j is an idiomatic, open-source Java library for building LLM-powered applications on the JVM. It offers a unified API over popular LLM providers and vector stores, and makes implementing tool calling (including MCP support), agents and RAG easy. It integrates seamlessly with enterprise Java frameworks like Quarkus and Spring Boot.项目地址: https://gitcode.com/GitHub_Trending/la/langchain4j创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考