AI 概述


Apache Doris 是一款高性能、实时分析型数据库,深度融合文本搜索、向量搜索、AI 函数与 MCP 智能交互能力,构建从数据存储、检索到分析的完整 AI 数据栈,为 AI 应用提供一体化的数据基础设施。

下表列出常见 AI 场景与 Doris 提供的对应能力,帮助快速定位适合的方案。

Agent Facing Analytics


随着 AI Agent 技术兴起,越来越多的分析决策由 AI 自动完成,这要求数据平台具备极致的实时性与高并发能力。与传统"人工分析"不同,Agent Facing Analytics 需要在毫秒级完成数据查询和决策,支持海量 Agent 的并发访问。典型场景包括实时反欺诈检测、智能广告投放、个性化推荐等。

Doris MCP Server :类似于给 Agent 提供工具的。Agent 只需要告诉 doris 你需要做什么,它就会选择性的执行某个工具。

Hybrid(混合) Search and Analytics Processing

结构化查询,非结构化查询,以及文本查询 多种组合均支持。

结构化数据: 有行有列的数据

非结构化数据:数据不是按照行,列这种存储 json(半结构化)

Lakehouse(湖仓一体) for AI


AI 模型与应用开发需要从海量数据中准备训练集、进行特征工程、评估数据质量,传统架构往往需要在数据湖和分析引擎间频繁迁移数据。Lakehouse 架构将数据湖的开放存储与实时分析引擎深度融合,在统一平台上支撑数据准备、特征工程与模型评估的全流程,消除数据孤岛,加速 AI 开发迭代。

只用一份原始数据存在数据湖上,不用复制迁移,分析引擎(Doris 这类仓库引擎)直接读取湖上的数据做高速查询,一套存储兼顾 “海量存储”+“极速分析”。

数据仓库:存储各种文本数据,只是数据来源比较多,比如 mysql oracle redis 日志 将多个项目中的数据全部导入进来,进行数据分析

数仓湖: 结构化(库表)、半结构化(JSON/CSV/Parquet)、非结构化(图片、音视频、日志、文档)全部兼容 这个概念比数据仓库大

做数据湖比较有名的技术有Iceberg、Paimon(火)

架构特性:

  • 湖仓一体:基于开放湖表格式(如 Iceberg、Paimon 等)和 Catalog 构建开放湖仓,统一管理分析数据与 AI 数据
  • 极速 SQL 引擎:Doris 作为实时分析引擎,支持交互式查询与轻量级 ETL,为数据准备和特征工程提供高效的 SQL 计算能力
  • 无缝数据流转:直接读写数据湖,无需数据搬迁,存储层统一管理,计算层灵活加速

RAG(Retrieval-Augmented Generation)


RAG = 大模型+ 外部数据库(doris)

RAG 通过从外部知识库检索相关信息为大模型提供上下文,有效解决模型幻觉与知识时效性问题。向量引擎是 RAG 系统的核心组件,需要在海量知识库中快速召回最相关的文档片段,同时支持高并发的用户查询请求,确保应用响应体验。

典型应用:

  • 企业知识库:基于内部文档、手册构建智能问答系统,员工通过自然语言快速获取准确答案
  • 智能客服助手:结合产品知识库与历史案例,为客服人员或聊天机器人提供精准的回复建议
  • 智能文档助手:在大规模文档集合中快速定位相关内容,辅助研究、写作与决策过程

Doris 构建 RAG 的优势:

  • 高并发性能:分布式架构支持高并发向量检索,轻松应对大规模用户并发访问
  • 混合检索能力:在单条 SQL 中同时执行向量相似度搜索与关键词过滤,兼顾语义召回和精确匹配
  • 弹性扩展:随集群扩容线性提升检索性能,从百万到百亿级向量无缝平滑过渡
  • 一体化方案:统一管理向量数据、原始文档与业务数据,简化 RAG 应用的数据架构

AI Observability(可观察性) 【之前这个功能是 ELK 干的】


将 AI 运行或者训练中产生的大量日志存储到 doris 中,便于后期观察或者排错,定位问题

