你是否遇到过:Chat AI 回答行业问题时总说车轱辘话?内部知识库更新后,AI仍然给出过期答案?
Spring AI的RAG技术正是为解决这些问题而生,结合信息检索和文本生成的技术,通过先查资料后回答的机制,让AI摆脱传统模型的"知识遗忘”困境。
<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();
}| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |