使用DeepSeek拯救数据中台

原创
03/18 17:57
阅读数 1.1W

在数字化转型浪潮中,数据中台作为企业核心资产的"枢纽站",却长期面临"建而难用"的尴尬境地——业务团队抱怨数据获取门槛高、技术团队困于复杂的数据治理任务,如何打通数据价值落地的"最后一公里"始终是行业痛点。

PowerData社区主理人李奇峰给出了一个充满技术想象力的答案:通过深度结合DeepSeek大模型的逻辑推理与结构化数据处理能力,重构数据中台的技术栈。

3月22日,PowerData社区主理人李奇峰将出席OSC源创会南京站,并发表《使用DeepSeek拯救数据中台》主题分享,探讨如何借助大模型通用化与生成式的数据处理能力,结合数据中台中的落地痛难点,对其进行针对性的优化改造。

在活动正式开始前,我们也和李奇峰聊了聊一些“入门级”问题,感兴趣的开发者可周六到活动现场,与李奇峰交流探讨关于数据中台的建设问题。报名链接:https://www.oschina.net/event/2423811

OSCHINA:在众多大模型中为何选择DeepSeek作为数据中台改造的核心技术?与其他开源模型相比,DeepSeek在数据处理场景下有哪些优势?

李奇峰:我作为一个数据中台的从业者,核心诉求还是提升数据中台本身的能力。对于大模型的了解并不深入,其只是我的一个工具而已。所以从工具的属性来说,我选择deepseek主要有以下几点原因:

成本:无论是训练成本、还是推理成本,相较于其他模型都有显著降低。同时支持国产化硬件,在合规性方面也有保证。

热度:在风口到来的时候,不说乘风而飞,但是至少还是需要蹭一下的。

能力:DeepSeek R1 是 LMSYS Chinese榜单最强的from China的模型,V3是上面榜单中开源的最强非Reasoner模型,基础能力优越。同时相较于其他模型,DeepSeek在逻辑推理+结构化数据解析处理的能力优秀,同时其支持的上下文窗口较大,在数据血缘解析、数据分类分级、数据质量治理等任务中,其准确性较其他模型都有显著提升。

 

OSCHINA:开发者最关心的部署成本问题:在私有化部署场景下,DeepSeek模型针对数据中台做了哪些轻量化改造?是否支持量化压缩后的模型在常规GPU服务器集群运行?

李奇峰:Deepseek不会为企业应用场景训练各种量化模型的,市面上的量化模型都是社区和开发者上传的。如果为了降低部署成本,采购算力服务器之前先测试各个量化模型的能力能否满足应用场景,确定好使用哪版量化模型后,根据显存去采购性价比最高算力服务器,推理服务器建议买Nvdia游戏卡。

 

OSCHINA:能否用具体代码片段说明DeepSeek如何与数据中台组件集成?例如如何通过API调用实现"自然语言转数据服务接口"这类典型场景,过程中需要哪些中间件做适配?

李奇峰:下面是一个非常简单的通过大模型进行数据自动标注的代码:

import openai
import pandas as pd
import json
from typing import List, Dict

class MetadataAutoTagger:
    def __init__(self, api_key: str, business_context: str):
        self.client = openai.OpenAI(api_key=api_key)
        self.business_context = business_context  # 公司业务背景说明
        
    def generate_prompt(self, table_name: str, columns: List[str]) -> str:
        """构造大模型提示词"""
        return f"""
        # 任务说明
        根据提供的元数据和业务背景,生成数据资产的业务标注信息,要求:
        1. 业务名称:体现数据在业务中的核心作用
        2. 业务类型:交易型/分析型/主数据/日志型...
        3. 业务实体:对应业务对象(客户/订单/产品...)
        4. 分类分级:按公司数据分类分级标准
        5. 字段说明:用业务语言解释字段含义

        # 业务背景
        {self.business_context}

        # 待标注元数据
        表名:{table_name}
        字段列表:{', '.join(columns)}

        请用JSON格式返回结果,结构如下:
        {{
            "table_name": "{table_name}",
            "business_name": "",
            "business_type": "",
            "business_entity": "",
            "data_classification": "",
            "columns": {{
                "column1": "业务说明",
                "column2": "业务说明"
            }}
        }}
        """

    def tag_metadata(self, metadata_df: pd.DataFrame) -> pd.DataFrame:
        """批量处理元数据"""
        results = []
        for _, row in metadata_df.iterrows():
            response = self._call_llm(row['table_name'], row['columns'])
            if response:
                results.append(response)
        return pd.DataFrame(results)

    def _call_llm(self, table_name: str, columns: List[str]) -> Dict:
        """调用大模型API"""
        try:
            prompt = self.generate_prompt(table_name, columns)
            response = self.client.chat.completions.create(
                model="gpt-4",
                messages=[{"role": "user", "content": prompt}],
                temperature=0.2,
                response_format={"type": "json_object"}
            )
            return json.loads(response.choices[0].message.content)
        except Exception as e:
            print(f"Error processing {table_name}: {str(e)}")
            return None

