← 返回 技术博客

技术文章

HENGSHI SENSE AI助手RAG架构实战:向量化检索与多模型适配技术实现

HENGSHI SENSE AI助手RAG架构实战:向量化检索与多模型适配技术实现

2026/05/22技术博客HENGSHI15 分钟阅读
HENGSHI高级分析函数BI衡石科技
HENGSHI SENSE AI助手RAG架构实战:向量化检索与多模型适配技术实现

Article body

正文

导语:在企业级BI平台中,AI助手的核心价值不是”能聊天”,而是”能查准数据”。当用户用自然语言提问时,系统需要在毫秒级别完成意图理解→知识检索→SQL生成→结果验证的完整链路。HENGSHI SENSE的AI助手架构选择了一条技术硬核路线:基于多语言向量模型的RAG(Retrieval-Augmented Generation)架构,配合可扩展的多模型适配层,在保证查询准确性的同时实现灵活的模型选型。本文将从向量库服务部署、RAG检索链路、多模型适配配置三个维度,全面拆解HENGSHI SENSE AI助手的工程实现。


一、为什么需要RAG?ChatBI的准确率困境

1.1 纯LLM方案的固有局限

在深入HENGSHI SENSE的AI架构之前,需要先理解一个核心工程问题:为什么纯LLM方案在BI场景中无法达到生产级准确率?

企业级数据分析场景有以下几个独特的约束条件:

约束维度通用LLM场景企业BI场景
知识范围通用知识库,覆盖面广私有数仓schema、业务口径、行业术语
准确性要求容忍一定的创造性回答要求100%确定性的SQL和查询结果
Schema复杂度输入文本通常几百字数仓可能包含数百张表、数千字段
上下文窗口可以截断或摘要完整的表结构、字段说明、指标定义不能省略
时效性知识截止日期可接受数据实时变化,schema频繁变更

纯LLM方案的核心问题在于:它试图用”参数化知识”(训练时学到的知识)来处理”非参数化知识”(企业私有数仓的schema和业务口径)。这两者的本质是不兼容的——数仓的表名、字段名、业务含义是任意的、企业独有的,LLM不可能在训练阶段学到。

1.2 RAG架构的技术优势

RAG(Retrieval-Augmented Generation,检索增强生成)架构的核心思想是:不要让LLM去”记住”企业私有知识,而是在推理时把相关知识”喂”给它。

在BI场景中,RAG的典型工作流如下:

用户提问:"上个月华东区的GMV是多少?"


┌─────────────────────────────────────────┐
│ Step 1: 问题向量化                        │
│   将自然语言问题编码为高维向量             │
└──────────────┬──────────────────────────┘

┌─────────────────────────────────────────┐
│ Step 2: 向量检索                         │
│   在知识库中检索与问题语义最相关的         │
│   表结构、字段说明、指标定义               │
└──────────────┬──────────────────────────┘

┌─────────────────────────────────────────┐
│ Step 3: 上下文组装                        │
│   将检索到的知识+用户问题组装为prompt      │
└──────────────┬──────────────────────────┘

┌─────────────────────────────────────────┐
│ Step 4: LLM生成SQL                       │
│   基于精准上下文生成确定性的SQL语句        │
└──────────────┬──────────────────────────┘

┌─────────────────────────────────────────┐
│ Step 5: 执行与验证                        │
│   执行SQL并返回查询结果给用户             │
└─────────────────────────────────────────┘

这种架构的工程优势在于:

  • 知识实时更新:数仓schema变更后,只需重新向量化知识库,无需重新训练模型
  • 知识精准注入:只检索与当前问题相关的schema片段,避免上下文爆炸
  • 可追溯可审计:每次查询使用的知识来源可追溯,便于问题诊断

二、向量库服务架构:从组件选型到生产部署

2.1 HENGSHI SENSE向量库的架构设计

HENGSHI SENSE的向量检索服务由两个核心组件构成:

