从裁员到年薪百万:程序员靠RAG技术逆袭的“核心密码”

1. 前言

作为一名从业七年的程序员,最近听到很多程序员朋友都喜提了n+1裁员大礼包。上周与老友聚会时,大家纷纷诉说着各自最近的遭遇,聚会气氛一度十分沉重。老Z感叹:"公司决定将部分业务外包,结果我被列入了裁员名单。"老L则无奈道:"市场竞争激烈,项目减少,团队预算被削减,前几天我也被裁掉了。"聚会回家后我十分焦虑地打开了招聘软件,发现传统程序员的岗位出现了僧多肉少的情况,hr每天回复几十次的都有,关键薪资待遇并不是很理想。我出于好奇心搜了一下AI相关岗位,发现今年AI岗位出了很多,关键在于投递的人少了很多但是薪资翻了多倍...

在AI技术飞速发展的今天,我意识到程序员转型为AI工程师似乎是一个不错的选择。然而,这一转型并非易事,既需要扎实的编程基础,又需深入理解各种AI模型和技术。其中,检索增强生成(RAG)技术作为大模型落地的关键技术,通过将大型语言模型与外部知识库相结合,显著提升了生成式AI的准确性和时效性。掌握RAG技术,不仅能增强AI系统的响应能力,还能有效解决传统语言模型在处理特定领域知识时的局限性。学习并掌握RAG技术,对于希望在AI领域发展的程序员而言,具有重要意义。

本文我们将从RAG相关原理入手,介绍如何基于RAGFlow本地部署DeepSpeek-R1大模型以及搭建知识库,如果感兴趣就往下约阅读吧~

2. RAG相关概念讲解(对概念不感兴趣就跳过)

2.1. 什么是Embedding

Embedding(嵌入)是把信息(比如单词、句子、文档)转化为计算机能够理解的数字形式。我们把这种转化得到的数字向量称为"Embedding向量"。这种做法在很多AI应用中都很常见,尤其是在处理文本时。想象一下,你和朋友在讨论《红楼梦》中的人物时,可能会提到"林黛玉"和"贾宝玉"这两个角色。在你们的谈话中,这些名字不仅仅是字面上的称呼,它们还承载着丰富的情感和故事背景。同样地,计算机也需要一种方式来理解这些词语背后的深层含义。Embedding(嵌入)就是一种将词语、句子或文档转化为计算机可以理解的数字形式的方法。通过这种方式,计算机能够"感知"词语之间的关系和相似性。

举个例子:

假设我们将"林黛玉"和"贾宝玉"这两个角色转化为一组数字,例如:

  • 林黛玉:[0.2, 0.8, -0.5, ...]
  • 贾宝玉:[0.3, 0.7, -0.4, ...]

这些数字背后的含义可能是:

  • 第一个数字:代表角色的文学地位。
  • 第二个数字:代表角色的性格特征。
  • 第三个数字:代表角色的情感经历。

由于"林黛玉"和"贾宝玉"在故事中有着深厚的关系和相似的性格特征,所以它们的数字表示在计算机的"心目"中会比较接近。这种接近性帮助计算机理解它们在语义上的相似性:

2.2 Embedding 模型精选与对比

为帮助读者快速选择适合 RAG 系统的嵌入模型,本文结合最新行业评测(截至2025年3月)整理出以下主流模型及其特性:

模型名称 开发团队 核心特点 适用场景 性能指标(MTEB/MIRACL)
BGE-M3 智源研究院 支持100+语言,集成稠密/稀疏/多向量混合检索,8192 tokens长文本处理能力 企业级多语言知识库、复杂格式文档检索(表格/图表解析) MIRACL平均召回率89.2%
Gemini Embedding Google AI 基于动态稀疏注意力机制,支持8K上下文,Matryoshka降维技术减少83%存储需求 多模态检索、金融/法律领域长文档分析、跨语言知识库 MMTEB多语言Borda分数最高
mxbai-embed-large Mixed Bread AI 1024维高精度向量,短文本优化,模型体积仅为OpenAI text-embedding-3-large的60% 中小团队快速部署、实时语义搜索(电商/客服场景) MTEB平均得分72.1
nomic-embed-text Nomic AI 768维平衡设计,短文本相似度计算效率领先,支持动态分块策略 社交媒体内容分析、竞品监控、短问答系统 短文本检索F1值78.5%
Jina Embedding Jina AI 基于3.8亿高质量句对训练,35M参数量推理速度极快 移动端轻量化应用、边缘计算场景(如物联网设备日志分析) 推理速度比同类快3倍
GTE 阿里巴巴达摩院 基于BERT框架优化,直接处理代码无需微调,适配技术文档检索 开发者文档检索(如API手册查询)、编程问答社区 代码检索准确率92.7%

