Java AI转型实战(八):RAG完整链路实战
从文档加载到向量检索搭建一个完整的RAG知识库问答系统01 引子在之前的七篇文章中我们完成了Spring AI核心功能的闭环多轮对话、流式输出、Function Calling、Output Parser。但有一个问题始终没解决大模型不知道我们私有的知识。问它公司内部文档、项目技术方案、产品手册它一概不知要么说“我不知道”要么“一本正经地胡说八道”。RAG检索增强生成正是为此而生。RAG的核心思想先检索相关资料再基于资料回答问题。就像人类遇到不懂的问题会先去翻资料一样RAG让AI在回答之前先“查资料”然后基于资料生成回答。02 RAG 完整链路概览离线阶段文档预处理加载文档PDF、Word、TXT等文本分割切成适合Embedding的小块向量化调用Embedding模型生成向量存入向量数据库pgvector在线阶段问答检索用户提问 → 向量化在向量数据库中检索相似内容将检索结果 用户问题 一起发给大模型大模型基于资料生成回答03 代码实现3.1 文档加载与文本分割DocumentLoadingService.java3.2 向量化服务使用 DashScope 原生 SDKDashScopeEmbeddingService.java3.3 向量存储与检索服务VectorStoreService.java3.4 Controller 接口DocumentController.java3.5 配置文件application.ymlPostgreSQL 表结构pgvector04 测试验证4.1 准备测试文档在src/main/resources/documents/test.txt中放入测试内容RAG检索增强生成是一种AI技术它通过检索外部知识库来增强大模型的回答能力。 RAG的核心思想是先检索相关资料再基于资料回答问题。 RAG可以解决大模型的知识陈旧和幻觉问题。 Spring AI 提供了完整的RAG开发支持包括文档加载、文本分割、向量存储等。4.2 存储文档请求4.3 检索文档请求验证结论✅ 完整 RAG 链路已跑通05 踩坑记录坑一spring-ai-model与jsonschema依赖版本冲突在使用defaultTools()注册 Tool 时Spring AI 需要jsonschema-generator来生成 Tool 的 JSON Schema。如果依赖版本不一致启动时会报NoClassDefFoundError。解决方案在pom.xml中统一jsonschema-generator和jsonschema-module-jackson的版本注意两个依赖的版本必须一致否则会出现类加载冲突。坑二Embedding 模型维度不匹配表定义为 1536 维但默认的text-embedding-v1输出 1024 维。解决使用 DashScope 原生 SDK显式指定text-embedding-v2模型。坑三application.yml中embedding.model配置不生效Spring AI Alibaba 1.1.2.2 版本中spring.ai.dashscope.embedding.model配置不会被自动加载。解决放弃配置方式在代码中直接用 DashScope SDK 指定模型。坑四PGobject 的setType需要compilescopepostgresql依赖的scope若为runtime编译时找不到org.postgresql.util.PGobject。解决将postgresql的scope改为compile。06 下期预告RAG 已经跑通了但目前还有很多可以优化的空间检索质量优化重排序Rerank、混合检索关键词 向量文档处理增强支持 PDF、Word、Excel 等多种格式流式 RAG检索 流式生成对话式 RAG结合多轮对话记忆下一篇我们探索 RAG 的进阶优化——如何让检索更精准、回答更智能。 我是超超不吵吵10年Java全栈正在转型AI应用开发。每周一篇实战笔记不贩卖焦虑只分享能落地的技术。全网同名欢迎关注。

相关新闻

电商进销存系统设计:从业务建模到库存流水的高阶实践

电商进销存系统设计:从业务建模到库存流水的高阶实践

前阵子有个做电商运营的朋友找我,说老板让他牵头重做一套进销存系统,需求文档里写了一句“要设计得更高级一点”。他问我:高级到底是多上几个新功能,还是界面做得更漂亮?我说,这两样都不是最关键的。如果你…

2026/8/27 20:34:58 阅读更多 →
AI编程工具高阶订阅怎么选?Claude Max与ChatGPT Pro实测评估

AI编程工具高阶订阅怎么选?Claude Max与ChatGPT Pro实测评估

开头先聊一个现象:这两年 AI 编程工具的订阅价格一路走高,Claude Max、ChatGPT Pro 这类“高价套餐”已经不再是普通会员的简单升级,而是直接定位于高强度开发者。很多人一边被 Claude Code 和 ChatGPT Codex 的实际效果种草,一边…

2026/8/27 20:34:58 阅读更多 →
具身机器狗技术拆解:从智能语音互动到儿童陪伴的选购指南

具身机器狗技术拆解:从智能语音互动到儿童陪伴的选购指南

