基于DeepSeek手搓一个Rag知识库:RAG检索增强生成系统搭建全流程(含大模型DeepSeek部署+代码示例)值得收藏

背景

当下数字化浪潮席卷全球,数据呈爆炸式增长,计算能力指数级提升,算法持续创新突破,三者共同构筑起人工智能发展的坚实底座。高性能芯片赋予机器强大算力,深度学习等算法让模型能挖掘数据深层价值,推动人工智能从理论迈向广泛应用。但从技术角度看,人工智能最容易落地的场景如下:

  • RAG知识库(Retrieval-Augmented Generation)
    RAG通过“检索+生成”结合的”外挂“,将外部知识库与大语言模型(LLM)深度融合。其核心逻辑是用户提问时,系统先从知识库中检索相关内容,检索出内容进行算法排序,再结合这些检索结果利用大模型LLM总结、归纳和润色等生成人类可理解的自然语来回答,减少了传统模型“幻觉”与知识时效性问题。

  • AI Agent(智能体)AI Agent是具备环境感知、自主决策与执行能力的智能实体,能够通过工具调用、多轮对话等实现复杂任务闭环,如智能机器人。其本质是“大模型+工具+记忆”的协同系统。

  • 生成式BI(Generative Business Intelligence)

    生成式BI通过自然语言交互,理解业务需求,转为SQL或处理程序提取、加工数据,并将数据转化为可视化报告与决策建议,降低数据使用门槛。其核心价值在于“平民化数据分析”,让非技术人员也能通过对话获取洞见,同时也可为业务查找数据、认识数据提供很大帮助,但这数据准确度上需要做出很多数据语料、提示工程、微调等工作。

  • 数字人技术

    通过3D建模、语音合成与动作捕捉,打造高度拟人化的虚拟形象,实现多模态交互,即通过文字识、图像识别或语音识别转换为自然语言,传递给大模型LLM,大模型生成的文字转化语音、手势动作等进行交互,如直播带货,节目播音、教育陪练(英语口语练习)

  • 汽车智能座舱

    通过大模型与多模态交互(语音、文本、图像多种形态交互),重构人车关系。情感化交互、多轮对话、车内外感知、智能驾驶等

  • 协同办公自动化

    通过AI赋能会议、文档与项目管理,提升协作效率。文档生成、流程自动化、代码编写、内容生成、音频、视频、图片生成等等

以上等等应用在各个行业各个领域创新应用遍地开花,层出不穷,可谓百花齐放,但笔者这里先从Rag系统介绍开始。

RAG知识库介绍

RAG(Retrieval-Augmented Generation,检索增强生成)是一种将传统信息检索统与大语言模型相结合的技术架构。它先从大量的外部知识中将有用的信息提取出来,再将这些信息输入大语言模型整理成清晰自然的回答,用户提问时,系统先从知识库中检索相关内容,检索出内容进行算法排序,再结合这些检索结果利用大模型LLM总结、归纳和润色等生成人类可理解的自然语来回答,其核心逻辑和技术实现如下:

Rag系统核心原理简单可以理解三部分:

  • 数据准备:支持多格式文档(PDF、Word、网页等)的解析与分段处理,使用BERT、Sentence-BERT等生成嵌入模型将文档转换为向量,确保语义完整性,存储于向量数据库(如Milvus、Pinecone、chroma,目前国产数据库也有向量数据库)

  • 数据检索:为了快速的在向量数据库中找到与问题相关的文本块,用户输入的问题也需要经过生成嵌入模型(这里必须使用与文本块转换相同的生成嵌入模型)转化为嵌入向量,在检索时,从而可与向量库中的向量相互匹配(计算余弦相似度),返回Top-K相关文档。

  • LLM生成环节:生成模块基于检索内容生成答案,并通过重排序(Rerank)机制优化结果相关性。将检索结果与用户问题拼接为增强提示词(Prompt),输入LLM生成最终答案。

目前Rag系统在多个领域中得到了广泛应用,并且取得了显著的效果提升,但其有优缺点:

  • **优点:****可动态接入最新数据,避免模型知识过期;**可解释性答案附带引用来源,提升可信度;成本效益,减少对模型参数量的依赖,降低训练与推理成本。

  • 缺点:需优化向量模型与检索算法,避免“答非所问”;需定期更新数据源,处理格式多样性与冗余信息;延迟问题,检索环节增加响应时间,需通过缓存、异步处理优化。

LLM环境搭建

普通PC也可搭建基于Langchain开发框架+Ollama部署模型工具+Chroma向量数据库+DeepSeek R1构建的Rag系统,环境搭建可分为五个步骤:

1 Pycharm开发环境准备

