跳到正文
Joeplover
AI Agent·2026-01-27·约 3 分钟阅读

Logistics_AI:Spring AI + Milvus 物流智能助手

基于 Spring AI、Milvus 向量数据库和 Redis 的物流行业智能助手,实现 RAG 知识库问答与数据分析。

物流 AI

Logistics_AI:Spring AI + Milvus RAG 物流智能问答系统

项目背景

物流行业有大量文档——运输条款、报关流程、保险政策、常见问题——客服人员每天需要查询这些文档来回答客户咨询。传统方案是关键词搜索,但用户提问题时不会用精确的关键词。RAG(检索增强生成) 是更实用的方案:把文档向量化存入向量数据库,用户提问时找到相关文档片段,再让 LLM 基于这些片段生成答案。

这是我做 BigGraph RAG 平台之前的技术验证项目,验证了"Spring AI + Milvus 能否在企业场景落地"。

技术选型

Spring AI

Spring AI 是 Spring 生态的 AI 抽象层,为 Java 项目提供统一的 LLM 调用接口:

spring:
  ai:
    openai:
      api-key: ${OPENAI_API_KEY}
      chat:
        options:
          model: gpt-3.5-turbo
    vectorstore:
      milvus:
        client:
          host: 192.168.8.133
          port: 19530
          username: 
          password:

它的核心价值在于可切换的 LLM Provider——今天用 OpenAI,明天换通义千问,不需要改业务代码。对于企业来说,这意味着不绑定特定云厂商。

Milvus 向量数据库

Milvus 是开源的向量数据库,专门用于存储和检索高维向量。相比 Elasticsearch 的向量插件,Milvus 在大规模向量检索场景下性能更好。

在 VM 上通过 Docker 部署:

docker run -d --name milvus-standalone   -p 19530:19530 -p 9091:9091   milvusdb/milvus:2.3-latest

RAG 完整流程

1. 文档处理

物流文档 → 分块(每段 500 字符) → 向量化(Embedding) → 存入 Milvus

分块策略在实践中很重要:块太大包含无关信息降低精度,块太小丢失上下文。在物流文档场景,按段落分块(大约 300-500 字)效果最好。

2. 检索

用户问题 → 向量化 → 查询 Milvus Top-K → 获取相关文档片段
@Service
public class RAGService {
    @Autowired
    private VectorStore vectorStore;

    public String answer(String question) {
        // 检索 Top-3 相关文档
        List<Document> docs = vectorStore.similaritySearch(
            SearchRequest.query(question).withTopK(3));
        
        // 构建增强提示
        String context = docs.stream()
            .map(Document::getContent)
            .collect(Collectors.joining("\n\n"));
        
        // LLM 生成回答
        return aiClient.generate(
            "基于以下文档回答用户问题:\n" + context + "\n\n问题:" + question);
    }
}

3. 生成

LLM 基于检索到的文档片段生成回答,并且在提示词中要求"如果文档中没有相关信息,请说不知道,不要编造"。

与 BigGraph RAG 的对比

Logistics_AI 是我 RAG 技术路线上的第一个验证项目:

维度Logistics_AIBigGraph
框架Spring AILangChain + LangGraph
向量库MilvusQdrant + ES 混合检索
Agent单轮问答LangGraph Agent + 工具调用
部署单体分布式

BigGraph 在多个方向上是 Logistics_AI 的升级:更强的检索能力(混合检索)、Agent 自主决策、更灵活的部署方案。

踩坑

Spring AI 版本兼容:早期 Spring AI 版本迭代很快,API 变化大。解决方案:锁定特定版本(当时用 0.8.x),不要轻易升级。

向量维度匹配:Embedding 模型输出的向量维度必须和 Milvus 集合创建时指定的维度一致。换 Embedding 模型时需要重建集合。

分块策略调优:初始用固定 200 字符分块导致大量截断。后改为按段落分块 + 200 字符重叠滑动窗口,检索精度提升明显。

总结

RAG 是当前企业级 AI 最实用的落地模式——不需要训练模型、知识更新只要更新向量数据库、可解释性强(可以看到 LLM 参考了哪些文档)。Spring AI 让 Java 团队能以最低成本接入 AI 能力。