┌──────────────────────────────────────────────────────────┐
│                  HENGSHI SENSE AI Architecture            │
│                                                          │
│  ┌────────────┐    ┌──────────────────┐                   │
│  │ vector-    │    │ vector-postgres  │                   │
│  │ serve      │◄──►│ (pgvector)       │                   │
│  │            │    │                  │                   │
│  │ Embedding  │    │ 向量存储 &       │                   │
│  │ Service    │    │ 相似度检索        │                   │
│  └─────┬──────┘    └────────┬─────────┘                   │
│        │                    │                             │
│        │ HTTP API           │ JDBC                        │
│        │ /v1/embeddings     │                             │
│        ▼                    ▼                             │
│  ┌─────────────────────────────────────┐                  │
│  │         HENGSHI SENSE Core           │                  │
│  │                                     │                  │
│  │  AI Assistant Module                 │                  │
│  │  ├── Question Understanding          │                  │
│  │  ├── Knowledge Retrieval (RAG)       │                  │
│  │  ├── SQL Generation (LLM)            │                  │
│  │  └── Result Validation               │                  │
│  └─────────────────────────────────────┘                  │
└──────────────────────────────────────────────────────────┘

vector-serve:负责文本向量化(Embedding)的推理服务。它接收文本输入,调用嵌入模型生成高维向量表示。

vector-postgres:基于PostgreSQL + pgvector扩展的向量数据库。负责存储数据集元数据、指标定义、字段说明等知识的向量表示,并提供高效的近似最近邻(ANN)检索能力。

2.2 嵌入模型选型:为什么选multilingual-e5-base

HENGSHI SENSE的向量服务默认使用 intfloat/multilingual-e5-base 模型,这是一个基于Transformer架构的多语言文本嵌入模型。选型考量如下:

选型维度multilingual-e5-baseOpenAI text-embedding-3BGE-large-zh
多语言支持✅ 支持中英日韩等15+语言✅ 但中文效果偏弱⚠️ 主要优化中文
私有部署✅ 可完全离线部署❌ 必须调用云API✅ 可离线部署
向量维度768维1536/3072维1024维
推理速度中等(~50ms/句)快(云端推理)慢(~80ms/句)
检索效果中上(MTEB排名靠前)优秀优秀(中文场景)
硬件要求1-2GB GPU内存无(云服务)2-4GB GPU内存

对于企业级BI PaaS场景,multilingual-e5-base的选择是合理的:

  • 企业客户通常有数据不出域的合规要求,私有部署是刚需
  • 多语言能力满足跨国企业的需求
  • 768维向量在检索精度和存储/计算成本之间取得了良好的平衡

2.3 部署方式一:脚本部署(单机/Docker Compose)

对于中小规模部署或开发测试环境,HENGSHI提供了基于Docker Compose的一键部署脚本:

# 克隆部署配置
git clone <hengshi-vector-deploy-repo>
cd hengshi-vector-deploy

# 启动向量服务(vector-serve + vector-postgres)
bash deploy.sh -m start

# 查看运行状态
bash deploy.sh -m status

# 停止服务
bash deploy.sh -m stop

# 清理容器并停止
bash deploy.sh -m down

部署成功后,系统将启动两个Docker容器:

容器端口功能
vector-serve3000嵌入模型推理服务
vector-postgres54321向量数据库(pgvector)

2.4 部署方式二:Kubernetes集群部署

对于生产环境,推荐使用Kubernetes部署,以获得更好的高可用性和弹性伸缩能力:

Step 1:应用K8s资源

# vectorize-pg.yaml — 向量数据库
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: vector-postgres
  namespace: hengshi
