news 2026/4/23 8:22:19

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/22 22:52:39

怎么选择适合制造业的智能质量管理系统?

在数字化与智能化浪潮席卷制造业的今天&#xff0c;质量管理系统&#xff08;QMS&#xff09;已从传统的检验与合规工具&#xff0c;演变为驱动企业核心竞争力的战略引擎。它不再局限于事后抽检与文档记录&#xff0c;而是深度融合物联网、人工智能、数字孪生与工业互联网平台&…

作者头像 李华
网站建设 2026/4/23 8:19:53

工厂设计模式(菜鸟教程)--高频面试问题系列

作者有话要说 本文以奶茶为例&#xff0c;深入浅出地讲解工厂设计模式的三种分类&#xff0c;帮助读者轻松掌握这一概念。一&#xff0c;什么是工厂设计模式定义一个创建对象的接口&#xff0c;由子类决定实例化哪个类&#xff0c;将对象的创建延迟到子类。例如:如果没有奶茶店…

作者头像 李华
网站建设 2026/4/19 5:33:59

部分背包与01背包问题

阅读目录(Content)一、部分背包问题二、01背包问题&#xff1a;动态规划的入门在算法的学习中&#xff0c;背包问题是一类经典的课题&#xff0c;其中&#xff0c;部分背包问题和01背包问题是两种最基础的形式。如果你想深入探索背包问题&#xff0c;强烈推荐搜索“背包九讲”。…

作者头像 李华
网站建设 2026/4/20 17:04:31

测试工程师的会议演讲艺术:从技术思维到有效表达

为什么测试会议需要特别的演讲技巧 在敏捷开发与DevOps普及的当下&#xff0c;测试工程师参与会议的频率显著增加。然而&#xff0c;技术专家常陷入“数据堆砌却重点模糊”的困境——缺陷统计面面俱到却未能突出风险本质&#xff0c;测试报告事无巨细却忽略决策支持。优秀的测…

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

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

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

作者头像 李华