FIELD NOTES 首页 / AI Engineer
AI Engineer播出 2026.10.3121:3910 章约 12 分钟读完整理于 2026.11.01

你的 AI 智能体想要你的数据:如何保护好这份数据|Jeff Smith,Oracle

在 Oracle 从事数据库工具工作 25 年的 Jeff Smith,介绍如何让 AI 智能体安全访问企业数据。他先说明 Oracle AI Database 将向量、关系数据和图数据整合在一个数据库与 SQL 接口中,再展示将经过审核的业务报告包装成 MCP 工具、让模型通过只读备用库排查性能、用通俗文档注释数据模型等做法。自然语言转 SQL 虽然强大,却可能返回看似正确的错误结果,也会耗费 token 和时间。最后,他强调用组织单点登录识别请求者,并在数据库层按角色过滤查询结果,让无权查看的行在到达智能体前就被剔除。

01 0:15 197 字

开场

Jeff Smith

我叫 Jeff,来自 Oracle。我和 Oracle 几乎同岁。有人知道 Oracle 是哪年成立的吗?和《星球大战》上映是同一年。

我很早就明白一件事:不管你做的工具有多好,到头来大家想要的还是 Excel 表格。现在还是这样吗?智能体已经把 Excel 干掉了吗?嗯,他们发布了可以逆向工程任何东西的功能,对吧?然后立刻就把 Excel 逆向工程了。所以 Excel 可能还是会继续存在。

02 0:58 618 字

什么是 Oracle AI Database?

Jeff Smith

在展位上,甚至在街上看到我穿着 Oracle 外套的人,问得最多的问题是“Oracle AI Database 到底是什么?”除了问能不能把外套送给他们以外,就是这个问题。现场有多少人用过、研究过,或者见过 Oracle 数据库?现在正在用 Oracle 的有多少?谢谢。

要回答 Oracle AI Database 是什么,今天最直接的办法就是问 Claude。我把自己的智能体训练得挺好,它给的答案还不错。简单说,数据库现在可以参与所有 RAG 流程,因为我们原生支持在数据库里存放向量。如果你的财务、人力资源、ERP、运输、零售、政府、医疗等数据都在数据仓库、数据湖——或者说数据污水沟——以及精心整理的数据库里,要从这些数据中找信息,我们可以把信息向量化,和数据库里的数据放在一起,再通过一个 SQL 接口访问全部内容。这样就不用为了查询而把数据复制到八九个平台上。

刚才看到了吗?像蜘蛛侠一样。也就是说,一个 MCP Server 就能连到数据库里。我今天就是来聊 MCP 的。

我们给数据库增加的不只是向量。除了关系表和列之外,我们 30 年来一直在往数据库里增加数据类型和数据工作负载,也支持图数据。如果你喜欢 Graph RAG,在一个 Oracle 实例里也能做。有人喜欢拿 Oracle 历史悠久这件事开玩笑,但老不代表我们停止创新。我们每个月都在发明、构建和发布新东西,因为客户投了很多钱,也期待得到相应的价值。

03 3:28 447 字

为什么智能体需要访问数据库

Jeff Smith

今天我想聊 MCP,重点讲几个真实用例。大家最常问我:“智能体、大语言模型、MCP 都很好,可数据库跟我们有什么关系?有什么用?”这对我来说很明显:你们所有的数据、信息和知识都在数据库里,而智能体靠数据发挥作用。我们怎样才能安全地把这些信息交给它们,同时不让公司因为泄露个人身份信息之类的事垮掉,最后还得去国会作证?

我也想介绍 Oracle 正在推动的一些进展。MCP 是个全新的协议,但差不多每三个月就会加新功能。Oracle 也在参与这些讨论,尽量跟上新功能的发布。

今天没有问答时间,不过我带了些周边,应该差不多发完了。想要袋子或袜子的可以拿;后面还有数据库毛绒玩具,也可以丢给大家。我还会分享一些路线图信息。

