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

📅 2026/8/27 14:39:36
基于DeepSeek手搓一个Rag知识库:RAG检索增强生成系统搭建全流程(含大模型DeepSeek部署+代码示例)值得收藏
背景当下数字化浪潮席卷全球数据呈爆炸式增长计算能力指数级提升算法持续创新突破三者共同构筑起人工智能发展的坚实底座。高性能芯片赋予机器强大算力深度学习等算法让模型能挖掘数据深层价值推动人工智能从理论迈向广泛应用。但从技术角度看人工智能最容易落地的场景如下RAG知识库Retrieval-Augmented GenerationRAG通过“检索生成”结合的”外挂“将外部知识库与大语言模型LLM深度融合。其核心逻辑是用户提问时系统先从知识库中检索相关内容检索出内容进行算法排序再结合这些检索结果利用大模型LLM总结、归纳和润色等生成人类可理解的自然语来回答减少了传统模型“幻觉”与知识时效性问题。AI Agent智能体AI Agent是具备环境感知、自主决策与执行能力的智能实体能够通过工具调用、多轮对话等实现复杂任务闭环如智能机器人。其本质是“大模型工具记忆”的协同系统。生成式BIGenerative Business Intelligence生成式BI通过自然语言交互理解业务需求转为SQL或处理程序提取、加工数据并将数据转化为可视化报告与决策建议降低数据使用门槛。其核心价值在于“平民化数据分析”让非技术人员也能通过对话获取洞见同时也可为业务查找数据、认识数据提供很大帮助但这数据准确度上需要做出很多数据语料、提示工程、微调等工作。数字人技术通过3D建模、语音合成与动作捕捉打造高度拟人化的虚拟形象实现多模态交互即通过文字识、图像识别或语音识别转换为自然语言传递给大模型LLM大模型生成的文字转化语音、手势动作等进行交互如直播带货节目播音、教育陪练英语口语练习汽车智能座舱通过大模型与多模态交互语音、文本、图像多种形态交互重构人车关系。情感化交互、多轮对话、车内外感知、智能驾驶等协同办公自动化通过AI赋能会议、文档与项目管理提升协作效率。文档生成、流程自动化、代码编写、内容生成、音频、视频、图片生成等等以上等等应用在各个行业各个领域创新应用遍地开花层出不穷可谓百花齐放但笔者这里先从Rag系统介绍开始。RAG知识库介绍RAGRetrieval-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 python3.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 python3.11 2 激活环境 conda activate llmenv 3 关闭环境 conda deactivate3 在上述安装的Conda环境上安装Langchain、Chroma、Pytorch等包其他还有各种包准备chromadb、bs4、langchain_community、langchain_chroma、langchain_ollama、langchain_text_splitterspip install langchain #安装过程中可能会报错包依赖的问题直接安装相应的包后继续安装即可 pip install chromadb pip install pytorch::python torchvision torchaudio -c pytorch ... 以上需要什可以使用pip install命令进行安装4 启动向量数据库chromadb在conda PowerShell Prompt窗口运行启动chromadb向量数据库chroma runhttp://localhost:8000远程可以连接地址和端口python代码中可创建创建远程客户端Client5 安装OllamaOllama是一个专为在本地环境中运行和定制大型语言模型而设计的工具。它提供了一个简单而高效的接口用于创建、运行和管理这些模型同时还提供了一个丰富的预构建模型库可以轻松集成到各种应用程序中。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(modeldeepseek-r1, temperature0.1, top_p0.4, # callback_managerCallbackManager([StreamingStdOutCallbackHandler()]) ) loader WebBaseLoader(web_paths(https://lilianweng.github.io/posts/2023-06-23-agent/,), bs_kwargsdict( parse_onlybs4.SoupStrainer( class_(post-content, post-title, post-header) ) ), ) docs loader.load() #上述文档加载 text_splitter RecursiveCharacterTextSplitter( chunk_size1000, chunk_overlap200) #配置切词参数 splits text_splitter.split_documents(docs) #进行切词 vectorstore Chroma.from_documents(#加载到向量数据库chroma内 documentssplits, embeddingOllamaEmbeddings( modelnomic-embed-text), collection_nameddd) # 提示词模板 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 dont know the answer, just say you dont know without any explanation Question: {question} Context: {context} Answer:, ) print(提示词模板创建) # 向量数据库检索器 retriever vectorstore.as_retriever() print(向量数据库检索器) qa_chain RetrievalQA.from_chain_type( llm, retrieverretriever, 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等闭源模型的能力差异以及了解开源模型的二次开发优势以及闭源模型的商业化限制等等。了解这些技术的目的在于建立与算法工程师的共通语言确保能够沟通项目需求同时具备管理AI项目进展、合理分配项目资源、把握和控制项目成本的能力。产品经理还需要有业务sense这其实就又回到了产品人的看家本领上。我们知道先阶段AI的局限性还非常大模型生成的内容不理想甚至错误的情况屡见不鲜。因此AI产品经理看技术更多的是从技术边界、成本等角度出发选择合适的技术方案来实现需求甚至用业务来补足技术的短板。AI Agent现阶段AI Agent的发展可谓是百花齐放甚至有人说Agent就是未来应用该有的样子所以这个LLM的重要分支必须要掌握。Agent中文名为“智能体”由控制端Brain、感知端Perception和行动端Action组成是一种能够在特定环境中自主行动、感知环境、做出决策并与其他Agent或人类进行交互的计算机程序或实体。简单来说就是给大模型这个大脑装上“记忆”、装上“手”和“脚”让它自动完成工作。Agent的核心特性自主性能够独立做出决策不依赖人类的直接控制。适应性能够根据环境的变化调整其行为。交互性能够与人类或其他系统进行有效沟通和交互。对于大模型开发工程师来说学习Agent更多的是理解它的设计理念和工作方式。零代码的大模型应用开发平台也有很多比如dify、coze拿来做一个小项目你就会发现其实并不难。AI 应用项目开发流程如果产品形态和开发模式都和过去不一样了那还画啥原型怎么排项目周期这将深刻影响产品经理这个岗位本身的价值构成所以每个AI产品经理都必须要了解它。看着都是新词其实接触起来也不难。从0到1的大模型系统学习籽料最近很多程序员朋友都已经学习或者准备学习 AI 大模型后台也经常会有小伙伴咨询学习路线和学习资料我特别拜托北京清华大学学士和美国加州理工学院博士学位的鲁为民老师吴文俊奖得主给大家准备了一份涵盖了AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频全系列的学习资料这些学习资料不仅深入浅出而且非常实用让大家系统而高效地掌握AI大模型的各个知识点。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】适学人群应届毕业生‌无工作经验但想要系统学习AI大模型技术期待通过实战项目掌握核心技术。零基础转型‌非技术背景但关注AI应用场景计划通过低代码工具实现“AI行业”跨界‌。业务赋能突破瓶颈传统开发者Java/前端等学习Transformer架构与LangChain框架向AI全栈工程师转型‌。AI大模型系统学习路线在面对AI大模型开发领域的复杂与深入精准学习显得尤为重要。一份系统的技术路线图不仅能够帮助开发者清晰地了解从入门到精通所需掌握的知识点还能提供一条高效、有序的学习路径。基础篇包括了大模型的基本情况核心原理带你认识了解大模型提示词Transformer架构预训练、SFT、RLHF等一些基础概念用最易懂的方式带你入门AI大模型进阶篇你将掌握RAGLangchain、Agent的核心原理和应用学习如何微调大模型让大模型更适合自己的行业需求私有化部署大模型让自己的数据更加安全项目实战篇会手把手一步步带着大家练习企业级落地项目比如电商行业的智能客服、智能销售项目教育行业的智慧校园、智能辅导项目等等但知道是一回事做又是另一回事初学者最常遇到的问题主要是理论知识缺乏、资源和工具的限制、模型理解和调试的复杂性在这基础上找到高质量的学习资源不浪费时间、不走弯路又是重中之重。AI大模型入门到实战的视频教程项目包看视频学习是一种高效、直观、灵活且富有吸引力的学习方式可以更直观地展示过程能有效提升学习兴趣和理解力是现在获取知识的重要途径光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战案例来学习。海量AI大模型必读的经典书籍PDF阅读AI大模型经典书籍可以帮助读者提高技术水平开拓视野掌握核心技术提高解决问题的能力同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说阅读经典书籍是非常有必要的。600AI大模型报告实时更新这套包含640份报告的合集涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师还是对AI大模型感兴趣的爱好者这套报告合集都将为您提供宝贵的信息和启示。AI大模型面试真题答案解析我们学习AI大模型必然是想找到高薪的工作下面这些面试题都是总结当前最新、最热、最高频的面试题并且每道题都有详细的答案面试前刷完这套面试题资料小小offer不在话下AI时代企业最需要的是既懂技术、又有实战经验的复合型人才**当前人工智能岗位需求多薪资高前景好。**在职场里选对赛道就能赢在起跑线。抓住AI这个风口相信下一个人生赢家就是你机会永远留给有准备的人。如何获取这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】