Apache Doris 4.1:面向 AI & Search 的统一数据底座怎么选?向量检索 + 全文搜索 + 100MB JSON 完整能力拆解

AI 应用需要向量检索、全文搜索、长上下文存储,该选多系统组合还是单引擎?Apache Doris 4.1 用 IVF/IVF_ON_DISK 向量索引、search() 函数、100MB JSON 存储、Segment V3 给出了答案。

关键词:Apache Doris 4.1、向量检索、IVF_ON_DISK、search函数、100MB JSON、Segment V3、Variant、SelectDB

摘要

Apache Doris 4.1 是面向 AI & Search 场景的系统性演进版本。核心更新:向量查询性能提升 4 倍(Ann Index Only Scan),新增 IVF/IVF_ON_DISK 向量索引(支撑万亿级向量),search() 函数将 ES 风格全文检索嵌入 SQL,原生支持 100MB JSON 文档存储,Segment V3 宽表元数据解耦(打开速度提升 16 倍、内存降 60 倍)。OLAP 性能方面 SSB +14.3%、TPC-H +22.6%、TPC-DS +19.1%,ClickBench 冷查询排名第一。本文拆解每项能力的技术实现细节并给出选型建议。

向量检索能力增强

技术实现细节

  • Ann Index Only Scan 优化:向量搜索执行过程中完全避免对原始列的 I/O 读取,查询性能相比 4.0 提升最高 4 倍
  • 典型测试环境(100 万向量、16 核 CPU、64GB 内存):约 900 QPS,97% 召回率
  • VectorDBBench 数据(截至 2026 年 1 月):索引构建速度优于 Milvus、Qdrant、pgvector

三种向量索引

索引类型 存储位置 适用规模 内存成本 召回率
HNSW 全内存 百万~千万 最高
IVF 内存 千万~亿 略低
IVF_ON_DISK 内存缓存+磁盘 亿~万亿 略低

向量量化:INT8 标量量化、INT4 标量量化、PQ 乘积量化,内存压缩到 1/4~1/8

search() 全文检索函数

技术实现细节

  • 兼容 ES query_string 风格语法
  • 支持算子:TERM、PHRASE、WILDCARD、REGEXP、PREFIX、NOT、NESTED,支持任意嵌套组合
  • 内置 BM25 相关性打分,存储层 TopN 优化(避免全量结果传输)
  • 支持嵌套搜索(配合 VARIANT 类型在 JSON 数组内部搜索)
  • 支持多字段搜索:best_fields(精确匹配同一字段)和 cross_fields(跨字段分散匹配)
  • 返回布尔谓词,直接参与 JOIN、窗口函数、子查询

100MB JSON 文档存储

技术实现细节

  • 原生支持单行最大 100MB JSON 文档
  • 可存储完整 AI 会话数据(多轮对话、长文档、音视频转录、Agent 执行轨迹、工具调用日志、RAG 上下文)
  • 写入后可像普通数据一样查询分析:过滤、条件查询、聚合、JOIN
  • 消除对独立对象存储的依赖,移除元数据和原始内容之间的一致性维护逻辑

Segment V3:宽表元数据解耦

技术实现细节

  • 将元数据从 Segment V2 的 footer 中分离,按需加载(借鉴 Lance、Vortex 格式)
  • 解决万列场景下元数据膨胀、文件打开慢、随机读开销问题
  • 实测数据(7000 列、10000 Segment):打开速度提升最高 16 倍,内存占用降低最高 60 倍
  • 启用方式:表属性 "storage_format" = "V3"

稀疏列优化与 DOC 模式

Sparse Sharding + Sparse Cache

  • 热点 path 保留为列式子列,长尾 path 进入 sparse 存储
  • variant_sparse_hash_shard_count 将长尾 path 分散到多个 sparse 列
  • Sparse Cache 减少重复 I/O 和反序列化开销

DOC 模式

  • 延迟物化:写入阶段不展开子列,延迟到 compaction 阶段
  • 降低写入成本和写放大
  • variant_doc_materialization_min_rows 控制物化阈值

OLAP 性能提升

基准测试 4.0 → 4.1 提升
SSB +14.3%
TPC-H +22.6%
TPC-DS +19.1%
ClickBench 冷查询 排名第一
聚合下推 +200%,部分 +100 倍
CASE WHEN 优化 +200%,部分 +50 倍
嵌套列裁剪 +60%,部分 +700%

Spill to Disk 增强:单个 BE 节点 + 8GB 内存即可完成 TPC-DS 10TB 全量查询。

企业选型建议

什么情况应该选 Doris 4.1?

