文档中心>TDSQL Boundless>自研内核>数据库 AI 节点(DBAI)>Multi-Model Fabric 多模存储与混合检索

Multi-Model Fabric 多模存储与混合检索

最近更新时间:2026-05-21 12:59:00

我的收藏

简介

Multi-Model Fabric 是 DBAI 节点(TDSQL Boundless AI Node)提供的多模存储与混合检索能力套件,面向 RAG、语义检索与多模数据加工场景。Multi-Model Fabric 将多源异构数据的加载、向量化、索引构建与混合检索能力整合于节点内部,帮助用户无需自行搭建抽取与向量化流水线,即可构建统一的多模检索底座。
Multi-Model Fabric 不替代现有数据源,而是在其之上提供统一的多模存储与检索层,原始数据源的物理隔离与权限边界始终不被打破。

核心功能与优势

Multi-Model Fabric 对外提供以下四项核心能力:
自动接入与向量化:自动将多源数据加载至节点,并按指定列完成向量化构建,支持文本、长文档、图片等多种数据类型;
就地索引构建:对已纳管至 DBAI 的库表,按需在指定列上创建向量索引与全文索引,无需额外搭建索引服务;
混合检索:在同一条 SQL 中完成向量检索、全文检索与结构化条件过滤的联合排序,支持权重调节与评分输出;
双向数据流:支持读写对象存储,并将处理结果回写至已接入的数据源,实现加工结果与业务系统的闭环流转。
基于以上能力,Multi-Model Fabric 具备以下功能优势:
免建流水线,开箱即用:无需自行搭建数据抽取与向量化管线,指定数据源与目标列后节点自动完成加载、向量化与索引构建;
多模数据统一纳管:MySQL、PostgreSQL、MongoDB、Redis、对象存储中的文本、文档与图片数据,统一组织于同一检索底座中;
检索精度与召回兼顾:向量检索与全文检索在同一查询中联合执行,通过权重参数灵活平衡语义精度与关键字召回;
数据不出节点:向量化与检索均在节点内完成,数据全程不出 VPC,满足数据合规与安全性要求。

Multi-Model Fabric 功能使用

数据加载与向量化

使用 COPY ... TO ... 将多源数据加载至节点内置存储,支持库、表、列三种粒度。加载过程中可通过 WITH 子句同时声明向量化列,节点按源列类型自动选择 embedding 模型完成向量化。

按库加载

整库加载,自动按表落到目标库下同名表:
COPY DATABASE shop
TO dbai.shop_mm;

按表加载

单表加载,可重命名目标表:
COPY TABLE shop.help_articles
TO dbai.shop_mm.docs_mm;

按列加载

仅加载所需列,最常用的方式:
COPY shop.help_articles (id, title, content, category, update_time)
TO dbai.shop_mm.docs_mm;

加载时同步向量化

COPYWITH 子句中声明 PREDICT(<模型名称>, <源列>) AS <向量列>,节点在加载过程中同步完成向量化:
-- 文本列向量化
COPY shop.help_articles (id, title, content, category, update_time)
TO dbai.shop_mm.docs_mm
WITH (
PREDICT(bge_large_zh, content) AS embedding
);

-- 图片列向量化:源列存储 COS URL,节点自动拉取图片再向量化
COPY 's3://my-bucket/products/2026/*.parquet' (sku, image_url, brand, price)
TO dbai.shop_mm.product_images
WITH (
PREDICT(clip, image_url) AS img_vec
);

-- MongoDB 文档向量化
COPY logs.customer_service (session_id, user_id, messages, created_at)
TO dbai.shop_mm.chat_logs
WITH (
PREDICT(bge_large_zh, messages) AS msg_vec
);

索引构建

在已加载至节点的表上,可通过 ALTER TABLE 在指定列上增加向量列或全文索引:
-- 在 content 列上增加向量列,指定模型名称
ALTER TABLE dbai.shop_mm.docs_mm
ADD PREDICT(bge_large_zh, content) AS embedding;

-- 在 content 列上增加全文索引
ALTER TABLE dbai.shop_mm.docs_mm
ADD FTS INDEX ON (content);

混合检索

混合检索通过 hybrid_search 表函数完成,单路向量检索使用 vector_search,单路全文检索使用 fts

混合检索

在同一条 SQL 中同时执行向量检索与全文检索,结合结构化条件过滤,统一排序后返回结果:
SELECT id, title, category, _hybrid_score, _distance, _score
FROM hybrid_search(
'docs_mm',
'embedding', PREDICT(bge_large_zh, '如何申请退款'),
'content', '退款 流程',
k => 10,
alpha => 0.6,
prefilter => true
)
WHERE category IN ('refund', 'order')
ORDER BY _hybrid_score DESC;

-- 返回:
-- +----+-------------------+----------+--------------+-----------+--------+
-- | id | title | category | _hybrid_score| _distance | _score |
-- +----+-------------------+----------+--------------+-----------+--------+
-- | 17 | 退款流程说明 | refund | 0.932 | 0.078 | 8.71 |
-- | 42 | 如何发起退货退款 | refund | 0.891 | 0.112 | 7.93 |
-- | 5 | 订单退款常见问题 | order | 0.874 | 0.135 | 7.45 |
-- | 31 | 退款到账时间说明 | refund | 0.856 | 0.158 | 6.82 |
-- | 88 | 售后退款政策 | refund | 0.823 | 0.192 | 6.10 |
-- +----+-------------------+----------+--------------+-----------+--------+

