标标达 > 基金估值NL2SQL项目
基金估值NL2SQL项目
招标
发布时间:
2026-01-16
发布于
--
收藏
公告内容
项目编号
立即查看
项目预算
立即查看
采购单位
立即查看
供应商
立即查看
采购代理
立即查看
公告详情
您当前为:【游客状态】,公告详情仅对登录用户开放,
登录/注册
后查看完整商机。全国免费咨询热线:400-888-7022

基金估值NL2SQL项目

原创 资管架构师 资管架构师

一、项目概述

1.1 项目背景

公募基金日常估值分析需频繁查询恒生估值、O32及行情系统数据,当前依赖技术人员编写SQL,存在响应慢、口径不统一、合规风险高等问题。本项目旨在构建基于RAG+NER+槽位架构的NL2SQL系统,让运营人员通过口语化提问快速、合规、准确的获取估值信息,提升工作效率。

1.2 核心目标

业务目标:覆盖80%以上日常估值查询场景(净值、持仓、收益、风险指标),响应时间≤3秒,非技术用户可独立操作。

技术目标:NER实体识别准确率≥98%,SQL生成准确率≥96%(核心场景≥98%),支持多指标、多维度复杂查询。

合规目标:实现基金代码级细粒度权限管控,操作全程可审计,数据口径统一且可追溯,符合《证券投资基金信息披露管理办法》等监管要求。

1.3 项目边界

1.3.1 支持场景

基金净值分析(单位净值、累计净值、净值波动)、持仓结构统计(股票/债券持仓市值、行业分布、仓位占比)、收益指标计算(周/月/季度收益率、夏普比率)、份额变动查询(总份额、申购赎回份额)。

1.3.2 不支持场景

非结构化数据解析(如基金合同文本提取)、跨外部数据源关联(如宏观经济数据拼接)、无元数据支撑的自定义指标计算、超权限敏感数据查询(如客户持仓明细)。

1.3.3 数据源范围

数据源名称 核心数据表 数据更新频率 接入方式
恒生估值系统 估值表 T+1 08:00前 JDBC直连(只读权限)
恒生O32系统 基金基本信息 变更时更新/每日更新 O32 REST API调用
行情数据源 行情表 准实时 FTP/行情API同步

1.4 项目周期与里程碑

里程碑 时间节点 核心任务 交付物
M1:项目启动与需求确认 第1周 需求调研、业务口径对齐、角色分工确认、槽位与NER实体类型定义 需求规格说明书、项目分工清单、槽位设计清单、NER实体类型定义文档
M2:数据源梳理与指标固化 第2-3周 数据源字段梳理、原子/通用派生指标穷举、元数据录入与审核 数据源字段清单、原子指标元数据Excel、派生指标规则清单、槽位-实体-元数据联动映射表
M3:NER模型训练与槽位配置 第4周 NER标注数据集构建、模型微调与部署、槽位填充规则引擎开发 NER标注数据集、微调后NER模型、槽位填充规则引擎、NER识别接口
M4:RAG知识库构建 第5周 向量数据库部署、元数据结构化处理、向量嵌入与知识库构建、检索策略优化 向量数据库部署文档、结构化元数据知识库、RAG检索接口
M5:系统开发与集成 第6-9周 核心模块开发(元数据管理、NER识别、槽位管理、SQL组装、权限控制)、模块集成测试 系统源代码、模块测试报告、集成后的Web应用(测试环境)
M6:测试与灰度上线 第10-11周 功能/性能/合规测试、试点用户灰度使用、问题收集与优化 完整测试报告、灰度上线用户反馈清单、优化后的系统版本
M7:全量上线与运维交接 第12周 生产环境部署、用户培训、运维手册交付、运维团队交接 上线报告、操作手册、运维手册、培训视频

二、组织分工与资源配置

2.1 项目团队组成与职责

