news 2026/5/1 9:52:17

Springboot——整合Langchain4j使用RAG进行对话增强

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Springboot——整合Langchain4j使用RAG进行对话增强

文章目录

  • 前言
  • 环境与配置
  • 依赖引入
  • SystemMessage 验证
    • 最初的方式
    • 设定进阶
  • RAG
    • easy-rag 精简实现
    • easy-rag 标准实现
  • 第三方向量存储

前言

在之前结合Langchain4j进行对话操作时,采取限定对话前的system消息类型,能够稍微缩小AI回答的范围。
但根据user类消息的不同,AI总会出现类似已读乱回幻觉等问题现象。

为了让Agent回答的问题更准确,可以使用RAG的思想,提前告知AI回答问题的范围,做数据的限制与参照。

环境与配置

  • springboot 3.4.0
  • maven 3.6.3
  • jdk 17
  • langchain4j 1.1.0-beta7
  • langchain4j-easy-rag 1.1.0-beta7

依赖引入

<dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-community-dashscope-spring-boot-starter</artifactId><version>1.1.0-beta7</version></dependency><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-spring-boot-starter</artifactId><version>1.1.0-beta7</version></dependency>

SystemMessage 验证

最初的方式

Langchain4j中的模型chat(...)支持传递多个message类型,进行systemmessage的预设。

配置文件中引入模型设置

langchain4j.community.dashscope.chat-model.api-key=${ALI_AI_KEY}langchain4j.community.dashscope.chat-model.model-name=qwen-max

设定测试类,进行验证。

importdev.langchain4j.community.model.dashscope.QwenChatModel;importdev.langchain4j.data.message.SystemMessage;importdev.langchain4j.data.message.UserMessage;importdev.langchain4j.model.chat.response.ChatResponse;importorg.junit.jupiter.api.Test;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot.test.context.SpringBootTest;@SpringBootTestpublicclassSystemMsgTest{@AutowiredprivateQwenChatModelqwenChatModel;@TestpublicvoidsystemMsg(){SystemMessagesystemMessage=SystemMessage.from(""" 你是智能助手,帮助用户解决编程类的疑问,并给出相关建议。重点关注4个方向: 1、规划清晰的编程学习路线 2、提供相关编程技术的学习建议 3、分享专业知识技能点和面试技巧 请用简洁明了的语言回答。 """);ChatResponsechat=qwenChatModel.chat(systemMessage,UserMessage.from("你好,我是程序猿专注写bug"));System.out.println("chat.aiMessage().text() = "+chat.aiMessage().text());}}

执行后,AI返回消息如下所示:

chat.aiMessage().text() = 你好!程序员之路充满挑战也乐趣多多。如果你在写代码时遇到了bug,或者想要提升自己的编程技能,我很乐意帮助你。 请告诉我你当前使用的主要编程语言和技术栈是什么?还有,你最想解决或学习的问题是什么?这样我可以给你更具体的建议。

回答内容在指定SystemMessage限制之内。

设定进阶

除了给大模型直接传递SystemMessage之外,还能在使用AiService进行AOP操作前,利用注解的方式进行设定。如下所示:

importdev.langchain4j.memory.ChatMemory;importdev.langchain4j.memory.chat.MessageWindowChatMemory;importdev.langchain4j.model.chat.ChatModel;importdev.langchain4j.service.AiServices;importdev.langchain4j.service.SystemMessage;importjakarta.annotation.Resource;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;/** * 验证AI使用注解填充 SystemMessage */@ConfigurationpublicclassAiSystemFactory{/** * 由 AiService 进行aop */publicinterfaceSystemMsgAssisent{/** * 注解绑定 systemmessage * 类似角色扮演 * @param userMessage * @return */@SystemMessage(""" 你是智能助手,帮助用户解决编程类的疑问,并给出相关建议。重点关注4个方向: 1、规划清晰的编程学习路线 2、提供相关编程技术的学习建议 3、分享专业知识技能点和面试技巧 请用简洁明了的语言回答。 """)Stringchat(StringuserMessage);}/** * dev.langchain4j.community.dashscope.spring.AutoConfig#qwenChatModel */@ResourceprivateChatModelqwenChatModel;@BeanpublicSystemMsgAssisentcreateSystemMsgAssisent(){ChatMemorychatMemory=MessageWindowChatMemory.withMaxMessages(10);SystemMsgAssisentsystemMsgAssisent=AiServices.builder(SystemMsgAssisent.class
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/26 20:59:47

电信网络专线如何选择,才能满足企业需求?

在当今这个信息爆炸的时代&#xff0c;企业的日常运营越来越依赖于高效稳定的网络连接。想象一下&#xff0c;如果一家公司的视频会议因为网络不稳定而频繁卡顿&#xff0c;或者数据传输速度慢得让人抓狂&#xff0c;那简直是一场灾难。因此&#xff0c;选择合适的电信网络专线…

作者头像 李华
网站建设 2026/4/30 19:34:18

Springboot萌宠之家零售网站zp5x9(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表项目功能&#xff1a;用户,宠物信息,宠物商品,商品分类,新品信息,热销商品开题报告内容SpringBoot萌宠之家零售网站开题报告一、选题背景与意义1.1 选题背景随着社会经济的快速发展和居民生活水平的显著提升&#xff0c;宠物经济在全球范围内呈现出蓬勃发展的态…

作者头像 李华
网站建设 2026/5/1 8:29:41

Springboot民宿管理系统agq9s(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,房间类型,房间信息,房间预订,取消预订,民宿活动,民宿信息 开题报告内容 SpringBoot民宿管理系统开题报告 一、选题背景与意义 1.1 选题背景 随着共享经济与旅游业的深度融合&#xff0c;民宿行业在全球范围内呈现爆发式增长。据…

作者头像 李华
网站建设 2026/4/29 13:55:55

Windows找不到xlive.dll文件 如何下载修复

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/4/30 17:28:29

Windows系统运行库concrt140.dll文件 缺失 如何下载修复?

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

作者头像 李华