鱼皮AI导航
鱼皮AI导航
  • 主页
  • 社区
  • AI工具
  • AI知识库
  • AI提示词
  • MCP
  • Skills
  • AI学习资源
  • AI资讯
  • GitHub开源
登录/注册
站长:程序员鱼皮 老鱼简历 商务合作 增值电信业务经营许可证
2026 鱼皮AI导航 | 沪ICP备19026706号-6
9
3
12

从智能问数,看AI应用到底在做什么

AIRookier
AIRookier
2025-11-11 09:00
阅读 1681
AIRookier
2025-11-11 09:00
阅读 1681

在上一篇我们聊了《AI 应用开发工程师的学习路线》,更多是在说你要学些什么:Python、RAG、Agent、LangChain/LangGraph、工程化等等。但很多人学着学着会冒出一个灵魂疑问:

“AI 应用到底在做什么?不就是把原来调业务接口,换成调大模型接口吗?”

要回答这个问题,用“智能问数”这个AI应用经典项目来拆解是很合适的。因为它涵盖了 AI 应用常做的事情:意图识别、上下文补全、从业务知识里检索表结构/指标定义、让模型写 SQL、做安全校验、执行数据库、再把结果说成人话,还能多轮追问。 同时它也好对比:传统 BI、报表、手写 SQL 是怎么干的,AI 是怎么干的,通过对比可以看出AI对业务的赋能。

智能问数的定位:RAG 在结构化数据场景的实践

AI 应用常见 4 类:

  1. Workflow:一条清晰业务链路,模型只是其中一步。
  2. RAG:给模型补数据、补上下文,降低幻觉。
  3. Agent:让模型会“自己决定下一步干嘛”,工具编排更多。
  4. Fine Tuning:让模型更懂你的域。

“智能问数”就是典型的 RAG + 结构化数据 实践。社区里像 SqlBot 这一类开源项目,都是同一思路:用户一句自然语言,系统生成一条能跑的 SQL,跑完以后再让模型基于查询结果做解释、做总结、甚至做趋势描述。 为什么要 RAG?因为大模型天生只是“根据上下文预测 token 的机器”,它没见过你公司的表、字段、指标定义,更不知道你们 BI 那套“退款订单数”的口径。那就只能在推理时,把这些“本地知识”先检索出来塞给它,让它“好像知道了”——这就是 RAG 的核心:先检索,再生成。

RAG,即检索增强生成。因为大模型本质是根据上下文预测token(后面会专门出文章分析),所以输出本身具备不确定性,会存在幻觉问题。幻觉问题的主要原因是:训练知识不足,某些特定领域在互联网上没有公开资料。而RAG就是缓解大模型幻觉问题的解决方案。它的核心思想是:把特定领域的知识作为一个本地知识库,在把用户问题输入给大模型之前,先通过在本地知识库检索到相关知识片段,把这些片段作为参考资料一起给到大模型。大模型就可以在得到足够上下文的情况下,输出比较准确的结果。 了解完RAG的基本概念,我们再来看一下智能问数这个RAG的经典实践是怎么做的。

传统问数项目是怎么做的?

传统问数的流程一般是:

  1. 业务人员想问:“上周各航司的退款订单数和退款金额,按金额倒序。”
  2. 他得知道去哪张表,或者去问数仓/BI。
  3. 他得知道字段名叫什么、怎么 join、时间怎么写。
  4. 写 SQL,或者在 BI 工具里点指标、选维度。
  5. 执行,导出,看结果。

这套流程的前提是:人知道库里有什么,人能把“我想问的业务问题”翻译成“我知道要查哪张表、哪个字段、哪个时间范围”。

基于AI的智能问数项目是怎么做的?

AI 版多了几层“把人话变成机器能查的东西”的步骤,可以拆成下面几步:

  1. 意图识别 把用户的自然语言解析成一个结构化的查询意图,比如任务类型、指标、维度、时间范围、排序方式等。这样后面才能拼 SQL。
  2. 知识检索(RAG) 去“本地的业务知识里”查:有哪些表、表的说明、字段的含义、指标的定义、允许的取值……把和当前问题最相关的几段拉出来。 这一步就是在解决“模型其实不知道你有哪张表”这个问题。
  3. 生成 SQL(大模型生成) 把“用户意图 + 检索到的表结构/字段说明 + 数据库类型 + 示例”一起喂给模型,让模型生成一条候选 SQL。
  4. 校验和安全控制 模型写的 SQL 不一定合法,也不一定安全,所以要再过一层规则:
  • 不允许 drop、update、delete;
  • 字段名必须在白名单里;
  • 没写时间范围就补默认时间;
  • 解析 SQL 看看能不能执行。
  1. 执行与结果格式化 真正去数据库查询,拿到 rows 之后,再把结果整理成表格、维度统计、甚至直接生成一段自然语言说明:“上周退款金额最高的是 XX 航司,共 2330 元…”。
  2. 多轮追问 用户接着问:“那只看国内航司呢?” 系统要能记住上一轮的查询意图,只做增量约束,而不是让用户重说一遍。这就是 AI 应用里很典型的“上下文贯通”。 到这一步你就能看清楚:智能问数不是“我问你答”这么轻飘,它是一条“理解 → 检索 → 生成 → 校验 → 调用外部工具 → 再解释 → 支持追问”的完整流水线。

