Java 中的 AI 与机器学习:TensorFlow、DJL 与企业级 AI

1. 引言:Java 意外的机器学习复兴

尽管 Python 主导了机器学习的研究与实验,但生产部署讲述着不同的故事。截至 2025 年,68% 的应用程序运行在 Java 或 JVM 上,那些已在 Java 生态系统投入巨资的企业面临一个关键问题:是重新培训团队并重写系统,还是将机器学习能力引入 Java?答案正日益倾向于后者。

Netflix 使用 Deep Java Library 进行分布式深度学习实时推理,通过字符级 CNN 和通用句子编码器模型处理日志数据,每个事件的延迟为 7 毫秒。这代表了一个更广泛的趋势——尽管 Python 在训练方面占主导地位,但 Java 在生产系统、多线程、稳定性和企业集成方面的优势,使其在机器学习部署上极具吸引力。

本文探讨 Java 在机器学习生命周期中的角色,比较各种框架,探索与 Python 生态系统的集成模式,并识别 Java 提供明显优势的场景。

2. Java ML 框架对比

2.1 Deep Java Library:引擎无关的方案

Deep Java Library 是一个开源的、高层次的、引擎无关的 Java 深度学习框架,它提供原生 Java 开发体验,功能如同任何其他常规 Java 库。由 AWS 创建的 DJL,其架构理念以抽象为核心——开发者编写一次代码,即可在 PyTorch、TensorFlow、MXNet 或 ONNX Runtime 之间切换而无需修改。

该框架由五层架构组成。高层 API 层提供符合 Java 习惯的接口,供开发者直接交互。引擎抽象层与底层框架通信,隐藏实现差异。NDManager 管理表示张量的 NDArray 的生命周期,在处理后自动释放张量内存以防止泄漏或崩溃。数据处理层提供为模型准备数据的实用工具。最后,原生引擎层通过对 C++ 实现的 JNA 调用执行实际计算。

DJL 与 TensorFlow、PyTorch、MXNet 等各种深度学习框架无缝集成,提供一个高层次 API 以便于在 Java 环境中轻松构建、训练和部署模型,并且与 AWS 服务紧密集成。其 Model Zoo 提供了来自 GluonCV、HuggingFace、TorchHub 和 Keras 的 70 多个预训练模型,支持单行命令加载模型。

优势:

  • 引擎灵活性:允许根据部署需求切换后端(研究模型用 PyTorch,生产用 MXNet,跨平台用 ONNX)。
  • 原生多线程支持:与 Akka、Akka Streams 及并发 Java 应用程序自然集成。
  • 自动 CPU/GPU 检测:无需配置即可确保最佳硬件利用率。
  • 通过 DJL Spring starters 集成 Spring Boot:简化企业采用。

局限:

  • 训练功能存在,但不如推理功能成熟
  • 文档侧重于推理而非训练工作流
  • 社区规模小于 Python 优先的框架

2.2 Deeplearning4j:JVM 原生解决方案

Eclipse Deeplearning4j 是为 Java 虚拟机编写的编程库,是一个广泛支持深度学习算法的框架,包括受限玻尔兹曼机、深度信念网络、深度自动编码器、堆叠降噪自动编码器、递归神经张量网络、word2vec、doc2vec 和 GloVe 的实现。

DL4J 于 2014 年问世,目标客户是已投入 Java 基础设施的企业。Eclipse Deeplearning4j 项目包括 Samediff(一个类似 TensorFlow/PyTorch 的框架,用于执行复杂计算图)、Python4j(一个 Python 脚本执行框架,用于将 Python 脚本部署到生产环境)、Apache Spark 集成以及 Datavec(一个将原始输入数据转换为张量的数据转换库)。

该框架的分布式计算能力使其区别于其他方案。Deeplearning4j 包含与 Apache Hadoop 和 Spark 集成的分布式并行版本。对于处理大规模数据的组织,DL4J 提供了无需 Python 依赖的原生 JVM 解决方案。

优势:

  • 完整的 ML 生命周期支持——训练、推理和部署完全在 Java 中完成。
  • 分布式训练:使用 Spark 或 Hadoop 在集群中扩展。
  • ND4J 提供支持 GPU 加速的、类似 NumPy 的 n 维数组。
  • SameDiff 提供类似 TensorFlow 的“先定义后运行”图执行方式。
  • Keras 模型导入:支持 h5 文件,包括 tf.keras 模型。

局限:

  • 文档和社区资源落后于 TensorFlow 和 PyTorch。
  • 与高层次框架相比学习曲线更陡峭。
  • 采用范围较窄,主要集中在重度使用 Java 的企业。

2.3 TensorFlow Java:官方但功能有限

TensorFlow Java 可在任何 JVM 上运行以构建、训练和部署机器学习模型,支持 CPU 和 GPU 在图模式或即时执行模式下的运行,并提供了在 JVM 环境中使用 TensorFlow 的丰富 API。作为 TensorFlow 的官方 Java 绑定,它提供了对 TensorFlow 计算图执行的直接访问。

TensorFlow 的 Java 语言绑定已移至其独立的代码库,以便独立于官方 TensorFlow 版本进行演进和发布,大多数构建任务已从 Bazel 迁移到 Maven。这种分离允许在不等待 TensorFlow 核心发布的情况下进行 Java 特定的改进。

优势:

  • 与 TensorFlow 生态系统和工具直接集成。
  • SavedModel 格式兼容性支持从 Python 到 Java 的无缝模型移交。
  • TensorFlow Lite 支持面向移动和边缘部署。
  • 通过原生 TensorFlow 运行时支持 GPU 和 TPU 加速。

局限:

  • TensorFlow Java API 不在 TensorFlow API 稳定性保证范围内。
  • 对 Keras on Java 几乎无官方支持,迫使开发者必须在 Python 中定义和训练复杂模型以供后续导入 Java。
  • 与 DJL 甚至 DL4J 相比,较低级别的 API 需要编写更多代码。




3. 框架对比表

标准 Deep Java Library Deeplearning4j TensorFlow Java
主要用例 推理与模型服务 完整 ML 生命周期 模型服务
引擎支持 PyTorch, TensorFlow, MXNet, ONNX 原生 JVM 仅 TensorFlow
训练能力 有限 完全支持 有限
分布式计算 通过引擎(如 MXNet 上的 Spark) 原生 Spark/Hadoop 通过 TensorFlow
模型导入 PyTorch, TensorFlow, Keras, ONNX Keras, TensorFlow, ONNX 仅 TensorFlow
预训练模型 Model Zoo 中 70+ 社区模型 TensorFlow Hub
Spring Boot 集成 原生 starters 手动 手动
学习曲线 中-高
内存管理 NDManager(自动) ND4J(堆外) 手动会话
企业就绪度 非常高
社区规模 增长中 小众 大(Python)
最适合 云原生推理 大数据 ML 流水线 TensorFlow 生态系统

决策矩阵:

  • 选择 DJL 用于:微服务、无服务器函数、Spring Boot 应用、引擎灵活性、AWS 生态系统。
  • 选择 DL4J 用于:分布式训练、Spark/Hadoop 集成、完整的纯 Java 技术栈、企业数据流水线。
  • 选择 TensorFlow Java 用于:现有的 TensorFlow 投资、TPU 部署、直接的 Python 模型兼容性。

4. 与 Python ML 生态系统的集成

4.1 多语言生产模式

最优的企业 ML 工作流通常结合 Python 的研究能力和 Java 的生产优势。数据科学家在熟悉的 Python 环境中使用 TensorFlow、PyTorch 或 scikit-learn 训练模型。工程师随后将这些模型部署在每天处理数百万请求的 Java 应用程序中。

模型导出格式:

  • ONNX:这个通用的交换格式支持大多数框架。在 PyTorch 中训练,导出到 ONNX,通过 DJL 或 DL4J 导入。这种方法支持与框架无关的部署流水线。
  • TensorFlow SavedModel:对于长期生产服务,导出到中立格式(如 ONNX)或针对服务优化的框架特定生产格式(SavedModel、TorchScript)。SavedModel 将计算图、变量值和元数据打包到单个目录结构中。
  • TorchScript:PyTorch 模型通过脚本或追踪序列化为 TorchScript。DJL 的 PyTorch 引擎直接加载这些模型,保持完整的计算图。
  • Keras H5:DL4J 导入 Keras 模型(包括 tf.keras 变体),保留层配置和训练好的权重。

4.2 Python4j:在 Java 中嵌入 Python

DL4J 的 Python4j 模块解决了需要 Java 中不可用的 Python 库的场景。Python4j 是一个 Python 脚本执行框架,简化了将 Python 脚本部署到生产环境的过程。该方法将 CPython 解释器嵌入到 JVM 进程中,实现双向调用。

用例包括:

  • 在 Java 推理前使用 scikit-learn 流水线进行预处理。
  • 从 Java 数据流水线调用专门的 Python 库(NumPy, SciPy)。
  • 在 Java 模型服务旁边运行基于 Python 的特征工程。

权衡之处在于需要管理 Python 运行时依赖项和潜在的 GIL 限制。对于高吞吐量场景,模型导出仍然优于运行时 Python 执行。

5. 模型服务与部署模式

5.1 实时推理架构

面向用户的应用,其生产 ML 系统需要低于 100 毫秒的延迟。Java 的线程模型和 JVM 优化在此背景下表现出色。在生产中无需 Python 即可提供 TensorFlow 模型服务,每次预测延迟低于 10 毫秒,并像任何 Spring Boot 服务一样水平扩展。

同步 REST API:

@RestController
public class PredictionController {
    private final Predictor<Image, Classifications> predictor;

    @PostMapping("/predict")
    public Classifications predict(@RequestBody Image image) {
        return predictor.predict(image); // <10ms 典型延迟
    }
}

Spring Boot 的自动配置、健康检查和指标与 DJL 或 DL4J 的预测器实例无缝集成。水平扩展遵循标准的微服务模式——在负载均衡器后部署多个实例。

异步处理:
对于非关键预测,异步处理可提高吞吐量。Java 的 CompletableFutureReactor 或 Kotlin 协程支持并发预测批处理:

// 异步批量预测
List<CompletableFuture<Result>> futures = images.stream()
    .map(img -> CompletableFuture.supplyAsync(
        () -> predictor.predict(img), executor))
    .collect(Collectors.toList());

5.2 批量推理模式

批量作业可以容器化并部署到作业调度器或流水线(如 Airflow/Prefect、Kubeflow Pipelines、云数据管道服务),而在线模型则部署到服务基础设施(Web 服务器、Kubernetes)。

DL4J 的 Spark 集成处理海量数据集:

// Spark 上的分布式批量评分
JavaRDD<DataSet> testData = loadTestData();
JavaRDD<INDArray> predictions = SparkDl4jMultiLayer
    .predict(model, testData);

该模式将推理分布在集群节点上,高效处理数百万条记录。对于拥有 Hadoop 或 Spark 基础设施的组织,这种原生集成消除了 Python 桥接开销。

5.3 边缘与移动端部署

DJL 支持部署到边缘设备和移动平台。对于 Android,DJL 提供了针对 ARM 处理器优化的 TensorFlow Lite 和 ONNX Runtime 引擎。自动 CPU/GPU 检测可适应可用硬件。

用例包括:

  • 移动应用中的设备端图像分类。
  • 无需云连接的 IoT 传感器异常检测。
  • 需要本地推理的边缘计算场景。

该方法降低了延迟,提高了隐私性(数据保留在本地),并消除了网络依赖。

6. 可扩展性考量

6.1 容器化与编排

使用 Docker 进行容器化,允许将模型及其代码连同所有必需的库和依赖项打包到一个自包含的单元中,该单元可以在任何地方运行(您的笔记本电脑、云虚拟机、Kubernetes 集群中)。

Java ML 服务与传统 Spring Boot 应用的容器化方式相同:
Dockerfile 模式:

FROM eclipse-temurin:21-jre-alpine
COPY target/ml-service.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]

Kubernetes 编排处理扩展、健康检查和滚动更新。这种统一性意味着现有的 DevOps 流水线无需特殊处理即可扩展到 ML 服务。

6.2 性能优化策略

  • 模型量化:通过将 float32 权重转换为 int8 来减少模型大小和推理时间。TensorFlow Lite 和 ONNX Runtime 支持量化,且精度损失最小。典型收益:模型缩小 4 倍,推理速度加快 2-3 倍。
  • 批处理:将预测分组以分摊开销。DJL 和 DL4J 支持批处理输入,利用 SIMD 指令,并将每项预测的延迟从 10 毫秒降低到批量 32 条时的每条 2-3 毫秒。
  • 模型编译:ONNX Runtime 和 TensorFlow XLA 将模型编译为优化的执行图。在容器构建期间进行预编译可消除运行时编译开销。
  • 内存管理:DJL 通过其特殊的内存收集器 NDManager 解决了内存泄漏问题,该管理器及时收集 C++ 应用程序内部的陈旧对象,在测试 100 小时连续推理不崩溃后,在生产环境中提供稳定性。
  • 连接池:对于调用外部模型服务器(TensorFlow Serving、Triton)的服务,维护连接池以减少 TCP 握手开销。

