← 返回 技术博客

技术文章

向量检索 × BI 语义层:Embedding 驱动的语义化数据探索技术路径

解析衡石 BI 如何通过 Embedding、HNSW 与混合检索构建语义层,让业务人员以自然语言发现字段、指标和跨数据集关联。

2026/08/13技术博客HENGSHI5 分钟阅读
向量检索BI 语义层Embedding语义化数据探索HNSW衡石 BI

Article body

正文

引言

传统 BI 的数据探索方式是「字段驱动的」——用户打开一个数据集,看到几十个字段名,需要自己理解每个字段的含义,然后拖拽到行、列、过滤区来构建分析。

这种方式对技术人员来说不算难,但对业务人员来说门槛很高。一个销售总监看到字段名 ord_amt_excl_tax_amt 时,大概率不知道这是「不含税订单金额」。更不用说,他想分析「客户价值」时,面对几百个字段根本不知道该选哪几个。

问题的本质是:BI 系统理解字段名,但不理解业务语义。 用户说的是业务语言,系统存的是技术字段,中间有一道翻译鸿沟。

向量检索技术的引入,让 BI 系统第一次具备了「语义理解」能力——从字段名的精确匹配,进化到业务概念的模糊语义匹配。 衡石 BI 在最新版本中构建了完整的向量检索 × 语义层体系,本文将深入解析这条技术路径。


一、从关键词匹配到语义匹配

1.1 传统搜索的局限

传统 BI 中的数据发现依赖关键词匹配:用户搜索「销售额」,系统在所有字段名和描述中搜索包含「销售额」的文本。

这种方式的局限:

同义词盲区:用户搜「营收」,但字段名叫「营业收入」——关键词不匹配,搜不到。

缩写盲区:用户搜「GMV」,但字段名叫「gmv_amount」——如果搜索不做大小写不敏感和子串匹配,可能搜不到。

语义近似盲区:用户想分析「客户活跃度」,但没有字段叫「客户活跃度」——它可能由「登录次数」「下单次数」「访问时长」等多个字段共同表征。关键词匹配无法建立这种语义关联。

1.2 向量检索的解题思路

向量检索的核心是:把文本转换为高维向量,用向量距离衡量语义相似度。

「销售额」和「营业收入」虽然字面不同,但在语义空间中的向量距离很近——因为它们在大量语料中经常出现在相似的上下文里。向量检索能捕捉这种语义近似。

向量检索的工作流程:

  1. 把所有字段名、字段描述、指标名称、业务术语通过 Embedding 模型转换为向量
  2. 把向量存入向量索引(如 HNSW)
  3. 用户查询时,把查询文本也转换为向量
  4. 在向量索引中找到距离最近的 Top-K 向量,返回对应的字段/指标

关键变化:从「字面匹配」到「语义匹配」。用户说「营收」,系统能找到「营业收入」字段;用户说「客户活跃度」,系统能推荐「登录次数」「下单频次」等关联字段。


二、衡石 BI 语义层的向量索引架构

2.1 语义层的数据模型

衡石 BI 的语义层不是简单的字段目录,而是一个多层语义网络:

第一层:字段层。最基础的元数据单元——数据集中的每个字段。包含字段名、类型、描述、所属数据集。

第二层:指标层。基于字段计算的派生指标——如「月度销售额」= SUM(订单金额) 按月分组。每个指标关联底层字段和计算逻辑。

第三层:概念层。业务概念的抽象表达——如「客户价值」是一个概念,由「消费金额」「购买频次」「最近活跃时间」三个指标共同表征。概念层是连接业务语言和技术实现的桥梁。

第四层:关系层。字段、指标、概念之间的语义关系——同义关系(「营收」=「营业收入」)、层级关系(「华东区」包含「上海」「江苏」)、派生关系(「毛利率」派生自「毛利」和「营收」)。

2.2 向量索引的构建

四层语义网络的每个节点都被向量化并建立索引:

字段向量化:把字段名 + 字段描述拼接为文本,通过 Embedding 模型生成 1024 维向量。如字段 ord_amt 的描述文本为「订单金额,即用户下单时支付的订单总金额,不含运费和优惠」,生成的向量同时编码了「订单」「金额」「支付」等语义。

指标向量化:把指标名称 + 计算口径描述 + 业务说明拼接。如「月度销售额」的文本为「月度销售额:按自然月汇总的已支付订单金额合计,排除退款和作废订单」,向量编码了「月度」「销售额」「已支付」「排除退款」等语义。

概念向量化:把概念名称 + 定义 + 关联指标列表拼接。如「客户价值」的文本为「客户价值:综合评估客户对企业的贡献程度,由消费金额、购买频次、最近活跃时间三个维度构成」,向量编码了「客户」「价值」「贡献」「消费」「频次」「活跃」等语义。

关系向量化:关系本身不单独向量化,而是在节点向量中通过描述文本隐式编码。比如「华东区」的描述文本中包含「包含上海、江苏、浙江、安徽、福建」,向量中隐含了这种层级关系。

2.3 Embedding 模型选型

衡石 BI 语义层使用了两级 Embedding 策略:

一级:通用语义编码。使用 BGE-M3 作为基础模型,对文本做通用语义编码。BGE-M3 支持中英文混合编码,在 MTEB 基准测试中表现优秀。

二级:领域微调编码。在 BGE-M3 基础上,用衡石积累的 BI 领域语料做对比学习微调。训练数据包括:

  • 指标同义对(「营收」-「营业收入」-「Revenue」-「营业总收入」)
  • 字段语义对(「订单金额」-「实际支付金额」-「不含税金额」)
  • 业务概念对(「客户活跃」-「登录频次」-「访问次数」)

微调后的模型在 BI 语义测试集上的 Top-5 召回率从 75% 提升到 93%。


三、语义化数据探索的四种模式

3.1 模式一:语义搜索字段

用户在数据集界面输入「客户消费能力」,系统不搜字段名,而是搜字段向量的语义空间:

  • 匹配到「客户LTV(生命周期价值)」——语义距离最近
  • 匹配到「月均消费金额」——语义距离次近
  • 匹配到「客单价」——语义距离第三
  • 匹配到「最近30天消费总额」——语义距离第四

系统推荐这 4 个字段,并标注语义相似度百分比。用户选择最符合意图的字段进行分析。

效果:用户不需要知道字段的确切名称,只需要描述想分析的概念。这在字段数量超过 100 的大宽表场景中尤其有价值——人工浏览几十个字段找目标,远不如语义搜索来得快。

3.2 模式二:概念到指标的自动映射

用户在 ChatBI 中问:「帮我分析各区域的客户价值排名」

Agent 推理引擎识别到「客户价值」是一个业务概念,而非具体指标。系统在概念层中检索「客户价值」的定义,发现它由三个指标构成:

  • 消费金额(权重 50%)
  • 购买频次(权重 30%)
  • 最近活跃天数(权重 20%,取反——越近价值越高)

Agent 自动生成计算逻辑:按区域聚合三个指标,做加权评分,按评分排名。整个过程用户不需要知道背后的计算细节,只需要提出分析意图。

效果:业务概念到技术实现之间的翻译完全自动化。这是传统 BI 无法做到的——传统 BI 要求用户自己把「客户价值」拆解为具体指标和计算公式。

3.3 模式三:语义推荐关联字段

用户选择了一个字段「销售额」做分析,系统自动推荐与之语义相关的字段:

  • 「订单量」——高度相关(销售额 = 客单价 × 订单量)
  • 「客单价」——高度相关(销售额 / 订单量)
  • 「退款金额」——中度相关(净销售额 = 销售额 - 退款金额)
  • 「折扣率」——中度相关(影响销售额的归因维度)

推荐逻辑基于字段共现分析 + 语义相似度双重计算——如果两个字段经常在同一分析中同时出现,且语义上相关,则推荐权重更高。

效果:降低用户的认知负担——不需要记住「分析销售额时应该同时看哪些字段」,系统主动推荐。

3.4 模式四:跨数据集语义关联

用户问了一个问题涉及多个数据集——「客户的购买行为和客服工单之间有什么关联?」

系统在语义层中检索「购买行为」和「客服工单」分别对应的字段集,发现两个数据集都有「客户ID」字段。虽然两个数据集中的字段名可能不同(一个叫 cust_id,另一个叫 customer_code),但语义层标注了它们的同义关系。

系统自动建议:通过「客户ID」做跨数据集关联,支持跨域分析。

效果:跨数据集分析的最大障碍是「不知道两个表能怎么关联」。语义层的同义标注让系统自动发现关联可能性。


四、向量检索的性能工程

4.1 索引选型:HNSW

衡石 BI 语义层的向量索引使用 HNSW(Hierarchical Navigable Small World)算法。选择 HNSW 的原因:

  • 查询速度快:在百万级向量库中,查询延迟可控制在 10ms 以内
  • 支持增量插入:新增字段/指标时不需要重建索引,直接增量插入
  • 召回率可调:通过调整 efSearch 参数在速度和召回率间灵活平衡

4.2 混合检索策略

纯向量检索在精确匹配场景下不如关键词检索——用户搜「GMV」,向量检索可能返回「Gross Merchandise Volume」而非缩写「GMV」本身。衡石采用混合检索:

  • 向量检索召回 Top-20 候选(语义近似)
  • BM25 关键词检索召回 Top-20 候选(精确匹配)
  • 两路结果合并,用 Cross-Encoder 重排序,取 Top-5

混合检索的召回率比单路向量检索高 8-12%,同时保持了精确匹配的能力。

4.3 缓存与预计算

对于高频查询的语义搜索,衡石做了两层缓存:

结果缓存:相同查询文本的搜索结果缓存 1 小时。如果多个用户搜同一个概念,只做一次向量检索。

Embedding 缓存:查询文本的 Embedding 向量缓存 24 小时。即使搜索结果缓存过期,Embedding 向量可以复用,跳过模型推理步骤。


五、语义层的治理与维护

5.1 语义质量监控

向量检索的效果高度依赖语义层数据的质量。衡石提供了一套语义质量监控面板:

覆盖率:用户搜索命中的字段/指标占比。如果 30% 的搜索未命中任何结果,说明语义层存在覆盖空白。

准确率:搜索结果中用户实际选择的字段占推荐结果的占比。如果推荐了 5 个字段但用户都未选择,说明推荐不准确。

冷门字段曝光率:长期未被搜索命中的字段列表。这些字段可能描述不清晰,需要优化元数据。

5.2 语义层的持续优化

语义层不是一次建好就结束的。随着业务发展,新概念不断出现,旧定义需要更新。衡石的优化机制:

用户反馈闭环:搜索结果旁有「这不是我要找的」按钮。用户点击后,系统记录负反馈,用于优化 Embedding 模型和重排序模型。

同义词发现:系统定期分析搜索日志,发现「用户搜了 A 但选择了字段 B」的模式,自动提取 A-B 同义对,供管理员审核后加入同义词表。

概念挖掘:系统分析高频搜索词,发现尚未定义为概念的业务术语,提示管理员补充概念定义。


六、总结

向量检索为 BI 语义层注入了「理解力」。从字段名的精确匹配到业务概念的语义搜索,BI 系统第一次真正理解了「用户想分析什么」,而不仅仅是「用户选了哪个字段」。

衡石 BI 的向量检索 × 语义层体系,三个核心价值:

  • 降低使用门槛:业务人员用自然语言描述意图,系统自动找到相关字段和指标
  • 发现隐藏关联:语义推荐帮助用户发现可能遗漏的分析维度
  • 支持概念级分析:从「字段驱动」到「概念驱动」,让 BI 理解业务语言

当 BI 系统从「展示数据的工具」进化为「理解数据的伙伴」,数据分析的入口不再是字段列表,而是自然语言对话框。

HENGSHI SENSE

丰富的资源 完整的生态

邀您成为衡石伙伴

立即加入

企业级部署、产品集成与试用咨询均可快速响应