
摘要:Apache Doris 5.0 多模湖仓预告(2)|场景方案篇:Agentic AI 正推动企业 AI 从一次性问答走向持续的“感知—检索—分析—行动—反馈”。Paimon 2.0 统一管理持续演进的业务事实、多模态数据与索引,Doris 通过统一 SQL 打通向量检索、实时分析与结果写回,共同为 Agent 构建新鲜、可信、可验证的业务上下文。SelectDB 已提供相关商业预览版本。
作者|李文强,Apache Doris PMC 成员、SelectDB 多模湖仓负责人
大模型决定 Agent 能理解什么,数据平台决定 Agent 在此时此刻能知道什么、能相信什么,以及行动之后能留下什么。Agentic AI 正在把企业 AI 从一次性的问答,推向持续的“感知—检索—分析—行动—反馈”。
Agent 不仅需要文档和知识,还需要最新的订单、库存、设备状态、图片、视频、向量、模型输出和历史结果;一次真实请求也不只是语义召回,而是向量与全文检索、结构化过滤、跨表关联、指标计算和权限判断的组合。这对数据平台提出了两个新的要求:底层数据必须能够以开放形式持续更新和演进,上层引擎则必须把多模态检索、实时分析与结果写回连接成一条执行链路。
Apache Paimon 2.0 与 Apache Doris 正是在这两个层面形成互补:Paimon 2.0 负责统一管理持续变化的业务事实、多模态内容、模型特征与索引;Doris 负责用统一 SQL 完成读取、写入、向量检索、关系计算和应用服务,为 Agent 构造新鲜、可信、可验证的业务上下文.

传统 BI 主要回答“过去发生了什么”,传统 RAG 主要回答“哪些文档与问题相关”。Agentic AI 还需要进一步判断:当前状态是否允许执行、不同证据是否相互印证、历史上类似行动产生了什么结果,以及这次行动如何进入下一轮上下文。例如,一个工业故障诊断 Agent 收到新的缺陷图片后,不能只返回几张视觉上相似的历史图片。
它还需要回答:这些缺陷是否来自同型号设备和同一工艺阶段?发生前后的传感器指标是否异常?相关设备是否正在维修?类似问题是否正在集中出现?哪种处理方式在历史上真正改善了后续批次良率?这类请求暴露出四个新的数据挑战。
一条业务记录不再一次生成完成。订单、设备和用户状态先到达,图片、视频和日志随后产生,OCR、Caption、Embedding、模型评分和人工标签再由不同任务异步补全。模型升级后,同一份数据还会增加新版本的特征。因此,Agent 需要的不是一张静态宽表,而是一份能够持续增加字段、内容、特征和索引的数据资产。
向量检索能够找到语义或视觉上相似的对象,但不能单独判断库存、权限、设备状态、时间范围和业务结果。真正可执行的 Agent 上下文,必须把向量或全文召回与结构化过滤、Join、聚合、窗口计算和业务排序结合起来。
业务事实和模型特征如果分散在湖表、对象存储、向量数据库和搜索系统中,就会拥有不同的更新时间、版本与删除状态。一件已经下架的商品、一台正在维修的设备或一份已撤回的文档,仍可能被过期索引召回并交给 Agent。
Agent 会产生新的分类、摘要、风险评分、工具调用结果和处理状态,人工复核也会生成最终标签。如果这些结果只能停留在应用侧,下一次分析仍然无法利用最新反馈。数据平台必须同时支持读取和写回,并保证写入的事务一致性。因此,Agentic AI 所需的不只是一个向量数据库,而是一条完整的数据链路:多模态数据持续演进,索引持续覆盖,业务事实保持新鲜,检索结果能够分析,行动结果可以写回.
Paimon 过去的能力重心,是通过 Flink 持续接收数据库 CDC 和消息流,在对象存储上维护支持更新、删除、快照和增量读取的实时湖表。Paimon 2.0 进一步把管理对象从“持续更新的结构化行”扩展为“持续生长的多模态数据资产”。
BLOB 用独立文件承载图片、视频和音频等大对象;查询未选择该列时,不必读取对象内容。VECTOR<t, n> 为 Embedding 提供固定维度语义和专用存储布局。VARIANT 承载结构灵活的事件、模型输出和工具调用参数,并可将常用字段拆解为类型化子列。这些能力的关键价值,不是把所有数据强行放进同一种文件,而是让不同模态采用合适的物理布局,同时保持同一张表、同一个 Snapshot 和同一条记录的语义一致性。新写入数据与索引覆盖范围也可以被识别,并通过补建索引或不同查询模式处理新鲜度。
Paimon 2.0 解决的是 Agent 数据如何保存、更新、演进和建立索引。它并不单独完成跨表关联、全局 Top-K、实时指标计算、权限判断和高并发服务。要把这些开放数据变成 Agent 可以使用的上下文,还需要 Doris 的查询与执行能力.
Doris 面向 Paimon 2.0 的重点,不是把 Paimon 文件当作普通 Parquet 扫描,而是同时打通三条路径:快照一致的湖表读取、Vector Index 驱动的多模检索,以及标准 SQL 写入 Paimon。
Doris 通过 Paimon Catalog 发现库表并缓存元数据,在一条 SQL 内绑定一致的 Snapshot 和 Schema。查询规划理解 Manifest、Primary Key 合并、Deletion Vector、增量范围、Time Travel、Branch 和 Tag,避免把 Paimon 主键表退化为普通文件读取。这让 Agent 可以在指定快照上获得一致的业务状态,也可以通过增量查询持续感知订单、库存、设备和用户状态的变化。
Doris FE 负责规划并下发 Split,BE 通过 C ABI 调用 Paimon Rust Reader。向量查询先读取 Vector Index 并行检索索引分片并合并候选,再把候选范围继续下推到文件、Row Group 和 Parquet Page;确认命中后才读取向量、BLOB 元数据或其他宽列。Rust 侧结果通过 Arrow C Data Interface 进入 C++ 并转换为 Doris Block。
候选集合随后进入 Doris MPP 引擎,继续完成标量过滤、跨表 Join、聚合、权限判断、精排和全局 Top-K。这意味着向量检索不再是 Doris 旁边的另一套孤立系统,而是分布式 SQL 计划中的候选生成阶段:Paimon Vector Index 负责找到相关数据,Doris 负责判断这些数据在当前业务上下文中是否有效、是否重要、是否值得行动.
快手的社区共建与生产实践已经验证了这条路径:Paimon 外表通过 Rust Reader 接入 Doris,数据规模覆盖百万级到十亿级,Top-K 从 100 到 100 万,并通过候选下推和按需物化控制宽向量的读取成本。