6.3 水平扩展模式

Java ML 服务的扩展方式与无状态 Web 服务相同:

  • 在负载均衡器后部署多个实例。
  • 基于 CPU、内存或自定义指标(推理队列深度)使用 Kubernetes HorizontalPodAutoscaler。
  • 实施熔断器以优雅地处理下游故障。
  • 使用 Redis 或 Caffeine 缓存频繁的预测结果。

推理的无状态特性(给定模型版本)使得无需协调开销即可实现弹性扩展。

7. Java 应用的 MLOps

7.1 持续训练与部署

MLOps 团队的目标是自动将 ML 模型部署到核心软件系统中或作为服务组件,自动化整个 ML 工作流步骤,无需任何人工干预。

  • Level 0(手动):许多团队拥有能够构建先进模型的数据科学家和 ML 研究人员,但他们构建和部署 ML 模型的过程完全是手动的,每个步骤都需要手动执行和手动过渡。这代表了 2025 年 35% 的 Java ML 部署。
  • Level 1(ML 流水线自动化):自动化训练流水线根据新数据重新训练模型。Jenkins、GitHub Actions 或 GitLab CI 触发训练作业,将模型导出到工件仓库(Nexus、Artifactory),并通知部署系统。版本化的模型自动部署到预发布环境。
  • Level 2(ML 的 CI/CD):持续集成通过添加测试和验证数据和模型来扩展对代码和组件的测试和验证;持续交付关注自动部署另一个 ML 模型预测服务的 ML 训练流水线的交付;持续训练自动重新训练 ML 模型以重新部署。

在 Java 上下文中,这意味着:

  • 数据流水线和预处理的自动化单元测试。
  • 确保模型预测符合预期输出的集成测试。
  • 金丝雀部署(5% 流量导向新模型版本)。
  • 性能下降时的自动化回滚。

7.2 模型版本控制与注册

将模型视为一等工件:

models/
  fraud-detection/
    v1.0.0/
      model.onnx
      metadata.json
    v1.1.0/
      model.onnx
      metadata.json

元数据包括训练日期、数据集版本、性能指标(准确率、F1 分数)和依赖版本。可以使用 Maven 坐标引用模型版本:

<dependency>
    <groupId>com.company.ml</groupId>
    <artifactId>fraud-detection-model</artifactId>
    <version>1.1.0</version>
    <classifier>onnx</classifier>
</dependency>

这种方法将标准的依赖管理实践应用于 ML 模型,从而实现可重复的构建和可审计的部署。

7.3 监控与可观察性

ML 模型部署后,需要进行监控以确保其按预期执行。Java 的可观察性生态系统自然地扩展到 ML 服务:

要跟踪的指标:

  • 推理延迟:通过 Micrometer 统计 p50、p95、p99 百分位数。
  • 吞吐量:每秒预测数、每秒请求数。
  • 错误率:失败的预测、模型加载失败。
  • 数据漂移:通过统计测试检测到的输入分布变化。
  • 模型性能:生产数据上的准确率、精确率、召回率(当标签可用时)。

与现有工具的集成:
Spring Boot Actuator 暴露 ML 特定指标:

@Component
public class PredictionMetrics {
    private final MeterRegistry registry;

    public void recordPrediction(long latencyMs, String modelVersion) {
        registry.timer("prediction.latency", 
            "model", modelVersion)
            .record(Duration.ofMillis(latencyMs));
    }
}

Prometheus 抓取这些指标,Grafana 可视化趋势,并在出现异常(延迟峰值、准确率下降)时触发告警。

7.4 测试 ML 系统

  • 单元测试:验证数据预处理、特征工程和后处理逻辑。标准的 JUnit 测试即可满足。
  • 集成测试:测试 ML 模型是否成功加载到生产服务中,并且对真实数据的预测符合预期;测试训练环境中的模型与服务环境中的模型给出相同的分数。
  • 性能测试:使用 JMeter 或 Gatling 模拟负载,在真实流量模式下测量吞吐量和延迟。建立基线并检测回归。
  • 影子部署:将新模型版本与现有版本并行运行,记录预测而不影响用户。在全面部署前比较结果以识别意外行为。

8. Java 在机器学习中表现出色的用例

8.1 企业集成场景

  • 金融服务中的欺诈检测:拥有成熟 Java 生态系统的企业越来越寻求将 ML/AI 模型直接集成到其后端系统的方法,而无需启动单独的基于 Python 的微服务。银行每天通过 Java 系统处理数百万笔交易。将 DJL 预测器直接嵌入交易处理流水线中,无需外部服务调用即可实现低于 10 毫秒的欺诈评分。
  • 实时推荐:基于 Spring Boot 构建的电子商务平台集成 DJL 进行产品推荐。会话数据流经现有的 Java 服务,预测在进程内进行,结果无需网络延迟即可呈现。
  • 日志分析与聚类:Netflix 的可观察性团队使用 DJL 在生产中部署迁移学习模型,以对应用程序日志数据进行实时聚类和分析,通过字符级 CNN 和通用句子编码器模型处理日志行,每条约 7 毫秒。基于 DJL 的流水线分配保留相似性的聚类 ID,从而实现告警量减少和存储效率提高。

8.2 大数据 ML 工作流

使用 Spark 或 Hadoop 每天处理 TB 级数据的组织受益于 DL4J 的原生集成。在历史数据上训练模型、对新记录进行评分以及更新模型——所有这些都在 Spark 流水线内完成,无需 Python 桥接。

示例工作流:

  1. 从 HDFS 或 S3 将数据读入 Spark DataFrames。
  2. 使用 Spark SQL 进行特征工程。
  3. 在集群上分布式训练 DL4J 模型。
  4. 使用训练好的模型对新数据评分。
  5. 将结果写回数据仓库。
    整个端到端流程保持在 JVM 中,避免了序列化开销和 Python 互操作的复杂性。

8.3 微服务与云原生应用

Spring Boot 应用程序主导着企业微服务架构。通过 DJL starters 添加 ML 能力可无缝集成:

  • 熔断器:Resilience4j 模式保护 ML 服务免受级联故障影响。
  • 服务发现:Eureka 或 Consul 注册 ML 预测服务。
  • 配置:Spring Cloud Config 管理模型端点和参数。
  • 追踪:Zipkin 或 Jaeger 追踪通过 ML 流水线的请求。
    这种统一性简化了运维——ML 服务与业务逻辑服务以相同的方式部署、扩展和监控。