纯向量检索

基于语义相似度进行检索,适用于模糊意图匹配场景:
SELECT id, title, _distance
FROM vector_search(
'docs_mm',
'embedding',
PREDICT(bge_large_zh, '如何申请退款'),
k => 10
)
ORDER BY _distance ASC;

-- 返回:
-- +----+-------------------+-----------+
-- | id | title | _distance |
-- +----+-------------------+-----------+
-- | 17 | 退款流程说明 | 0.078 |
-- | 42 | 如何发起退货退款 | 0.112 |
-- | 31 | 退款到账时间说明 | 0.135 |
-- | 5 | 订单退款常见问题 | 0.158 |
-- | 66 | 退换货须知 | 0.187 |
-- +----+-------------------+-----------+

纯全文检索

基于关键字匹配进行检索,适用于精确术语查询场景:
SELECT id, title, _score
FROM fts(
'docs_mm',
'content',
'退款 流程',
k => 10
)
ORDER BY _score DESC;

-- 返回:
-- +----+-------------------+--------+
-- | id | title | _score |
-- +----+-------------------+--------+
-- | 17 | 退款流程说明 | 8.71 |
-- | 42 | 如何发起退货退款 | 7.93 |
-- | 5 | 订单退款常见问题 | 7.45 |
-- | 31 | 退款到账时间说明 | 6.82 |
-- | 12 | 退款审核流程 | 6.55 |
-- +----+-------------------+--------+

主要参数说明

参数
作用
k
返回结果数量,默认10
alpha
混合检索中向量与全文的权重(仅 hybrid_search),值越大越偏语义
prefilter
是否在 top-k 前应用结构化过滤,设为 true 可利用标量索引加速
nprobs / refine_factor
IVF 索引下探测分区数与精排倍率,用于召回与精度调优
use_index
是否使用 ANN 索引,关闭时走精确 KNN

数据回写与流转

处理结果可回写至已接入的数据源,或写入对象存储供下游系统使用。

回写至源库

-- 为 MySQL 客服会话表补充意图标签
INSERT INTO shop.session_tags (session_id, intent, confidence)
SELECT session_id,
prompt('从这段对话提取意图:' || messages),
0.9
FROM chat_logs
WHERE created_at > current_date - 7;

写出为文件

COPY (
SELECT sku, brand, img_vec
FROM product_images
WHERE brand = 'X'
) TO 's3://my-bucket/exports/brand_x.parquet'
(FORMAT parquet);

读取并加工对象存储文件

SELECT *
FROM 's3://my-bucket/raw_logs/2026/05/*.json'
WHERE json_extract(payload, '$.event') = 'purchase';

使用场景

RAG 检索底座

将文本、文档、图片等多模语料统一加载至节点并完成向量化,通过混合检索为 RAG 应用提供高质量召回结果:
SELECT id, title, _hybrid_score
FROM hybrid_search(
'docs_mm',
'embedding', PREDICT(bge_large_zh, '如何申请退款'),
'content', '退款 流程',
k => 10,
alpha => 0.6,
prefilter => true
)
WHERE category IN ('refund', 'order')
ORDER BY _hybrid_score DESC;

-- 返回:
-- +----+-------------------+--------------+
-- | id | title | _hybrid_score|
-- +----+-------------------+--------------+
-- | 17 | 退款流程说明 | 0.932 |
-- | 42 | 如何发起退货退款 | 0.891 |
-- | 5 | 订单退款常见问题 | 0.874 |
-- | 31 | 退款到账时间说明 | 0.856 |
-- | 88 | 售后退款政策 | 0.823 |
-- +----+-------------------+--------------+

以图搜图

将商品图片向量化后,通过向量检索实现视觉相似度匹配,适用于电商搜索、内容审核与推荐等场景:
SELECT sku, brand, _distance
FROM vector_search(
'product_images',
'img_vec',
PREDICT(clip, 's3://uploads/query.jpg'),
k => 20
)
ORDER BY _distance ASC;

-- 返回:
-- +------------+----------+-----------+
-- | sku | brand | _distance |
-- +------------+----------+-----------+
-- | SKU-A2031 | Nike | 0.042 |
-- | SKU-B1078 | Nike | 0.089 |
-- | SKU-C3392 | Adidas | 0.126 |
-- | SKU-A2055 | Nike | 0.153 |
-- | SKU-D0817 | Puma | 0.197 |
-- +------------+----------+-----------+

业务数据加工与回写

对多源数据进行意图提取、标签生成、摘要生成等 AI 加工,将派生结果回写至业务表,实现数据价值的闭环流转。

对象存储数据探索

对 COS / S3 中的海量 JSON、Parquet 等文件进行探索式查询与批量清洗,无需预先导入即可直接分析。

实践教程

1. 先加载再向量化:避免直接对源库执行 embedding 计算,建议先通过 COPY 加载至节点,降低源库压力;
2. 检索前先做结构化过滤:将分区、租户、时间等条件置于 WHERE,可显著缩小向量检索范围,提升查询性能;
3. 使用派生表承载回写结果:建议新建 *_tags*_enriched 等派生表存放加工结果,避免直接修改业务原表。