跳到主要内容

1.0.5

云端
Spring AI 学习者

Spring AI 1.0.5 正式发布,累计合并 12 个提交,涉及 196 个文件(+2,231 / -358 行),主要聚焦于向量存储过滤器表达式解析修复、Bedrock Converse 媒体处理健壮性增强及多项集成测试改进。

模型厂商

Bedrock Converse —— 媒体处理增强

1.0.5 对 Bedrock Converse 的媒体处理流程进行了重要重构:

  • MediaFetcher 独立组件 —— 新增 MediaFetcher 类,将媒体数据获取逻辑从 BedrockProxyChatModel 中分离,统一处理 HTTP/HTTPS URL、S3 URI 和 Base64 编码数据的获取
  • URL 严格校验 —— URLValidator 从基础格式校验升级为严格校验(isValidURLStrict),仅允许 HTTP/HTTPS 协议,并新增 SSRF 防护(禁止非 HTTP/HTTPS 协议的 URL 直接访问)
  • S3 支持 —— 图片/视频媒体现在支持 s3:// URI 格式,直接通过 Bedrock S3Location 引用
  • 文档命名规范化 —— 新增 sanitizeDocumentName() 方法,自动清理文档名称以符合 Bedrock API 命名限制(仅允许字母数字、空格、连字符、括号和方括号)
  • 流式 finishReason 修复 —— 修复流式模式下 finishReason 未正确传递的问题

核心改进

向量存储过滤器表达式全面修复

1.0.5 对向量存储过滤器表达式解析系统进行了全面改进:

FilterExpressionTextParser —— 标识符解析增强

ANTLR4 语法中的 identifier 规则从单一类型重构为三种替代形式:

  • SimpleIdentifier —— 基础字母数字/下划线标识符(如 author
  • CompoundIdentifier —— 点号分隔的复合标识符(如 meta.author.name
  • QuotedIdentifier —— 双引号包裹的标识符(如 "field name"),自动去转义

此修复解决了带点号或特殊字符的元数据字段名无法正确解析的问题。

SimpleVectorStore —— 过滤器求值重构

  • 新增 SimpleVectorStoreFilterExpressionEvaluator,将过滤器求值逻辑从 SpEL 表达式引擎迁移为直接评估 Filter.Expression 语法树
  • 原有实现将 Filter 表达式转换为 SpEL 字符串再交由 SpEL 引擎执行,新实现直接在语法树层面求值,避免了表达式转换过程中的信息丢失
  • 官方文档新增明确声明:SimpleVectorStore 不适用于生产环境,仅供测试和演示使用

RedisFilterExpressionConverter —— TAG/TEXT 值转义修复

  • TAG 类型过滤值现正确转义特殊字符($\|{}()[]-'
  • TEXT 类型过滤值改用 RediSearchUtil.escapeQuery() 进行标准转义
  • 修复了此前 TAG/TEXT 过滤值中包含特殊字符时导致 RediSearch 查询失败的问题

Neo4jVectorFilterExpressionConverter —— Key 安全处理

  • 元数据 Key 现通过 SchemaNames.sanitize() 进行 Cypher 标识符安全处理
  • 修复了包含特殊字符的 Key 可能导致 Cypher 查询语法错误的问题

Bug Fix 汇总

问题修复
Bedrock Converse 流式 finishReason 丢失修复 finishReason 在流式响应中未传递
FilterExpression 标识符解析不支持点号和引号重构语法支持 Compound/Quoted Identifier
SimpleVectorStore 过滤器依赖 SpEL 表达式转换重写为直接语法树求值,新增独立 Evaluator
Redis TAG/TEXT 过滤值特殊字符未转义新增 escapeTagValue 和 RediSearchUtil.escapeQuery 转义
Neo4j 过滤器 Key 包含特殊字符导致语法错误使用 SchemaNames.sanitize 安全处理
Oracle/PgVector 集成测试不稳定改进 IT 容器重试逻辑

基础设施

  • Maven Central 发布工作流 —— 新增 GitHub Actions 工作流,自动化 Maven Central 发布流程
  • 多项集成测试稳定性改进(Bedrock Converse、Ollama、Oracle、PgVector)

Spring AI 1.0.5 是一个以 bug 修复为主的维护版本,重点解决了向量存储过滤器表达式解析在多种数据库实现中的兼容性问题,同时增强了 Bedrock Converse 媒体处理的安全性。