Pycharm安装后,需要配置conda环境,File->settings->项目下Python Interpreter配置add interpreter

配置conda Enviroment,配置conda Executable 并选择Use existing environment的conda的虚拟环境

2 Conda虚拟环境搭建

 Conda是一个开源的软件包管理系统和环境管理系统,它被设计用于在多版本环境中管理软件包及其依赖关系。Conda主要用于Python环境,但也支持其他语言和平台。Conda可以在Linux、OS X和Windows等操作系统上运行。

使用Conda的几大好处:

  • 版本控制:Conda允许用户在同一台机器上安装和管理多个Python版本,以及特定版本的软件包和依赖关系。这对于开发和测试特别有用,因为你可以轻松地在不同的环境中切换。
  • 包管理:Conda提供了一个丰富的软件包库,用户可以轻松地安装、更新和卸载各种Python包。
  • 环境管理:Conda允许用户创建独立的环境,每个环境可以有自己的依赖关系和Python版本。这有助于隔离项目,防止不同项目之间的冲突。

下面是一些常见的Conda命令:

conda list:列出当前conda环境中已安装的软件包。
conda create:创建一个新的conda环境。例如,
conda create -n llmenv python=3.11
将创建一个名为llmenv 的新环境,并安装Python 3.11版本。
conda activate:激活一个已存在的conda环境。例如,
conda activate llmenv
将激活名llmenv的环境。
conda deactivate:停用一个已存在的conda环境。
conda install:在当前的conda环境中安装一个或多个软件包。例如,
conda install numpy
将安装numpy包。
conda update:更新当前conda环境中的软件包到最新版本。例如,
conda update numpy
将更新numpy包到最新版本。
conda remove:从当前的conda环境中移除一个软件包。例如,
conda remove numpy
将移除numpy包。
conda search:搜索可用的软件包。例如,
conda search numpy
将列出所有可用的numpy包版本。

笔者搭建conda环境使用的命令

1 创建conda环境
conda create -n llmenv python=3.11
2 激活环境
conda activate llmenv
3 关闭环境
conda deactivate

3 在上述安装的Conda环境上安装Langchain、Chroma、Pytorch等包

其他还有各种包准备:chromadb、bs4、langchain_community、langchain_chroma、langchain_ollama、langchain_text_splitters

pip install langchain  #安装过程中可能会报错,包依赖的问题直接安装相应的包后,继续安装即可
pip install chromadb
pip install pytorch::python torchvision torchaudio -c pytorch
...
以上需要什可以使用pip install命令进行安装

4 启动向量数据库chromadb

在conda PowerShell Prompt窗口运行,启动chromadb向量数据库

chroma run

http://localhost:8000

远程可以连接地址和端口,python代码中可创建创建远程客户端Client

5 安装Ollama

Ollama是一个专为在本地环境中运行和定制大型语言模型而设计的工具。它提供了一个简单而高效的接口,用于创建、运行和管理这些模型,同时还提供了一个丰富的预构建模型库,可以轻松集成到各种应用程序中。Ollama的目标是使大型语言模型的部署和交互变得简单,无论是对于开发者还是对于终端用户,在官方网页:https://ollama.com/download/windows上,注册下载安装即可。

ollama可以搜索可下载的全球预训练模型如DeepSeek、阿里通义等

https://ollama.com/search
#ollama run qwen2.5

笔者下载的是deepSeek R1模型:

ollama run deepseek-r1

第一次运行模型,会下载到ollama环境后并运行,运行后可直接进行对话,如“今天是周几”。如果在下载过程需要其他库,直接命令下载即可(这里还要下载,如nomic-embed-text)。

Rag系统代码实现

这里使用的Langchain开发框架,向量数据库使用的Chroma、大模型用的是DeekSeek-R1(推理更优),做出一个简单代码实现。

整体代码说明:把网页上

https://lilianweng.github.io/posts/2023-06-23-agent/

使用切词模型加载到向量数据库chroma内,提交给向量数据库进行相似度匹配,一般使用欧氏距离(或相似性余弦、或皮尔森相关系数),对搜索出的多条相似内容,按照相似度进行排名,再封装进prompt给大模型,LLM再对以上多条内容归纳总结生成出回答。