8.4 边缘计算与物联网

Java 的“一次编写,随处运行”理念扩展到边缘设备。为 ARM 处理器编译的 DJL 模型可以在 Raspberry Pi、NVIDIA Jetson 和工业 IoT 网关上运行。用例包括:

  • 预测性维护:本地分析传感器数据,异常时触发警报。
  • 视频分析:在边缘处理安防摄像头视频流,减少带宽。
  • 智能家居设备:设备端语音识别和自然语言理解。
    GraalVM 原生镜像编译生成独立的可执行文件,内存占用小(< 50MB),启动速度快(< 100ms),非常适合资源受限的环境。

8.5 法规与合规要求

随着欧盟《人工智能法案》等法规的收紧,集成重点转向模型的左移安全性——在流水线中扫描偏见、可解释性和合规性。Java 的强类型、显式异常处理和成熟的日志记录框架便于审计追踪和满足可解释性要求。

金融和医疗保健行业通常要求所有代码(包括 ML 模型)通过经过验证的、带有审批工作流的流水线进行部署。与引入 Python 运行时依赖相比,Java ML 服务能更自然地与现有的治理流程集成。

9. 结论:我们的收获

Java 在机器学习中的作用代表了务实的生产工程,而非研究创新。我们分析得出的主要见解:

  1. 框架选择取决于上下文:DJL 在推理和模型服务方面表现出色,具有引擎灵活性,是云原生微服务的理想选择。DL4J 提供了与大数据框架集成的完整 ML 生命周期功能,适用于需要分布式培训的组织。TensorFlow Java 服务于深度投入 TensorFlow 生态系统、需要直接模型兼容性的团队。
  2. 多语言模式行之有效:在 Python 中训练并在 Java 中部署,利用了每种语言的优势。ONNX 和 SavedModel 格式支持无缝交接。Python4j 在必要时弥合差距,但出于性能考虑,模型导出仍是首选。
  3. 生产性能至关重要:Netflix 7 毫秒的推理延迟证明 Java ML 服务能够满足实时性能要求。适当的内存管理(NDManager、ND4J)、模型优化(量化、编译)和水平扩展提供了生产级系统。
  4. MLOps 成熟度参差不齐:只有 20% 的 Java ML 部署达到了 Level 2 CI/CD 成熟度,具备自动重新训练和监控。机会在于将已建立的 DevOps 实践——容器、编排、可观察性——应用于 ML 工作流。
  5. Java 在特定场景中表现出色:企业集成(欺诈检测、推荐)、大数据 ML 流水线(Spark/Hadoop)、微服务架构、边缘计算和法规合规代表了 Java 的特性——稳定性、线程处理、生态系统成熟度——相比以 Python 为中心的方法提供优势的领域。
  6. 内存管理区分了框架:DJL 的 NDManager 解决了管理 JVM 应用程序中本机内存的关键挑战,实现了 100 小时以上的生产运行而无内存泄漏。这种生产就绪性将企业可行的框架与实验性绑定区分开来。
  7. 差距正在缩小:虽然 Java 不会取代 Python 在 ML 研究中的地位,但像 DJL 和 DL4J 这样的框架已经足够成熟,可用于生产部署。生态系统现在支持完整的推理生命周期,性能可与 Python 解决方案相媲美。

未来可能涉及更深层次的集成——Spring AI 为 Java 带来 LLM 能力,GraalVM 原生镜像为无服务器 ML 实现即时启动,以及 MLOps 和 DevOps 实践之间持续的融合。对于拥有大量 Java 投资的组织,问题从“我们能用 Java 做 ML 吗?”转变为“我们如何优化 Java ML 部署?”。

随着 ML 在企业系统中变得无处不在,Java 的生产优势——稳定性、性能、工具成熟度和操作熟悉度——使其成为推理层的务实选择,即使 Python 在训练和实验中仍占主导地位。多语言方法——在 Python 中训练,在 Java 中部署——代表的不是妥协,而是对每个平台独特优势的优化。


【注】本文译自:AI and Machine Learning in Java: TensorFlow, DJL, and Enterprise AI

让我们从Spring AI开始

Spring AI:使用Java迈入生成式AI的第一步

基于Java的企业系统通常难以与Python库及相关工具链协同工作。为此,Spring AI应运而生——这是一个旨在简化整合人工智能功能(特别是大型语言模型)应用开发的开源框架,它采用了Spring生态系统中大家熟悉的模式。

如果您是一名Java开发者,希望将ChatGPT或Google Gemini等强大功能集成到企业应用程序中,而又不想费力研究各提供商特定的SDK,那么Spring AI是您的理想工具。

什么是Spring AI?

Spring AI的核心是充当AI模型的通用抽象层

可以将其类比于Spring Data JPA之于数据库的关系:正如Spring Data抽象了SQL和数据库的具体细节一样,Spring AI则抽象了不同AI提供商(如OpenAI、Google、Azure、Anthropic等)之间的差异。

这种方法带来了两大显著优势:

  1. 可移植性:您只需极少的代码改动即可在不同AI模型和提供商之间切换,从而为您的用例选择最具成本效益或性能最佳的模型。
  2. 熟悉度:它使用了依赖注入、自动配置和流式API(如WebClientJdbcClient)等标准的Spring概念,使得数以百万计的现有Spring开发者能够轻松上手。

为什么选择Spring AI而不是LangChain?

尽管LangChain是一个强大且与提供商无关的框架,并因LLM调用的“链式”编排而广受欢迎,但它主要为Python生态系统构建。相比之下,Spring AI则是从零开始构建,遵循Java语言习惯,并能与Spring Boot应用无缝集成。

以下是Java企业开发者应该认真考虑使用Spring AI的原因:

符合Java习惯”的优势

对于一个Java团队来说,选择Spring AI意味着:

  • 无需多语言复杂性:您可以避免在生产Java环境中引入Python依赖、虚拟环境以及进程间通信带来的麻烦。
  • 性能:Spring AI原生运行在Java虚拟机(JVM)内,充分利用其卓越的垃圾回收和性能优化能力。
  • 工具链:您可以享受到静态类型检查、强大的调试支持以及Java测试框架(如JUnit、Mockito)完整生态系统的益处。
    简而言之,如果您的应用程序是用Java编写并使用Spring Boot,那么Spring AI就是集成生成式AI最自然、阻力最小的选择。

