零基础学AI大模型之RAG技术

零基础学AI大模型之RAG技术
大家好,我是工藤学编程 🦉一个正在努力学习的小博主,期待你的关注
实战代码系列最新文章😉C++实现图书管理系统(Qt C++ GUI界面版)
SpringBoot实战系列🐷【SpringBoot实战系列】SpringBoot3.X 整合 MinIO 存储原生方案
分库分表分库分表之实战-sharding-JDBC分库分表执行流程原理剖析
消息队列深入浅出 RabbitMQ-RabbitMQ消息确认机制(ACK)
AI大模型零基础学AI大模型之大模型的“幻觉”

前情摘要:
1、零基础学AI大模型之读懂AI大模型
2、零基础学AI大模型之从0到1调用大模型API
3、零基础学AI大模型之SpringAI
4、零基础学AI大模型之AI大模型常见概念
5、零基础学AI大模型之大模型私有化部署全指南
6、零基础学AI大模型之AI大模型可视化界面
7、零基础学AI大模型之LangChain
8、零基础学AI大模型之LangChain六大核心模块与大模型IO交互链路
9、零基础学AI大模型之Prompt提示词工程
10、零基础学AI大模型之LangChain-PromptTemplate
11、零基础学AI大模型之ChatModel聊天模型与ChatPromptTemplate实战
12、零基础学AI大模型之LangChain链
13、零基础学AI大模型之Stream流式输出实战
14、零基础学AI大模型之LangChain Output Parser
15、零基础学AI大模型之解析器PydanticOutputParser
16、零基础学AI大模型之大模型的“幻觉”


零基础学AI大模型之RAG技术

本文章目录

一、先搞懂:RAG到底是个啥?

咱们先抛官方定义,用“人类做事的逻辑”类比,一眼就能懂:

你遇到一个陌生问题,比如“2024年某公司财报里的净利润是多少?”,会怎么做?
→ 先查资料(翻公司官网的财报文档、权威财经平台数据)→ 再结合查到的信息,组织语言回答。

RAG做的事,跟这个过程几乎一模一样!
官方定义:RAG(Retrieval-Augmented Generation,检索增强生成)是一种“先检索、再生成”的AI技术架构——先从外部知识库(比如文档、数据库)里找到和问题相关的“靠谱资料”,再把这些资料和问题一起喂给大模型,让模型基于真实信息生成回答,而不是靠自己“脑补”。

简单说:传统大模型是“凭记忆答题”,RAG是“先翻书再答题”,自然不容易出错~

二、为什么一定要用RAG?传统大模型的3个“坑”

咱们之前吐槽过大模型的“幻觉”,其实这只是传统生成模型的问题之一。RAG的出现,就是为了填这些坑:

1. 坑1:知识“过时”,新信息答不上

传统大模型的训练数据有“截止日期”,比如GPT-3截止2021年、某国产模型截止2023年,2024年后的新事儿它根本不知道。

  • 例子:问“2027年诺贝尔生理学或医学奖得主是谁?”
    传统模型:只能说“我的训练数据截止到XXX年,无法回答”;
    RAG:实时检索2027年诺奖官网公告,直接给出得主和研究方向。

2. 坑2:容易“幻觉”,编错信息

传统模型靠“预测下一个词”生成内容,不管事实对错,只要逻辑通顺就敢说。

  • 例子:问“不睡觉有哪些副作用?”
    传统模型:可能编“长期不睡觉会导致XXX(虚构病症)”,还说不出来源;
    RAG:先检索《睡眠医学指南》《WHO健康报告》,再列出“免疫力下降、记忆力衰退”等真实副作用,还能标注出处。

3. 坑3:专业领域“不懂装懂”

通用大模型(比如GPT-4基础版)没有垂直领域的深度知识,比如法律条文、医疗指南、企业内部数据。

  • 例子:问“如何配置Hadoop集群的YARN内存参数?”
    传统模型:回答得模棱两可,甚至给错参数范围;
    RAG:检索Hadoop官方文档、企业内部的集群配置手册,给出“根据节点内存大小设置yarn.nodemanager.resource.memory-mb为XXX”的精准答案。