模型选择建议

  1. 企业级复杂场景 :优先选择 BGE-M3Gemini Embedding,两者在混合检索、长文本处理和多语言支持上表现突出;
  2. 轻量化部署需求mxbai-embed-large (高精度)和 nomic-embed-text(高效率)是性价比之选;
  3. 技术文档与代码场景GTE 的代码原生支持特性可减少30%的误召回率;
  4. 移动/边缘计算Jina Embedding 凭借35M参数量和高效推理架构,适合资源受限环境。

:以上数据参考自MTEB 2025官方榜单及企业实测报告,完整评测方法可访问 HuggingFace MTEB Leaderboard

2.3. RAG工作流程

检索增强生成(Retrieval-Augmented Generation,简称RAG)是一种将信息检索技术与生成模型结合的方法,主要用来提升大型语言模型在处理知识密集型任务时的表现。RAG的工作流程可以分为四个主要步骤,简单来说就是:检索、增强、生成。

  1. 数据索引(Indexing)
  • 数据预处理:首先,我们需要对原始数据进行清洗和规范化处理。这样可以确保数据的质量,去掉那些无关或干扰的信息。
  • 向量化处理:接下来,我们使用一些嵌入模型将这些数据转换成向量形式。向量化的目的是把数据中的语义信息提取出来,以便后续处理。
  • 建立索引:最后,将这些向量化的数据存储到向量数据库中,并为它们建立索引。这样,系统就能快速检索到相关数据。
  1. 检索(Retrieval)
  • 查询处理:当用户提交问题时,系统会先将用户的查询转化成向量表示。
  • 相似度计算:然后,系统会计算查询向量和数据库中所有数据向量之间的相似度。通常,余弦相似度是常用的计算方法。
  • 检索相关数据:根据计算出的相似度,系统会从数据库中提取出最相关的数据片段。
  1. 增强(Augmentation)
  • 构建增强提示:此时,系统将用户的查询与检索到的相关数据结合,构建一个增强的提示(prompt)。这个提示将提供给生成模型,确保它能够利用最新、最相关的信息来生成回答。
  1. 生成(Generation)
  • 生成响应:生成模型会根据这个增强的提示,生成最终的响应。由于它结合了最新的知识和数据,因此生成的回答会更加准确和相关。

2.4. 如何构建高效的RAG系统?

要打造一个高效的RAG系统,主要优化的点在于构建数据索引这一步,以下几个关键步骤非常重要:

  1. 数据预处理的重要性:在RAG系统中,数据预处理至关重要。包括数据清洗和规范化处理,能有效提升检索效果。如果数据没有经过清理,就可能包含很多噪声或冗余信息,这会影响检索器的表现,从而影响生成模型的输出质量。
  2. 数据分块策略:当处理长文档时,拆分成合适大小的块会更有帮助。这不仅能提高检索效率,还能提高准确性。当然,块的大小需要根据具体情况进行调整,找到一个平衡点,既保证信息的完整性,又确保处理的高效。
  3. 嵌入模型的选择:嵌入模型将文本转换为向量,这个过程直接影响检索效果。选择一个与应用领域匹配的嵌入模型,并对其进行微调,可以大大提升检索的相关性和准确性。

除去以上步骤,设计有效的提示词,引导模型生成准确的回答;通过调整解码器的温度等参数,控制输出的多样性和质量;对生成器进行微调,使其更好地适应特定任务等手段也可以提升RAG的回答效果。

2.5. RAG框架简介

