轻松入门SpringAI-SpringAI实现RAG

轻松入门 Spring AI · RAG(Retrieval-Augmented Generation)实现
(2026年主流实用写法 · 从最简单到生产可用)

RAG 是目前使用大模型最常见、最有效的增强方式之一:
让模型“先查资料,再回答”,大幅降低幻觉,提高答案准确性。

Spring AI 中 RAG 的几种主流实现难度对比(2026年初)

难度实现方式向量存储类型上手时间生产可用性推荐场景
★☆☆内存版(SimpleVectorStore)内存5~15分钟★☆☆学习、Demo、快速验证
★★☆文件+PGVectorPostgreSQL + pgvector1~3小时★★★★小型到中型项目、性价比高
★★★Chroma / Milvus / Redis专用向量数据库3~8小时★★★★★中大型项目、分布式、高并发
★★★★Elasticsearch / Weaviate搜索+向量混合6~15小时★★★★★已有ES集群、企业级

最推荐的入门组合(2026年最常用)

学习/快速上手首选
Spring AI 1.0.x + SimpleVectorStore(内存) + OpenAI/DeepSeek/通义千问 兼容接口

小项目/生产过渡推荐
PostgreSQL + pgvector + Spring AI PGVector Store

方式一:最简单内存版 RAG(5分钟能跑通)