咱们用表格更直观对比下:

问题类型问题示例传统模型表现RAG表现
时效性问题2027年诺奖得主是谁?无法回答(知识过期)检索实时信息,准确回答
领域专业问题如何配置Hadoop YARN参数?回答模糊/错误检索专业文档,给精准步骤
需要引源问题不睡觉有哪些副作用?无可信出处,可能编内容标注参考资料,列真实副作用

三、RAG的核心逻辑:检索+生成,1+1>2

RAG不是“替代大模型”,而是“给大模型装了个外接大脑(检索系统)”。两者分工明确,互补优势:

1. 检索系统:大模型的“搜索引擎”

作用:从海量数据里快速找到“和问题最相关”的信息,比如文档片段、数据库记录。
特点:

  • 实时性:能获取最新数据(比如当天的新闻、刚更新的财报);
  • 精准性:只挑和问题相关的内容,不冗余;
  • 可追溯:每个检索结果都有来源(比如“来自某公司2024财报P12”)。

2. 生成模型:大模型的“文案编辑”

作用:把检索到的“零散资料”和用户问题结合,生成流畅、易懂的回答。
特点:

  • 理解能力强:能看懂用户问题的真实需求(比如用户问“老人能用这手机吗”,知道要查“产品适合人群”);
  • 表达自然:不像检索结果那样是零散片段,而是连贯的话。

3. 两者结合的好处

  • 不用重训模型:想更新知识,只需更新检索的知识库(比如企业新增了产品手册,直接加到检索库就行),省去百万级的模型训练成本;
  • 回答可验证:用户质疑“这个答案对吗?”,可以直接看RAG标注的来源,自己去查;
  • 减少幻觉:模型基于真实资料生成,不是“瞎编”,准确率大幅提升。

四、RAG的技术链路:从文档到回答,5步走

咱们用“Java开发者能看懂的类比”,拆解RAG的完整工作流程:

1. 技术链路5个核心环节

简单说:加载文档→拆分处理→转向量存库→检索相关内容→生成回答
每个环节的作用和常用工具,咱们对应Java知识理解:

环节作用常用工具Java类比(方便理解)
文档加载器读取各种格式的文档(PDF、Word、TXT)PyPDFLoader、UnstructuredFileInputStream(读文件)
文档转换器(分块)把长文档拆成短片段(方便检索)RecursiveTextSplitterString.split()增强版(按逻辑拆分)
文本嵌入模型把文字转成“向量”(机器能比较相关性)OpenAI Embeddings把字符串转成哈希值(类比)
向量存储存向量,快速查“相似向量”FAISS、Pinecone数据库索引(比如MySQL索引)
检索器根据用户问题,查向量库找相关内容LangChain RetrieverSQL查询(where条件找相关数据)

2. 用Java伪代码看RAG工作流程

咱们以“用户问‘如何申请公司报销’”为例,写一段伪代码,每步都有注释,一看就懂:

publicclassRAGWorkflow{publicstaticvoidmain(String[] args){// 第一步:加载文档(比如公司的《报销制度.pdf》《FAQ文档.txt》)// 类比:用FileInputStream读本地文件List<Document> companyDocs =DocumentLoader.load("D:/公司知识库/报销相关/");// 第二步:文档分块+转向量(长文档拆成短片段,再转成机器能懂的向量)// 类比:把长字符串按“章节”拆分,再转哈希值List<TextChunk> chunks =TextSplitter.split(companyDocs,500);// 每段500字List<Vector> vectorList =EmbeddingModel.convertToVector(chunks);// 第三步:向量存入向量库(建索引,方便后续快速检索)// 类比:把哈希值存入数据库,建索引加速查询VectorDB vectorDB =newFAISSVectorDB();// 常用的FAISS向量库 vectorDB.addVectors(vectorList);// 第四步:处理用户问题,检索相关内容String userQuestion ="如何申请公司报销?";// 1. 先把问题转成向量Vector questionVector =EmbeddingModel.convertToVector(userQuestion);// 2. 从向量库找“最相似的3个文档片段”(即和问题最相关的资料)List<TextChunk> relatedChunks = vectorDB.search(questionVector,3);// 第五步:结合检索结果,生成回答// 1. 把检索到的3个片段拼成“上下文”String context = relatedChunks.stream().map(chunk -> chunk.getContent()+"(来源:"+ chunk.getSource()+")").collect(Collectors.joining("\n"));// 2. 把“上下文+用户问题”一起喂给大模型String prompt ="根据以下资料回答问题:\n"+ context +"\n问题:"+ userQuestion;String answer = LLM.generate(prompt);// 调用大模型生成回答// 输出结果System.out.println("RAG生成回答:"+ answer);// 示例输出:// "根据《公司报销制度.pdf》P5:申请报销需先在OA提交《报销单》,附发票照片,经部门经理审批后,财务3个工作日内打款(来源:《公司报销制度.pdf》P5)。若有疑问,可参考《FAQ文档.txt》第8条:发票需为近3个月内有效票据(来源:《FAQ文档.txt》P2)。"}}

五、RAG的3个典型应用场景:看完就知道怎么用

咱们不说虚的,直接上真实案例,看看RAG在企业里到底怎么用,解决什么问题:

1. 场景1:智能客服系统(企业最常用)

传统客服的坑:产品更新快(比如新出了一款手机),客服知识库来不及同步,模型答不上“这个手机老人能用吗?”这种问题。
RAG方案

  • 把最新的产品手册、FAQ、售后政策都放进检索库;
  • 用户问“xx手机支持老人家使用不?”,RAG先检索“产品适合人群”相关词条,再生成回答:“我们这款手机支持18岁以上成人使用,系统有‘老人模式’(字体放大、语音助手),来源:《xx手机产品手册V2.0》P8”。
    效果:客服人工干预减少40%,回答准确率提升30%+。

2. 场景2:医疗问答助手(专业领域必备)

传统医疗模型的坑:通用模型不懂专业医学知识,可能给“新冠疫苗导致自闭症”这种错误建议,出问题要担法律责任。
RAG方案

  • 检索库接入权威医学资源(PubMed论文、《临床用药指南》、卫健委公告);
  • 用户问“二甲双胍的禁忌症有哪些?”,RAG检索2023版《临床用药指南》第5.3节,生成回答:“根据2023版《临床用药指南》,二甲双胍禁用于:1)严重肾功能不全(eGFR<30);2)急性代谢性酸中毒…来源:《临床用药指南2023》P156”。
    效果:回答合规性100%,避免医疗误导风险。

3. 场景3:金融研究报告生成(高效提效)

传统分析师的坑:市场数据天天变(比如某公司刚发财报),分析师要花几小时找数据、整理报告,效率低。
RAG方案

  • 检索库实时同步财报、行业新闻、股价数据;
  • 分析师问“XXX公司2024Q1财报怎么样?”,RAG先检索该公司2024Q1财报(净利润同比增15%)、行业对比数据,再生成报告片段:“XXX公司2024Q1净利润5.2亿元,同比增15%,高于行业平均8%,主要因XX业务增长…来源:XXX公司2024Q1财报P10、XX行业分析报告”。
    效果:分析师写报告时间从6小时缩短到1小时,更新频率从“每天1次”变成“实时更新”。

小结

RAG的核心不是“高大上的新技术”,而是“用检索补全大模型的短板”——让模型从“凭记忆答题”变成“先翻书再答题”,既解决了知识过时、幻觉问题,又不用花大价钱重训模型。

对咱们开发者来说,入门RAG不用怕:先掌握LangChain的文档加载、向量存储(比如FAISS),再结合今天讲的“检索+生成”逻辑,就能搭一个简单的RAG系统

最后问大家:你所在的行业,有没有“需要RAG来解决的问题”?比如公司内部文档太多,查资料慢?欢迎在评论区聊聊!

请添加图片描述

Read more

Sentry错误上报:AI配置前端监控SDK参数