spec:
  serviceName: vector-postgres
  replicas: 1
  selector:
    matchLabels:
      app: vector-postgres
  template:
    metadata:
      labels:
        app: vector-postgres
    spec:
      containers:
      - name: postgres
        image: pgvector/pgvector:pg16
        ports:
        - containerPort: 5432
        env:
        - name: POSTGRES_DB
          value: postgres
        - name: POSTGRES_USER
          value: postgres
        - name: POSTGRES_PASSWORD
          valueFrom:
            secretKeyRef:
              name: vector-db-secret
              key: password
        volumeMounts:
        - name: pg-data
          mountPath: /var/lib/postgresql/data
  volumeClaimTemplates:
  - metadata:
      name: pg-data
    spec:
      accessModes: ["ReadWriteOnce"]
      storageClassName: longhorn  # 根据集群存储系统修改
      resources:
        requests:
          storage: 50Gi
---
apiVersion: v1
kind: Service
metadata:
  name: vector-postgres
  namespace: hengshi
spec:
  ports:
  - port: 5432
    targetPort: 5432
  selector:
    app: vector-postgres
# vector-serve.yaml — 嵌入服务
apiVersion: apps/v1
kind: Deployment
metadata:
  name: vector-serve
  namespace: hengshi
spec:
  replicas: 2
  selector:
    matchLabels:
      app: vector-serve
  template:
    metadata:
      labels:
        app: vector-serve
    spec:
      containers:
      - name: vector-serve
        image: hengshi/vector-serve:latest
        ports:
        - containerPort: 3000
        resources:
          requests:
            memory: "2Gi"
            cpu: "1"
          limits:
            memory: "4Gi"
            cpu: "2"
        volumeMounts:
        - name: model-cache
          mountPath: /root/.cache/huggingface/hub
      volumes:
      - name: model-cache
        persistentVolumeClaim:
          claimName: model-cache-pvc
---
apiVersion: v1
kind: Service
metadata:
  name: vector-serve
  namespace: hengshi
spec:
  type: ClusterIP
  ports:
  - port: 3000
    targetPort: 3000
  selector:
    app: vector-serve
kubectl -n hengshi apply -f vectorize-pg.yaml -f vector-serve.yaml

Step 2:加载模型文件

# 复制模型文件到vector-serve Pod
kubectl -n hengshi cp models--intfloat--multilingual-e5-base.tar.gz \
  vector-serve-xxxx:/root/.cache/huggingface/hub/

# 在Pod内解压
kubectl -n hengshi exec -t vector-serve-xxxx -- \
  bash -c "cd /root/.cache/huggingface/hub && tar xf models--intfloat--multilingual-e5-base.tar.gz"

2.5 HENGSHI SENSE Core对接向量服务

部署完成后,需要在HENGSHI SENSE核心服务中配置向量服务的连接信息:

单节点部署

# 编辑环境配置文件
vi /opt/hengshi/conf/hengshi-sense-env.sh

# 添加以下配置
export VECTOR_DB_URL="jdbc:postgresql://<VECTOR_PG_HOST>:54321/postgres"
export VECTOR_ENDPOINT="http://<VECTOR_SERVE_HOST>:3000/v1/embeddings"

Docker Compose部署

# 在.env文件中添加
VECTOR_DB_URL=jdbc:postgresql://vector-postgres:5432/postgres
VECTOR_ENDPOINT=http://vector-serve:3000/v1/embeddings

Kubernetes部署

# 编辑configmap
kubectl -n hengshi edit configmap hengshi-sense
apiVersion: v1
kind: ConfigMap
metadata:
  name: hengshi-sense
  namespace: hengshi
data:
  VECTOR_DB_URL: "jdbc://vector-postgres:5432/postgres"
  VECTOR_ENDPOINT: "http://vector-serve:3000/v1/embeddings"

2.6 部署验证与故障排查

部署完成后,需要验证向量服务的连通性:

验证vector-serve嵌入服务

curl -X POST http://localhost:3000/v1/embeddings \
  -H 'Content-Type: application/json' \
  -d '{"input": ["上个月华东区的销售额"], "model": "intfloat/multilingual-e5-base"}'