Spring AI的核心概念

要构建一个基本的AI应用,您需要理解三个核心组件:

构建一个简单的聊天服务

让我们创建一个极简的Spring Boot应用程序,它使用ChatClient根据用户的消息生成回复。在本示例中,我们将使用OpenAI模型。

1. 项目设置(Maven)

将以下内容添加到您的pom.xml文件中:

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
  </dependency>
</dependencies>
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.ai</groupId>
      <artifactId>spring-ai-bom</artifactId>
      <version>1.0.0</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

2. 配置(application.properties)

您需要提供AI提供商的API密钥。将其放在src/main/resources/application.properties文件中。

# 用您实际的OpenAI API密钥替换
spring.ai.openai.api-key=<YOUR_OPENAI_API_KEY>

3. 控制器(AiController.java)

这个类定义了一个REST端点,用于接收消息并使用注入的ChatClient获取响应。

package com.example.aidemo;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class AiController {
    private final ChatClient chatClient;
    /**
     * Spring Boot会根据依赖项和属性自动配置并注入ChatClient。
     */
    public AiController(ChatClient.Builder chatClientBuilder) {
        // 使用注入的构建器构建ChatClient实例
        this.chatClient = chatClientBuilder.build();
    }
    @GetMapping("/generate")
    public String generate(@RequestParam(value = "message", defaultValue = "Tell me a short, friendly joke.") String message) {
        // 使用流式API定义提示词并调用模型
        return chatClient.prompt()
            .user(message) // 设置用户的输入消息
            .call()       // 执行对AI模型的调用
            .content();   // 从响应中提取纯文本内容
    }
}

4. 运行与测试

  • 运行您的Spring Boot应用程序。
  • 测试端点:http://localhost:8080/generate?message=Explain%20Spring%20AI%20in%20one%20sentence

【注】本文译自:Lets start with Spring AI

氛围编程:IT领导者须知

执行摘要

  • 氛围编程能加速开发与创新,但企业高管必须加强治理、安全与审查流程以保护业务。
  • 团队能快速测试想法并交付最小可行产品,从而缩短上市时间并提升对业务需求的响应能力。
  • 开发人员与非技术人员能更高效地协作,降低入门门槛并促进创新。

想象一下,您可以通过摩擦一盏神灯,用简单直白的语言向精灵描述您的需求,它就能为您生成一个功能齐全的应用程序。虽然神灯并不存在,但AI编程助手在很大程度上实现了这个愿望——无论其影响是好是坏。借助大语言模型,开发人员可以输入自然语言提示,并生成任何编程语言的代码。OpenAI联合创始人安德烈·卡帕西在2025年创造了"氛围编程"一词,用以描述"完全沉浸在感觉中,拥抱指数级增长,甚至忘记代码本身的存在"。

这种新范式标志着从深思熟虑、逐行编写代码,转向更流畅、更直观的人机意图与执行之间的协作。

氛围编程并非要取代开发人员,而是一种加速数字化转型的战略推动器,它能提高生产率,并且是打造快速上市工具的一种经济高效的选择。然而,IT高管必须将治理与赋能相结合,以最大化其价值,同时控制氛围编程带来的风险。

氛围编程如何运作?

开发人员首先选择一个AI编程助手,并描述他们想要的功能或特性。接着,AI会回应代码建议,开发人员可以审查、接受或优化这些建议。然后,开发人员继续迭代,通过向AI发出具体指令来添加新功能或进行调整,从而创建一个动态的、对话式的工作流程。

氛围编程 vs. 传统编程

传统上,编程过程非常结构化和有条不紊,而氛围编程描述的则是一种更具创造性或基于流程的方法。以下是这两种方法差异的细目分类:

氛围编程 传统编程
语言 自然语言 编程语言
焦点 宏观大局 / "感觉" 细节导向
审查流程 信任AI 同行代码审查
界面 AI代理 键入代码 / IDE
开发速度 几分钟到几小时 数天到数周甚至更长
入门门槛 无需具备代码知识 需要懂得如何编写所有代码
创作过程 探索与实验,如同即兴弹奏吉他 有计划、精确且可重复,如同创作交响乐

氛围编程的优势

氛围编程提供了若干关键优势,特别是对于那些希望快速将想法付诸实施并减少重复性任务的开发人员。

  • 更快的开发速度。 经验丰富的开发人员使用氛围编程可以在几小时内完成一个应用程序,而传统的开发时间则需要数天或数周。
  • 更低的入门门槛。 开发人员进行氛围编程所需的唯一语言是他们自己的自然口语。氛围编程使开发人员能够在不懂编码的情况下启动一个功能正常的项目。AI对于正在学习编码或理解应用程序工作原理的开发人员来说,也是一个强有力的工具。
  • 快速原型制作。 氛围编程的速度使开发团队能够快速创建功能性的最小可行产品。这使得氛围编程非常适合在争抢市场先机时向投资者展示项目。此外,它还通过实验实现了更快的功能迭代。
  • 爱好或内部项目。 如果无需考虑公共访问或安全问题,氛围编程是理想选择。其速度和易用性使开发人员能够快速解决问题并构建解决方案。
  • 多模态编程。 氛围编程将代码生成扩展到集成开发环境之外的键入方式,包括语音到文本提示。
  • 员工协作与生产力。 开发人员从编写代码转向审查和优化代码。其他员工,如分析师和产品经理,也可以对编程提供意见,从而实现业务和IT部门的跨职能协作。

氛围编程的局限性

氛围编程听起来是否好得令人难以置信?这取决于它的使用方式。使其成为小型应用程序和原型强大工具的特点,在大型代码库或安全性优先的场景中,却可能成为其负担。

  • 错误与幻觉。 生成代码的AI与任何其他流行的AI工具一样容易出现幻觉。几位计算机科学研究人员的一项研究发现,商业AI模型平均有5.2%的情况下会推荐不存在的软件包。相比之下,开源模型的这一比例跃升至21.7%。
  • 有限的技术复杂性。 提供给AI的每个提示都有一个有限的上下文窗口——类似于内存——其中包含大量关于您环境的数据,例如您打开的标签页内容。这为AI提供了上下文,使其能够做出明智的决策。然而,不同AI模型的上下文窗口大小不同,并且较大的上下文大小可能会影响AI的性能。项目越复杂,AI理解项目所需的上下文就越多。
  • 难以调试和维护。 未经审查就接受AI生成的代码,可能会导致创建一个无人理解代码作用及缘由的代码库。如果AI引入了其自身无法修复的错误,而开发人员又无法理解其输出,那么进展将完全受阻。
  • 缺乏原创性。 编码AI基于现有的代码示例进行训练,只能生成它所知道的内容。它无法完全靠自己提出革命性的过程或想法。

