当前位置: 首页 > article >正文

LangChain4j第三篇: RAG的简单应用与实践

引言:RAG 构建属于你的大模型

大语言模型(LLM)的知识体系本质上仅限于它所接受的训练数据。
其一在知识时效性方面,模型参数固化于训练完成的时点,而现实世界中的知识和信息持续动态更新。
其二在非公开数据层面,企业内部的机密文档(如产品设计图、商业策略等)及个人隐私数据均未被纳入训练范围;
其三,领域专业性维度,特定垂直领域的前沿进展或专业壁垒较高的知识可能未被充分覆盖。基于以上方面通过RAG技术连接我们外部的知识库,来补充增强数据的准确性。

一、 RAG 原理简述

简单来说是在将数据发送给LLM之前从数据中查找相关信息片段并将其注入提示符的方法。这样,LLM将获得相关信息,并能够使用这些信息进行回复。
RAG过程分为两个不同的阶段:索引和检索。LangChain4j为这两个阶段提供了工具。

1.1Indexing

这个过程可以根据具体所使用的信息检索方法而变化。对于向量搜索,我们需要对文本切分成小的块,并将块进行向量化,最后将它们存储在量数据库中。
下面是索引阶段的简化图:
在这里插入图片描述

1.2 Retrieval

对于向量搜索,先将用户的问题在向量数据库中进行相似度检索。然后将相关内容(原始文档的片段)注入提示并发送给LLM。
这是检索阶段的简化示意图:
在这里插入图片描述

二、 应用实践

2.1 maven 引入相关pom 依赖

  <dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-ollama-spring-boot-starter</artifactId><version>1.0.0-beta3</version></dependency><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-spring-boot-starter</artifactId><version>1.0.0-beta3</version></dependency><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-embeddings-all-minilm-l6-v2</artifactId><version>1.0.0-beta3</version></dependency>

在application.properties 中添加配置

langchain4j.ollama.chat-model.base-url=http://127.0.0.1:11868  #ollma 访问地址
langchain4j.ollama.chat-model.model-name=deepseek-r1:14b  # 填写本地运行的模型
langchain4j.ollama.chat-model.log-requests=true
langchain4j.ollama.chat-model.log-responses=true

2.2 代码示例

以下是官方提供的示例代码,示例切分文档 miles-of-smiles-terms-of-use.txt

Miles of Smiles Car Rental Services Terms of Use1. Introduction
These Terms of Service (“Terms”) govern the access or use by you, an individual, from within any country in the world, of applications, websites, content, products, and services (“Services”) made available by Miles of Smiles Car Rental Services, a company registered in the United States of America.2. The Services
Miles of Smiles rents out vehicles to the end user. We reserve the right to temporarily or permanently discontinue the Services at any time and are not liable for any modification, suspension or discontinuation of the Services.3. Bookings
3.1 Users may make a booking through our website or mobile application.
3.2 You must provide accurate, current and complete information during the reservation process. You are responsible for all charges incurred under your account.
3.3 All bookings are subject to vehicle availability.4. Cancellation Policy
4.1 Reservations can be cancelled up to 7 days prior to the start of the booking period.
4.2 If the booking period is less than 3 days, cancellations are not permitted.5. Use of Vehicle
5.1 All cars rented from Miles of Smiles must not be used:
for any illegal purpose or in connection with any criminal offense.
for teaching someone to drive.
in any race, rally or contest.
while under the influence of alcohol or drugs.6. Liability
6.1 Users will be held liable for any damage, loss, or theft that occurs during the rental period.
6.2 We do not accept liability for any indirect or consequential loss, damage, or expense including but not limited to loss of profits.7. Governing Law
These terms will be governed by and construed in accordance with the laws of the United States of America, and any disputes relating to these terms will be subject to the exclusive jurisdiction of the courts of United States.8. Changes to These Terms
We may revise these terms of use at any time by amending this page. You are expected to

相关文章:

LangChain4j第三篇: RAG的简单应用与实践