可以抽象出的动作

我们可以从智能问数里抽象出四个动作,基本可以套到大多数 AI 应用上:

  1. 知识检索 模型不知道你的业务、表、指标,我们要把本地知识库的相关知识作为上下文的一部分传入给大模型。
  2. 结构化输出 让模型不是乱说,而是说成固定 JSON / SQL / DSL。 这一步是“让模型说成机器能用的东西”。
  3. 工具调用 模型不是终点,它是“写 SQL”或“选工具”的那个人,真正的数据在数据库里。 这一步是“让模型带你去用外部世界”。
  4. 安全控制

大模型的输入输出都要进行安全、权限相关的校验。 这四个动作加起来,就是“AI 应用到底在忙什么”的答案。

AI应用与传统 Web 项目的区别

看起来都在写接口、写控制器、写前端,但核心区别有几条:

  1. 输入不是确定的

Web 项目里,前端表单帮你把输入约束死了;AI 项目里,用户随口一句话,模糊、歧义、漏信息都得你来兜底。所以你会多出意图识别、澄清、安全校验这类步骤。

  1. 业务知识不是写死在代码里的

传统项目里,“退款订单字段叫啥”是在代码里、在表结构里;AI 项目里,为了让模型知道,你得把这些知识“放到一个可检索的地方”,然后在运行时喂给模型。这就是 RAG 的那半边工程量。

  1. 模型输出要再加工

Web 里,代码的输出就是最终输出;AI 里,模型的输出往往只是“候选结果”,你要再做校验、再做提示、再做解释,甚至要自动生成“你可以继续问:xxx”这种引导。

  1. 观测和评估更重要

因为模型不稳定,所以你要有日志、链路追踪(LangSmith/LangFuse)、prompt 版本、数据集回放,去看哪一步容易出错,哪种问题没法生成合法 SQL,这样才能迭代。 传统 Web 很多时候只看错误日志就够了。

  1. 运维对象变了

不只是服务要上线,知识库、prompt、模型版本、工具权限也都是需要运维的对象,这在传统 Web 里是几乎没有的。

可以这么总结:传统 Web 是“我已经知道要做什么,只要把它做对”;AI 应用是“用户说了个大概,我得一步步把这个大概变成可以执行的东西”。

AI
9
12
分享
操作
评论
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片

目录

🔥 热门文章
1
离谱,DeepSeek 崩了 5 小时,大家却喊:梁圣恩情还不完??
450
2
B 站上 DeepSeek 闹鱼灾了,我发起《大肥鱼清除计划》!
410
3
DeepSeek 全新模型发布,性价比最高的一集!
400
4
自己学习ai,直接买cursor 的套餐,还是买gpt 或者claude 的套餐?
370
5
又一个国产版 Codex 神器,也来卷办公了!
340
6
Vibe Coding 实战:从零构建现代专业级 AI 搜索引擎
330
7
day3-如何写出一个高质量的 Skill(组内分享) 高质量 Skill 不是“一个调得很顺的巨型 Prompt”,而是一个可验证、可回归、可维护的能力包。 先定义“什么算好”,再实现“怎么做好”。评估体系先于 Skill 本身成型。 下面用“故障诊断 Markdown 转 YAML”作为例子,但方法是通用的。 --- 一、先想清楚:Skill 到底是什么 一个 Skill 至少包含四部分: 部分 作用 接口 输入什么、输出什么、边界在哪 流程 分几步做,每步的产物是什么 规则 硬约束、经验规则、失败模式 降级策略 不确定时怎么办,而不是硬编一个看似合理的结果 高质量 Skill 的共同点:职责单一、接口清晰、规则可定位、输出可验证。 反例:把几十条经验全塞进一个主 Prompt,改一条规则要重调整个 Prompt,评估时也不知道是哪条规则退化。 --- 二、核心方法:先建评估,再写 Skill 不要先写转换器再补测试。正确顺序是: 1. 定义输出契约:什么算合法、什么算合格; 2. 建金标准集:一小批人工认可“可放行”的样本; 3. 先写评估 Skill:让它在金标准集上跑出基线; 4. 再迭代生成 Skill:每次修改跑同一套评估,无退化且目标维度提升才算正向。 这就是评估驱动开发:评估是 Skill 的单元测试,金标准集是回归锚点。 --- 三、评估 Skill:三层门禁,逐层递进 前一层不过,后一层不跑。每层留可追溯证据。 第 1 层:确定性硬门禁 用解析器、Schema、校验器完成,不消耗模型成本。 · 输出可解析; · 必填字段齐全,类型/枚举合法; · 引用目标存在,无悬空引用、无不可达节点; · 关键路径至少有一条能到达预期出口。 不通过直接打回。 第 2 层:语义断言 用脚本 + 结构遍历检查“逻辑对不对”,仍然保持确定性。 通用检查项: · 覆盖率:源材料里的关键步骤、分支、条件,输出里是否都有对应? · 完整性:每个判断节点是否都有明确出口?有没有死胡同? · 可达性:每条路径是否都能到达预期终点?有没有无出口循环? · 顺序与依赖:有先后依赖的操作,是否保留了顺序?有没有被拍平成无序列表? 例子:故障诊断转换中,检查“每个判断项是否有是/否/异常出口”“每条路径是否能到根因”。 第 3 层:LLM-as-Judge 只处理解析器表达不了的维度:忠实度、完整性、可执行性。 但 Judge 会漂移,不能单独放行,必须建立在第 1、2 层之上。Judge 的 Prompt、rubric、模型版本都要版本化,换模型必须用金标准集重新校准。 通用 Judge 维度: 维度 问什么 忠实度 输出是否忠实源材料意图?有没有自行发明内容? 完整性 关键步骤、条件、证据是否保留?隐式知识有没有被压成空话? 收敛性 输出是否仍指向原目标,而不是发散? 可执行性 下游不依赖源材料能否直接使用? --- 四、金标准集:回归测试的锚点 不需要一开始就标注几百份。用已认可的样本当种子,扩到 15~30 份,覆盖失败模式而非随机抽样: · 完整正例:典型流程; · 边界/异常分支:异常路径、循环、前置失败回退; · 已知易错模式:实际踩过的坑; · 留出集:不参与调优,只用于最终验收,防过拟合。 金标准不需要完美,只需要当前标准下认可可放行。 回归指标:关键路径用 pass^k(k 次全过),稳定性用 pass@k。 --- 五、工程约束:让批量产出可重放 · 幂等:同输入 + 同 Skill 版本 + 同规则 → 输出一致,否则无法判断变好是 Skill 改了还是随机波动; · 隔离不阻断:单份失败进隔离队列,记录失败层和原因,不阻塞其余; · 版本绑定:规则、rubric、金标准集进 Git;每份报告绑定“源版本 + 生成 Skill 版本 + 评估 Skill 版本 + Judge 模型版本”; · 抽样人工复核:Judge 临界样本 + 易错模式,人工抽检结果反过来校准 rubric。 --- 六、Skill 本身怎么写 · SKILL.md 控制篇幅,写清:输入约定、输出契约、分步流程、硬规则、降级策略; · 经验规则放 references/ 或 rules/,按失败模式分类,不要全塞进主 Prompt; · 不确定时标 needs_review: true,不要硬编看似合理的结果; · 迭代由评估报告驱动:报告告诉你哪层挂了、哪类失败模式,你改对应规则文件,而不是漫无目的调 Prompt。 --- 七、落地顺序(不要反过来) 1. 固化输出契约:Schema + 结构约束; 2. 建金标准集:从已认可的 + 最易出错的样本开始; 3. 先写评估 Skill:跑出基线报告; 4. 再迭代生成 Skill:每次修改对比逐项通过率,无退化且目标提升才算正向; 5. 批量运行 + 隔离回放:失败进队列,结束后人工抽检; 6. 评估 Skill 自身版本化:换 Judge 模型必须重新校准。 --- 八、给组员的三条硬要求 1. 不许凭感觉说“变好了”:每次修改必须附评估报告对比,逐项通过率说话。 2. 不许跳过确定性门禁直接看 Judge 分数:前两层挂了,Judge 分数没有意义。 3. 不许把规则堆进主 Prompt:规则按失败模式分文件,评估报告要能定位到具体文件。 --- 一句话收尾 生成 Skill 决定“能不能做”,评估 Skill 决定“敢不敢用”。 先让评估体系站稳,再让生成器迭代。这样交付的不是一堆“看起来还行”的产出,而是一套可证明、可回归、可交接的 Skill 质量体系。
320
8
我的第一个出海产品!7 天 2 万
310
9
WorkBuddy 本地 API 桥 + dsh 插件:把你的 WorkBuddy 额度,变成手边随手可用的模型
310
10
什么是LLM
300
🔥热门工具
朱雀AI检测朱雀AI检测
朱雀AI检测助手朱雀AI检测助手
LovartLovart
老鱼简历老鱼简历
WritePass官网WritePass官网
面多多面多多
CursorCursor
星月写作星月写作
零感AI零感AI
墨得问题墨得问题