在我之前的文章里也写过RAG框架,为了方便大家理解和比较RAG框架,我做了一个表格汇总(下表的AnythingLLM框架对应文章为: https://blog.csdn.net/c18213590220/article/details/145965374?spm=1001.2014.3001.5502

框架名称 类别 核心特点 适用场景
LangChain 传统 RAG 框架 模块化设计,支持文档加载、文本拆分、嵌入、检索全流程 灵活构建复杂 LLM 应用(如问答系统、智能体开发)
Haystack 传统 RAG 框架 端到端解决方案,支持多语言模型与文档存储集成,模块化架构 企业级搜索增强系统、多语言知识库应用
RAGFlow 企业级 RAG 框架 深度文档理解(OCR/TSR支持),混合检索(向量+搜索引擎+结构化查询) 处理复杂格式文档的企业知识库(表格、图表解析)
VARAG 多模态 RAG 框架 整合图像理解能力,基于 LangChain 构建,API 接口友好 图文混合内容处理(教育、研究场景)、初创项目原型
R2R 检索优化框架 迭代式检索优化,支持多步骤检索过程与性能分析工具 需要高精度检索的学术研究、复杂查询场景
FlashRAG 高效检索框架 分布式处理优化,支持百亿级数据检索,内置性能分析工具 高并发、大规模数据场景(如实时语义搜索)
AnythingLLM 私有化部署框架 MIT协议支持二次开发,内置企业级权限体系,兼容200+文档格式 数据敏感型企业(法律、制造业)私有知识库构建
Cherry Studio 轻量级框架 零配置桌面端运行,集成30+开源模型,支持离线问答 小微团队快速验证(创意灵感库、竞品分析)
Cognita MLOps 集成框架 端到端平台,内置监控与版本控制,支持模型实验跟踪 需要全生命周期管理的 AI 应用开发
Canopy 向量检索优化框架 基于 Pinecone 矢量数据库技术,高扩展性检索架构 需要高效矢量搜索的大规模多模态应用

RAGFlow作为本文要讲的RAG框架,有以下优点:

  1. 多样化的文档处理能力:RAGFlow支持丰富的文件格式,包括Word、PPT、Excel、PDF等,并针对特定格式提供相应的解析模板,能够处理复杂格式的文档,如表格、图像等。
  2. 深度文档理解:内置的DeepDoc组件能够对用户的非结构化文档进行布局检测,确保文字在保持语义的前提下进行处理,提高了数据处理的准确性和可靠性。
  3. 混合检索机制:RAGFlow支持向量检索、搜索引擎检索和结构化查询的混合检索方式,能够根据不同场景选择最优的检索策略,提升了检索的精度和效率。
  4. 高可定制性和可扩展性:RAGFlow提供了灵活的自定义能力,用户可以根据具体需求定制评分算法、检索策略等,适应高负载应用场景,满足不同业务需求。

这些优点使RAGFlow在处理复杂格式文档、提供高精度检索和满足企业级应用需求方面表现出色。

3. 基于RAGFlow本地部署DeepSpeek-R1大模型及知识库搭建

3.1. Ollama安装

Ollama安装在之前的文章已经手把手交过,这里就不在赘述,文章指引:blog.csdn.net/c1821359022...

本文和之前有所不同的一点是需要配置一下OLLAMA_HOST:

配置 OLLAMA_HOST的ip为0.0.0.0的核心目的是突破网络隔离限制,使运行在 Docker 容器中的 RAGFlow 能够通过宿主机网络访问 Ollama 服务。Ollama 默认绑定在 127.0.0.1(仅限本机访问),而 Docker 容器与宿主机属于不同网络命名空间,无法直接访问此地址。设置为 0.0.0.0 后,Ollama 会监听所有网络接口(包括虚拟网卡),使容器可通过宿主机 IP 或 host.docker.internal域名访问服务。

3.2. RAGFlow安装

3.2.1. Docker Desktop安装配置

  1. 安装 WSL 2(适用于 Windows 10 版本 2004 及以上):

Windows 子系统 Linux 2(WSL 2)提供了一个完整的 Linux 内核,Docker Desktop 依赖于此。win+R打开命令窗口,输入winver查看系统版本,确保内部版本高于19041:

以管理员身份打开 PowerShell,运行以下命令:

css 复制代码
  wsl --install

安装完成后需要重启一下计算机。

  1. 安装DockerDesktop

安装 Docker Desktop 之前,确保您已经安装并启用了 WSL 2。可以通过在 PowerShell 运行以下命令来检查:

css 复制代码
wsl --list --verbose

下载 Docker Desktop :访问 Docker 官方网站 www.docker.com/products/do... 下载适用于 Windows 的 Docker Desktop 安装包。

安装 Docker Desktop

  1. 双击下载的安装文件 Docker Desktop Installer.exe
  2. 按照提示完成安装过程。
  3. 安装完成后,系统可能提示重启计算机,建议重启以确保所有组件正常工作。

启动 Docker Desktop :电脑重启后,启动Docker Desktop, 初次启动可能需要一些时间。

配置一下docker镜像源地址:

以下镜像源地址为国内地址,你不想用我的也可以自己找:

json 复制代码
"registry-mirrors":["https://hub.rat.dev"]

3.2.2. RAGFlow安装

RAGFlow的安装我建议可以直接去github(github.com/infiniflow/...)上看README_zh.md,教程已经很详尽,当然你嫌麻烦也可以直接看我的,首先基于git拉取RAGFlow项目:

bash 复制代码
git clone https://github.com/infiniflow/RAGFlow.git

进入RAGFlow/docker文件夹输入cmd打开命令提示符窗口:

如需下载不同于 v0.17.2-slim 的 Docker 镜像,请在运行 docker compose 启动服务之前先更新 docker/.env 文件内的 RAGFlow_IMAGE 变量。比如,你可以通过设置 RAGFlow_IMAGE=infiniflow/RAGFlow:v0.17.2 来下载 RAGFlow 镜像的 v0.17.2 完整发行版。这里的版本是我自己的版本,你的版本需要打开.env软件自己确认。

运行命令:docker compose -f docker-compose.yml up -d安装RAGFlow,安装完以后可以使用docker ps看一下容器列表,找到RAGFlow容器id,使用docker logs -f (容器id)查看容器运行情况:

在浏览器输入localhost,能看到以下界面则表明RAGFlow安装成功了:

注册账号后就能登录至首页:

点击头像后,在侧边导航栏选择模型提供商,选择Ollama:

配置chat模型,模型名称使用ollama list命令获取(win+R打开命令提示符窗口输入ollama list):

基础uri处配置为http://你的ip:11434:

配置embedding模型,基础uri处配置为http://你的ip:11434:

点击系统模型设置设置相应模型:

3.2.3. 知识库搭建

新增知识库,我这里为了示范新增了一个小肥肠咖啡厅员工管理规范的知识库,配置知识库:

在RAGFlow中 提供了两种主要的文档解析器:

  1. Naive解析器:该解析器在处理文档时,不仅提取文本内容,还将表格数据转换为HTML格式。然而,在解析复杂表格时,可能会出现错行或格式偏差的问题。
  2. DeepDoc解析器:这是RAGFlow的核心组件,利用视觉处理和解析技术,对文档进行深度理解。它支持OCR(光学字符识别)、布局识别和表格结构识别(TSR),能够处理多种文档格式,如PDF、DOCX、Excel和PPT,并提取文本块、表格和图像等信息。

总的来说,Naive解析器适用于对解析速度要求较高且文档格式较简单的场景,而DeepDoc解析器则更适合处理复杂布局和多种格式的文档,提供更精确的解析结果。

接下来就是准备知识库的数据集,数据集越规范查询效果越好,这里是我造假的一个数据(pdf):

上传文件:

实时查看解析进度:

解析以后点击数据集可以查看解析块:

配置完知识库之后新建聊天助理测试一下效果:

开始聊天,从下图中可以看出聊天小助理已经能够很好地提取知识库的内容进行回答了:

4. 资料获取

如果你对DeepSpeek 的相关知识还不熟悉,可以关注gzh后端小肥肠,点击底部【资源】菜单获取DeepSpeek相关教程资料。

5. 结语

本文带领读者深入了解了RAG(检索增强生成)技术相关的基本原理,基于保姆级教程一步一步讲解了怎么基于RAGFlow本地部署DeepSpeek-R1大模型与知识库的搭建。随着AI技术的发展,RAG技术将成为程序员转型为AI工程师的重要工具。掌握RAG技术不仅能帮助开发更高效的知识库系统,还能提升模型的准确性和响应能力,为处理知识密集型任务提供强有力的支持。

如果本文对你有帮助,不要忘记动动小手点点关注哦,小肥肠专注分享AI领域干货知识,点关注不迷路~

相关推荐
weixin_437497773 小时前
读书笔记:Context Engineering 2.0 (上)
人工智能·nlp
喝拿铁写前端3 小时前
前端开发者使用 AI 的能力层级——从表面使用到工程化能力的真正分水岭
前端·人工智能·程序员
goodfat3 小时前
Win11如何关闭自动更新 Win11暂停系统更新的设置方法【教程】
人工智能·禁止windows更新·win11优化工具
北京领雁科技3 小时前
领雁科技反洗钱案例白皮书暨人工智能在反洗钱系统中的深度应用
人工智能·科技·安全
落叶,听雪3 小时前
河南建站系统哪个好
大数据·人工智能·python
清月电子3 小时前
杰理AC109N系列AC1082 AC1074 AC1090 芯片停产替代及资料说明
人工智能·单片机·嵌入式硬件·物联网
Dev7z3 小时前
非线性MPC在自动驾驶路径跟踪与避障控制中的应用及Matlab实现
人工智能·matlab·自动驾驶
七月shi人3 小时前
AI浪潮下,前端路在何方
前端·人工智能·ai编程
橙汁味的风4 小时前
1隐马尔科夫模型HMM与条件随机场CRF
人工智能·深度学习·机器学习
itwangyang5204 小时前
AIDD-人工智能药物设计-AI 制药编码之战:预测癌症反应,选对方法是关键
人工智能