引言:RAG 构建属于你的大模型 大语言模型(LLM)的知识体系本质上仅限于它所接受的训练数据。 其一在知识时效性方面,模型参数固化于训练完成的时点,而现实世界中的知识和信息持续动态更新。 其二在非公开数据层面,企业内部的机密文档(如产品设计图、商业策略等)及个人隐…...

机器学习第二十六讲:官方示例 → 跟着菜谱学做经典菜肴

机器学习第二十六讲&#xff1a;官方示例 → 跟着菜谱学做经典菜肴 资料取自《零基础学机器学习》。 查看总目录&#xff1a;学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章&#xff1a;DeepSeek R1本地与线上满血版部署&#xff1a;超详细手把手指南 以跟着菜谱学…...

功能强大且易于使用的 JavaScript 音频库howler.js 和AI里如何同时文字跟音频构思想法

howler.js 是一个功能强大且易于使用的 JavaScript 音频库&#xff0c;它提供了跨浏览器的音频播放功能&#xff0c;支持多种音频格式&#xff0c;并且具有丰富的 API&#xff0c;可以方便地控制音频的播放、暂停、循环、音量等。下面是如何在 Vue 项目中使用 howler.js 实现音…...

品鉴JS的魅力之防抖与节流【JS】

前言 小水一波&#xff0c;函数的防抖与节流。 文章目录 前言介绍实现方式防抖节流 介绍 防抖与节流的优化逻辑&#xff0c;在我们的日常开发中&#xff0c;有着一定的地位。 防抖和节流是两种常用的性能优化技术&#xff0c;用于限制某个函数在一定时间内被触发的次数,减少不…...

如何使用patch-package给npm包打补丁

一、背景 在移动应用开发中,轮播是一种很常见的效果,我们项目采用的是RN跨平台技术,RN的轮播我们直接使用的是第三方插件:react-native-snap-carousel。不过,当我们在项目中使用的时候却发现Android和iOS的表现不一致:https://stackoverflow.com/questions/60711611/rea…...

maxkey单点登录系统

github地址 https://github.com/MaxKeyTop/MaxKey/blob/master/README_zh.md 1、官方镜像 https://hub.docker.com/u/maxkeytop 2、MaxKey:Docker快速部署 参考地址&#xff1a; Docker部署 | MaxKey单点登录认证系统 拉取docker脚本MaxKey: Dromara &#x1f5dd;️MaxK…...

windows bat 在目录下(包括子目录)搜索批量指定文件名称复制到另一个文件夹内

windows bat 在目录下(包括子目录)搜索批量指定文件名称复制到另一个文件夹内 前言&#xff1a;最近遇到一个需求&#xff0c;我有15个文件夹(可能包含子文件夹) &#xff0c;目前我有一批文件名称&#xff0c;需要在这15个文件夹中查找出来&#xff0c;并拷贝到一个新的文件夹…...

Notepad++ 下载与安装教程(小白专属)

文章目录 Notepad下载渠道的专业选择1. 官方网站下载&#xff08;海外用户或网络条件优越者首选&#xff09;2. 国内优化下载地址&#xff08;国内用户高效选择&#xff09; Notepad精细化安装流程解析总结与后续建议 在当前的开发与文本处理工作中&#xff0c;Notepad无疑是一…...

Spring Cloud Gateway 微服务网关实战指南

上篇文章简单介绍了SpringCloud系列OpenFeign的基本用法以及Demo搭建&#xff08;Spring Cloud实战&#xff1a;OpenFeign远程调用与服务治理-CSDN博客&#xff09;&#xff0c;今天继续讲解下SpringCloud Gateway实战指南&#xff01;在分享之前继续回顾下本次SpringCloud的专…...

微服务架构实战:Eureka服务注册发现与Ribbon负载均衡详解

微服务架构实战&#xff1a;Eureka服务注册发现与Ribbon负载均衡详解 一 . 服务调用出现的问题二 . EureKa 的作用三 . 服务注册3.1 搭建 EureKaServer① 创建项目 , 引入 spring-cloud-starter-netflix-eureka-server 的依赖② 编写启动类 , 添加 EnableEurekaServer 注解③ 添…...

采用多维计算策略(分子动力学模拟+机器学习),显著提升 α-半乳糖苷酶热稳定性

字数 978&#xff0c;阅读大约需 5 分钟 在工业应用领域&#xff0c;α-半乳糖苷酶在食品加工、动物营养及医疗等方面发挥着重要作用。然而&#xff0c;微生物来源的该酶往往存在热稳定性不足的问题&#xff0c;限制了其在工业场景中的高效应用。近日&#xff0c;来自江南大学的…...

【java】小练习--零钱通

文章目录 前言一、项目开发流程说明二、功能实现2.1 菜单2.2 零钱通明细2.3 零钱通收益2.4 零钱通消费2.5 零钱通退出确认2.6 零钱通金额校验2.7 完整代码 三、零钱通OOP版 前言 本文是我跟着B站韩顺平老师的 Java 教程学习时动手实现“零钱通”项目的学习笔记&#xff0c;主要…...

旅游信息检索

旅游信息检索 旅游信息检索是系统中实现数据获取和处理的关键环节&#xff0c;负责根据用户输入的目的地城市和出游天数&#xff0c;动态获取并生成高质量的旅游数据。 模块的工作流程分为以下几个阶段&#xff1a;首先&#xff0c;对用户输入的信息进行标准化处理&#xff0…...

贝叶斯理论

一、贝叶斯理论的核心思想 贝叶斯理论&#xff08;Bayesian Theory&#xff09;是一种基于条件概率的统计推断方法&#xff0c;其核心是通过先验知识和新观测数据的结合&#xff0c;动态更新对事件发生概率的估计。它体现了“用数据修正信念”的思想&#xff0c;广泛应用于机器…...

Docker-mongodb

拉取 MongoDB 镜像: docker pull mongo 创建容器并设置用户&#xff1a; 要挂载本地数据目录&#xff0c;请替换此路径: /Users/Allen/Env/AllenDocker/mongodb/data/db docker run -d --name local-mongodb \-e MONGO_INITDB_ROOT_USERNAMEadmin \-e MONGO_INITDB_ROOT_PA…...

Gartner《Optimize GenAI Strategy for 4 Key ConsumerMindsets》学习心得

一、引言 在当今数字化营销浪潮中,生成式人工智能(GenAI)正以前所未有的速度重塑着市场格局。GenAI 既是一场充满机遇的变革,也是一场潜在风险的挑战。一方面,绝大多数 B2C 营销领导者对 GenAI 赋能营销抱有极高期待,他们看到了 GenAI 在提升时间与成本效率方面的巨大潜…...

[ARM][汇编] 02.ARM 汇编常用简单指令

目录 1.数据传输指令 MRS - Move from Status Register 指令用途 指令语法 代码示例 读取 CPSR 到通用寄存器 在异常处理程序中读取 SPSR 使用场景 MSR - Move to Status Register 指令语法 使用场景 示例代码 改变处理器模式为管理模式 设置条件标志位 异常处理…...

达梦数据库-学习-22-库级物理备份恢复(超详细版)

目录 一、环境信息 二、说点什么 三、概念 1、备份恢复 2、重做日志 3、归档日志 4、LSN 5、检查点 四、语法 1、BACKUP DATABASE 2、DMRMAN RESTORE DATABASE 3、DMRMAN RECOVER DATABASE 4、DMRMAN UPDATE DB_MAGIC 五、实验 1、开归档 &#xff08;1&#xf…...

python网络爬虫的基本使用

各位帅哥美女点点关注&#xff0c;有关注才有动力啊 网络爬虫 引言 我们平时都说Python爬虫&#xff0c;其实这里可能有个误解&#xff0c;爬虫并不是Python独有的&#xff0c;可以做爬虫的语言有很多例如&#xff1a;PHP、JAVA、C#、C、Python。 为什么Python的爬虫技术会…...

AI Agent开发第74课-解构AI伪需求的魔幻现实主义

开篇 🚀在之前的系列中我们狂炫了AI Agent的各种高端操作(向量数据库联动、多模态感知、动态工作流等…),仿佛每个程序员都能用LLM魔法点石成金✨。 但今天咱们要泼一盆透心凉的冷水——当企业把AI当成万能胶水强行粘合所有需求时,连电风扇都能被玩出量子纠缠的魔幻现实…...