import os
os.environ['USER_AGENT'] = \
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
import chromadb from langchain_ollama
import OllamaLLMimport bs4
from langchain_community.document_loaders import WebBaseLoaderfrom
langchain_text_splitters import RecursiveCharacterTextSplitter #文本分割
from langchain_ollama import OllamaEmbeddings
from langchain_core.prompts import PromptTemplate
from langchain.chains import RetrievalQA
from langchain_chroma import Chroma   # 这里需要导入包 pip install langchain_chroma
def lang_rag():
# 1. 初始化llm, 让其流式输出
llm = OllamaLLM(model="deepseek-r1",
temperature=0.1,
top_p=0.4,
# callback_manager=CallbackManager([StreamingStdOutCallbackHandler()])                 )
loader = WebBaseLoader(web_paths=("https://lilianweng.github.io/posts/2023-06-23-agent/",),
bs_kwargs=dict(
parse_only=bs4.SoupStrainer(
class_=("post-content", "post-title", "post-header")
)
),
)
docs = loader.load()   #上述文档加载,
text_splitter= RecursiveCharacterTextSplitter(
chunk_size=1000, chunk_overlap=200) #配置切词参数
splits = text_splitter.split_documents(docs) #进行切词
vectorstore = Chroma.from_documents(#加载到向量数据库chroma内
documents=splits,
embedding=OllamaEmbeddings(
model="nomic-embed-text"),
collection_name='ddd')
# 提示词模板
prompt = PromptTemplate(
input_variables=['context', 'question'],
template=
"""You are an assistant for question-answering tasks.
Use the following pieces of retrieved context to answer the question.
you don't know the answer, just say you don't know without any explanation
Question: {question} Context: {context} Answer:""",
)
print('提示词模板创建')
# 向量数据库检索器
retriever = vectorstore.as_retriever()
print('向量数据库检索器')
qa_chain = RetrievalQA.from_chain_type(
llm,
retriever=retriever,
chain_type_kwargs={"prompt": prompt}
)
# what is Composition API?
question = "what is Ai agent?"
result = qa_chain.invoke({"query": question})
print("question1:")
print(result)
question2 = "what is react?"
result = qa_chain.invoke({"query": question2})
print("question2:")
print(result)
question3 = "什么智能体?,用中文回答"
result = qa_chain.invoke({"query": question3})
print("question3:")
print(result)
if __name__ == '__main__':
lang_rag()

上述代码粘贴可运行,前提是前面的环境搭建好,包安装好。

总结

纵观历史,每个伟大时代产生以新技术新工具出现和使用而应运而生,如三次工业革命重塑了人类文明进程。第一次工业革命以蒸汽机为标志,加速了城市化与世界市场形成深刻改变了社会结构,推动机器生产取代手工劳动,同时也创造机器生产和使用新的工作岗位。第二次工业革命以电力和内燃机为核心,人类进入“电气时代”,在取代马车交通工具等也产生汽车、火车和飞机新的交通工具等,同时也创造新工作岗位。第三次工业革命以电子计算机、原子能等为标志,推动人类进入信息时代,使人类社会从工业社会向信息社会跃迁,生产力与生活方式发生革命性变革。亦是如此,旧事物被新事物时同样会创造新的工作岗位,需要适应新事物、接受新事物、与新事物为伍。以人工智能为标志,第四次智能时代已来,****机械任务自动化、创意工作增效,生活里服务智能化、信息茧房破壁、人机交互拟真化渗透人们工作和生活的日常。为此人们担忧人工智能替代很多人的工作,但这是历史车轮滚滚向前无法阻挡,唯有拥抱变化,拥抱AI,以AI为伍,跟上时代步伐与其同伴前行…

普通人如何抓住AI大模型的风口?

为什么要学AI大模型

当下,⼈⼯智能市场迎来了爆发期,并逐渐进⼊以⼈⼯通⽤智能(AGI)为主导的新时代。企业纷纷官宣“ AI+ ”战略,为新兴技术⼈才创造丰富的就业机会,⼈才缺⼝将达 400 万!

DeepSeek问世以来,生成式AI和大模型技术爆发式增长,让很多岗位重新成了炙手可热的新星,岗位薪资远超很多后端岗位,在程序员中稳居前列。

在这里插入图片描述

与此同时AI与各行各业深度融合,飞速发展,成为炙手可热的新风口,企业非常需要了解AI、懂AI、会用AI的员工,纷纷开出高薪招聘AI大模型相关岗位。
在这里插入图片描述

AI大模型开发工程师对AI大模型需要了解到什么程度呢?我们先看一下招聘需求:

在这里插入图片描述

知道人家要什么能力,一切就好办了!我整理了AI大模型开发工程师需要掌握的知识如下:

大模型基础知识

你得知道市面上的大模型产品生态和产品线;还要了解Llama、Qwen等开源大模型与OpenAI等闭源模型的能力差异;以及了解开源模型的二次开发优势,以及闭源模型的商业化限制,等等。

img

了解这些技术的目的在于建立与算法工程师的共通语言,确保能够沟通项目需求,同时具备管理AI项目进展、合理分配项目资源、把握和控制项目成本的能力。

产品经理还需要有业务sense,这其实就又回到了产品人的看家本领上。我们知道先阶段AI的局限性还非常大,模型生成的内容不理想甚至错误的情况屡见不鲜。因此AI产品经理看技术,更多的是从技术边界、成本等角度出发,选择合适的技术方案来实现需求,甚至用业务来补足技术的短板。

AI Agent

现阶段,AI Agent的发展可谓是百花齐放,甚至有人说,Agent就是未来应用该有的样子,所以这个LLM的重要分支,必须要掌握。

Agent,中文名为“智能体”,由控制端(Brain)、感知端(Perception)和行动端(Action)组成,是一种能够在特定环境中自主行动、感知环境、做出决策并与其他Agent或人类进行交互的计算机程序或实体。简单来说就是给大模型这个大脑装上“记忆”、装上“手”和“脚”,让它自动完成工作。

Agent的核心特性

自主性: 能够独立做出决策,不依赖人类的直接控制。

适应性: 能够根据环境的变化调整其行为。

交互性: 能够与人类或其他系统进行有效沟通和交互。

img

对于大模型开发工程师来说,学习Agent更多的是理解它的设计理念和工作方式。零代码的大模型应用开发平台也有很多,比如dify、coze,拿来做一个小项目,你就会发现,其实并不难。

AI 应用项目开发流程

如果产品形态和开发模式都和过去不一样了,那还画啥原型?怎么排项目周期?这将深刻影响产品经理这个岗位本身的价值构成,所以每个AI产品经理都必须要了解它。

img

看着都是新词,其实接触起来,也不难。

从0到1的大模型系统学习籽料

最近很多程序员朋友都已经学习或者准备学习 AI 大模型,后台也经常会有小伙伴咨询学习路线和学习资料,我特别拜托北京清华大学学士和美国加州理工学院博士学位的鲁为民老师(吴文俊奖得主)
在这里插入图片描述

给大家准备了一份涵盖了AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频 全系列的学习资料,这些学习资料不仅深入浅出,而且非常实用,让大家系统而高效地掌握AI大模型的各个知识点。

图片

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费

适学人群

应届毕业生‌: 无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。

零基础转型‌: 非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界‌。

业务赋能突破瓶颈: 传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型‌。
在这里插入图片描述

AI大模型系统学习路线

在面对AI大模型开发领域的复杂与深入,精准学习显得尤为重要。一份系统的技术路线图,不仅能够帮助开发者清晰地了解从入门到精通所需掌握的知识点,还能提供一条高效、有序的学习路径。

  • 基础篇,包括了大模型的基本情况,核心原理,带你认识了解大模型提示词,Transformer架构,预训练、SFT、RLHF等一些基础概念,用最易懂的方式带你入门AI大模型
  • 进阶篇,你将掌握RAG,Langchain、Agent的核心原理和应用,学习如何微调大模型,让大模型更适合自己的行业需求,私有化部署大模型,让自己的数据更加安全
  • 项目实战篇,会手把手一步步带着大家练习企业级落地项目,比如电商行业的智能客服、智能销售项目,教育行业的智慧校园、智能辅导项目等等

img

但知道是一回事,做又是另一回事,初学者最常遇到的问题主要是理论知识缺乏、资源和工具的限制、模型理解和调试的复杂性,在这基础上,找到高质量的学习资源,不浪费时间、不走弯路,又是重中之重。

AI大模型入门到实战的视频教程+项目包

看视频学习是一种高效、直观、灵活且富有吸引力的学习方式,可以更直观地展示过程,能有效提升学习兴趣和理解力,是现在获取知识的重要途径

在这里插入图片描述
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

海量AI大模型必读的经典书籍(PDF)

阅读AI大模型经典书籍可以帮助读者提高技术水平,开拓视野,掌握核心技术,提高解决问题的能力,同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说,阅读经典书籍是非常有必要的。
在这里插入图片描述

600+AI大模型报告(实时更新)

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
在这里插入图片描述

AI大模型面试真题+答案解析

我们学习AI大模型必然是想找到高薪的工作,下面这些面试题都是总结当前最新、最热、最高频的面试题,并且每道题都有详细的答案,面试前刷完这套面试题资料,小小offer,不在话下
在这里插入图片描述

在这里插入图片描述

AI时代,企业最需要的是既懂技术、又有实战经验的复合型人才,**当前人工智能岗位需求多,薪资高,前景好。**在职场里,选对赛道就能赢在起跑线。抓住AI这个风口,相信下一个人生赢家就是你!机会,永远留给有准备的人。

如何获取?

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值