首页/新闻资讯/正文详情

AI-Agent时代-SQL与向量数据库-学习笔记-CSDN版

发布时间:2026/9/26 19:16:13 来源:云帆数科 栏目:资讯中心
AI-Agent时代-SQL与向量数据库-学习笔记-CSDN版
AI Agent 时代,SQL 会被 AI 取代吗?——SQL×AI 结合路径的学习笔记这是一篇学习笔记,记录我对「AI Agent 时代数据库查询语言未来」的完整思考:① SQL 如何与 AI 结合并落地应用;② SQL 会不会被自然语言彻底取代、会不会出现新查询语言;③ SQL 与向量数据库之间到底是什么关系。适合正在学习 AI 应用、数据工程、RAG 的同学阅读,也欢迎交流指正。1. 背景:AI Agent 时代,数据访问方式正在被重写过去十年,企业取数的标准姿势是:业务提需求 → 数据同学写 SQL → 跑数 → 做报表 → 业务看报表而 AI Agent 时代,这个链路正在变成:业务直接问(自然语言) → AI 理解意图 → 自动写 SQL / 查数据 → 返回答案或图表随之而来的一类产品叫ChatBI / Data Agent / 智能问数(如 Aloudata Agent、火山引擎 Data Agent、阿里云 DMS ChatBI 等),它们背后最核心的技术就是Text-to-SQL(自然语言转 SQL)。与此同时,向量数据库因为大模型(RAG)爆发而成为 2023 年以来最火的数据基础设施之一。于是很多人开始困惑:SQL 是不是要被 AI 淘汰了?以后是不是用自然语言就能查数据,不用学 SQL 了?会不会出现一种全新的查询语言?向量数据库和 SQL 是替代关系还是共存关系?这篇文章用「学习笔记」的方式,把这些问题逐一拆开讲清楚。2. 先给结论(TL;DR)问题我的结论SQL 会被 AI 取代吗?不会被消灭,但会被 “封装”:从「人写 SQL」变成「AI 写 SQL + 人审 SQL」AI 与 SQL 怎么结合?Text-to-SQL → SQL Agent → 语义层(DSL),三层递进,已经大量落地会产生新查询语言吗?会涌现更多 DSL(PRQL、Malloy、语义层语言),但大多编译回 SQL 或与 SQL 共存,SQL 是 “事实内核”SQL 和向量数据库什么关系?不是替代,是互补:SQL 管精确查询,向量检索管语义相似,最终走向统一引擎(如 pgvector 这类 “SQL 里加向量” 的路线)未来的 AI 数据栈会怎样?五层架构:交互 → 语义层 → Agent 编排 → 统一查询引擎 → 数据底座;语义层是最大增量(详见第 7 节)一句话版本:AI 不会杀死 SQL,而是成为 SQL 的 “翻译官、执行者、监督者”;向量数据库也不是 SQL 的敌人,而是 SQL 生态的 “新数据类型 + 新算子”。3. 为什么说 SQL 是 “旧而不死” 的语言在谈 “取代” 之前,先想清楚 SQL 为什么能活 40 多年。SQL 1974 年诞生于 IBM System R 项目,至今仍是数据世界的 “普通话”,原因如下:3.1 声明式:只说什么,不说怎么做SELECT category, SUM(amount) AS total FROM orders WHERE created\_at = '2026-07-01' GROUP BY category ORDER BY total DESC;你不需要告诉数据库 “先扫哪张表、用什么索引、怎么分组”。优化器(CBO)自己决定执行计划。这种声明式抽象天然适合让另一个程序(AI)来生成 —— 因为 AI 只需要负责 “说什么”,执行细节全交给数据库。3.2 事实标准 + 完整生态所有主流数据库(PostgreSQL、MySQL、SQL Server、Oracle、Doris、ClickHouse……)都讲 SQL;BI 工具、ETL 工具、ORM 框架、数据治理平台全部建立在 SQL 之上;全世界的 DBA、数据工程师都在用同一套语言协作。3.3 可优化、可审计、可验证SQL 可以被EXPLAIN分析执行计划、被索引优化、被权限系统约束、被审计日志追踪。这些特性正是 AI 时代最需要的:AI 生成的 SQL可以被 review(人查得懂);AI 生成的 SQL可以加权限和资源限制(只读、限时、限量);AI 生成的 SQL可以被精确评估(跑基准测试就知道对不对)。3.4 小结SQL 最大的护城河不是 “语法本身”,而是它作为可执行的精确契约存在了几十年,积累了不可替代的生态和治理能力。AI 时代它不会被推翻,而是会成为 AI 访问数据的 “标准中间语言”。4. AI 与 SQL 结合的五种形态(重点,含代码)4.1 形态一:Text-to-SQL—— 让 LLM 直接写 SQL一句话:用户说人话,模型输出 SQL,程序执行后返回结果。这是最基础、落地最多的形态。架构示意:用户自然语言提问大模型生成的 SQL数据库结果返回给用户示例 1:用 LangChain 实现(最简单的框架版)from langchain\_community.utilities import SQLDatabase from langchain\_core.prompts import ChatPromptTemplate from langchain\_openai import ChatOpenAI db = SQLDatabase.from\_uri("sqlite:///demo.db") llm = ChatOpenAI(model="gpt-4o") prompt = ChatPromptTemplate.from\_template( #x20; "根据如下问题写 SQL,只输出 SQL 本身:\n问题:{question}\n表结构:{schema}" ) chain = prompt | llm question = "今年上半年每个月的销售额是多少?" sql = chain.invoke({"question": question, "schema": db.get\_table\_info()}) print(sql)示例 2:OpenAI Function Calling 手写版(理解原理更关键)import json from openai import OpenAI client = OpenAI() tools = \[{ #x20; "type": "function", #x20; "function": { #x20; "name": "query\_database", #x20; "description": "执行一条只读 SQL 并返回结果", #x20; "parameters": { #x20; "type": "object", #x20; "properties": { #x20; "sql": {"type": "string", "description": "合法的只读 SQL"} #x20; }, #x20; "required": \["sql"], #x20; }, #x20; }, }] resp = client.chat.completions.create( #x20; model="gpt-4o", #x20; messages=\[{"role": "user", "content": "本月订单总量是多少?"}], #x20; tools=tools, ) \# 模型返回的不是答案,而是"应该调用什么函数、参数是什么" print(resp.choices\[0].message.tool\_calls)当前水平(2025-2026 实测数据,来源见文末):基准说明最新 SOTA 执行准确率Spider 1.0单库、相对规范的多轮问答约 89.75%(MARS-SQL,2025.11)BIRD真实数据库 + 更复杂的 SQL约 77.84%(MARS-SQL)Spider 2.0企业级真实工作流、脏数据、权限基于 o1-preview 的 agent 框架仅约 21.3%结论:学术高分 ≠ 生产可用。Spider 1.0 上 90% 的准确率,一到 “表很脏、库很多、权限复杂” 的企业环境就掉到 20% 出头。这也是为什么光有 Text-to-SQL 不够,还需要下面的形态。提示:本文中的 Mermaid 图(Mermaid 语法代码块)在部分本地预览器里不会渲染成图,CSDN 会自动渲染;代码块本身不影响阅读。4.2 形态二:SQL Agent—— 把 “写 SQL” 升级成 “能自我纠错的 Agent”一句话:Text-to-SQL 是 “一次性翻译”,SQL Agent 是 “翻译 + 检查 + 改错 + 多步推理”。Agent 可以:先看库表结构(information_schema)再生成 SQL;执行后看报错,自己改 SQL 重试;一次回答拆成多个查询(比如 “对比华东和华南的销量”);调用工具链:SQL 执行器、Excel 导出、图表生成、邮件发送。工具列表式提示词(常见做法):可用工具: 1\. list\_tables —— 列出所有表 2\. describe\_table(table\_name) —— 查看表结构 3\. run\_readonly\_sql(sql) —— 执行只读 SQL 4\. get\_schema\_comment(table) —— 获取字段业务注释 规则:先看表结构再写 SQL;SQL 必须只读;报错后根据错误信息修改重试。一个简化版 SQL Agent 骨架:class SQLAgent: #x20; def \_\_init\_\_(self, llm, db): #x20; self.llm = llm #x20; self.db = db #x20; def run(self, question: str, max\_retry: int = 2) - dict: #x20; \# ① 先感知 schema #x20; schema = self.db.get\_table\_info() #x20; sql = self.llm.generate\_sql(question, schema) #x20; for attempt in range(max\_retry + 1): #x20; ok, result, error = self.db.execute\_readonly(sql) #x20; if ok: #x20; return {"sql": sql, "result": result} #x20; \# ② 把报错喂回给模型,让它改 SQL #x20; sql = self.llm.repair\_sql(question, sql, error, schema) #x20; return {"error": error, "sql": sql}业界动态:2025 年各大云厂商(阿里云 DMS、火山引擎、腾讯云等)陆续把 “单次问数” 升级为 “Data Agent / 智能问数” 产品,本质就是形态一 + 形态二的工程化组合。4.3 形态三:RAG + SQL——“自然语言 → 检索 → 再生成 SQL”一句话:当数据库很大、表很多时,让 LLM 先 “查资料” 再 “写 SQL”:先用 RAG 检索出相关的表、字段、SQL 范例作为上下文,再让 LLM 生成 SQL。这也是 2025 年 Text-to-SQL 工程化的标准姿势。流程:

相关推荐

Hello-Agents 第9章:多轮对话上下文工程与消息累积实战
Hello-Agents 第9章:多轮对话上下文工程与消息累积实战

1. 从一次终端里的翻车说起:为什么第二轮对话丢了 Context第一次跑 Hello-Agents 第 9 章的时候,我在终端里盯着日志看了足足十分钟,脑子里只有一个念头:这不对。第一轮请求明明把系统提示、用户输入、工具描述全都塞进去了&#… · 2026/9/26 19:16:13

研究生数学建模竞赛实战作战系统:问题解构×流程管控×团队协同
研究生数学建模竞赛实战作战系统:问题解构×流程管控×团队协同

1. 这不是“刷题指南”,而是一套可复用的建模作战系统“华为杯”研究生数学建模竞赛,每年九月底开赛,四天三夜,72小时极限交付——它从来不是比谁算得快、谁模型新,而是比谁能在信息混沌中快速锚定问题本质&#xff0c… · 2026/9/26 19:16:00

金融时间序列预测方法合集:CNN、LSTM、随机森林、ARMA全套代码
金融时间序列预测方法合集:CNN、LSTM、随机森林、ARMA全套代码

简介:面向金融时序建模与量化分析学习者的一份机器学习与深度学习方法合集,覆盖CNN、LSTM、随机森林、ARMA四类主流预测模型,同时包含皮尔逊相关系数、动态时间规整、余弦相似度等相似度计算,以及特征方差、混淆矩阵等配套评估工具… · 2026/9/26 19:15:54

基于Java的出租屋管理系统:从设计到答辩的完整解析
基于Java的出租屋管理系统:从设计到答辩的完整解析

这个题目我相信很多计算机专业的同学都不陌生,每年毕业季都能看到它出现在各种毕设题目清单里。我自己当年也做过类似的信息管理系统,后来在工作中还帮几个学弟学妹指导过这个选题,对它里面的门道算是比较熟悉。很多人觉得出租屋管理系统太简… · 2026/9/26 20:01:35

MySQL库与表操作全攻略:从字符集设计到数据同步实战
MySQL库与表操作全攻略:从字符集设计到数据同步实战

做服务端开发绕不开MySQL,这在今天几乎算得上常识。但你真去问一个写了两年SQL的人:库和表到底该怎么设计才算合规?字符集为什么必须显式指定?ALTER TABLE到底什么场景会锁住线上业务?能一口气讲清楚的并不多。这篇我就… · 2026/9/26 20:01:35

Burp Suite内置浏览器启动失败排查与修复指南
Burp Suite内置浏览器启动失败排查与修复指南

1. 问题现象与背景拆解1.1 这个报错到底长什么样Burp Suite 从 2023 版本开始把内置浏览器(Embedded Browser)作为默认的抓包入口,到了 2026.8 这个版本,内置浏览器底层用的是 Chromium 内核。很多人升级完之后,点那个… · 2026/9/26 20:01:29

多模态AI技术原理与工程落地实践
多模态AI技术原理与工程落地实践

我无法基于当前输入生成符合要求的博文内容。原因如下:输入中缺失关键信息:项目标题虽已提供,但【项目正文】、【关键词】、【摘要描述】三项均为完全空白(仅显示空行或占位符),而根据任务定义,… · 2026/9/26 20:01:22

Burp Suite 2026.8 内置浏览器启动失败排查与修复指南
Burp Suite 2026.8 内置浏览器启动失败排查与修复指南

1. 问题现象与背景拆解1.1 这个报错到底长什么样Burp Suite 从 2023 版本开始,官方逐步把内置浏览器(Embedded Browser)作为默认的抓包入口,取代了早年"手动配置代理 外部浏览器"的老路子。到了 2026.8 这个版本&#… · 2026/9/26 20:01:22

轻量级Transformer单轮对话机器人实战指南
轻量级Transformer单轮对话机器人实战指南

简介:这是一份面向人工智能初学者与课程设计者的Transformer单轮对话机器人实战项目,涵盖从模型训练到推理部署的完整技术链路,适用于本科毕设、课设及NLP入门实践。资源包含22个文件,以5个核心Python脚本(如chat.py、… · 2026/9/26 20:01:16

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21

OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40

向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践

一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码