syda
基于 LLM 的多格式合成数据生成工具,支持 referential integrity 和多表关联自动解析
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于 LLM 的多格式合成数据生成工具,支持 referential integrity 和多表关联自动解析
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2025年5月,一个由个人开发者 Rama Krishna Kumar Lingamgunta 创建的 GitHub 仓库悄然上线,名叫 Syda。此时距 ChatGPT 掀起的 AI 浪潮已过去两年,全球无数团队正在经历一个尴尬的现实:AI 模型强大无比,但训练和测试它们需要海量真实数据——而这些数据往往涉及隐私、涉及合规、涉及商业机密,根本无法直接使用。
医疗系统想模拟患者数据做算法测试,但《HIPAA》法规像悬在头顶的利剑。银行想用 AI 生成交易记录做风控模型,但监管机构明令禁止真实客户信息流向任何外部系统。即便是普通互联网公司,想为自己的推荐系统造一份测试数据集,也得花数周时间手动脱敏。
Syda 的核心命题只有一个:能不能用 AI 生成"长得像"真实数据的数据集,既能保护隐私合规,又能让下游系统获得足够真实的测试覆盖?
这个看似简单的问题,背后涉及到 referential integrity(引用完整性)——即多个关联表之间的外键约束能否在合成数据中正确保持——这是业界公认的最大难题,也是 Syda 与其他合成数据工具拉开差距的核心能力。
Syda 的定位是一款多格式、多场景的 AI 合成数据生成工具,而非某一个垂直领域的专用解决方案。
在数据格式层面,Syda 支持四种输出:
结构化表格(Structured Tables):通过定义 YAML/JSON Schema,同时生成多个相互关联的数据库表,自动解析 foreign key 依赖图,以正确的引用关系批量生成行。比如一个典型的电商场景:categories 表 → products 表 → orders 表,Syda 会先用 AI 生成 categories,再根据外键关系生成 products,最后生成 orders,所有外键 ID 自动对齐,引用完整性分毫不差。
非结构化文本:Syda 能基于模板 + AI 生成新闻文章、产品描述、医疗报告等自然语言内容,模板中嵌入动态字段引用。
PDF 生成:调用 LLM 渲染后生成结构化 PDF 文件,适合需要文件格式输出的场景(如合同、脱敏病历等)。
HTML 生成:生成格式化的 HTML 文档,适合构建测试用的网页内容或邮件模板。
在数据库支持层面,Syda 内置 SQLAlchemy 集成,支持 PostgreSQL、MySQL、SQLite 三种主流关系型数据库,可以直接连接到现有数据库,从真实表结构推断 Schema 并生成合成数据——这一步对已有数据资产的企业来说尤为实用,无需手动编写 Schema 定义。
在 LLM 提供商层面,Syda 通过 pydantic-ai 实现了对六大主流 AI 厂商的统一封装:OpenAI(GPT-4o、GPT-3.5)、Anthropic(Claude 3/4 系列)、Google Gemini、Azure OpenAI、Grok(xAI),以及任意 OpenAI-API 兼容接口。用户只需在 .env 中配置一个 API Key,Syda 自动路由到对应厂商,甚至可以在同一次生成任务中混用不同模型。
在合成数据领域,大多数工具面临的最大尴尬是:它们能生成看起来真实的单表数据,但一旦涉及多表关联,生成的合成数据就会"自相矛盾"——比如一条 order 记录引用了一个不存在的 product_id。
Syda 解决这个问题的技术路径相当清晰:
第一步:Schema 依赖图构建。Syda 内置 DependencyHandler 模块,基于 NetworkX 构建多表依赖有向图,自动识别哪些表是"根表"(无外键依赖)、哪些表依赖其他表,并计算拓扑排序顺序,确保生成时从根表向下依次处理。
第二步:外键预填充策略。生成时,Syda 先对所有根表批量生成数据,再将已生成的子表外键列与父表主键进行交叉引用验证,超过 10,000 行的大数据集,Syda 会自动切换为流式写入模式(append_dataframe),边生成边落盘,避免内存溢出。
第三步:codegen 模式(Code-Generation Mode)。当需要生成百万级数据时,直接调用 LLM 生成 SQL INSERT 语句,再由数据库执行。这种方式绕过了 Python pandas 的内存瓶颈,直接利用数据库自身的高效写入能力,生成速度比纯内存方案快 10-50 倍。
对于普通用户,Syda 提供了一个 30 秒快速上手的 CLI 流程:pip install 后,配置一个 API Key,定义 Schema(可简可繁),调用 generator.generate_for_schemas() 即可。官方示例中一个完整的电商多表生成只需约 20 行代码。
对于数据库管理员或 DevOps 工程师,Syda 支持直接从现有数据库加载 Schema:db_schema_loader.py 可以连接真实数据库,自动读取表结构、列类型、外键约束,生成对应的 YAML Schema 文件,然后一键生成脱敏测试数据集。
对于需要大规模数据压测的团队,examples/large_dataset 目录提供了百万行级别的生成参考,通过 codegen 模式直接生成 SQL INSERT 语句,对接数据库批量执行,适合 CI/CD 流水线中的自动化数据准备。
Syda 本身是纯 Python CLI 工具,没有 Web 界面。使用门槛要求用户具备基本的 Python 编程能力,理解数据库 Schema 和外键概念。最低硬件需求仅为 2GB RAM、Python 3.8+ 即可运行,无需 GPU。
完全依赖外部 LLM API,成本不可控。Syda 本身不做任何模型推理,所有数据生成都通过调用 OpenAI/Anthropic 等 API 完成。生成 1 万行结构化数据可能消耗数美元的 API 费用,用户无法像使用本地开源模型那样自由控制算力成本。
Schema 定义需要人工介入。虽然 Syda 支持从数据库自动加载 Schema,但一个高质量的合成数据集仍然需要开发者为每个字段编写描述性 prompt,引导 AI 正确理解字段语义。复杂 Schema 的定义本身就是一个工程挑战。
生成质量高度依赖模型能力。对于高度规范化的字段(如身份证号、银行卡号),LLM 生成的数值可能不符合校验规则(如 Luhn 算法)。Syda 提供了 custom_generators 扩展机制,允许用户注册自定义生成器来弥补这一短板。
社区规模和文档深度有待观察。截至分析时点,Syda 仅有 98 stars、8 forks、作者为个人开发者。虽然已有 12 个测试文件覆盖核心模块,但缺少公开的基准测试数据来量化合成数据与原始数据的统计分布相似度。
2024-2025 年,合成数据生成领域涌现了多个优秀开源项目:偏学术的 sdv(MIT,隶属 MIT Data to AI Lab)提供完整的统计模型和差分隐私;偏工程的 Faker(MIT)擅长本地化假数据但不涉及 AI;偏云端的 Syntho、Mostly AI 则是商业闭源产品。
Syda 的差异化定位是:用 LLM 的语义理解能力取代传统统计模型,以 prompt 工程换取数据分布的自然度,同时以 referential integrity 作为核心工程能力壁垒。它的目标用户是既需要"像真数据"又需要"正确关联"且需要"多格式输出"的现代 AI 开发团队。
目前 Syda 仍在活跃开发中(2026年7月有最新提交),版本 0.3.0 已发布 PyPI,文档站点 python.syda.ai 已上线。随着 LLM API 成本持续下降和本地推理能力增强,Syda 这类工具的商业价值和应用空间有望进一步扩大。