@RestController@RequestMapping("/rag/easy")@RequiredArgsConstructorpublicclassEasyRagController{privatefinalChatClientchatClient;privatefinalEmbeddingModelembeddingModel;// 自动注入,通常跟随你选择的模型// 内存向量存储(项目重启就清空,适合学习)privatefinalVectorStorevectorStore=newSimpleVectorStore(embeddingModel);// 启动时自动加载知识(实际项目中可以做成定时任务/管理接口)@PostConstructpublicvoidinitKnowledge(){List<String>rawTexts=List.of("Spring AI 是 Spring 家族 2024~2025 年推出的官方大模型集成框架。","ChatClient 是最核心的高层抽象,类似以前的 RestTemplate。","目前最受欢迎的国内模型组合:DeepSeek-R1(推理)、DeepSeek-V3(综合)、通义千问-max(稳定)。","RAG 全称 Retrieval-Augmented Generation,中文叫检索增强生成。","好的 RAG 系统关键在于:高质量的切分、分块、Embedding、检索召回、上下文构建。");List<Document>documents=rawTexts.stream().map(text->Document.builder().content(text).metadata(Map.of("source","spring-ai-rag-intro","type","tutorial")).build()).toList();vectorStore.add(documents);}@GetMapping("/ask")publicStringaskQuestion(@RequestParamStringquestion){// 1. 检索最相似的 TopK 文档List<Document>similarDocs=vectorStore.similaritySearch(SearchRequest.query(question).withTopK(4)// 召回几条.withSimilarityThreshold(0.68)// 相似度阈值,可调);// 2. 构建上下文(最简单拼接方式)Stringcontext=similarDocs.stream().map(doc->doc.getContent()).collect(Collectors.joining("\n\n---\n\n"));// 3. 带上下文提问returnchatClient.prompt().system(""" 你现在是一位基于给定上下文回答问题的专家助手。 只使用下面提供的上下文信息来回答问题。 如果上下文里没有相关信息,就诚实地说不知道,不要编造。 上下文: {context} """).user(question).advisors(PromptTemplate.from("{context}").withVariable("context",context)).call().content();}}

测试例子
http://localhost:8080/rag/easy/ask?question=什么是RAG?它有什么关键点?

方式二:更接近生产的 PGVector 版(推荐小项目使用)

依赖

<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-pgvector-store-spring-boot-starter</artifactId></dependency><dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId><scope>runtime</scope></dependency>

application.yml 配置示例

spring:ai:vectorstore:pgvector:initialize-schema:true# 第一次启动时自动建表index-type:HNSW# 或 IVFFlatdimensions:1536# 跟你的 embedding model 维度一致(text-embedding-3-small=1536)distance-type:COSINE# 余弦最常用datasource:url:jdbc:postgresql://localhost:5432/ragdbusername:postgrespassword:yourpassword

代码基本相同,只改 VectorStore 注入方式

@AutowiredprivateVectorStorevectorStore;// 会自动注入 PgVectorStore

其他使用方式几乎不变。

目前(2026年1月)推荐的 Embedding 模型选择

模型维度中文效果速度价格/本地推荐度
text-embedding-3-small (OpenAI)1536★★★★★★★★付费★★★★
bge-m3 (BAAI)1024★★★★★★★★免费/本地★★★★★
text-embedding-ada-0021536★★★★★★★★便宜★★★
moka-ai/m3e-base768★★★★☆★★★★本地免费★★★★
GTE-large-zh (Alibaba-NLP)1024★★★★★★★★本地/云★★★★½

一句话总结目前最舒服的入门 RAG 路径:

先用SimpleVectorStore + bge-m3 或 text-embedding-3-small跑通完整流程 →
理解原理后再迁移到PGVector / Chroma
再考虑高级切分、重排、HyDE、查询改写、多路召回等优化

需要我帮你把上面代码改成更完整的版本吗?
例如:

告诉我你想往哪个方向深入~ 😄

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1179454.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java毕设选题推荐:基于springboot的4s店车辆管理系统车辆信息、销售、维修等管理【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

边缘到云:数据不是“搬家”,而是一场精打细算的流动博弈

边缘到云&#xff1a;数据不是“搬家”&#xff0c;而是一场精打细算的流动博弈 说句掏心窝子的&#xff1a; Edge → Cloud 的流数据传输&#xff0c;从来就不是“把数据往云上一丢”这么简单。 你要是真这么干&#xff0c;结果通常只有三个字&#xff1a;钱烧光。 带宽不够、…

苹果修复了iOS平台中两个被定向攻击利用的零日漏洞

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【剑斩OFFER】算法的暴力美学——LeetCode 200 题:岛屿数量

一、题目描述 二、算法原理 思路&#xff1a;使用 BFS 算法 这道题目是基于&#xff1a;https://blog.csdn.net/2403_84958571/article/details/157102131?spm1011.2415.3001.10575&sharefrommp_manage_link 图形化渲染的题目来的&#xff0c;因为图形化显然遍历上下左…

2026新房装修不踩坑!超靠谱装修公司大揭秘 - 品牌测评鉴赏家

2026新房装修不踩坑!超靠谱装修公司大揭秘一、装修前的焦虑:如何找到梦中情司? 家人们,谁懂啊!最近我终于拿到新房钥匙了,本以为能开开心心准备入住,可没想到,这才是烦恼的开始。面对空荡荡的房子,满心都是对…

腾讯云海外服务器装东西卡顿/有问题处理方案,把腾讯云镜像删除

场景&#xff1a;买了新加坡服务器 &#xff0c;装东西卡顿or有问题 、直接把腾讯云镜像删掉即可。 sudo sed -i s/mirrors.tencentyun.com/archive.ubuntu.com/g /etc/apt/sources.list /etc/apt/sources.list.d/*.sources 2>/dev/null# 2. 清理之前因为源同步失败留下的烂…

丑数不丑——从一个简单定义,看清“有序生成”这件大事

丑数不丑 从一个简单定义,看清“有序生成”这件大事 一、先别急着写代码:什么是丑数? 我们先说一句大白话版定义: 丑数,就是只包含质因子 2、3、5 的正整数。 比如: 1(特殊地,也算) 2、3、4、5、6、8、9、10、12 … 而下面这些就不是: 7(有 7) 14(2 7) 21(3 …

【图像增强】基于多目标粒子群PSO的水下图像自适应增强算法研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1f34…

首次装修不踩坑!2026装修新房省心装修公司挑选指南 - 品牌测评鉴赏家

首次装修不踩坑!2026装修新房省心装修公司挑选指南一、开篇引言:第一次装修,选对公司 = 省心一半 1.1 新手装修的 “血泪痛点”:为啥选公司这么难 第一次装修新房,那心情就像坐过山车,既兴奋又忐忑。兴奋的是终于…

轻松入门SpringAI-SpringAI实战入门案例

Spring AI 实战入门案例 &#xff08;2026年初 零基础到能跑完整小应用的路径&#xff09; 目标&#xff1a;用最短时间让你能自己跑通一个包含以下功能的 Spring AI 小应用&#xff1a; 普通聊天流式输出&#xff08;打字机效果&#xff09;带记忆的对话简单 RAG&#xff0…

强烈安利10个AI论文平台,助你轻松搞定本科生论文!

强烈安利10个AI论文平台&#xff0c;助你轻松搞定本科生论文&#xff01; AI 工具如何帮你轻松应对论文写作难题 对于本科生来说&#xff0c;撰写论文是一项既挑战又重要的任务。面对繁重的写作压力、复杂的格式要求以及对学术规范的不熟悉&#xff0c;很多同学都感到无从下手。…

Splat-Nav:首个基于 3D 高斯溅射地图的安全实时导航框架 - MKT

Splat-Nav:首个基于 3D 高斯溅射地图的安全实时导航框架

Splat-Nav:首个基于 3D 高斯溅射地图的安全实时导航框架 - MKT

Splat-Nav:首个基于 3D 高斯溅射地图的安全实时导航框架

StretchSense获230万美元融资,推动XR训练手套全球扩张

StretchSense获230万美元融资&#xff0c;推动XR训练手套全球扩张 可穿戴技术公司StretchSense已成功筹集230万美元资金&#xff0c;本轮融资由PXN Ventures领投&#xff0c;某机构提供支持。该公司目前已通过三轮外部融资筹集了总计近2000万美元。 StretchSense成立于2012年&a…

使用ibd2sql恢复mysql环境被drop/truncate的表【转】

导读 ibd2sql v2.2版本新增了恢复drop和truncate的表的功能. 这么叼? 我来瞅瞅呢 原理 虽然之前讲过原理, 但还是来简单回顾回顾:DROP TABLE是delete和insert系统表, 那么被删表之前的元数据信息就能找到, 虽然数据文…

Python+Vue的基于协同过滤算法的图书馆管理系统 django Pycharm flask

目录 这里写目录标题目录项目介绍项目展示详细视频演示技术栈文章下方名片联系我即可~解决的思路开发技术介绍性能/安全/负载方面python语言Django框架介绍技术路线关键代码详细视频演示收藏关注不迷路&#xff01;&#xff01;需要的小伙伴可以发链接或者截图给我 项目介绍 …

从Hadoop到Spark:大数据隐私保护技术演进史

从Hadoop到Spark:大数据隐私保护技术演进史 关键词:大数据隐私保护、Hadoop、Spark、数据脱敏、差分隐私、同态加密、访问控制 摘要:本文深入探讨了大数据处理框架从Hadoop到Spark演进过程中隐私保护技术的发展历程。文章首先介绍大数据生态系统的演变背景,然后详细分析各阶…

【图像机密】基于压缩感知中密钥控制测量矩阵的新型图像压缩-加密混合算法研究附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1f34…

Python+Vue的HPV疫苗接种管理系统的设计与实现 django Pycharm flask

目录 这里写目录标题目录项目介绍项目展示详细视频演示技术栈文章下方名片联系我即可~解决的思路开发技术介绍性能/安全/负载方面python语言Django框架介绍技术路线关键代码详细视频演示收藏关注不迷路&#xff01;&#xff01;需要的小伙伴可以发链接或者截图给我 项目介绍 …

深入解析:AIOps / AI-Network / 智能运维:迈向自治网络的核心引擎

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …