news 2026/4/16 14:41:08

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/16 11:04:33

面向数字孪生系统的全方位测试解决方案

1 测试背景与目标 1.1 背景分析 数字孪生作为物理实体在虚拟空间的动态映射体&#xff0c;其测试复杂度远超传统软件系统。根据Gartner最新研究报告&#xff0c;到2027年超过70%的制造业企业将使用数字孪生技术进行流程优化&#xff0c;这对测试从业者提出了三大核心挑战&…

作者头像 李华
网站建设 2026/4/13 11:21:49

【044】Executors 是陷阱!Executor 实战优化,生产环境不翻车的秘诀

文章目录零、引入一、王二的致命坑&#xff1a;Executors 的 “甜蜜陷阱”二、用 “医院挂号” 讲透 Executor 实战优化&#xff1a;可控才是王道&#x1f4af; Executor 实战优化 4 大核心&#xff08;王二记在病历本上&#xff09;三、实战 1&#xff1a;线程池隔离 批量任务…

作者头像 李华
网站建设 2026/4/16 14:29:00

llama.cpp Server 引入路由模式:多模型热切换与进程隔离机制详解

llama.cpp server在 2025年12月11日发布的版本中正式引入了 router mode&#xff08;路由模式&#xff09;&#xff0c;如果你习惯了 Ollama 那种处理多模型的方式&#xff0c;那这次 llama.cpp 的更新基本就是对标这个功能去的&#xff0c;而且它在架构上更进了一步。 路由模式…

作者头像 李华
网站建设 2026/4/16 3:25:26

反内卷,利润增长8源的新质生产力,70%的老板还只盯着第一个

想知道为什么你的生意做了十年&#xff0c;利润还不如别人干一年吗&#xff1f;今天这条视频&#xff0c;我会把利润增长的底层逻辑一次性给你讲透。很多老板天天琢磨怎么多卖货、怎么降价促销&#xff0c;其实你只摸到了利润冰山最上面的一角。点个红心收藏起来&#xff0c;这…

作者头像 李华
网站建设 2026/4/16 12:46:11

在luatos中实现互斥锁的功能-以合宙luatos和air780EGH为实现

经常使用freertos进行开发的用户都会经常使用互斥锁的功能&#xff0c;主要是用于实现原子操作&#xff0c;避免冲突&#xff0c;但是在合宙的luatos上&#xff0c;其实没有相关的api接口&#xff0c;lua本身也不支持这样操作&#xff0c;于是本人研究了一下&#xff0c;写出了…

作者头像 李华
网站建设 2026/4/16 10:58:14

2025爬虫技术前沿:AI驱动、多模态与反反爬的军备竞赛

2025年&#xff0c;网络爬虫技术已深度融入AI时代。根据最新行业报告&#xff08;如PromptCloud和Apify的2025年报告&#xff09;&#xff0c;全球web scraping市场规模已超10亿美元&#xff0c;年增长率达双位数。AI爬虫流量占比显著上升&#xff0c;反爬机制也更智能化&#…

作者头像 李华