这是场一小时的演讲,但我被告知只有 20 分钟,实际上只剩 18 分钟。看看我能讲多快吧,我已经在台上浪费两分钟了。

我希望大家最后能记住三件事:我们做了什么;自然语言转 SQL 有哪些问题,以及我们在做什么来让它更可信;还有我能分享哪些有助于优化 token 用量的东西。

04 5:09 498 字

用例一:把报告做成工具

Jeff Smith

讲用例。我觉得这是企业最后才会做的用例,但回报也最大。通常,负责数据库周边基础设施的人最先有条件接入新技术。所以我说“要不要试试 MCP Server?”时,通常能动手的会是数据库管理员、网络管理员、系统管理员或 DevOps 工程师。他们会用这些工具让自己的工作轻松些。

但公司里更多的是另一类人:他们要回答高级副总裁、执行副总裁,甚至首席高管的问题,比如“上个月卖了多少件产品?”“这个地区的业绩怎么样?”“打多少折最能让顾客完成购物车结账?”这些问题我假装自己也懂。于是他们打开 BI Publisher 或数据集市,开始做电子表格,整理出答案,再把结果带到会议上。人们会依据这些汇总好的数据透视表和 Excel 表格做非常重要的决策。

这类问题永远问不完。不是人们没有问题可问,而是没有足够的时间和人手来回答。每一秒都有人冒出新想法:“要不试试这个?要不试试那个?”生成式 AI 的好处就在于它能放大人的能力,让我们有时间和资源去追问这些问题。

难点在于数据在数据库里,而负责做这些表格的人不一定懂 SQL,也不一定是数据模型架构师。他们懂业务,但未必看得出某种场景用交叉连接根本不合理。

05 7:09 669 字

自然语言转 SQL 为什么有风险

Jeff Smith

自然语言转 SQL 很厉害,但我觉得它也很危险。你听过“能编译就发版”这句话吗?工程师会笑,我们也假装跟着笑。我写了条 SQL,查出了数据,太好了,肯定答对了?不,你实际问的可能根本不是你以为自己问的问题。大语言模型经常会执行看起来返回了正确数据、实际却不对的查询。它们在这方面越来越强,但还是会出错。我不会只凭一条提示和一个返回结果,就相信 Codex、Claude、Gemini 这类模型来决定我们该投资哪个业务分支。

让模型这么做也很费钱,因为它们会暴力搜索数据库字典,试图找出回答问题所需的数据。所以结果不但不可靠,使用工具的人也不一定知道智能体和 MCP 在替自己做什么,而且整个过程要花很多 token 和时间。

Oracle 的做法之一是:每个企业、团队或部门都有 SharePoint、网络驱动器或其他地方,堆着这些年整理出来的一层又一层报告。人们遇到这些问题时,本来就会查这些报告。我们何不把它们导入数据库和/或 MCP Server,作为智能体可以调用的工具或 API?这样就不必让智能体再让大语言模型临时生成查询,而是告诉它:“这些报告可以用,你想看哪一份?”

这就是 Oracle 做的事。你可以挑选任意数量的报告,不过需要花些时间描述它们。我喜欢加上示例问题,让智能体知道:“如果你问的是这个问题,可以运行这份报告。”我会说明报告的含义和所有输入参数,报告本身也可以参数化;但底层代码基本是固定的。这样模型可能会选错报告,却不会自己生成一条错误 SQL。它出错的环节就少了一处。

说到 MCP 工具,我提供了……

06 9:45 496 字

列出报告、执行报告

Jeff Smith

我提供两个工具:`list reports` 和 `execute reports`。假设我有 500 份报告,我不可能把它们做成 500 个工具,那会把上下文撑爆,智能体会觉得“信息太多,没用”。所以我提问时,可以用一个关键词让它找出看起来匹配的报告,先返回报告列表,再执行其中一份来取回数据。

这是一种自然语言转 SQL 之外的选择。我们的 MCP Server 确实支持把任意临时 SQL 或存储过程代码直接对数据库执行,但也可以关掉这个功能,只允许使用自定义工具和报告。

