只花了一上午就搭建了一套向量搜索和 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/
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |