Spring AI GA正式版试用感受

只花了一上午就搭建了一套向量搜索和 AI 问答+RAG 知识库 和 tools call的示例。
文档全还有示例,上手速度很快,个人感觉比 LangChain 系列好用。

完整项目在在文章末尾,如果对你有帮助请帮我点个star 。谢谢~


Spring AI 1.0 GA 功能介绍:

https://spring.io/blog/2025/05/20/spring-ai-1-0-GA-released

 

核心代码:

  /**
     * 构造方法,注入必要的依赖,并配置 ChatClient
     *
     * @param builder ChatClient 构建器
     * @param chatMemory 聊天上下文记忆体
     * @param vectorStore 向量存储,用于语义检索
     * @param listObjectProvider 工具回调提供者对象列表
     */
    public AiSportSupportAssistant(
            ChatClient.Builder builder,
            ChatMemory chatMemory,
            VectorStore vectorStore,
            ObjectProvider<List<ToolCallbackProvider>> listObjectProvider) {

        this.chatBuilder = builder;
        this.vectorStore = vectorStore;
        this.listObjectProvider = listObjectProvider;

        // 配置知识库检索参数:相似度阈值为0.5,返回Top 3条
        SearchRequest searchRequest = SearchRequest.builder()
                .similarityThreshold(0.5d)
                .topK(3)
                .build();

        // 初始化 ChatClient
        this.chatClient = builder
                // 设置默认系统提示词,定义 AI 助理的身份和行为
                .defaultSystem(
                        "你是一个运动助手,帮助用户解决运动相关问题,上下文和历史信息帮助你更好了解用户需求," +
                        "但记住你不仅可以根据上下文来回答内容,而且你也可以调用工具帮助用户查询,始终遵守用户的指令。")
                // 配置对话顾问,包括记忆顾问、知识库问答顾问和日志顾问
                .defaultAdvisors(
                        MessageChatMemoryAdvisor.builder(chatMemory).build(), // 聊天记忆可以配置存储 mysql \Redis
                        QuestionAnswerAdvisor.builder(vectorStore).searchRequest(searchRequest).build(), // 向量知识库问答
                        new SimpleLoggerAdvisor()) // 简单日志
                // 配置默认工具,如时间工具
                .defaultTools(new DateTimeTools())
                // 配置默认可用工具名称
                .defaultToolNames("getStudentSportScore", "getStudentScoreRank")
                .build(); // 构建 ChatClient 实例
    }

 

核心配置配置:

spring:
 # api-key (项目测试使用是DeepSeek和阿里embedding https://bailian.console.aliyun.com/?tab=model)
  ai:
    openai:
      api-key: sk-
      base-url: https://api.deepseek.com
      chat:
        options:
          model: deepseek-chat
      embedding:
        base-url: https://dashscope.aliyuncs.com/compatible-mode
        api-key: sk-
        options:
          model: text-embedding-v3
          dimensions: 1024
    vectorstore:
      milvus:
        client:
          host: "localhost"
          port: 19530
          username: "root"
          password: "milvus"
        databaseName: "default"
        collectionName: "vector_store"
        embeddingDimension: 1024
        indexType: IVF_FLAT
        metricType: COSINE
        initialize-schema: true
    chat:
      memory:
        repository:
          jdbc:
            initialize-schema: never

 

 

项目参考:

https://github.com/git-syl/spring-ai-rag-toolscall-demo/

posted @ 2025-05-24 20:12  TechMoeTiger  阅读(157)  评论(0)    收藏  举报