# 示例用法
if __name__ == "__main__":
    # 初始化配置
    config = {
        "api_key": "your_openai_key",
        "business_context": "某电商公司,主要业务包含商品交易、用户画像、订单履约等..."
    }

    # 示例元数据(实际从数据库或文件读取)
    sample_data = {
        "table_name": ["user_info", "order_detail"],
        "columns": [
            ["user_id", "registration_date", "last_login"],
            ["order_id", "product_sku", "payment_amount"]
        ]
    }
    metadata_df = pd.DataFrame(sample_data)

    # 执行自动标注
    tagger = MetadataAutoTagger(**config)
    result_df = tagger.tag_metadata(metadata_df)
    
    # 保存结果
    result_df.to_csv("tagged_metadata.csv", index=False)
    print("标注结果示例:")
    print(result_df.head())
典型输出结果如下:
{
    "table_name": "user_info",
    "business_name": "用户基本信息表",
    "business_type": "主数据",
    "business_entity": "用户",
    "data_classification": "PII/LEVEL-2",
    "columns": {
        "user_id": "用户唯一标识符,用于跨系统用户识别",
        "registration_date": "用户注册电商平台的具体日期",
        "last_login": "记录用户最近一次登录平台的时间"
    }
}

 

OSCHINA:在处理非结构化数据场景中(如日志解析/图片OCR),DeepSeek与传统ETL工具的结合方案是怎样的?

李奇峰:非结构化数据基本用不上 Deepseek,月更好的选择,图片用多模态LLM可以总结,图片类型的文档用OCR,OCR一般用百度paddle,表格解析有开源的读光模型。这些都是数据处理,处理完才是抽取-转换-加载(Sqoop、Flume、Cannel、DataX)到下游。

 

OSCHINA:在数据关系复杂的中台环境,如何通过prompt engineering确保大模型输出的SQL/SHELL脚本符合安全规范?是否有开发自定义的语法校验中间件?

李奇峰:提示词来确保大模型输出的SQL/SHELL脚本符合安全规范,是有问题的。LLM是用来理解和处理自然语言的,更多的是交互上的提升。

推荐使用sqlcheck和shellcheck这种工具,脚本安全做的还可以。

 

OSCHINA:遇到模型"幻觉"导致的数据质量问题,是否有设计技术兜底方案?

李奇峰:可以通过RAG + 外挂知识库的方式优化幻觉问题。

 

OSCHINA:PowerData社区在构建DeepSeek插件生态方面有哪些规划?

李奇峰:后续会实现一些MCP接口。

 

OSCHINA:对想参与数据中台智能化改造的开发者,建议从哪些具体模块入手贡献?

李奇峰:可以先尝试进行text to sql的功能开发,具体入门教程可参考此篇文章:https://mp.weixin.qq.com/s/Wk9OmB80JC7NFG2T7VjNRA

 

OSCHINA:在Data+AI的架构演进中,您认为未来3年数据中台的核心组件会发生哪些颠覆性变化?传统数据仓库工程师需要优先补充哪些AI工程化能力?

李奇峰:颠覆性变化谈不上,数据中台的核心还是数据资产化、服务化,一切的功能目标都是往这个方向走。随着大模型的快速进化与深度结合,数据中台可能会在以下能力进行进化:

  • 自然语言交互:大模型出色的自然语言交互能力可准确理解用户意图,大幅提升数 据查询分析的便利性,提升用户体验

  • 智能洞察分析:大模型可分析文本、图表等多维数据,智能归因、预测、总结,降 低员工利用数据、分析数据的门槛

  • 集成大模型服务链路:集成LangChain、向量检索、finetune等大模型应用所 需技术组件,提升企业调试、使用大模型的效率

传统数仓需要补充哪些AI工程化能力?这个我们社区之前内部讨论过,工程化能力谈不上,更多的还是把AI当成一个全能小助手,帮助自己解决问题和提效吧。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
4 收藏
1
分享
返回顶部
顶部