Agentic AI 的数据链路不能止于读取。如果 Doris 查询产生的聚合结果、模型标签、风险评分和人工复核状态仍要依赖独立的 Spark 或 Flink 作业写回,系统就会再次出现事务边界分裂和额外运维链路。
面向 Doris 4.2,Paimon Catalog 从只读走向读写一体,覆盖:
INSERT INTO ... SELECT 与 INSERT ... VALUES,将查询结果或应用数据追加到 Paimon。INSERT OVERWRITE,覆盖非分区表、静态分区或动态分区数据。UPDATE、DELETE 与 MERGE,更新 Primary Key Table 中的业务状态、模型标签和人工反馈。CREATE TABLE 及 Schema 演进,管理字段增加、删除、重命名和类型调整。
Agent 请求中的向量检索执行路径:先用 Paimon Vector Index 收敛候选,再由 Doris 完成业务分析。一条向量查询进入 Doris 后,执行过程可以分为三个阶段:
fast / full / detail 新鲜度模式和当前快照的 Deletion Vector。Manifest、索引分片、向量页和命中数据页也将通过分层本地 Cache 分别管理。
在快手生产实践中,向量和业务数据保留在 Paimon,Doris 统一完成检索、回表与分析。快手面对的核心问题——如何在已有 Paimon 实时湖仓上提供大规模向量检索,同时继续保持业务数据、向量、权限字段和更新状态的一致性。
如果把向量及其过滤字段、返回字段复制到独立向量数据库,就需要长期维护第二份业务数据和同步链路。随着模型版本、业务状态和删除数据持续变化,检索系统很容易返回已经过期或无法与当前业务状态对齐的结果。
快手最终选择让向量和业务数据继续保存在 Paimon Primary Key Table 中,并将向量检索能力接入 Doris 外表查询:
生产验证覆盖了千万级与亿级数据:公开测试使用 1600 万和 1.28 亿条 2048 维真实向量,Top-K 覆盖 100、1 万和 100 万。Paimon 外表链路的召回率为 96.0%~99.6%;在“远端 Alluxio 缓存的 Paimon 外表”与“本地缓存的 Doris 内表”的对比中,查询耗时为后者的 1.07~4.18 倍,其中 Top-K 为 100 万时差距收敛到 1.07~1.36 倍。
验证了一个更重要的架构结论:即使面对亿级高维向量和超大 Top-K,用户也可以保留 Paimon 中的开放数据,通过 Doris SQL 完成向量召回和业务分析,而不必先把整份数据复制到 Doris 内表或另一套向量数据库.
对 Agentic AI 而言,这意味着检索结果天然可以继续关联 Paimon 中最新的业务状态,并进入 Doris 的权限过滤、指标计算和关系分析。Agent 获得的不只是相似对象,而是与当前业务事实一致、可以继续验证和采取行动的上下文。
对于已经使用 Flink + Paimon 的团队,第一步无需改变现有数据链路,只需在 Doris 中创建 Paimon Catalog:
CREATE CATALOG paimon_catalog PROPERTIES ( 'type' = 'paimon', 'warehouse' = 's3://example-bucket/warehouse', 's3.endpoint' = 'https://object-storage.example.com', 's3.region' = 'region-id', 's3.access_key' = 'YOUR_ACCESS_KEY', 's3.secret_key' = 'YOUR_SECRET_KEY');通过 Doris SQL 进行结构化分析:
SELECT device_model, defect_type, COUNT(*) AS defect_countFROM paimon_catalog.quality.inspection_recordsWHERE event_time >= NOW() - INTERVAL 30 DAYGROUP BY device_model, defect_typeORDER BY defect_count DESC;在社区共建的向量检索链路中,通过 Doris SQL 表达 Top-K 查询:
SELECT idFROM paimon_catalog.quality.vector_itemsORDER BY l2_distance_approximate(embedding, [...])LIMIT 100;分析完成后,把聚合结果直接写回 Paimon:
INSERT INTO paimon_catalog.quality.daily_defect_summarySELECT DATE(event_time), device_model, defect_type, COUNT(*)FROM paimon_catalog.quality.inspection_recordsGROUP BY DATE(event_time), device_model, defect_type;对于需要持续修正状态的 Primary Key Table,通过 MERGE 合并人工复核或模型新结果:
MERGE INTO paimon_catalog.quality.inspection_records AS targetUSING review_results AS sourceON target.record_id = source.record_idWHEN MATCHED THEN UPDATE SET review_status = source.review_status, defect_type = source.defect_typeWHEN NOT MATCHED THEN INSERT (record_id, review_status, defect_type) VALUES (source.record_id, source.review_status, source.defect_type);Agentic AI 的数据挑战,不是简单增加一个向量字段或向量数据库,而是让持续变化的业务事实、多模态内容、模型特征、检索索引和行动结果保持一致,并在需要时快速转化为可验证的上下文。
Paimon 2.0 为这些数据提供开放的存储、更新、演进与索引基础。Apache Doris 则把 Paimon 的快照读取、Vector Index、MPP OLAP 和标准 SQL 写入连接起来,让 Agent 能够完成“感知变化—检索证据—分析判断—执行行动—写回反馈”的持续闭环。
对 Doris 用户而言,这意味着不必为了 AI 再维护一套封闭的数据副本:数据继续留在 Paimon,检索与分析由 Doris 统一执行,查询结果和 Agent 反馈再通过 Doris 写回开放湖表。Paimon 让 Agent 所需的数据持续演进,Doris 让这些数据持续转化为可以信任和采取行动的业务上下文.
未来,我们还将围绕 Apache Doris 5.0 多模湖仓,针对 Iceberg、Paimon 等开放格式陆续推出系列文章,深入介绍相关能力的技术原理、性能测评与典型落地场景。欢迎阅读。
目前,Iceberg、Paimon、Lance 等多模湖仓能力已合入 Doris 4.2 发版分支,将随 4.2 版本于 9 月底正式发布。对于正在评估 Iceberg、Paimon、Lance 等开放数据格式,或有实时湖仓、多模数据分析等实际需求的用户,可以在官网进一步了解。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。