期望返回类似如下JSON:

{
  "object": "list",
  "data": [
    {
      "object": "embedding",
      "embedding": [0.0123, -0.0456, 0.0789, ...],
      "index": 0
    }
  ],
  "model": "intfloat/multilingual-e5-base",
  "usage": {
    "prompt_tokens": 12,
    "total_tokens": 12
  }
}

验证vector-postgres向量检索

-- 进入PostgreSQL
psql -h localhost -p 54321 -U postgres -d postgres

-- 验证pgvector扩展
SELECT * FROM pg_extension WHERE extname = 'vector';

-- 测试向量检索
SELECT vectorize.transform_embeddings(
  input => '测试嵌入',
  model_name => 'intfloat/multilingual-e5-base'
);

常见故障排查

错误信息可能原因解决方案
query vector db failvector-serve和vector-postgres通信故障分别验证两个服务的健康状态和网络连通性
connection refused端口未开放或防火墙限制检查防火墙规则和网络策略
model not found模型文件未正确加载重新执行模型文件复制和解压步骤
out of memoryGPU内存不足减少vector-serve副本数或增加GPU资源

三、多模型适配层:从云服务到私有化部署的灵活配置

3.1 模型适配架构设计

HENGSHI SENSE的AI助手并非绑定单一LLM供应商,而是设计了一套灵活的多模型适配层:

┌─────────────────────────────────────────────────────┐
│              HENGSHI SENSE AI Model Adapter           │
│                                                      │
│  ┌───────────────────────────────────────────┐        │
│  │           Unified OpenAI-Compatible API    │        │
│  │    (统一请求/响应格式)                     │        │
│  └─────────────┬─────────────────────────────┘        │
│                │                                      │
│     ┌──────────┼──────────┐                          │
│     ▼          ▼          ▼                          │
│  ┌──────┐  ┌──────┐  ┌──────┐                       │
│  │云服务 │  │云服务 │  │私有化│                       │
│  │DeepSeek│  │OpenAI│  │Ollama│                      │
│  └──────┘  └──────┘  └──────┘                       │
│     │          │          │                          │
│     ▼          ▼          ▼                          │
│  ┌──────┐  ┌──────┐  ┌──────┐                       │
│  │Bedrock│  │Groq  │  │通义千问│                      │
│  └──────┘  └──────┘  └──────┘                       │
│                                                      │
└─────────────────────────────────────────────────────┘

核心设计理念是OpenAI API兼容:任何兼容OpenAI API请求/响应格式的模型服务,都可以无缝接入HENGSHI SENSE。这意味着企业可以根据自身的合规要求、成本预算和性能需求,灵活选择模型供应商。

3.2 支持的模型供应商矩阵

HENGSHI SENSE目前已适配12+模型供应商:

供应商部署方式推荐场景API格式
DeepSeek云服务高性价比中文场景OpenAI兼容
OpenAI云服务全球化部署、英文场景原生OpenAI API
Azure OpenAI云服务企业合规、数据驻留OpenAI兼容
AWS Bedrock云服务已在AWS生态的企业自定义适配
通义千问云服务/私有化中文场景、阿里云生态OpenAI兼容
Moonshot AI云服务长上下文场景(128K+)OpenAI兼容
MiniMax云服务/私有化高性价比MoE模型OpenAI兼容
百川AI云服务/私有化中文大模型OpenAI兼容
Groq Cloud云服务极低延迟推理OpenAI兼容
MistralAI云服务欧洲数据合规OpenAI兼容
Nvidia云服务GPU加速推理OpenAI兼容
TogetherAI云服务开源模型托管OpenAI兼容
Ollama私有化完全离线部署OpenAI兼容

3.3 私有化部署模型推荐

对于数据安全要求高、需要完全离线部署的企业,HENGSHI推荐以下私有化模型配置:

工作流模式(结构化任务处理)

适合需要高指令遵循能力、结构化输出的场景:

模型参数量架构推荐GPU配置特点
Qwen3.5-27B27BDense2× NVIDIA A100 80G 或 4× A800 40G指令遵循优秀,中文能力强

Agent模式(多步推理+工具调用)

适合需要复杂推理、长上下文和工具调用的BI Agent场景:

模型参数量架构推荐GPU配置特点
Kimi-K2.51T (1000B) / 32B (MoE)MoE8× NVIDIA H100 80G 或 16× A100 80G超长上下文,复杂推理
MiniMax-M2.5230B / 10B (MoE)MoE4× NVIDIA A100 80G 或 8× A800 40G性价比高,中文优化
GLM-5744B / 40B (MoE)MoE8× NVIDIA H100 80G 或 16× A100 80G工具调用能力强

量化部署建议

如果GPU资源有限,可以考虑使用INT4/INT8量化版本:

量化方式内存节省精度影响适用场景
BF16(全精度)基准生产环境、高精度要求
INT8量化~50%轻微资源受限的生产环境
INT4量化~75%中等开发测试、边缘部署

3.4 模型配置实战

云服务模型配置(以DeepSeek为例)

# 在系统管理后台配置
# 请求地址
API_ENDPOINT=https://platform.deepseek.com/chat/completions

# API密钥
API_KEY=sk-xxxxxxxxxxxxxxxx

# 模型名称
MODEL_NAME=deepseek-chat

# 温度参数(BI场景建议设低,减少幻觉)
TEMPERATURE=0.1

# 最大token数
MAX_TOKENS=4096

私有化模型配置(以Ollama为例)

# 安装Ollama
curl -fsSL https://ollama.ai/install.sh | sh

# 拉取模型
ollama pull qwen2.5:27b

# 启动API服务(默认兼容OpenAI API格式)
ollama serve

# HENGSHI SENSE配置
API_ENDPOINT=http://localhost:11434/v1/chat/completions
API_KEY=ollama  # Ollama不需要真实密钥,但字段必须填写
MODEL_NAME=qwen2.5:27b

AWS Bedrock配置(以Claude 3.5为例)

# HENGSHI SENSE配置
API_ENDPOINT=https://bedrock-runtime.us-east-1.amazonaws.com/model/anthropic.claude-3-5-sonnet-20241022-v2:0/invoke

# AWS凭证通过环境变量或IAM Role传入
AWS_ACCESS_KEY_ID=AKIAxxxxxxxx
AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxx
AWS_REGION=us-east-1

四、AI助手的版本演进:从基础问数到智能解读

4.1 AI能力版本演进时间线

HENGSHI SENSE的AI能力经历了清晰的渐进式演进:

版本AI能力技术实现
5.1.x基础AI助手Text-to-SQL、自然语言查询
5.4.0Claude 3集成AWS Bedrock接入、多模型支持
5.4.8Nova模型AWS Bedrock Nova模型支持
6.0.0AI入口集成指标分析页AI提问入口、一键生成看板、SDK支持
6.0.4Agent增强Copilot SDK显示思考过程、MOVA模型兼容
6.0.5Agent草稿纸Agent启用”草稿纸”工具,增强多步推理
6.1.0智能解读AI智能解读BI报表、Data Agent悬浮按钮
6.2.xChatBI优化SSO默认角色、表格保留排序、生成表格添加到仪表盘

4.2 关键架构优化:从串行到并行

6.0.0版本对AI助手的prompt指令执行架构进行了重大优化——步骤执行从串行改为并行

// v5.x 串行执行(总耗时 = 各步骤耗时之和)
Step 1: Schema检索 ──► Step 2: 意图理解 ──► Step 3: SQL生成 ──► Step 4: 结果格式化
     200ms                150ms                300ms                100ms
                                                         总耗时: ~750ms

