Doris 4.0+ AI 功能介绍及使用
Doris 选型 (AVX2) 与 AI 功能协作紧密:向量索引构建是高强度 CPU 计算,使用 AVX2 版本可显著提升索引构建速度和查询性能。尝试 AI 函数:在测试环境先用等初步分析。试用混合搜索:整合全文、向量检索和结构化查询。生态集成MCP Server:可通过与 LangChain/Dify 集成,用自然语言查询数据。RAG 系统:作为私有知识库和数据存储底座,开发智能问答/知识库应用
Apache Doris 已经深度拥抱 AI。自 4.0+ 版本起,它集成了**向量检索、AI 函数和混合搜索 (HSAP)**三大核心能力,让你能用熟悉的 SQL 轻松结合 AI 模型处理非结构化数据。
🧠 Doris AI 核心能力概览
- AI 函数:直接调用大模型处理文本。适合情感分析、文本摘要、信息分类等,支持 OpenAI、DeepSeek 等众多厂商。
- 向量检索:为高维向量数据(如图片、语义特征)创建索引 (HNSW/IVF) 进行相似性搜索。适合以图搜图、语义搜索、推荐系统去重等。
- 混合搜索 (HSAP):融合全文检索 (BM25)、向量检索 (ANN)、结构化过滤 (WHERE/JOIN)。适合复杂商业分析场景,如带用户画像约束的智能推荐。
🔧 实战演练:三步玩转 Doris AI
第一步:配置 AI 资源 (Resource)
这是连接 AI 模型服务的“钥匙”。所有厂商的接入方式类似,修改参数即可,以两个主流方案为例:
- 创建云端 AI 资源 (如 DeepSeek)
- 创建本地模型资源 (如 Ollama)
CREATE RESOURCE "deepseek_resource" PROPERTIES ( 'type' = 'ai', 'ai.provider_type' = 'deepseek', 'ai.endpoint' = 'https://api.deepseek.com/v1', 'ai.model_name' = 'deepseek-chat',
这不是 Docker 镜像,而是 Doris 内部一个用于管理与外部 AI 服务连接配置的“资源对象”。
第二步:使用 AI 函数,文本处理一句搞定
配置好资源后,就能在 SQL 中启用了。先用瞬时会话变量 SET default_ai_resource = 'deepseek_resource'; 指定默认资源,然后直接使用函数。官方提供了丰富的内置 AI 函数,足以覆盖多数场景。
核心 AI 函数速览:
| 函数名 | 能力 | 示例 |
|---|---|---|
AI_SENTIMENT |
文本情感分析 | SELECT AI_SENTIMENT('这个产品真不错') |
AI_CLASSIFY |
文本信息分类 | SELECT AI_CLASSIFY('我的手机屏幕碎了', ['硬件', '软件', '其他']) |
AI_EXTRACT |
提取文本关键信息 | SELECT AI_EXTRACT('我于2023年6月5日购买了...', ['日期', '事件']) |
AI_SUMMARY |
生成文本摘要 | SELECT AI_SUMMARY('这是一段很长的产品描述文本...') |
第三步:掌握混合搜索,语义与关键词并行
混合搜索是 Doris 面向复杂 AI 应用的杀手锏。
-- 5. 使用混合搜索精准定位:既要语义相似,又要关键词匹配,还要结构化过滤
SELECT id, title, author,
L2_DISTANCE_APPROXIMATE(embedding, array<float>[0.1, 0.2, ...]) AS dist
FROM technical_articles
WHERE title MATCH_ANY 'Doris' -- 关键词全文检索
AND category_id = 2 -- 结构化过滤
ORDER BY dist ASC
LIMIT 10;
背后的技术:混合搜索中,全文检索基于 BM25 算法,向量检索基于 HNSW/IVF 近似最近邻算法 (ANN)。对于高维向量,建议为频繁查询的列创建索引以大幅提升效率。
🚀 应用案例:基于多模态数据的智能分析
当单一能力无法胜任复杂需求时,可以将它们组合。在企业数据分析中,AI 函数的价值更显著:可快速对海量评论、工单进行情感分析 (AI_SENTIMENT);也可用 AI_AGG 函数对海量客服工单按类型进行智能聚合分析,几秒内完成传统上数天人工处理的质检工作。
1. 环境准备
首先,按[第一步]创建名为 my_embedding_vendor 的 AI 资源并置为默认。
2. 数据集成与建表
接着,创建包含向量列和全文检索索引的数据表,将用户行为和订单等数据集成到 Doris 中。具体建表示例如下:
-- 建表,包含向量列,用于存储图片的语义特征向量
CREATE TABLE image_search (
id BIGINT,
image_path STRING,
description STRING,
tags ARRAY<STRING>,
embedding ARRAY<FLOAT> NOT NULL,
INDEX ann_idx (embedding) USING ANN PROPERTIES (
"index_type" = "hnsw",
"metric_type" = "l2_distance",
"dim" = "768" -- 向量维度,取决于生成向量的模型
),
INDEX title_idx (description) USING INVERTED PROPERTIES ("parser" = "english")
) DUPLICATE KEY(id) DISTRIBUTED BY HASH(id) BUCKETS 10;
注意:
dim值取决于 AI 模型输出维度(如 OpenAItext-embedding-3-small为 512)。若值不匹配,可能导致索引构建失败或查询错误。
3. 写入向量与查询
使用 AI 函数写入和检索向量数据,完成智能分析的闭环。
-- 1. 写入图片向量数据(使用 EMBED 函数将文本描述转为向量)
INSERT INTO image_search VALUES (1, 'img/cat1.jpg', '一只橘猫在沙发上睡觉',
['猫', '宠物', '室内'],
EMBED('my_embedding_vendor', '一只橘猫在沙发上睡觉'));
-- 2. 图片语义检索:查询与指定向量最相似的图片,并结合全文检索进行过滤
SELECT image_path, description,
L2_DISTANCE_APPROXIMATE(embedding, EMBED('my_embedding_vendor', '一个毛茸茸的动物')) AS dist
FROM image_search
WHERE tags HAS '猫' AND description MATCH_ANY '睡觉'
ORDER BY dist ASC LIMIT 20;
💡 总结与实践提示
Doris 选型 (AVX2) 与 AI 功能协作紧密:向量索引构建是高强度 CPU 计算,使用 AVX2 版本可显著提升索引构建速度和查询性能。
- 尝试 AI 函数:在测试环境先用
AI_SENTIMENT等初步分析。 - 试用混合搜索:整合全文、向量检索和结构化查询。
- 生态集成:
- MCP Server:可通过
doris-mcp-server与 LangChain/Dify 集成,用自然语言查询数据。 - RAG 系统:作为私有知识库和数据存储底座,开发智能问答/知识库应用。
- MCP Server:可通过
更多推荐

所有评论(0)