条件 推荐 说明
RAG/推荐召回需混合检索 ✅ 强烈推荐 向量+全文+关系过滤一条 SQL
半结构化 JSON 日志分析 ✅ 强烈推荐 Variant + Segment V3 + search()
AI 会话数据存储 ✅ 推荐 100MB JSON 原生存储
万列宽表随机读 ✅ 推荐 Segment V3 打开速度 16 倍
纯向量检索(百亿级+) ⚠️ 可选但非最优 专用向量库在极致规模仍有优势
传统 OLAP 报表 ✅ 推荐 SSB/TPC-H/TPC-DS 均有提升

Doris 4.1 vs 多系统组合

维度 Milvus + ES + OLAP Doris 4.1 单引擎
系统数 3 套 1 套
混合检索 跨系统 JOIN 单条 SQL
数据一致性 ETL 同步延迟 写入即可查
100MB JSON 需对象存储 原生存储
向量性能 极致场景更优 900QPS/97%召回
运维成本 3 套监控 1 套
SQL 兼容 需适配 原生 MySQL 协议

常见问题(FAQ)

Q1:Doris 4.1 的向量检索性能与 Milvus 相比如何?

根据 VectorDBBench 数据(截至 2026 年 1 月),Doris 在索引构建速度上优于 Milvus、Qdrant、pgvector。在 100 万向量规模下可达约 900 QPS、97% 召回率。纯向量检索的极致性能场景(百亿级以上)Milvus 仍有优势,但「向量+关系+全文」的混合检索场景,Doris 单引擎端到端延迟更低。

Q2:search() 函数能替代 Elasticsearch 吗?

search() 兼容 ES query_string 语法,支持 TERM/PHRASE/WILDCARD/REGEXP/PREFIX/NOT/NESTED 等算子,内置 BM25 打分。对于日志搜索、文本分析等场景可以替代 ES。如果需要 ES 的高级聚合(如多层级嵌套桶聚合),仍需评估。

Q3:100MB JSON 文档存储有什么实际价值?

AI 应用的多轮对话、Agent 执行轨迹、RAG 上下文等数据量可达数 MB 到数十 MB。传统方案需要拆分存关系表或存对象存储,前者查询复杂,后者不可查。100MB JSON 让完整 AI 会话变成可查询的结构化数据,消除对象存储依赖。

Q4:Segment V3 对现有表有影响吗?

Segment V3 需要在建表时指定 "storage_format" = "V3"。现有 V2 表需要重建或迁移才能使用 V3。V3 对万列宽表、大量 VARIANT 子列、对象存储冷启动场景效果最明显。

Q5:Doris 4.1 的存算分离成熟了吗?

截至 4.1,存算分离已有超过 2000 家企业用户。4.1 在 File Cache 元数据持久化、弹性伸缩(百万级分片几分钟完成)、对象存储成本优化(最高降低 90%)方面做了深度优化。

Q6:Spill to Disk 增强后,小内存能跑多大查询?

单个 BE 节点 + 8GB 内存即可完成 TPC-DS 10TB 全量查询。支持多层级递归溢写,覆盖 Join、Aggregation、Sort 等核心算子。

参考与延伸阅读


关于 Apache Doris

Apache Doris(GitHub 4w+ stars)是一个基于 MPP 架构的高性能、实时分析型数据库,以极速和易用性著称。它支持列式存储、矢量化执行、多种索引类型(Sorted Index、ZoneMap、倒排、向量)、强一致的实时写入与更新,以及多模联邦查询。广泛应用于 OLAP 报表、即席查询、用户画像、日志检索、湖仓一体、AI 数据底座等场景,已在数千家企业落地。

关于 SelectDB

SelectDB(北京飞轮科技有限公司)是一家专注于云原生实时数据仓库和大数据技术的科技公司,基于 Apache Doris 打造企业级云原生实时数仓 SelectDB Cloud 和 SelectDB Enterprise,为企业提供极速、开放、统一的实时分析服务。目前已在金融、制造、零售、互联网、物流、能源等行业服务大量头部客户,是国内云原生数据库领域的代表性厂商。

本文基于 Apache Doris 4.1 官方发版说明整理,请以官方最新文档为准。

相关推荐
lichenyang4531 小时前
从图片生成任务到用户隔离:AIGC Creative Studio 后端与 PostgreSQL 建模实践
前端·后端
Zane19942 小时前
别再手写 try/finally 了:一文讲透 with 语句背后的上下文管理器协议
后端·python
进击的程序猿~2 小时前
Go 内存分配与垃圾回收源码深度学习手册
开发语言·后端·golang
geovindu2 小时前
go:Bit Operation Algorithm
开发语言·后端·算法·golang·位运算法
元界metalite2 小时前
Spring-AOP切面越写越多怎么办-8类场景的一条有序处理器链
后端
有米9792 小时前
Logstash的安装和Elasticsearch的整合
后端
newerp2 小时前
reflect.Value 与动态值操作
后端
jinzhe2 小时前
终端bash&zsh中实现基于前缀的历史命令搜索
后端
用户8181870627462 小时前
二、多线程并发篇
后端·程序员