// v6.0 并行执行(总耗时 ≈ 最长步骤耗时)
Step 1: Schema检索 ──────┐
     200ms                │
Step 2: 意图理解 ────────┼──► Step 3: SQL生成(等待前两步完成)
     150ms                │         300ms
Step 4: 权限校验 ────────┘
     100ms
                                        总耗时: ~500ms

这一优化将AI助手的平均响应时间缩短了约30-40%,显著提升了用户体验。

4.3 AI助手SDK与Copilot集成

HENGSHI SENSE提供了React JS版的AI助手SDK,支持第三方系统深度集成:

// 示例:在React应用中嵌入HENGSHI AI Copilot
import { HengshiCopilot } from '@hengshi/ai-sdk';

function App() {
  return (
    <div className="app-container">
      <HengshiCopilot
        endpoint="https://your-hengshi-instance.com"
        token="your-api-token"
        theme="light"
        showThinking={true}  // 显示思考过程
        position="bottom-right"
        onQuerySubmit={(query) => {
          console.log('User query:', query);
        }}
        onResultReady={(result) => {
          console.log('AI result:', result);
        }}
      />
    </div>
  );
}

4.4 智能解读功能(6.1.0+)

6.1.0版本引入的”AI智能解读”功能,允许用户点击按钮触发AI对当前BI报表进行智能分析:

  • 自动分析报表中的趋势、异常和关键发现
  • 分析结果可与图表联动——点击分析中的某个发现,图表自动跳转到对应的维度筛选
  • 支持中文自然语言输出

这一功能的技术实现基于报表元数据的结构化提取+LLM分析生成,而非简单的图表描述。


五、工程最佳实践

5.1 向量库运维建议

实践项建议原因
知识库更新频率Schema变更后立即重新向量化避免检索到过时的表结构信息
向量索引类型使用IVFFlat或HNSW索引平衡检索精度和查询延迟
监控指标向量检索延迟、检索召回率、嵌入服务QPS及时发现性能瓶颈
数据备份定期备份vector-postgres向量数据重建成本高

5.2 模型选型建议

场景推荐模型原因
高并发简单查询DeepSeek / Groq低延迟、高吞吐
复杂分析任务Claude 3.5 / GPT-4o强推理能力
完全离线部署Qwen2.5-27B / GLM-5私有化支持好
预算有限MiniMax-M2.5MoE架构性价比高
中文场景DeepSeek / 通义千问中文理解和生成质量高

5.3 准确率优化策略

  1. 指标语义层对齐:确保向量知识库中的指标定义与指标平台保持同步
  2. 业务术语映射:为行业术语建立标准化的同义词表,提升检索召回率
  3. Few-shot示例库:为常见查询模式准备示例问答对,在prompt中提供上下文
  4. 结果校验层:在SQL执行后增加结果合理性校验,拦截明显的异常结果
  5. 用户反馈闭环:记录用户对AI回答的评价,持续优化prompt和检索策略

六、总结

HENGSHI SENSE的AI助手架构体现了企业级BI平台在AI集成上的工程化思考:

  1. RAG架构保证了知识实时性和查询准确性,通过多语言向量模型+pgvector实现了高效的语义检索
  2. 多模型适配层提供了灵活的部署选择,从云服务到私有化、从通用模型到专业模型都可以灵活切换
  3. 渐进式版本演进确保了AI能力的稳定落地,从基础问数到智能解读、从串行到并行执行,每一步都经过了工程验证
  4. SDK化的集成方式让AI能力可以轻松嵌入第三方业务系统,符合衡石”BI PaaS引擎”的核心定位

对于正在构建AI+BI能力的企业而言,HENGSHI SENSE的这套架构提供了一个值得参考的工程实践样本——不是追求最前沿的模型能力,而是追求最可靠的工程落地。

HENGSHI SENSE

丰富的资源 完整的生态

邀您成为衡石伙伴

立即加入

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