简介
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 shopTO dbai.shop_mm;
按表加载
单表加载,可重命名目标表:
COPY TABLE shop.help_articlesTO dbai.shop_mm.docs_mm;
按列加载
仅加载所需列,最常用的方式:
COPY shop.help_articles (id, title, content, category, update_time)TO dbai.shop_mm.docs_mm;
加载时同步向量化
在
COPY 的 WITH 子句中声明 PREDICT(<模型名称>, <源列>) AS <向量列>,节点在加载过程中同步完成向量化:-- 文本列向量化COPY shop.help_articles (id, title, content, category, update_time)TO dbai.shop_mm.docs_mmWITH (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_imagesWITH (PREDICT(clip, image_url) AS img_vec);-- MongoDB 文档向量化COPY logs.customer_service (session_id, user_id, messages, created_at)TO dbai.shop_mm.chat_logsWITH (PREDICT(bge_large_zh, messages) AS msg_vec);
索引构建
在已加载至节点的表上,可通过
ALTER TABLE 在指定列上增加向量列或全文索引:-- 在 content 列上增加向量列,指定模型名称ALTER TABLE dbai.shop_mm.docs_mmADD PREDICT(bge_large_zh, content) AS embedding;-- 在 content 列上增加全文索引ALTER TABLE dbai.shop_mm.docs_mmADD FTS INDEX ON (content);
混合检索
混合检索通过
hybrid_search 表函数完成,单路向量检索使用 vector_search,单路全文检索使用 fts。混合检索
在同一条 SQL 中同时执行向量检索与全文检索,结合结构化条件过滤,统一排序后返回结果:
SELECT id, title, category, _hybrid_score, _distance, _scoreFROM 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, _distanceFROM 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, _scoreFROM 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.9FROM chat_logsWHERE created_at > current_date - 7;
写出为文件
COPY (SELECT sku, brand, img_vecFROM product_imagesWHERE 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_scoreFROM 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, _distanceFROM 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 等派生表存放加工结果,避免直接修改业务原表。