AI 模型训练迭代与应用运行过程中会产生海量日志、指标和追踪数据。为精准定位问题、持续优化性能,可观测性系统成为 AI 基础设施的关键一环。随着业务规模扩张,可观测平台面临 PB 级数据的高吞吐写入、毫秒级检索响应和成本控制的多重挑战。

典型用例:

  • 模型训练监控:实时追踪训练指标、资源消耗,快速定位训练异常与性能瓶颈
  • 推理服务追踪:记录每次推理请求的完整链路,分析延迟来源与错误模式
  • AI 应用日志分析:海量应用日志的全文检索与聚合分析,支持故障排查和行为洞察

Semantic(语义) Search


语义搜索通过向量化技术捕捉文本深层含义,即使查询词与文档用词不同,也能召回语义相关的内容。这对跨语言检索、同义词识别、意图理解等场景至关重要,可显著提升搜索的召回率和用户体验。

语义搜索的意思是:使用自然语言,搜索相关的数据

之前这个事情是问的大模型的产品,比如 deepseek,豆包+数据库

现在是 doris 集成了大模型

典型用例:

  • 企业文档检索:员工用自然语言描述问题,系统理解意图后从海量文档中召回语义相关的政策、流程与知识
  • 电商商品搜索:用户输入"适合夏天穿的透气鞋子",系统理解需求并召回相关产品,而非仅匹配关键词
  • 内容推荐平台:基于文章、视频的语义相似度进行智能推荐,发现用户可能感兴趣但用词不同的内容

Doris 构建语义搜索的优势:

  • 高性能向量检索:支持 HNSW 与 IVF 算法,亿级向量亚秒级响应,轻松应对大规模语义搜索需求
  • 混合检索增强:单条 SQL 融合语义搜索与关键词过滤,在召回语义相关内容的同时确保必要词汇命中
  • 多模态扩展:不仅支持文本语义搜索,还可扩展至图片、音频等多模态内容的语义检索
  • 灵活量化优化:通过 SQ/PQ 量化技术,在保证检索精度的前提下大幅降低存储和计算成本

AI 函数


Apache Doris AI 函数是一组在 SQL 中直接调用外部大语言模型(LLM)完成文本智能分析的内置函数。无需将数据导出到外部应用,分析师即可在数据库内部完成文本分类、信息提取、情感分析、语法纠错、内容生成、敏感信息脱敏、相似度计算、摘要、翻译以及跨行聚合等任务。

步骤 1:创建 AI 资源
DeepSeek

drop resource 'deepseek_example3';
CREATE RESOURCE 'deepseek_example3'
PROPERTIES (
    'type' = 'ai',
    'ai.provider_type' = 'deepseek',
    'ai.endpoint' = 'https://api.deepseek.com/chat/completions',
    'ai.model_name' = 'deepseek-chat',
    'ai.api_key' = '自己的api-key'
);

步骤 2:设置默认资源(可选)


设置默认资源后,调用 AI 函数时无需显式指定资源名称:

SET default_ai_resource = 'deepseek_example3';

步骤 3:在 SQL 中调用 AI 函数


示例 1:基于语义评分的相关性筛选
假设存在如下数据表,其中存储了与数据库相关的文档内容:

CREATE TABLE doc_pool (
    id  BIGINT,
    c   TEXT
) DUPLICATE KEY(id)
DISTRIBUTED BY HASH(id) BUCKETS 10
PROPERTIES (
    "replication_num" = "1"
);

筛选与 Apache Doris 相关性最高的 10 条记录:

SELECT
    c,
    CAST(AI_GENERATE(CONCAT(
        'Please score the relevance of the following document content to Apache Doris, ',
        'with a floating-point number from 0 to 10, output only the score. Document:', c
    )) AS DOUBLE) AS score
FROM doc_pool
ORDER BY score DESC
LIMIT 10;

该查询会让大模型为每条文档与 Apache Doris 的相关性打分,并按分数降序返回前 10 条结果:

+---------------------------------------------------------------------------------------------------------------+-------+
| c                                                                                                             | score |
+---------------------------------------------------------------------------------------------------------------+-------+
| Apache Doris is a lightning-fast MPP analytical database that supports sub-second multidimensional analytics. |   9.5 |
| In Doris, materialized views can automatically route queries, saving significant compute resources.           |   9.2 |
| Doris's vectorized execution engine boosts aggregation query performance by 5–10×.                            |   9.2 |
| Apache Doris Stream Load supports second-level real-time data ingestion.                                      |   9.2 |
| Doris cost-based optimizer (CBO) generates better distributed execution plans.                                |   8.5 |
| Enabling the Doris Pipeline execution engine noticeably improves CPU utilization.                             |   8.5 |
| Doris supports Hive external tables for federated queries without moving data.                                |   8.5 |
| Doris Light Schema Change lets you add or drop columns instantly.                                             |   8.5 |
| Doris AUTO BUCKET automatically scales bucket count with data volume.                                         |   8.5 |
| Using Doris inverted indexes enables second-level log searching.                                              |   8.5 |
+---------------------------------------------------------------------------------------------------------------+-------+

示例 2:候选人简历与岗位需求的语义匹配
模拟招聘场景中的候选人简历表与岗位需求表:

CREATE TABLE candidate_profiles (
    candidate_id INT,
    name         VARCHAR(50),
    self_intro   VARCHAR(500)
)
DUPLICATE KEY(candidate_id)
DISTRIBUTED BY HASH(candidate_id) BUCKETS 1
PROPERTIES (
    "replication_num" = "1"
);
 
CREATE TABLE job_requirements (
    job_id   INT,
    title    VARCHAR(100),
    jd_text  VARCHAR(500)
)
DUPLICATE KEY(job_id)
DISTRIBUTED BY HASH(job_id) BUCKETS 1
PROPERTIES (
    "replication_num" = "1"
);
 
INSERT INTO candidate_profiles VALUES
(1, 'Alice', 'I am a senior backend engineer with 7 years of experience in Java, Spring Cloud and high-concurrency systems.'),
(2, 'Bob',   'Frontend developer focusing on React, TypeScript and performance optimization for e-commerce sites.'),
(3, 'Cathy', 'Data scientist specializing in NLP, large language models and recommendation systems.');
 
INSERT INTO job_requirements VALUES
(101, 'Backend Engineer', 'Looking for a senior backend engineer with deep Java expertise and experience designing distributed systems.'),
(102, 'ML Engineer',      'Seeking a data scientist or ML engineer familiar with NLP and large language models.');

通过 AI_FILTER 对岗位需求与候选人简介进行语义匹配,筛选出合适的候选人:

SELECT
    c.candidate_id, c.name,
    j.job_id, j.title
FROM candidate_profiles AS c
JOIN job_requirements AS j
WHERE AI_FILTER(CONCAT(
    'Does the following candidate self-introduction match the job description?',
    'Job: ', j.jd_text, ' Candidate: ', c.self_intro
));
ERROR 1105 (HY000): errCode = 2, detailMessage = Can not build function: 'AI_FILTER', expression: AI_FILTER(concat('Does the following candidate self-introduction match the job description?', 'Job: ', jd_text, ' Candidate: ', self_intro)), Please specify the AI Resource in argument or session variable.

使用 Datagrip 不支持 AI 语法,需要在黑窗口运行此语句

如果报以上错误,需要先执行AI Resource

SET default_ai_resource = 'deepseek_example3';
 
此处的这个名字,一定要跟你创建的Resource的名字一样,否则,也报错

假如报如下错误:

ERROR 1105 (HY000): errCode = 2, detailMessage = (hadoop12)[HTTP_ERROR]error setting certificate verify locations:  CAfile: /etc/ssl/certs/ca-certificates.crt CApath: none, url=https://api.deepseek.com/v1/

说明是 CA 证书的问题:(目前无解,一直报证书错误,找不到)

在 所有节点上,安装证书

curl https://curl.se/ca/cacert.pem -o /etc/ssl/certs/ca-certificates.crt
chmod 644 /etc/ssl/certs/ca-certificates.crt

返回结果:

+--------------+-------+--------+------------------+
| candidate_id | name  | job_id | title            |
+--------------+-------+--------+------------------+
|            1 | Alice |    101 | Backend Engineer |
|            3 | Cathy |    102 | ML Engineer      |
+--------------+-------+--------+------------------+
2 rows in set (6.07 sec)
Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