news 2026/5/8 19:27:29

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/5/8 23:47:19

数据泄露引发的不是单一问题,而是一系列连锁的、复合型危机

数据泄露引发的不是单一问题&#xff0c;而是一系列连锁的、复合型危机&#xff0c;其影响从技术层面开始&#xff0c;逐级穿透法律、运营、财务和声誉&#xff0c;最终威胁组织的生存根基。以下是数据泄露所引发问题的系统性解析&#xff0c;按影响层面分层阐述&#xff1a;一…

作者头像 李华
网站建设 2026/5/8 23:48:06

两个路由器如何配置静态路由?

面对日益复杂的网络环境&#xff0c;企业对于网络稳定性和灵活性的需求越来越高。尤其是在多分支或多楼层的办公环境中&#xff0c;如何高效地管理网络流量成为了许多IT管理员头疼的问题。这时&#xff0c;配置静态路由就成了一个不错的解决办法。但很多人对这个过程感到困惑&a…

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

2025年GEO服务商选择指南:AI搜索优化综合服务商与垂直专家全解析

随着生成式AI技术的快速发展&#xff0c;尤其是ChatGPT、DeepSeek等AI平台的普及&#xff0c;AI已不再是单纯的搜索引擎工具&#xff0c;它已经成为了用户做出购买决策、选择产品或服务的核心驱动力。AI搜索优化&#xff08;GEO优化&#xff09;作为新兴的优化手段&#xff0c;…

作者头像 李华
网站建设 2026/5/9 8:42:03

打破认知牢笼:合规新纪元,运营成本如何变身增长引擎?

跨境电商领域正经历一场静默而深刻的变革&#xff1a;合规&#xff0c;这个曾被视为束缚增长的成本中心&#xff0c;正在演变为驱动商业成功的战略引擎&#xff0c;随着全球监管框架的日益精密与统一&#xff0c;领先的平台与敏锐的卖家正共同推动一场认知革命——将合规内化为…

作者头像 李华
网站建设 2026/5/7 14:43:39

Nginx access 日志通过 Filebeat 8.15.5 写入 Elasticsearch 8 实战指南

Nginx access 日志通过 Filebeat 8.15.5 写入 Elasticsearch 8 实战指南一、环境说明二、部署步骤与深度解析步骤1&#xff1a;创建Filebeat工作目录步骤 2&#xff1a;下载并解压 Filebeat 安装包​步骤 3&#xff1a;filebeat.yml 核心配置文件​输入配置 (filebeat.inputs)模…

作者头像 李华
网站建设 2026/5/9 4:52:55

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

系统程序文件列表项目功能&#xff1a;用户,商家,入驻申请,洗护医疗,广告申请,商品分类,商品信息,用户预约,宠物分类,宠物救助,领养信息,用户捐款开题报告内容基于Spring Boot的萌宠商城网站开题报告一、选题背景与意义1.1 选题背景随着人们生活水平的提高和宠物文化的普及&…

作者头像 李华