角色 人数 核心职责 必备技能
项目负责人(业务侧) 1 需求对接、业务口径确认、用户测试组织、合规审核、项目进度管控 熟悉公募基金估值流程、恒生系统操作、项目管理能力
算法工程师 1 NER标注数据集构建、金融BERT模型微调与部署、RAG检索策略优化、槽位联动逻辑设计 PyTorch/TensorFlow、NLP、向量数据库操作、金融领域知识
数据工程师 1-2 数据源接入、数据清洗、数据仓库构建、原子指标表同步、元数据管理 Flink CDC、Hive/ClickHouse、JDBC、数据建模
后端开发工程师 1 核心模块开发(NER接口集成、槽位管理、SQL组装引擎、权限控制)、API开发与维护 Spring Boot、Python FastAPI、SQLAlchemy、分布式系统开发
前端开发工程师 1 Web界面开发、查询交互设计、数据可视化展示、槽位填充预览功能开发 Vue3、ECharts、Element Plus、响应式设计
测试工程师(可选) 1 测试用例设计、功能/性能/合规测试执行、Bug跟踪与回归测试 软件测试方法、Postman、Jmeter、SQL基础
运维工程师 1(兼职) 服务器部署、系统监控、日志管理、数据备份与恢复 Linux、Docker、数据库运维、监控工具使用

2.2 软硬件资源配置

2.2.1 服务器资源

资源类型 配置规格 数量 用途
应用服务器 8核16GB,500GB SSD存储 1台 部署Web应用、后端服务、NER识别模块、RAG检索模块
数据服务器 16核32GB,1TB SSD存储 1台 部署数据仓库(ClickHouse)、向量数据库(Milvus)、MySQL元数据库
GPU服务器 8卡A100 1台 BERT模型微调推理、大模型推理等

2.2.2 软件与工具

层级 软件/工具选型 选型理由
数据层 ClickHouse、MySQL 8.0、Milvus 2.3.x ClickHouse支持高频查询,MySQL存储元数据,Milvus适配向量检索,均为开源工具,成本可控
计算与同步层 Apache Flink CDC、DataX Flink CDC实时同步增量数据,DataX全量初始化历史数据,保障数据时效性
模型层 中证金融BERT、通义千问Embedding API、通义千问大模型API 金融BERT适配基金术语,商业大模型API无需算法团队维护,准确率高、部署快
应用层 Spring Boot 2.7.x、Python FastAPI、ONNX Runtime Java负责Web服务与权限控制,Python负责NLP与SQL生成,ONNX Runtime加速模型推理
前端层 Vue3、Element Plus、ECharts 轻量化开发,组件丰富,支持数据可视化,适配非技术用户操作习惯
开发与测试工具 IntelliJ IDEA、Vue CLI、Postman、Jmeter、LabelStudio 覆盖全流程开发测试,LabelStudio支持NER数据集标注,提升标注效率

三、核心设计方案

3.1 整体架构设计

系统采用分层架构设计,从上至下分为前端交互层、应用服务层、模型与检索层、数据层,各层通过API/接口联动,形成完整的数据流转链路:

前端交互层:用户输入口语化query,展示NER识别结果、槽位填充预览、SQL结果及可视化图表,支持手动编辑槽位与结果导出。

应用服务层:核心业务模块集成,包括元数据管理模块、NER实体识别模块、槽位管理模块、SQL组装引擎、权限控制模块、操作审计模块。

模型与检索层:NER模型负责实体识别,RAG知识库提供元数据检索支撑,大模型API负责补充复杂逻辑生成。

数据层:存储源数据、元数据、向量数据、审计日志,保障数据安全与可追溯。

3.2 元数据体系设计

3.2.1 元数据核心结构

元数据体系分为原子指标、派生指标、复合指标、维度、时间粒度5大类,均关联槽位信息,结构如下:

{ "meta_version": "v1.0", "biz_domain": "fund_valuation", "update_time": "*开通会员可解锁*", "atomic_metrics": [/* 原子指标元数据,含slot_mapping字段 */], "derived_metrics": [/* 派生指标元数据,含slot_mapping字段 */], "composite_metrics": [/* 复合指标元数据,含slot_mapping字段 */], "dimensions": [/* 维度元数据,含slot_mapping字段 */], "time_granularities": [/* 时间粒度元数据,含slot_mapping字段 */] }