Sentry错误上报:AI配置前端监控SDK参数 在现代AI驱动的前端应用中,用户与语言模型的每一次交互都可能隐藏着潜在的异常。尤其是当部署像 VibeThinker-1.5B-APP 这类轻量级语言模型用于数学推理和代码生成任务时,看似简单的“提问—响应”流程背后,实则涉及提示词解析、上下文管理、网络通信与运行时环境等多个环节。一旦某个环节出错——比如系统提示词未正确设置、请求超时或输入格式异常——用户体验将直接受损,而开发团队若缺乏有效的可观测手段,则调试过程往往如同盲人摸象。 Sentry 作为业界领先的开源错误追踪平台,其价值不仅体现在捕获 JavaScript 异常上,更在于它能构建完整的上下文链路,帮助我们理解“错误是如何一步步发生的”。但在 AI 场景下,直接套用传统 Web 应用的监控配置已远远不够。如何在保障数据安全的前提下,精准捕获与模型行为强相关的运行时信息?这正是我们需要重新思考的问题。 初始化即防线:Sentry.init() 的智能配置策略 所有监控能力的起点,都始于 Sentry.init()。这个看似普通的初始化函数,实际上是整个前端可观测体系

2026 前端新手必装 VS Code 插件|10 个插件提升开发效率(附配置教程)

2026 前端新手必装 VS Code 插件|10 个插件提升开发效率(附配置教程) VS Code 作为前端开发的「宇宙第一编辑器」,轻量性与强大的插件生态是其核心优势。对新手而言,选对插件能省去重复操作、减少语法错误,让编码效率翻倍。本文精选 10 个高频插件,按「代码高亮/格式化/快捷键辅助」分类,逐一拆解功能、安装及配置步骤,再分享组合使用技巧与冲突解决方法,帮你快速搭建高效开发环境。 一、插件分类与精选推荐 前端开发的核心场景离不开代码识别、格式规范与操作简化,本次推荐插件严格围绕这三大维度,兼顾新手友好度与实用性,避免冗余插件增加学习成本。 (一)代码高亮类:提升代码可读性 这类插件优化语法着色与文件识别,让不同语言、不同类型文件直观区分,降低视觉疲劳,尤其适合长时间编码。 1. One Dark Pro(经典深色主题) 核心功能:

NestJS 核心揭秘:InstanceWrapper 的艺术与前端缓存新思路

NestJS 核心揭秘:InstanceWrapper 的艺术与前端缓存新思路

文章目录 * 概述 * 第一部分:深入幕后——NestJS 的“实例管家” InstanceWrapper * 一、核心职责:不止于封装 * 二、关键属性解构(增强版) * 三、一个实例的生命旅程 * 第二部分:灵感跨界——构建前端页面的“InstanceWrapper”缓存层 * 一、设计哲学:前端数据包装器 * 二、定义我们的“前端 InstanceWrapper” * 三、实现缓存管理器与 React Hook * 四、使用场景示例 * 总结 。 概述 在 NestJS 构建的精密后端世界里,依赖注入(DI)是其生命线。而在这条生命线的核心,有一个默默无闻却至关重要的角色——InstanceWrapper。它不仅是 NestJS 容器中的“实例管家”,更是整个框架实现高效、

AI 小白逆袭!用 10 分钟学会 Claude Code 接入 DeepSeek-V3.2

AI 小白逆袭!用 10 分钟学会 Claude Code 接入 DeepSeek-V3.2

DeepSeek发布了最新的模型DeepSeek-V3.2,我们今天就让Claude Code 接入DeepSeek。为了让你也能快速掌握这套流程,我特地写下这篇“从零开始、一步到位”的完整实战教程。 大家好,我是写代码的中年人! DeepSeek发布了最新的模型DeepSeek-V3.2,我们今天就让Claude Code 接入DeepSeek。为了让你也能快速掌握这套流程,我特地写下这篇“从零开始、一步到位”的完整实战教程。无论你是程序媛还是程序员,还是刚入坑 AI 的小白,都能在这篇文章中轻松完成! Node.js 环境安装 Claude Code 是依赖于 Node.js 环境运行的,访问 Node.js 官方网站:https://nodejs.org,推荐下载 LTS(长期支持)版本,稳定且兼容性最好。 这里需要注意: Claude