|
你是否遇到过:Chat AI 回答行业问题时总说车轱辘话?内部知识库更新后,AI仍然给出过期答案? Spring AI的RAG技术正是为解决这些问题而生,结合信息检索和文本生成的技术,通过先查资料后回答的机制,让AI摆脱传统模型的"知识遗忘”困境。
 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;padding-left: 8px;color: rgb(63, 63, 63);">快速开始ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">1.接入Sping Ai 、向量vector redis、检索 advisors-vector-store 框架。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 14.4px;margin: 10px 8px;color: rgb(201, 209, 217);background: rgb(13, 17, 23);text-align: left;line-height: 1.5;overflow-x: auto;border-radius: 8px;padding: 0px !important;"><dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-starter-model-openai</artifactId> </dependency> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-advisors-vector-store</artifactId> </dependency> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-starter-vector-store-redis</artifactId> </dependency>ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">2.配置Ai模型和 api-key 、 向量模型。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 14.4px;margin: 10px 8px;color: rgb(201, 209, 217);background: rgb(13, 17, 23);text-align: left;line-height: 1.5;overflow-x: auto;border-radius: 8px;padding: 0px !important;">spring.ai.openai.base-url=https://dashscope.aliyuncs.com/compatible-mode/ spring.ai.openai.chat.options.model=qwen-max spring.ai.openai.api-key=${OPEN_API_KEY} spring.ai.openai.embedding.options.model=text-embedding-v4ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">3.配置 redis 连接、key前缀。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 14.4px;margin: 10px 8px;color: rgb(201, 209, 217);background: rgb(13, 17, 23);text-align: left;line-height: 1.5;overflow-x: auto;border-radius: 8px;padding: 0px !important;">spring.data.redis.host=localhost spring.data.redis.port=6379 spring.ai.vectorstore.redis.initialize-schema=true spring.ai.vectorstore.redis.index-name=custom-index spring.ai.vectorstore.redis.prefix=custom-prefixingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">4.注入向量vector redis、增强检索QuestionAnswerAdvisor。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-feature-settings: normal;font-variation-settings: normal;font-size: 14.4px;margin: 10px 8px;color: rgb(201, 209, 217);background: rgb(13, 17, 23);text-align: left;line-height: 1.5;overflow-x: auto;border-radius: 8px;padding: 0px !important;">publicVectoreRedisService(ChatClient.Builder builder,VectorStore vectorStore ){ this.vectorStore = vectorStore; this.chatClient = builder.defaultAdvisors(newQuestionAnswerAdvisor(vectorStore)) .build(); }ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">5.初始化知识库。publicvoidstoreVector(){ List<Document> documents = List.of( newDocument("有范编程笔记公众号是记录和分享技术笔记,及个人的所见所闻。"), newDocument("有范是一个技术博主")); this.vectorStore.add(documents); }
6.实现检索增强生成。 publicStringgenerateAsString(String message){ returnthis.chatClient.prompt() .user(promptUserSpec -> promptUserSpec.text(message)) .call() .content(); }
|