3.2.2 各类元数据示例(含槽位关联)

(1)原子指标元数据

{ "metric_id": "unit_nav_hs", "metric_name": "基金单位净值(恒生)", "metric_alias": ["单位净值", "单日净值"], "source_table": "t_fund_valuation", "source_column": "unit_nav", "data_type": "DECIMAL(10,4)", "unit": "元/份", "biz_remark": "取自恒生估值系统,估值日当日净值,精确到小数点后4位", "slot_mapping": "slot_01(指标选择槽):填充字段名unit_nav,无聚合函数" }

(2)派生指标元数据

{ "metric_id": "avg_unit_nav_monthly", "metric_name": "月度平均单位净值", "metric_alias": ["月均净值"], "atomic_metric_id": "unit_nav_hs", "agg_func": "AVG(unit_nav)", "filter_rules": [], "data_type": "DECIMAL(10,4)", "unit": "元/份", "biz_cal_rule": "每月交易日单位净值算术平均值", "slot_mapping": "slot_01(指标选择槽):填充AVG(unit_nav) AS avg_unit_nav_monthly;slot_04(分组维度槽):填充DATE_FORMAT(val_date,'%Y-%m')" }

(3)维度元数据

{ "dim_id": "fund_type", "dim_name": "基金类型", "dim_alias": ["产品类型"], "dim_type": "枚举型", "enum_values": [{"value":"1","name":"股票型"},{"value":"2","name":"债券型"}], "source_table": "t_fund_base_info", "source_column": "fund_type_code", "slot_mapping": "slot_03(过滤条件槽):填充fund_type_code='枚举值'" }

3.3 NER实体识别设计

3.3.1 实体类型定义

实体类型 定义 示例 关联槽位
METRIC 基金估值相关指标(原子/派生/复合) 单位净值、月度平均股票仓位占比、夏普比率 slot_01(指标选择槽)
DIMENSION 筛选条件相关维度 股票型基金、金融行业、基金经理张三 slot_03(过滤条件槽)、slot_04(分组维度槽)
TIME 时间粒度或时间区间 *开通会员可解锁*、2026年Q1、上周 slot_03(过滤条件槽)、slot_04(分组维度槽)
FUND_CODE 公募基金6位代码 001513、000001 slot_03(过滤条件槽)
SORT_ORDER 排序规则(升序/降序) 升序、降序、排名前5 slot_06(排序规则槽)、slot_07(分页限制槽)

3.3.2 NER模型训练流程

数据集构建 :收集1000+公募基金真实查询语句,使用LabelStudio标注,标注格式为JSON,示例: { "text": "*开通会员可解锁*易方达消费行业股票型基金(001513)的月度平均单位净值", "labels": [ {"start":0,"end":7,"label":"TIME","value":"*开通会员可解锁*"}, {"start":13,"end":18,"label":"DIMENSION","value":"股票型基金"}, {"start":19,"end":25,"label":"FUND_CODE","value":"001513"}, {"start":28,"end":37,"label":"METRIC","value":"月度平均单位净值"} ]}

模型选型与微调:基础模型选用中证金融BERT,使用PyTorch框架微调,训练参数:batch_size=32,epoch=5,学习率=2e-5,采用早停策略避免过拟合。

模型部署:微调完成后导出为ONNX格式,集成到Python后端服务,提供HTTP接口,支持输入query返回实体识别结果,响应时间≤500ms。

3.4 全槽位设计与填充规则

3.4.1 全槽位清单