具身机器狗这个品类近两年热度上升很快,很多家庭的选购诉求已经从“能唱歌跳舞”升级成了“智能语音互动、能陪孩子聊天、能记住孩子习惯”。LOONA可立宝露娜这一类产品,正是把语音交互、行为动作和儿童陪伴结合在一起的具身机器狗。很多家长看到“比家长…

2026/8/27 20:34:58 阅读更多 →

最新新闻

ADC/DAC信号链设计:从孔径抖动到重建滤波的物理层真相

ADC/DAC信号链设计:从孔径抖动到重建滤波的物理层真相

1. 为什么“数模转换”不是简单的“0和1变电压”,而是整个信号链的生死线你手头那块STM32H743开发板,用CubeMX配置好ADC采样,示波器一接,波形毛刺飞溅、数值跳变十几个LSB;又或者用ESP32的DAC输出方波,上升…

2026/8/27 21:31:59 阅读更多 →
基于ARM mbed的BLE应用开发实战与避坑指南

基于ARM mbed的BLE应用开发实战与避坑指南

做BLE应用时,我在ARM mbed平台和Bluetooth Smart这套组合上栽过跟头,也攒了不少经验。当时客户给了一个很紧的工期:要一款低功耗环境监测设备,能用手机扫描到、能读取温度湿度数据、还要求CR2032纽扣电池供电运行一年以上。脑子里…

2026/8/27 21:31:59 阅读更多 →
技术博客写作中的事实底线与内容定位

技术博客写作中的事实底线与内容定位

我注意到你提供的项目标题是"手帐小技巧|金属箭头书签固定胶带",这属于手帐手工生活类内容,与此前约定的 CSDN 技术博客写作任务(AI 模型、本地部署、OCR、TTS、ComfyUI、批量任务等技术主题)不匹配。 按照…

2026/8/27 21:31:58 阅读更多 →
给 AI 编程工具接一个组件库:用 MCP 让 Claude Code / Cursor 直接取现成 React 组件

给 AI 编程工具接一个组件库:用 MCP 让 Claude Code / Cursor 直接取现成 React 组件

一个被忽略的成本问题 用 AI 写前端,大家都有过这样的体验:让它生成一个 Hero 区块,出来的东西能跑,但不好看;让它改,改三轮才勉强能用;下一个页面,重来一遍。 我们做了一次实测。…

2026/8/27 21:31:58 阅读更多 →
镌刻在砂岩上的北魏史书:解析云冈石窟的营建、劫难与文明价值

镌刻在砂岩上的北魏史书:解析云冈石窟的营建、劫难与文明价值

摘要:云冈石窟是北魏皇家主导营建的中国第一座大规模佛教石窟寺,2001 年入选世界文化遗产。它融合草原、西域与中原三大文明,见证中华文明多元一体,兼具历史、艺术与当代文化价值。一、引言:镌刻在砂岩上的文明史诗云冈…

2026/8/27 21:31:56 阅读更多 →
长上下文LLM推理Prefill加速:最高47倍TTFT优化方案

长上下文LLM推理Prefill加速:最高47倍TTFT优化方案

长上下文推理的瓶颈在哪里?服务端十有八九是 Prefill,而不是 Decode。RAG、代码库分析、长文档问答这类场景,用户一次丢进来几十 K token 的上下文,模型要把这些内容全部预计算完,第一个 token 才会开始输出。TTFT&…

2026/8/27 21:30:55 阅读更多 →

日新闻

Go语言构建企业级AI服务网关:统一管理英伟达等AI接口调用

Go语言构建企业级AI服务网关:统一管理英伟达等AI接口调用

1. 项目概述:从零构建一个企业级的AI服务网关 最近在帮一个做内容审核的团队做技术架构升级,他们原来的业务里,每天有几十万张图片和短视频需要过审,最初是接了几个开源的AI模型自己部署,但效果和性能一直不太稳定。后…

2026/8/27 0:00:51 阅读更多 →
网盘直链下载助手5分钟解析八大网盘真实地址

网盘直链下载助手5分钟解析八大网盘真实地址

网盘直链下载助手5分钟解析八大网盘真实地址 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 / 迅雷云盘 / 夸…

2026/8/27 1:06:27 阅读更多 →
从零点亮 ESP32:Arduino ESP32 开发环境搭建与首次烧录完整指南

从零点亮 ESP32:Arduino ESP32 开发环境搭建与首次烧录完整指南

从零点亮 ESP32:Arduino ESP32 开发环境搭建与首次烧录完整指南 【免费下载链接】arduino-esp32 Arduino core for the ESP32 family of SoCs 项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32 Arduino ESP32 是乐鑫官方的 ESP32 系列 Ardui…

2026/8/27 1:06:27 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/26 14:45:33 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/26 17:46:43 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 14:46:37 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/27 17:46:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/26 17:46:39 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/27 20:00:17 阅读更多 →