还有一种模式,是给上下文工程师用的。这些报告可以代表业务如何运作、数据模型如何工作的蓝图。如果 OAuth 2 认证会话里有适当的权限或角色,工具也能把报告背后的 SQL 展示给智能体,让它了解系统里的数据是怎么组织的。这样它生成查询时,一次就写对的机会会大得多。你可以给它一些 Markdown,解释“我们怎样查出上个月卖了多少件产品”。

结果返回后,智能体还能把它整理成易读的格式。现场有人开始玩 MCP Apps 了吗?对,这项功能我记得是 7 月写进规范的,稍后我会讲,大概还有五分钟——看我这个小钟表。

07 11:30 868 字信息密度高

用例二:性能调优

Jeff Smith

第二个用例面向 DevOps 工程师和支持团队。我们的平台很有名,历史也很久,文档、PDF、GitHub 项目、Stack Overflow 问答和我的博客都在网上。大语言模型训练时已经看过这些内容;如果查询很慢,它们知道该查什么。但我不放心让大语言模型替我删索引,甚至创建索引,或者直接在数据库里做任何事。我希望它给我建议,然后由我决定是否执行。

能不让模型或智能体进入生产环境,我就不会让它进去。这样想很奇怪吗?如果生产系统跑得慢,我怎样让智能体或大语言模型帮忙?大家都有一个和生产环境一模一样的测试环境,对吧?

Oracle 有项叫 Data Guard 的技术,可以建一个只读备用实例,把报表和只读查询转移到那里。性能问题很可能也会在备用实例上重现。你可以让智能体在这个更安全的环境里试探——“攻击”这个词不太合适,不过有时倒也贴切——让它去排查,再尝试不同的性能技巧。

我希望给大语言模型只读权限,但光这样还不够。即使它只能读数据,也可能读到你不想让它看到的内容。我还得限制它进入数据库后能做什么。对我来说,数据库安全最好的落点在哪里?就在数据库本身。如果只把安全限制写在工具里,一个积极过头的工程师换个工具连上数据库,不就直接绕过去了吗?安全放在数据库层,大多数时候就能守得住。

智能体和大语言模型确实很擅长发现并修复性能问题。这大概是我最容易演示的功能,不过今天没时间做演示。我写了一个自定义工具,里面有六种我放心让它代我执行的操作,其中一种是收集统计信息,基本上相当于给数据做画像。

我们的数据库有成本优化器。你提交查询时,它生成执行计划不是靠一些经验法则,而是会看数据的画像,比如某一列有多少个不同值。诸如此类。统计信息越新、越准确,它就越可能生成好的执行计划,让运行时性能表现更好。

所以我不会做 15 个一次性工具,而会做三四个跨类别的工具,每个工具再提供不同选项。智能体看到“性能调优工具”后,会知道它能做六件事,其中一件是生成性能分析报告。我们有个叫 AWR 的功能,我会让它生成报告;另一件事是生成统计信息。

08 14:49 721 字信息密度高

用例三:给智能体补充数据模型文档

Jeff Smith

这个用例和第一个很接近:探索数据模型并补充文档。哎,我时间不多了。

自然语言转 SQL 确实很厉害,也是 AI 和数据库领域最令人兴奋的方向,因为 SQL 是从数据库取数据最常用的方式。我们需要这些数据,但对很多系统来说,这也是个噩梦。

过去六个月里有人刚入职吗?公司的茶水间里,有没有张贴一幅图,把各种难点都说明白、把行话和内部笑话都列出来,再解释数据模型?比如告诉你:“销售额并不在 sales 表里,而是在一张叫 `XHR_123` 的表里,因为三十年前有位工程师觉得这样很酷。”是啊,真正的答案就是一大页 Confluence 文档。

现在我们有工具可以读取那些 Confluence 页面,生成上下文,并在数据库现有的元数据之上补充数据模型说明。这又是一项上下文工程工作:我们希望把当前数据库环境的信息直接交给大语言模型,而不是让它自己生成查询、逆向拆解甚至折腾数据库来找数据。