槽位ID 槽位名称 对应SQL子句 填充来源 填充规则 是否必选 案例值
slot_01 指标选择槽 SELECT NER识别METRIC实体+元数据 原子指标填字段名;派生指标填聚合逻辑+别名;复合指标填运算逻辑 AVG(unit_nav) AS avg_unit_nav_monthly, SUM(stock_holding_value)/SUM(total_asset) AS ratio_stock_position
slot_02 数据表槽 FROM 指标/维度元数据source_table 自动关联指标/维度对应的源表,多表按fund_code/val_date关联,表名加别名 t_fund_valuation t1 LEFT JOIN t_fund_base_info t2 ON t1.fund_code = t2.fund_code
slot_03 过滤条件槽 WHERE NER识别FUND_CODE/DIMENSION/TIME实体+元数据 必含fund_code过滤;维度值转枚举值;时间转标准格式(DATE_FORMAT) t1.fund_code='001513' AND t2.fund_type_code='1' AND DATE_FORMAT(t1.val_date,'%Y-%m')='2026-01'
slot_04 分组维度槽 GROUP BY NER识别TIME/DIMENSION实体+元数据 指标含聚合函数时必填;优先按时间粒度分组,可选按维度分组 否(聚合指标必填) DATE_FORMAT(t1.val_date,'%Y-%m'), t1.fund_code
slot_05 分组过滤槽 HAVING 用户query分组后筛选意图+元数据 仅筛选聚合结果时填;条件值匹配指标业务范围 ratio_stock_position > 0.3
slot_06 排序规则槽 ORDER BY NER识别SORT_ORDER实体+指标元数据 按指标字段排序;识别“前/后”转DESC/ASC,默认DESC avg_unit_nav_monthly DESC
slot_07 分页限制槽 LIMIT NER识别SORT_ORDER实体(TopN) 识别“前N”填N;无意图不填 5
slot_08 合规过滤槽 隐性约束 合规规则配置 禁止查询敏感字段;必须过滤fund_code;仅允许SELECT 是(强制约束) 禁止SELECT客户明细字段;必须包含fund_code过滤
slot_09 性能优化槽 隐性约束 性能规则配置 JOIN表数≤3张;强制使用val_date分区字段;避免全表扫描 是(强制约束) JOIN表数≤3张;必须使用val_date过滤
slot_10 口径统一槽 隐性约束 元数据biz_remark 指标计算逻辑必须匹配元数据,禁止自定义口径 是(强制约束) 月度平均单位净值=AVG(unit_nav),仅统计交易日

3.4.2 槽位填充与联动规则

填充顺序:先填充必选槽位(slot_01、slot_02、slot_03),再根据query意图填充可选槽位,隐性约束槽位(slot_08-slot_10)强制注入Prompt。

联动规则

聚合联动:slot_01含聚合函数时,slot_04必须填充,否则自动补充分组字段(如月度指标按DATE_FORMAT(val_date,'%Y-%m')分组)。

排序联动:slot_07(LIMIT)填充时,slot_06(ORDER BY)必须填充,否则默认按第一个指标降序排序。

合规联动:slot_03未含fund_code时,自动提示用户补充,否则拒绝生成SQL。

校验规则:槽位填充完成后执行校验,包括必选槽位完整性校验、维度值有效性校验、聚合逻辑一致性校验、合规约束校验,校验失败返回明确错误提示。

3.5 RAG知识库设计

3.5.1 知识库文档结构

将元数据、业务规则、槽位关联信息结构化为文档,存入Milvus向量数据库,单条文档结构示例:

{ "doc_id": "derived_rule_001", "doc_type": "derived_metric_rule", "metric_id": "avg_unit_nav_monthly", "metric_name": "月度平均单位净值", "metric_alias": ["月均净值"], "agg_func": "AVG(unit_nav)", "source_table": "t_fund_valuation", "source_column": "unit_nav", "slot_info": "关联slot_01:填充AVG(unit_nav) AS avg_unit_nav_monthly;关联slot_04:填充DATE_FORMAT(val_date,'%Y-%m')", "biz_remark": "每月交易日单位净值算术平均值,不含节假日", "index_keywords": ["月度平均单位净值", "月均净值", "AVG(unit_nav)", "val_date", "月度分组"] }

3.5.2 知识库构建流程

文档结构化:将原子/派生/复合指标元数据、维度元数据、时间粒度元数据按上述格式转换为结构化文档。

向量嵌入:使用通义千问Embedding API将结构化文档转为768维向量,嵌入过程中保留文档原始信息与向量的映射关系。

索引构建:在Milvus中创建集合,采用IVF_FLAT索引类型(平衡检索速度与准确率),同时为index_keywords字段建立关键词索引。

更新机制:元数据新增/修改后,自动同步生成结构化文档,触发向量嵌入与知识库更新,更新前需经业务负责人审核。

3.5.3 检索策略

采用“关键词检索+向量检索”混合策略,提升检索精准度:

从NER识别结果和槽位填充内容中提取关键词(如指标名称、维度值、时间粒度)。

关键词检索:匹配知识库文档的index_keywords字段,筛选出相关文档。

向量检索:将用户query转为向量,与知识库文档向量计算余弦相似度,取相似度≥0.7的Top3文档。

结果合并:合并关键词检索与向量检索结果,去重后返回给应用服务层,用于补充槽位填充规则和SQL生成约束。

3.6 SQL组装引擎设计

3.6.1 核心逻辑

SQL组装引擎基于槽位填充结果,按固定顺序拼接SQL子句,支持动态子句(无值的槽位不生成对应子句),核心流程:

读取各槽位填充内容,执行最终校验(语法预校验、合规校验)。

按“SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY → LIMIT”顺序拼接子句。

对拼接后的SQL进行格式化,提升可读性。

3.6.2 组装示例

基于用户query“*开通会员可解锁*易方达消费行业股票型基金(001513)的月度平均单位净值和股票仓位占比”,槽位填充完成后,引擎拼接SQL:

SELECT AVG(t1.unit_nav) AS avg_unit_nav_monthly,SUM(t1.stock_holding_value)/SUM(t1.total_asset) AS ratio_stock_positionFROM t_fund_valuation t1LEFTJOIN t_fund_base_info t2 ON t1.fund_code = t2.fund_codeWHERE t1.fund_code = '001513'AND t2.fund_type_code = '1'ANDDATE_FORMAT(t1.val_date, '%Y-%m') = '2026-01'GROUPBYDATE_FORMAT(t1.val_date, '%Y-%m'), t1.fund_code;

3.7 权限控制与操作审计设计

3.7.1 权限控制

角色定义:分为超级管理员、业务管理员、研究员/运营人员三类角色,不同角色权限不同。

权限粒度:基于基金代码的细粒度权限,研究员/运营人员仅能查询授权范围内的基金数据,超级管理员可配置角色权限与基金代码白名单。

实现方式:采用Spring Security+JWT实现权限认证,用户登录后生成JWT令牌,请求接口时携带令牌,系统解析令牌获取角色与授权基金代码,在slot_03(过滤条件槽)中自动添加基金代码白名单过滤。

3.7.2 操作审计

审计内容:记录所有用户操作,包括用户名、角色、操作时间、query内容、NER识别结果、槽位填充内容、生成的SQL、查询结果、响应时间。

存储与保留:审计日志存入MySQL数据库,保留6个月,满足监管要求。

审计功能:支持按用户名、时间范围、基金代码查询审计日志,支持日志导出。

四、全流程执行步骤

4.1 阶段1:数据源梳理与指标固化(第1-3周)

4.1.1 数据源字段梳理

数据工程师与恒生系统管理员对接,梳理三大数据源的核心数据表与关键字段,形成《数据源字段清单》,明确字段类型、关联关系、更新频率、接入方式。

4.1.2 指标穷举与元数据录入

业务人员主导穷举原子指标,基于数据源字段清单,筛选可量化、可分析的字段,映射为原子指标,补充名称、别名、业务口径。

穷举通用派生指标,基于日常高频查询场景,结合原子指标+聚合函数+维度筛选规则生成,明确计算逻辑。

梳理通用复合指标(如夏普比率、收益率),按行业共识口径固化计算逻辑。

将指标信息录入Excel模板,补充槽位关联信息,提交业务负责人审核,审核通过后形成《原子指标元数据清单》《派生指标规则清单》。

4.1.3 槽位-实体-元数据联动映射表编制

算法工程师与业务人员协同,编制《槽位-实体-元数据联动映射表》,明确每个槽位对应的NER实体类型、关联元数据、填充规则,为后续NER识别与槽位填充提供依据。

4.2 阶段2:NER模型训练与槽位配置(第4周)

4.2.1 NER标注数据集构建

算法工程师收集1000+公募基金真实查询语句,使用LabelStudio进行实体标注,标注完成后划分训练集(80%)、验证集(10%)、测试集(10%)。

4.2.2 NER模型微调与部署

基于金融BERT模型,使用训练集微调模型,通过验证集监控模型性能,采用早停策略避免过拟合。

使用测试集评估模型性能,要求NER识别准确率≥98%,若未达标,补充标注数据重新微调。

将微调后的模型导出为ONNX格式,部署到应用服务器,开发HTTP接口,支持实时实体识别。

4.2.3 槽位填充规则引擎开发

后端开发工程师基于《槽位-实体-元数据联动映射表》,开发槽位填充规则引擎,实现实体自动填充、规则校验、槽位联动功能,开发完成后进行单元测试。

4.3 阶段3:RAG知识库构建(第5周)

4.3.1 向量数据库部署

数据工程师在数据服务器部署Milvus向量数据库,配置集合参数(如维度768、索引类型IVF_FLAT),优化检索性能。

4.3.2 元数据结构化与向量嵌入

数据工程师将审核通过的元数据(原子/派生/复合指标、维度、时间粒度)转换为结构化文档,补充slot_info、index_keywords字段。

调用通义千问Embedding API,将结构化文档转为向量,存入Milvus向量数据库,建立文档与向量的映射关系。

4.3.3 检索策略优化与接口开发

算法工程师开发“关键词检索+向量检索”混合检索接口,优化检索参数(如相似度阈值0.7),测试接口检索准确率与响应时间,要求响应时间≤1秒。

4.4 阶段4:系统开发与集成(第6-9周)

4.4.1 核心模块开发

元数据管理模块:Spring Boot开发,支持元数据录入、编辑、审核、查询、导出,关联MySQL元数据库。

NER实体识别模块:Python FastAPI开发,集成NER模型ONNX文件,提供实体识别接口。

槽位管理模块:Python开发,集成槽位填充规则引擎,实现实体填充、校验、联动功能。

SQL组装引擎:Python开发,基于槽位填充结果拼接SQL,支持动态子句与SQL格式化。

权限控制模块:Spring Security+JWT开发,实现用户登录、角色认证、基金代码权限管控。

操作审计模块:Spring Boot开发,记录用户操作日志,支持日志查询与导出。

前端模块:Vue3开发,包括query输入框、NER识别结果展示、槽位填充预览、SQL结果展示、数据可视化、Excel导出功能。

4.4.2 模块集成与测试

将各模块集成到Web应用,实现“用户输入query→NER识别→槽位填充→RAG检索→SQL组装→校验执行→结果展示”全链路联动。

进行集成测试,验证各模块接口调用正常、数据流转准确,修复集成过程中的Bug。

4.5 阶段5:测试与灰度上线(第10-11周)

4.5.1 全面测试

测试类型 测试内容 测试方法 合格标准
功能测试 指标识别、槽位填充、SQL生成、权限控制、审计日志 黑盒测试,执行测试用例 功能正常,SQL生成准确率≥96%,权限控制有效
性能测试 响应时间、并发能力、检索速度 Jmeter压测,模拟100人并发查询 单query响应时间≤3秒,并发无超时,检索速度≤1秒
合规测试 敏感数据查询、基金代码权限、审计日志完整性 模拟超权限查询、敏感数据查询 拒绝超权限/敏感查询,审计日志完整可追溯
兼容性测试 不同浏览器(Chrome/Firefox/Edge)、不同设备(PC/手机) 多环境测试 界面正常,功能可用

微信扫一扫关注该公众号

继续滑动看下一个

潜在客户预测
点击查看详情>
合作机会