企业高管应将氛围编程生成的代码视为快速原型。然而,程序仍然需要经过审查。对于面向客户的服务,必须进行审查;如果涉及其他敏感数据,则必须检查其是否符合法规要求。

氛围编程的安全顾虑

一位名叫Leo的开发人员在X上宣布,他发布了一个完全通过氛围编程构建的SaaS应用程序。两天内,他的应用程序就遭到了黑客的攻击,Leo发帖称出现了各种随机问题。在整个项目中如此重度依赖AI会导致安全问题层出不穷。原因如下:

  • LLM或平台中的漏洞。 任何依赖外部组件的软件产品都会继承潜在的漏洞。AI编码平台也不例外。最近,安全研究人员在氛围编程平台Base44中发现了暴露的API端点,使得攻击者能够使用非机密的app_id值创建新账户来访问私有应用程序,从而绕过所有身份验证机制。
  • 开发人员错误。 氛围编程工具会精确地生成开发人员所要求的内容。如果开发人员在其提示中未包含安全实践,AI将不会生成遵循最佳安全实践的代码。
  • 数据隐私。 LLM通过摄取数据作为训练数据来改进模型。如果项目涉及敏感数据,例如支付信息、健康记录、专有代码或商业机密,则AI工具必须实施严格的数据隔离,以防止AI在其他应用程序中使用受保护的信息。

如何实施氛围编程

考虑到其局限性,在将氛围编程集成到项目中时最好谨慎行事,以充分利用其优势。

  1. 规划项目。 氛围编程和传统编程共有的一个特点是,两者在从一开始就有清晰计划指导时最为有效。确定您要构建什么,并将步骤分解为易于消化的小部分。牢记您希望为项目采用的安全和代码标准。
  2. 决定您的"氛围"策略。 真正的氛围编程定义为将所有决定交给AI。AI辅助编码是一种混合方法,开发人员向AI提示代码,然后在批准前仔细检查输出。找到最符合您优先事项的平衡点。
  3. 选择AI编程助手。 并非所有模型都构建得一样。有些专门用于代码生成,而其他则能解决更复杂的问题。不同模型在数据隔离、隐私以及成本方面有不同的政策。请仔细选择最适合您项目的AI代理。
  4. 使用源代码控制。 这对任何类型的编码都是个好主意,但对于氛围编程尤其重要。当您的项目处于良好工作状态时,为自己创建检查点,以便您可以根据需要轻松调整。
  5. 迭代。 一次创建一个功能,并在每个提示中提供尽可能多的细节和上下文。优化和重构您的代码,直到它符合您的设想。
  6. 测试。 确保您的项目在每个步骤中都正常工作。AI非常擅长生成自动化测试,但请确保您也执行手动测试,包括依赖项验证和自动化测试,以阻止合并未知/无效的软件包。
  7. 设定防护措施。 务必建立安全审查和编码标准。氛围编程项目仍应审查其准确性和合规意识,因此审批工作流是必要的。

IT高管可追踪的指标

这些指标应衡量交付速度、缺陷率和生产率的改进。以下是高管可用于追踪氛围编程的几个指标示例:

  • 原型制作时间(引入氛围编程工具前后对比)。
  • AI生成的拉取请求在自动化关卡失败的比例,例如测试、代码 lint 检查和软件成分分析。
  • 幻觉检测率,包括无效软件包或不良依赖项。
  • 每月归因于AI生成代码的安全事件
  • 每个正常工作的原型的成本,以客观显示投资回报率。

【注】本文译自:Vibe coding: What IT leaders need to know | TechTarget

构建复合AI系统以实现可扩展工作流

了解如何利用复合AI系统架构化模块化且安全的智能体工作流,以实现可扩展的企业自动化。

生成式AI、大语言模型和多智能体编排的融合催生了一个变革性的概念:复合AI系统。这些架构超越了单个模型或助手,代表了智能代理的生态系统,它们通过协作来大规模交付业务成果。随着企业追求超自动化、持续优化和个性化参与,设计智能体工作流已成为关键的差异化因素。

本文探讨复合AI系统的设计,重点聚焦模块化AI代理、安全编排、实时数据集成和企业治理。旨在为解决方案架构师、工程领导者和数字化转型高管提供一个实用的蓝图,用于在各个领域(包括客户服务、IT运营、营销和现场自动化)构建和扩展智能代理生态系统。

复合AI的兴起

传统的AI应用通常是孤立的,一个机器人专用于服务,另一个专注于分析,还有一个用于营销。然而,真实世界的工作流是相互关联的,需要共享上下文、移交意图并进行自适应协作。复合AI系统通过以下方式解决这一问题:

  • 启用自主但协作的代理(例如,规划器、检索器、执行器)
  • 促进多模态交互(文本、语音、事件)
  • 支持企业级的可解释性、隐私和控制指南

这反映了复杂系统在人类组织中的运作方式:每个单元(代理)都有其角色,但它们共同创造了一个价值链。

企业级智能体工作流的设计原则

设计有效的复合AI系统需要深思熟虑的方法,以确保模块化、可扩展性并与企业目标保持一致。以下是指导智能体工作流开发的关键原则:

1. 模块化代理设计

每个AI代理都应遵循单一职责原则,设计为具有特定、明确界定的职责。这种模块化使维护、测试和可扩展性变得更加容易。例如:

  • 规划器代理:将总体目标分解为可管理的子任务。
  • 检索器代理:从不同来源检索和收集相关数据。
  • 执行器代理:根据规划器的指令执行操作。
  • 评估器代理:评估结果并提供反馈以持续改进。

通过明确定义职责,代理可以独立运作,同时在系统内协同工作。

2. 事件驱动和以意图为中心的架构

从静态的、同步的工作流转向动态的、事件驱动的架构,可增强响应能力和适应性。实施以意图为中心的设计使系统能够有效解释用户或系统意图并据此行动。关键组件包括:

  • 意图路由器:对意图进行分类并将其引导至相应的代理。
  • 事件代理:通过事件消息促进代理之间的通信。
  • 记忆模块:随时间推移保存上下文,使代理能够基于历史数据做出明智决策。

这种架构实现了可扩展性和弹性,这对企业环境至关重要。

3. 企业数据集成与检索增强生成

集成结构化和非结构化数据源可确保AI代理在全面的上下文中运行。利用检索增强生成技术使代理能够访问外部知识库,从而提高其决策能力。策略包括:

  • 数据连接器:创建与企业数据库和API的安全连接。
  • 向量数据库:增强语义搜索和相关信息的检索。
  • 知识图谱:提供数据实体之间关系的结构化表示。

这种集成确保了代理信息灵通、具有上下文意识,并能提供准确的结果。

4. 安全与治理框架

确保智能体系统的安全性和合规性至关重要。实施强大的治理框架有助于维持信任和问责制。关键实践包括:

  • 访问控制:建立并强制执行数据和代理交互的权限。
  • 审计追踪:记录代理活动以实现透明度和合规性。
  • 合规性检查:根据GDPR和HIPAA等监管标准定期评估系统。

结构良好的治理模型可以防范风险,并确保AI的合乎道德的部署。

5. 可观测性与持续监控

实施可观测性实践能够实时监控和诊断代理行为及系统性能。关键组件包括:

  • 日志记录:记录代理行动和决策的全面日志。
  • 指标收集:收集性能指标,如响应时间和错误率。
  • 警报系统:及时向利益相关者通知异常或系统故障。

持续监控允许进行主动维护和持续改进。

6. 人在回路机制

纳入人工监督可确保AI代理在可接受的范围内运行,并适应细微的场景。HITL方法包括:

  • 审批工作流:确保关键决策或行动得到人工验证。
  • 反馈循环:使用户能够就代理性能提供输入,指导其未来行为。
  • 干预协议:允许人员在必要时修改或调整代理行动。

平衡自动化与人工判断可增强系统可靠性并建立用户信任。

7. 可扩展性与性能优化

设计能够有效扩展以处理不断增长工作负载的系统至关重要。实现这一目标的策略包括:

  • 负载均衡:在代理和资源之间均匀分配工作负载。
  • 异步处理:使代理能够独立运行,最大限度地减少瓶颈。
  • 资源管理:有效监控和分配计算资源以维持性能。

针对可扩展性进行优化可确保系统在需求增加时保持响应能力和有效性。

通过遵循这些设计原则,企业可以创建稳健、高效、可靠的智能体工作流,这些工作流既符合组织目标,又能适应不断变化的挑战。

实际应用案例:现场服务代理网格

场景:一家公用事业组织可以利用三个专门的AI代理来增强现场响应操作:

  • 规划器代理:评估收到的用户投诉并制定解决计划。
  • 检索器代理:获取资产位置、历史工单数据和合规性检查清单。
  • 执行器代理:安排技术人员并向移动服务团队发送警报。

影响:提高任务分配效率、缩短解决周期并提高技术人员生产率。

结论

复合AI系统正在通过促进智能、适应性强且可扩展的工作流来改变企业架构。设计模块化、可编排的智能体系统有助于组织:

  • 加速AI驱动的转型
  • 增强运营弹性和灵活性
  • 为客户和员工体验提供更好的结果

未来在于从孤立的AI任务转向复合的代理生态系统,这是一种将创新与强大治理及领域相关性相结合的战略。


【注】本文译自:Architecting Compound AI Systems for Scalable Workflows

AI时代的非人类身份安全

AI时代的非人类身份安全

随着AI在企业中的崛起,攻击面也在不断扩展。了解如何保护非人类身份(Non-Human Identities, NHIs)并防止未经授权的访问。

AI时代的非人类身份安全


非人类身份(NHIs)近期成为焦点并非偶然——随着AI工具和自主代理的快速普及,企业的NHI数量正呈爆炸式增长。这一趋势也引发了关于机器身份与治理的大量研究和讨论。

与系统的普通用户类似,NHI(如AI代理、机器人、脚本和云工作负载)通过密钥(secrets)进行操作。这些凭证赋予其访问敏感系统和数据的权限,可能以多种形式存在,且必须从创建到销毁全程受控。然而,机器无法使用多因素认证或通行密钥(passkeys),而开发者在部署应用时可能生成数百个此类凭证。


AI加速NHI的扩张与风险

企业AI的采用速度惊人,迫使开发者以前所未有的速度推出NHI。AI虽能提升效率,但也带来隐私泄露、密钥暴露和不安全代码等风险。大型语言模型(LLMs)的应用场景令人兴奋,但需谨记:技术引入越多,攻击面越大——尤其是当AI代理被赋予自主权时。


AI代理带来的NHI风险

1. AI代理与密钥泛滥(Secrets Sprawl)

“AI代理”是基于LLM的系统,可自主决策如何完成任务。它们不同于传统的确定性机器人(仅按开发者预设的步骤执行),而是能访问内部数据源、搜索互联网,并代表用户与其他应用交互。

例如,一个AI采购代理可以分析需求、通过电商平台比价、与AI聊天机器人议价,甚至自主下单。每个安全通信都需要凭证,而这类代理需通过DevOps流程部署,导致更多跨环节的身份验证需求。密钥往往在系统、日志和仓库中意外散落。

企业常为AI代理赋予比传统机器人更广泛的读写、甚至创建和删除权限。由于AI代理的自主性,若权限限制过严,其任务可能受阻;但宽松权限又易导致过度授权。

风险点:任一密钥泄露都可能引发数据泄露或未经授权的交易。需通过最小权限访问、API密钥保护和审计日志来强化NHI治理,并关注密钥存储之外的暴露风险。

2. 孤立的API密钥(Orphaned API Keys)

孤立API密钥指不再与用户账户关联的密钥(如员工离职后未被删除的密钥)。在NHI场景中,密钥的“归属权”模糊(开发者?运维团队?),导致其极易被遗忘却仍有效。

关键问题:谁应对这些密钥引发的安全漏洞负责?

3. 基于提示的架构与敏感数据暴露

AI助手(如ChatGPT、Gemini、GitHub Copilot)依赖提示(prompt)架构,通过上下文、命令和数据与LLM交互。这种模式虽简化了开发,但也可能导致敏感信息(如API密钥)被写入提示或日志。

案例:财务团队用AI聊天机器人处理发票时,若提示中包含API key ABC123,该密钥可能被明文记录。若日志未加密,攻击者可借此入侵发票系统。

防护措施:需阻止开发者及用户将敏感数据嵌入提示或日志,并扫描LLM输出中的异常信息。

4. AI代理与数据收集风险

