1.0.5
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 媒体处理的安全性。