Doris 在做什么

Apache Doris 从 4.0 开始,加入了一个新方向:AI 支持。具体包括:

  1. 向量搜索:原生支持向量存储和 ANN 检索,类似专用向量数据库的能力。
  2. AI Functions:SQL 中可以直接调用大模型(如 ai_generate() 函数)。
  3. 全文搜索增强:和向量搜索结合做混合检索。

这听起来有点像”Doris 想做向量数据库”。但它的实际意图比这更有趣。

为什么一个 OLAP 数据库需要向量搜索?

Doris 的核心用户是数据分析师和运营人员。他们的问题是:”上个月销售额最高的品类是哪些?和去年同期比有什么变化?”

但现在的问题是:”为什么这个品类的销量突然下降了?帮我分析原因。”

这个问题的答案不在结构化数据(数字)里,而在非结构化数据里——用户评价、客服对话、社交媒体反馈。传统的 Doris 只能算数字,不能”理解”文本。

Doris 加向量搜索不是为了抢 Milvus 的饭碗,而是为了把”结构化分析”和”非结构化检索”放在同一个引擎里。

具体能做什么?

1. “找出和这个问题最相似的历史案例”

1
2
3
4
5
6
-- 用向量搜索召回与当前问题最相似的历史工单
SELECT ticket_id, summary,
cosine_distance(embedding, query_embedding) AS similarity
FROM support_tickets
ORDER BY similarity ASC
LIMIT 10;

不用再维护 Doris 和向量数据库两套系统。一份数据,同时做分析和检索。

2. AI Functions:SQL 里调 LLM

1
2
3
4
5
6
7
8
9
-- 批量对分析结果做 AI 总结
SELECT
category,
SUM(sales) AS total,
ai_generate('qwen-max',
CONCAT('用一句话总结这个品类的销售表现:品类=', category, ',销售额=', SUM(sales))
) AS ai_summary
FROM sales
GROUP BY category;

这在以前需要:Doris 跑完聚合 → 导出数据 → Python 脚本调 LLM → 写回结果。现在一个 SQL 搞定。

3. 日志/评论的情感分析

1
2
3
4
5
6
7
-- 实时分析用户评论情感
SELECT
product_id,
ai_classify('qwen-max', review_text, 'positive, negative, neutral') AS sentiment,
COUNT(*) AS cnt
FROM product_reviews
GROUP BY product_id, sentiment;

和大数据栈的关系

Doris 的 AI 化意味着什么?意味着数据处理链路的缩短:

以前

1
2
3
数据采集 → Kafka → Flink/Spark 处理 → Doris 存储 → 数据分析结果
→ 向量库(嵌入)
→ Python(LLM 调用)

现在

1
数据采集 → Kafka → Doris(存储 + 分析 + 向量检索 + LLM 调用)

少了三个组件。这对中小团队来说是巨大的简化——数据分析、向量检索、AI 推理全在一个 SQL 引擎里完成。

局限和边界

Doris 的 AI Functions 不是万能的:

  1. 不适合高频调用:每条数据都调一次 LLM?API 费用和延迟都是问题。适合批量或按需触发。
  2. 不是 Embedding 引擎:Doris 存向量但不生成向量。Embedding 还是要靠外部模型(Spring AI 里的 EmbeddingModel)。
  3. 不是 Agent 引擎:Doris 能调 LLM,但不能做多步骤推理和工具调用。那是 Spring AI Alibaba Graph 的活。

Doris 的 AI 化解决的是”数据分析和 AI 推理在同一个地方发生”,而不是”替代所有 AI 组件”。

意味着什么

  1. OLAP 数据库正在成为 AI 数据管道的核心节点。 数据到达 Doris 之后,分析和 AI 推理在这个节点上直接完成,不用再分流到多个系统。
  2. “分析 + AI”的融合是一个趋势。 ClickHouse 也在加向量搜索,StarRocks 也在加。这不是 Doris 一家的事,是整个 OLAP 品类的方向。
  3. 对后端架构的影响:关注数据流的简化。 如果你的架构里数据已经在 Doris/ClickHouse 里了,考虑直接在 OLAP 引擎上做 AI 推理,而不是把数据搬来搬去。

一句话:Doris 的 AI 化不是要成为向量数据库,而是要让”数据分析”和”AI 推理”在同一个 SQL 引擎里完成。这对数据密集型 AI 后端的架构简化是一个有意义的信号。