你让它找,它最终确实会找到,但会耗很久,还会反复找。除非大家的智能体和大语言模型之间共享团队级的企业记忆,否则这就是巨大的浪费。很奇怪的是,三十年前我们似乎觉得让新员工入职后自己吃苦摸索不算大问题,这问题一直没人解决;现在 AI 出现了,我们可不能让可怜的机器人吃苦,所以得把它们用好数据库所需的信息准备好。这项功能的好处是说明全用通俗英语写、就存在数据库里,人类也能受益。

看我们的工具时,会看到一个叫 `schema information` 的功能。我可以对 Codex、Claude 或其他智能体说:“我有个新环境,你去看看它的结构,找出这个信息,再帮我总结一下。”它会发现有 schema info 工具,就开始用它,最后返回一份压缩过的……

09 17:28 973 字信息密度高

安全:是谁在查询?

Jeff Smith

……字典,也就是一组 JSON 属性,不必像以前那样不断发查询:“把所有表、所有列、所有注释都列出来;每张表再读五行,看看数据看起来是什么样。”这些功能我们直接做进工具里,优化好之后总能返回相同的数据,还提供多种模式:详细、精简、中等——就像我的裤子一样。工具还能按关键词过滤,只查数据里的特定内容。

我还可以用另一个叫 `retrieve context` 的工具取回这些信息,用来做 AI 向量搜索。我还加了一个新工具叫 `generate annotations`。我可以让它访问你们的 SharePoint,扫描 PDF、PowerPoint、Excel 和 Word 文档,提取文本、整理内容,再放回数据库里。这也让自然语言转 SQL 更容易一次写对查询。

这是我把表的说明补齐之后,数据库里的数据看起来的样子。每次我跑步、骑车或做其他活动,记录都会进入 Strava 账户。我是个技术宅,所以我给这些数据接了 API,再存进自己的数据库。Strava 的数据模型文档还算清楚,不过单位和时间字段会跳来跳去,有些列也不像字面看起来的那样。我把这些情况都标注好后,再问“我下周该做什么训练?”让模型查看我的个人训练记录时,有了这些信息就容易多了。

MCP 这套方式还有个好处:不依赖某个特定的 AI 或大语言模型。只要 MCP Server 和工具都在,它就能配合各种模型使用。

好,接下来可能是我今天讲的最重要的内容:安全。我只剩 40 秒,就以这个收尾。我们得先知道是谁在查看数据库里的信息,才能把数据返回给对方。我能看到的信息,和同事 Tara 能看到的可能很不一样。我用 Claude、Codex、Gemini 或自己搭的 LangChain 框架访问数据库时,并不是让智能体用数据库账号直接登录,而是让你通过组织的单点登录,比如 Azure AD。它会返回一组 scopes,再返回描述你组织角色的一组权限。数据库可以按规则判断:“Jeff 是人力资源经理,所以他可以查看所有人的薪资。”但组织之外的人就不能看。

这样,自然语言问题被转换成 SQL 并在数据库里运行时,数据库会先从结果集中动态剔除无权查看的数据,再把结果交给智能体。我们把这叫作深度数据安全(deep data security)。时间到了,重点内容我都讲了。

10 20:44 287 字

接下来会有什么

Jeff Smith

Oracle 在安全上考虑了很多。我们希望这些东西既容易用,也足够安全。我们正在开发 MCP Apps,让数据库界面可以直接出现在智能体里,预计今年晚些时候推出。

我们也有 Skills,可以通过工具提供。我们支持自动化 RAG 流程:你可以用命令行把文档导入,再通过 MCP 工具把向量和文档片段传回智能体。

想了解更多,最简单的网址是 oracle.com/mcp。我马上要登机飞回北卡罗来纳州的罗利;你可以在 LinkedIn 上找到我——我就是那位 Jeff Smith。我的同事还在 Oracle 展位,那里有更多周边。如果你没拿到毛绒玩具,还可以去领。谢谢大家。