【卫星通信】通信卫星链路预算计算及其在3GPP NTN中的应用

引言 卫星通信是现代信息传播的重要手段&#xff0c;广泛应用于电信、广播、气象监测、导航等领域。卫星链路预算计算是设计和优化卫星通信系统的重要步骤&#xff0c;它帮助工程师评估信号在传输过程中的衰减和增益&#xff0c;从而确保系统在预定条件下可靠地工作。 1. 链路…...

HTTP请求方法:GET与POST的使用场景解析

精心整理了最新的面试资料和简历模板&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 HTTP协议定义了多种请求方法&#xff0c;其中GET和POST是最常用的两种。它们在Web开发中承担着不同的角色&#xff0c;理解其核心差异和使用场景是构建高效、…...

第十五章:数据治理之数据目录:摸清家底,建立三大数据目录

在上一篇随想篇中&#xff0c;介绍了数据资源资产化的过程&#xff0c;理解了数据资源、数据资产的区别。这些对于本章的介绍会有帮助&#xff0c;如果仍有疑问可以看上一篇【数据资源到数据资产的华丽转身 ——从“沉睡的石油”到“流动的黄金”】。 说到本章要介绍的数据目录…...

c++命名空间的作用及命名改编

c命名空间的作用及命名改编 命名空间 namespace的作用&#xff1a; std::命名空间&#xff0c;命名空间&#xff08;namespace&#xff09;是 C 中用于解决标识符命名冲突问题的机制。在大型程序开发中&#xff0c;不同模块可能会使用相同名称的变量、函数或类等标识符&…...

Go核心特性与并发编程

Go核心特性与并发编程 1. 结构体与方法&#xff08;扩展&#xff09; 高级结构体特性 // 嵌套结构体与匿名字段 type Employee struct {Person // 匿名嵌入Department stringsalary float64 // 私有字段 }// 构造函数模式 func NewPerson(name string, age int) *Pe…...

echarts实现项目进度甘特图

描述 echarts并无甘特图配置项&#xff0c;我们可以使用柱状图模拟&#xff0c;具体配置项如下&#xff0c;可以在echarts直接运行 var option {backgroundColor: "#fff",legend: {data: ["计划时间","实际时间"],align: "right",…...

Flutter 中 build 方法为何写在 StatefulWidget 的 State 类中

Flutter 中 build 方法为何写在 StatefulWidget 的 State 类中 在 Flutter 中&#xff0c;build 方法被设计在 StatefulWidget 的 State 类中而非 StatefulWidget 类本身&#xff0c;这种设计基于几个重要的架构原则和实际考量&#xff1a; 1. 核心设计原因 1.1 生命周期管理…...

C#串口打印机:控制类开发与实战

C#串口打印机&#xff1a;控制类开发与实战 一、引言 在嵌入式设备、POS 终端、工业控制等场景中&#xff0c;串口打印机因其稳定的通信性能和广泛的兼容性&#xff0c;仍是重要的数据输出设备。本文基于 C# 语言&#xff0c;深度解析一个完整的串口打印机控制类Printer&…...

2025深圳国际无人机展深度解析:看点、厂商与创新亮点

2025深圳国际无人机展深度解析&#xff1a;看点、厂商与创新亮点 1.背景2.核心看点&#xff1a;技术突破与场景创新2.1 eVTOL&#xff08;飞行汽车&#xff09;的规模化展示2.2 智能无人机与无人值守平台2.3 新材料与核心零部件革新2.4 动态演示与赛事活动 3.头部无人机厂商4.核…...

Electron 后台常驻服务实现(托盘 + 开机自启)

基于 electron-vite-vue 项目结构 本篇将详细介绍如何为 Electron 应用实现后台常驻运行&#xff0c;包括&#xff1a; ✅ 创建系统托盘图标&#xff08;Tray&#xff09;✅ 支持点击托盘菜单控制窗口显示/退出✅ 实现开机自启功能&#xff08;Auto Launch&#xff09; &#…...