在過(guò)去一年,大模型能力的飛躍與推理成本的降低,使得 AI 不再是遠(yuǎn)期的概念,而成為企業(yè)當(dāng)下必須擁抱的變革。幾乎每一家企業(yè)都在積極探討 AI、規(guī)劃 AI 項(xiàng)目,尋找技術(shù)賦能業(yè)務(wù)的真實(shí)路徑。在此背景下,Apache Doris 4.0 圍繞 AI,系統(tǒng)性地引入并完善了一系列核心能力:
- 半結(jié)構(gòu)化數(shù)據(jù)分析能力(Variant):輕松處理 JSON、XML 等靈活的數(shù)據(jù)類(lèi)型
- 智能索引能力升級(jí):
- 全文檢索:內(nèi)置
BM25算法,支持高性能關(guān)鍵詞搜索與相關(guān)性排序,應(yīng)對(duì)精確匹配場(chǎng)景。 - 向量檢索: 集成
ANN算法索引,支持高維向量相似性搜索,實(shí)現(xiàn)基于語(yǔ)義的匹配。 - 混合檢索與分析(Hybrid Search):可同時(shí)結(jié)合關(guān)鍵詞、向量及結(jié)構(gòu)化過(guò)濾進(jìn)行查詢(xún),大幅提升召回率與準(zhǔn)確度。
- 全文檢索:內(nèi)置
- AI 原生化:內(nèi)置
AI Functions,可直接調(diào)用 Embedding 模型、大語(yǔ)言模型(LLM)等。 - 面向 Agent 的 MCP 交互能力:支持與 AI Agent 便捷且高效協(xié)同,使其成為智能體可信賴(lài)的數(shù)據(jù)與工具中樞。
這些能力相互協(xié)作,共同推動(dòng) Apache Doris 從被動(dòng)存儲(chǔ)分析,轉(zhuǎn)向主動(dòng)智能數(shù)據(jù)分析服務(wù)與洞察生成。
正因如此,Doris 吸引了眾多探尋“Data + AI”可能性的新用戶(hù)涌入嘗試,也促使大量存量用戶(hù)基于 Doris 4.0 率先探索,將 AI 能力應(yīng)用于具體業(yè)務(wù)。其典型場(chǎng)景包括:
- 用戶(hù)畫(huà)像與行為分析:融合用戶(hù)的結(jié)構(gòu)化行為數(shù)據(jù)(點(diǎn)擊、購(gòu)買(mǎi))與非結(jié)構(gòu)化反饋(評(píng)論、客服對(duì)話),通過(guò) AI 理解情緒與意圖,自動(dòng)關(guān)聯(lián)行為異動(dòng)與根本原因,實(shí)現(xiàn)從“看到現(xiàn)象”到“解釋原因”的閉環(huán)。
- 智能風(fēng)控與審計(jì):在傳統(tǒng)規(guī)則和指標(biāo)風(fēng)控基礎(chǔ)上,引入交易備注、申訴文本等非結(jié)構(gòu)化數(shù)據(jù),通過(guò)語(yǔ)義分析識(shí)別潛在欺詐模式,將隱形的風(fēng)險(xiǎn)信號(hào)轉(zhuǎn)化為可預(yù)警的規(guī)則。
- 制造與 IoT 預(yù)測(cè)性維護(hù):關(guān)聯(lián)設(shè)備時(shí)序傳感器數(shù)據(jù)與維修日志文本,通過(guò)混合檢索快速匹配歷史故障案例,實(shí)現(xiàn)故障根因的智能定位與預(yù)測(cè)性維護(hù)建議。
- 產(chǎn)品反饋與洞察分析:匯聚來(lái)自論壇、工單、客服的分散用戶(hù)反饋,通過(guò) Doris + AI 將海量非結(jié)構(gòu)化內(nèi)容轉(zhuǎn)化為可量化、可分析的產(chǎn)品洞察,驅(qū)動(dòng)功能優(yōu)化與決策。
SelectDB Cloud 和阿里云數(shù)據(jù)庫(kù) SelectDB 版均基于 Apache Doris 內(nèi)核構(gòu)建,全面繼承了上述 Doris AI 能力。此外,兩者均采用存算分離架構(gòu),支持彈性擴(kuò)縮容,能夠精準(zhǔn)匹配業(yè)務(wù)流量波動(dòng),有效降低成本。同時(shí),通過(guò)創(chuàng)建多個(gè)獨(dú)立計(jì)算集群,可實(shí)現(xiàn)不同業(yè)務(wù)負(fù)載的隔離(如讀寫(xiě)分離、離在線分析隔離),避免相互干擾,保障業(yè)務(wù)穩(wěn)定性。
- SelectDB Cloud 不綁定特定云廠商,可在阿里云、華為云、AWS 等多個(gè)云平臺(tái)上以 SaaS 模式部署,并支持 BYOC(自帶云)模式,充分滿足數(shù)據(jù)合規(guī)與成本控制需求。
- 阿里云瑤池?cái)?shù)據(jù)庫(kù) SelectDB 版 作為阿里云原生服務(wù),與 VPC、RAM 權(quán)限、監(jiān)控等云服務(wù)無(wú)縫集成,提供類(lèi)似在用戶(hù) VPC 內(nèi)部署的網(wǎng)絡(luò)體驗(yàn),讓用戶(hù)享受更便捷的云端管理能力。
無(wú)論是尋求多云部署的靈活性,還是希望深度集成阿里云生態(tài),兩者都能為企業(yè)構(gòu)建“Data + AI”應(yīng)用提供堅(jiān)實(shí)、高效的數(shù)據(jù)底座。
場(chǎng)景實(shí)戰(zhàn):基于 SelectDB + AI 的產(chǎn)品反饋洞察系統(tǒng)
那么,具體如何實(shí)現(xiàn)呢?在接下來(lái)的實(shí)戰(zhàn)指南中,我們將以 SelectDB 產(chǎn)品經(jīng)理的身份講解。以“物化視圖”這一功能為例,我們是如何借助 SelectDB + AI,搭建一個(gè)用于收集、整合與分析全域用戶(hù)反饋的智能洞察系統(tǒng)。
用戶(hù)對(duì)“物化視圖”功能的反饋,常分散在論壇、工單等多個(gè)渠道,且大部分為非結(jié)構(gòu)化數(shù)據(jù),價(jià)值難以提煉。如果依賴(lài)人工閱讀,效率低下。而利用 SelectDB + AI,我們可以構(gòu)建一個(gè)自動(dòng)化的智能洞察系統(tǒng)。
第一步:初始化
1. 新建 SelectDB Cloud 集群
前往 SelectDB 官網(wǎng),選擇專(zhuān)有倉(cāng)庫(kù)(SaaS)產(chǎn)品,該產(chǎn)品提供為期 14 天的免費(fèi)試用:http://www.pukee.cn/download/cloud
根據(jù)頁(yè)面引導(dǎo)新建 SelectDB Cloud 計(jì)算集群。

2. 創(chuàng)建表與原始數(shù)據(jù)同步
首先,在 SelectDB 中創(chuàng)建三張核心表,分別存儲(chǔ)原始數(shù)據(jù)、向量化內(nèi)容及 AI 解析結(jié)果。
A. 創(chuàng)建明細(xì)數(shù)據(jù)表
創(chuàng)建存儲(chǔ)論壇數(shù)據(jù)的明細(xì)數(shù)據(jù)表,并對(duì) content 字段添加了倒排索引,以支持全文檢索和打分。
CREATE TABLE forum_questions (
question_id BIGINT, --問(wèn)題ID
user_id BIGINT, --提問(wèn)用戶(hù)ID
title STRING, --標(biāo)題
content STRING, --用戶(hù)提問(wèn)和回復(fù)的內(nèi)容
INDEX idx_content (`content`) USING INVERTED PROPERTIES("lower_case" = "true", "parser" = "chinese", "support_phrase" = "true")
)
UNIQUE KEY(question_id)
DISTRIBUTED BY HASH(question_id) BUCKETS 2
PROPERTIES (
"replication_num" = "1"
);
B. 創(chuàng)建向量表
創(chuàng)建存儲(chǔ)論壇問(wèn)答的向量表,并對(duì) embedding 字段創(chuàng)建了 ANN 索引,以支持向量檢索。
CREATE TABLE forum_question_embeddings (
user_id BIGINT NOT NULL, -- 原問(wèn)題所屬用戶(hù)
question_id BIGINT NOT NULL, -- 原問(wèn)題ID
chunk_id BIGINT NOT NULL AUTO_INCREMENT, -- 文本切片 ID(每片對(duì)應(yīng)一條向量)
content_chunk STRING NOT NULL, -- 文本切片內(nèi)容
embedding array<float> NOT NULL, -- 1024維向量
INDEX ann_index (embedding) USING ANN PROPERTIES(
"index_type"="hnsw",
"metric_type"="inner_product",
"dim"="1024",
"quantizer"="flat"
)
)
DUPLICATE KEY(user_id, question_id, chunk_id)
DISTRIBUTED BY HASH(user_id) BUCKETS 2
PROPERTIES (
"replication_num" = "1"
);
C. 創(chuàng)建結(jié)果表
該表主要用于:對(duì) AI 函數(shù)對(duì)論壇問(wèn)答的原始數(shù)據(jù)進(jìn)行解析提取之后,存儲(chǔ)結(jié)果的表。由于不同分析需求以及 AI 函數(shù)對(duì)文本解析的靈活性,其中的 parsed_data 使用了 Schema Free 的 VARIANT 數(shù)據(jù)類(lèi)型。
CREATE TABLE parsed_results (
id BIGINT NOT NULL AUTO_INCREMENT, -- 主鍵ID
feedback_id BIGINT NOT NULL, -- 用戶(hù)反饋ID(外鍵關(guān)聯(lián) forum_questions)
parsed_data VARIANT NOT NULL -- 解析結(jié)果(任意 JSON 數(shù)據(jù))
)
UNIQUE KEY(id)
DISTRIBUTED BY HASH(id) BUCKETS 2
PROPERTIES (
"replication_num" = "1"
);
3. AI 資源初始化
創(chuàng)建 Embedding 模型和大語(yǔ)言模型的資源,以便后續(xù)在 SQL 中使用。
CREATE RESOURCE "qwen-text-embedding-v4"
PROPERTIES (
'type' = 'ai',
'ai.provider_type' = 'QWen',
'ai.endpoint' = 'https://dashscope.aliyuncs.com/compatible-mode/v1',
'ai.model_name' = 'text-embedding-v4',
'ai.api_key' = 'xxx',
'ai.temperature' = '0.7',
'ai.max_token' = '1024',
'ai.max_retries' = '3',
'ai.retry_delay_second' = '1',
'ai.dimensions' = '1024'
);
CREATE RESOURCE "glm-4-flash-250414"
PROPERTIES (
'type' = 'ai',
'ai.provider_type' = 'QWen',
'ai.endpoint' = 'https://dashscope.aliyuncs.com/compatible-mode/v1',
'ai.model_name' = 'qwen-flash',
'ai.api_key' = 'xxx',
'ai.temperature' = '0.7',
'ai.max_token' = '-1',
'ai.max_retries' = '3',
'ai.retry_delay_second' = '1'
);
第二步:數(shù)據(jù)處理
1. Chunking & Embedding
在本示例中,我們采用了簡(jiǎn)單的定長(zhǎng)切分策略,以每 400 字為一個(gè)文本片段進(jìn)行 Embedding 與向量存儲(chǔ)。當(dāng)前方案僅為演示,未來(lái) SelectDB 將通過(guò)支持 Python UDF 實(shí)現(xiàn)更靈活、更貼合業(yè)務(wù)場(chǎng)景的 Chunking。
WITH raw AS (
SELECT
question_id,
user_id,
content,
LENGTH(content) AS content_len
FROM forum_questions
),
t AS (
SELECT 0 AS d UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4
UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9
),
num AS (
SELECT
(a.d * 100 + b.d * 10 + c.d + 1) AS n
FROM t a
CROSS JOIN t b
CROSS JOIN t c
),
chunks AS (
SELECT
r.user_id,
r.question_id,
SUBSTRING(r.content, (n - 1) * 400 + 1, 400) AS content_chunk
FROM raw r
JOIN num ON (n - 1) * 400 + 1 <= r.content_len
)
INSERT INTO forum_question_embeddings (user_id, question_id, content_chunk, embedding)
SELECT
user_id,
question_id,
content_chunk,
EMBED("qwen-text-embedding-v4", content_chunk) AS embedding
FROM chunks;
2. 關(guān)鍵信息 AI 提取
利用 AI Function 提取用戶(hù)反饋中的關(guān)鍵信息,并以 Variant 類(lèi)型存儲(chǔ)。
SET @extract_prompt = "你是一名專(zhuān)業(yè)的產(chǎn)品反饋分析助手。現(xiàn)提供一段來(lái)自用戶(hù)的反饋文本(feedback_text),請(qǐng)從中提取與“物化視圖(Materialized View, MV)”相關(guān)的關(guān)鍵信息,并以嚴(yán)格的 JSON 格式輸出。
如果反饋文本與 MV 無(wú)關(guān),或無(wú)法識(shí)別任何相關(guān)信息,則直接返回字符串 NULL。
請(qǐng)從 feedback_text 中提取以下信息并生成 JSON:
{
\"used_external_source\": \"用戶(hù)是否提到使用了哪些外部數(shù)據(jù)源,例如 MySQL、Oracle、Hive、Iceberg 等。如果未提及則為 null。\",
\"transparent_rewrite\": \"是否使用或提到透明改寫(xiě)(true / false / null)。\",
\"usage_scenario\": \"用戶(hù)描述的使用場(chǎng)景。若無(wú)則為 null。\",
\"problems_or_gaps\": \"用戶(hù)認(rèn)為 MV 不足或存在的問(wèn)題。若無(wú)則為 null。\",
\"other_insights\": \"任何與 MV 相關(guān)、對(duì)產(chǎn)品改進(jìn)有價(jià)值的額外信息。若無(wú)則為 null。\"
}
要求:
1. 輸出內(nèi)容必須是純 JSON,對(duì)象必須以 { 開(kāi)頭、以 } 結(jié)尾。
2. 禁止輸出任何 Markdown 代碼塊標(biāo)記,如 json、、json、``` 等。
3. 禁止輸出任何額外文字、描述、解釋、前綴或后綴。
4. 不得在 JSON 外輸出換行、空格或注釋。";
INSERT INTO parsed_results (feedback_id, parsed_data)
SELECT
question_id,
AI_GENERATE(
'glm-4-flash-250414',
concat(@extract_prompt ,'\nfeedback_text: ```' ,content, '```')
) AS extracted_info
FROM forum_questions where search('content:物化視圖');
第三步:混合檢索與分析
當(dāng)數(shù)據(jù)準(zhǔn)備就緒后,便可針對(duì)具體產(chǎn)品問(wèn)題展開(kāi)檢索分析。
示例 A:
我們將對(duì)該問(wèn)題進(jìn)行檢索分析:物化視圖功能中,用戶(hù)最常使用哪些外部數(shù)據(jù)源,分別有多少用戶(hù)反饋?
如下代碼所示,直接對(duì)上一步中反饋結(jié)果的解析表進(jìn)行聚合分析。
SELECT
lower(CAST(c.used_external_source AS string)) AS used_external_source,
COUNT(*)
FROM (
SELECT
a.parsed_data.usage_scenario,
a.parsed_data.transparent_rewrite,
a.parsed_data.used_external_source AS used_external_source,
a.parsed_data.problems_or_gaps,
a.parsed_data.other_insights,
b.content
FROM parsed_results a
JOIN forum_questions b ON a.feedback_id = b.question_id
WHERE a.parsed_data.used_external_source != ""
AND a.parsed_data.used_external_source != "null"
) c
GROUP BY lower(CAST(c.used_external_source AS string));
示例 B:
我們將對(duì)該問(wèn)題進(jìn)行檢索分析:有多少用戶(hù)提到了數(shù)據(jù)時(shí)效性的痛點(diǎn)或需求,他們都使用了什么數(shù)據(jù)源?
為了回答這個(gè)問(wèn)題,我們需要結(jié)合關(guān)鍵詞匹配和語(yǔ)義搜索,檢索出有“數(shù)據(jù)時(shí)效性的痛點(diǎn)或需求”的用戶(hù),然后對(duì)這些用戶(hù)進(jìn)行聚合分析,代碼如下所示。
--向量檢索文本
SET @search_text="數(shù)據(jù)時(shí)效性差、 ETL 延遲、物化視圖刷新不及時(shí)、數(shù)據(jù)不實(shí)時(shí)、實(shí)時(shí)查詢(xún)不滿足業(yè)務(wù)、報(bào)表延遲、同步滯后、時(shí)延高、更新慢、不能滿足實(shí)時(shí)監(jiān)控需求、數(shù)據(jù)落地慢、數(shù)據(jù)延時(shí)影響決策";
--存儲(chǔ)有"數(shù)據(jù)時(shí)效性的痛點(diǎn)或需求"的用戶(hù)的臨時(shí)表
CREATE TEMPORARY TABLE retrieved_question_ids (
question_id BIGINT
)
UNIQUE KEY(question_id)
DISTRIBUTED BY HASH(question_id) BUCKETS 2
PROPERTIES (
"replication_num" = "1"
);
insert into retrieved_question_ids(question_id)
SELECT question_id --向量檢索
FROM forum_question_embeddings
where inner_product_approximate(
embedding,
EMBED("qwen-text-embedding-v4", @search_text)
) > 0.5
union ALL
select a.question_id from
(
SELECT question_id,score() as relevance --全文檢索
FROM forum_questions
where content MATCH_ANY '時(shí)效性 實(shí)時(shí) 延遲 延時(shí) 更新不及時(shí) 刷新慢 滯后'
ORDER BY relevance DESC
LIMIT 100
)a;
SELECT
lower(CAST(c.used_external_source AS STRING)) AS used_external_source,
COUNT(DISTINCT c.question_id) AS feedback_cnt
FROM (
SELECT
a.feedback_id AS question_id,
a.parsed_data.used_external_source AS used_external_source
FROM parsed_results a
JOIN retrieved_question_ids r
ON a.feedback_id = r.question_id
WHERE a.parsed_data.used_external_source IS NOT NULL
AND a.parsed_data.used_external_source != ""
AND lower(a.parsed_data.used_external_source) != "null"
) c
GROUP BY lower(CAST(c.used_external_source AS STRING))
ORDER BY feedback_cnt DESC;
通過(guò)以上步驟,一個(gè)能夠自動(dòng)處理非結(jié)構(gòu)化反饋、并支持智能問(wèn)答式分析的洞察系統(tǒng)便搭建完成。這套方法不僅適用于產(chǎn)品反饋,也可平移到客服質(zhì)檢、輿情分析、風(fēng)控線索挖掘等眾多需要理解文本的領(lǐng)域。
結(jié)束語(yǔ)
當(dāng)我們把目光從用戶(hù)反饋擴(kuò)展到更廣泛的企業(yè)數(shù)據(jù),我們發(fā)現(xiàn),幾乎所有成熟的業(yè)務(wù)分析系統(tǒng),都天然伴隨著大量非結(jié)構(gòu)化數(shù)據(jù)。只是長(zhǎng)期以來(lái),這些數(shù)據(jù)并未被系統(tǒng)性納入分析體系,更多停留在“可存儲(chǔ)、不可分析”的狀態(tài)。

我們所做的,正是通過(guò) HSAP 能力在一個(gè)統(tǒng)一平臺(tái)中融合實(shí)時(shí)分析、智能檢索與 AI 推理能力,喚醒這些數(shù)據(jù)資產(chǎn)的價(jià)值。這并非簡(jiǎn)單地引入 AI,而是讓企業(yè)已有的數(shù)據(jù)基礎(chǔ)能夠自然、平滑地智能化升級(jí),讓數(shù)據(jù)真正成為驅(qū)動(dòng)業(yè)務(wù)決策的核心力量。
我們歡迎您基于文中的案例開(kāi)始探索,讓 SelectDB / Apache Doris 成為您業(yè)務(wù)智能化進(jìn)程中統(tǒng)一、高效的數(shù)據(jù)基座。