AI代理常从以下来源收集数据:

  • 云存储(如AWS S3、Google Drive)
  • 企业应用(如Jira、Confluence、Salesforce)
  • 通信系统(如Slack、Microsoft Teams)

风险:若AI代理可访问这些系统中的任何数据,攻击者亦可滥用其NHI权限。需定期轮换所有内部系统的密钥,并清理日志。

5. AI生成代码与嵌入式密钥

GitHub Copilot、Amazon CodeWhisperer等AI编码工具已被超50%的开发者使用。然而,AI生成的代码可能诱导开发者硬编码密钥(如API密钥、数据库凭证)。

案例:开发者要求Copilot生成调用云服务的代码时,可能得到:

import requests  
API_KEY = "sk_live_ABC123XYZ"  
response = requests.get("https://api.example.com/data", headers={"Authorization": f"Bearer {API_KEY}"})  

若匆忙中替换为真实密钥并提交至代码仓库,凭证可能被泄露。

防护:通过预提交钩子(pre-commit hooks)等工具扫描代码,防止密钥泄露。


未来方向:如何保护非人类身份

  1. 发现密钥:自动识别企业环境中的所有AI代理凭证(包括存储库内外)。
  2. 评估风险:明确密钥的用途、访问范围及关联的关键系统。
  3. 动态防护:实时监控提示和日志,防止敏感数据嵌入。

让NHI治理跟上AI速度

AI代理的部署速度与复杂性并存,既带来效率提升,也伴随风险。随着AI普及,保护机器身份已非可选,而是必需。唯有通过系统化的密钥管理、权限控制和持续监测,才能在AI时代实现安全与创新的平衡。


【注】本文译自:
Non-Human Identity Security in the Age of AI

评估您的数据是否可用于人工智能的三个考虑因素

评估您的数据是否可用于人工智能的三个考虑因素

​ 多数组织正在人工智能和生成性人工智能的炒作中迷失方向。在许多情况下,他们并没有准备好人工智能项目所需的数据基础。三分之一的高管认为,只有不到50%的组织有了人工智能所需的数据,而多数组织并未准备好。因此,在开展人工智能项目之前,奠定正确的基础至关重要。在评估准备情况时,主要考虑因素如下:

  • 可用性:您的数据在哪里?
  • 类目:您将如何记录和协调您的数据?
  • 质量:优质数据是人工智能项目成功的关键。

​ 人工智能存在“垃圾进,垃圾出”的问题:如果您输入的数据质量差、不准确或无关紧要,那么输出也会如此。这些项目涉及的工作量和费用都非常高,风险也很大,因此从错误的数据开始是不可取的。

数据对人工智能的重要性

​ 数据是人工智能的基本要素;它是基于数据进行训练的,然后为特定目的处理数据。当您计划使用人工智能解决问题时——即使是使用现有的大型语言模型,如ChatGPT这样的生成性人工智能工具——您也需要为其提供业务的正确上下文(即优质数据),以便根据您的业务上下文定制答案(例如,用于检索增强生成)。而并不只是简单地将数据塞到模型中。

​ 如果您正在构建新模型,您必须知道将使用什么数据进行训练和验证。这些数据需要进行分离,以便您可以在一个数据集上进行训练,然后在不同的数据集上进行验证,来确定模型是否有效。

建立正确数据基础的挑战

​ 对于许多公司来说,知道数据在哪里以及数据的可用性是第一项重大挑战。如果您对自己的数据有一定的了解——数据的存在情况、数据所在的系统、数据的规则等——这已经是一个良好的起点。然而,事实是,许多公司并没有达到这种理解水平。

​ 数据并不总是随时可用;它可能分散在许多系统和信息孤岛中。尤其是大型公司,往往拥有非常复杂的数据环境。他们没有一个单一的、经过整理的数据库,所有模型所需的数据都整齐地组织在行和列中,可以直接检索和使用。

​ 另一个挑战是数据不仅存在于许多不同的系统中,而且格式各异。存在SQL数据库、NoSQL数据库、图数据库、数据湖,有时数据只能通过专有应用程序API访问。还有结构化数据和非结构化数据。一些数据存放在文件中,可能还有一些来自工厂传感器的实时数据,等等。根据您所在的行业,数据可能来自不同系统和格式的众多来源。协调这些数据是困难的;大多数组织没有相应的工具或系统来统一维护。

​ 即使您能够找到数据并将其转换为业务理解的统一格式(规范模型),您还需要考虑数据质量。数据是杂乱的;粗略看似乎没有问题,但仔细观察时,数据中会出现错误和重复,因为您是从多个系统中获取数据,不一致是不可避免的。您不能用低质量的训练数据来训练人工智能模型,然后期待高质量的结果。

如何奠定正确的基础:成功的三个步骤

​ 人工智能项目基础的第一块砖是了解您的数据。您必须能够清晰地表达业务正在捕获什么数据,这些数据存放在哪些系统中,数据的物理实现与业务的逻辑定义有何不同,以及业务规则是什么……

​ 接下来,您必须能够评估您的数据。就是要问:“对我的业务来说,什么是优质数据?”您需要定义优质数据的标准,并制定验证和清洗数据的规则,以及维护数据质量的策略。

​ 如果您能够从异构系统中获取数据并将其转换为规范模型,并对其进行整理以提高质量,您仍然需要关注可扩展性。这是第三个基础步骤。许多模型需要大量数据进行训练;您还需要大量数据用于检索增强生成,这是提高生成性人工智能模型性能的一种技术,它使用未包含在训练模型中的外部信息。所有这些数据都是不断变化和发展的。

​ 您需要一种方法来创建合适的数据管道,以适应您可能输入的数据的负载和体积。最初,您可能会被弄得不知所措,忙于寻找数据来源、清洗数据等,以至于没有充分考虑到对于不断演变的数据进行扩展将面临的挑战。因此,您必须考虑使用哪个平台来构建该项目,以便该平台能够扩展到您将引入的数据量。

为可信数据创造环境

​ 在进行人工智能项目时,将数据视为事后考虑因素必然会导致糟糕的商业结果。任何认真对待通过开发和使用人工智能来建立和维持商业优势的人都必须首先关注数据。主要问题在于:整理和准备用于商业目的数据具有相当的复杂性和挑战性,首当其冲的是时间因素。也就是说不给您范错的时间;最起码您要有一个帮助您维护高质量数据的平台和方法。了解和评估您的数据,然后规划可扩展性,您就会朝着更好的商业结果迈出一步。


【注】本文译自:https://sdtimes.com/ai/three-considerations-to-assess-your-datas-readiness-for-ai