2026/5/21 17:13:46
网站建设
项目流程
网站登录账号密码保存在哪里,网站开发免费视频播放器,免费网站建站app,点开图片跳到网站怎么做在大模型这个时期#xff0c;“私有化部署”以及“个性化问答”成了企业和开发者的关键需求。要是想让AI根据特定的文档#xff08;像公司手册、技术文档、学术论文等#xff09;来回答问题#xff0c;并且还担忧数据隐私会被泄漏出去#xff0c;那检索增强生成#xff0…在大模型这个时期“私有化部署”以及“个性化问答”成了企业和开发者的关键需求。要是想让AI根据特定的文档像公司手册、技术文档、学术论文等来回答问题并且还担忧数据隐私会被泄漏出去那检索增强生成RAG就是最棒的解决办法。本文将带大家从零开始用LangChain框架整合Qwen3大模型与BGE-M3嵌入模型手戳一个可本地运行的端到端RAG系统。无需复杂云服务只需一台带GPU的电脑就能拥有专属的“文档问答机器人”。为什么选择RAG聊聊大模型的“知识痛点”01在正式动手前我们先搞懂一个核心问题为什么需要RAG大模型像GPT-4和Qwen这类的呢虽然可以应对很多很多的通用问题可是它们有两个特别要命的缺点1.知识时效性不太好训练数据截止到某个特定的时间就像Qwen3训练数据截止到2024年初那样没办法获取最新的信息2.个性化能力弱无法理解企业内部文档、个人笔记等私有数据3.易产生“幻觉”对不确定的问题会编造看似合理的答案无法溯源信息来源。而RAG通过“检索生成”的组合完美解决这些问题检索从本地文档库中精准找到与问题相关的片段生成让大模型基于检索到的“事实依据”回答问题确保答案准确、可溯源直接讲RAG就像是给大模型安上了一个本地的知识仓库既能让大模型具备语言理解的能力又能把数据隐私和知识专属的问题给解决了。技术选型为什么是LangChainQwen3BGEM302搭建RAG系统得有三大关键组件分别是文档处理框架、大语言模型LLM以及嵌入模型Embedding。我们在选择这些组件时主要从“本地化、对中文友好、资源消耗低”这个方面去考虑的组件类型选型核心优势文档处理框架LangChain一站式整合文档加载、分割、向量存储、检索链降低开发门槛大语言模型LLMQwen3-7B-Instruct阿里达摩院开源模型中文处理能力强7B 参数支持 4 位量化本地 GPU 可运行嵌入模型EmbeddingBAAI/bge-m3中科院自动化所开源中文嵌入效果顶尖支持检索优化指令精度高于传统模型向量数据库Chroma轻量级本地向量库无需复杂部署支持持久化存储适配 LangChain除此之外我们还用到BitsAndBytes量化技术将Qwen3-7B模型压缩到4位精度原本需要24GB显存的模型现在8GB显存就能运行大大降低硬件门槛。手把手搭建从环境准备到代码实现03接着开始实战部分啦咱们把RAG系统搭建分成4步来进行每一步都有着详细的讲解呢就算是新手也能够很顺畅地跟得上哟。3.1 环境准备安装依赖库先确定你的电脑已安装了Python3.8以及更高版本与此同时拥有NVIDIAGPU显存最好大于或等于8GB。接着打开终端接着执行以下这些命令来安装依赖# 基础依赖pip install langchain chromadb transformers torch# 文档加载与处理pip install sentence-transformers python-dotenv# 量化相关4位量化需要pip install bitsandbytes accelerate# 可选如果需要处理PDF/Word文档安装额外加载器pip install pypdf python-docx3.2 核心代码解析从配置到问答的全流程我们的代码分为5个核心模块配置类、RAG系统初始化、文档处理、向量库加载、问答交互。下面逐模块拆解理解每个环节的作用。配置类统一管理参数便于修改先对Config类进行定义把文档路径、模型名称、量化配置等这些参数都集中到一起进行管理这样之后要是需要修改的话就不用到处去寻找代码啦classConfig: # 文档相关指定文档存放目录、分块大小 DOCUMENTS_DIR documents# 本地文档目录需手动创建 CHUNK_SIZE 500 # 每个文本块的字符数中文适配 CHUNK_OVERLAP 50 # 块间重叠字符数避免分割丢失上下文 # 模型相关指定嵌入模型和LLM EMBEDDING_MODEL_NAME BAAI/bge-m3# 中文嵌入效果顶尖 LLM_MODEL_NAME Qwen/Qwen3-7B-Instruct# 中文友好的7B模型 # 检索相关向量库存储路径、检索数量 VECTOR_DB_DIR vector_db_qwen_bge_m3# 向量库持久化目录 TOP_K 3 # 每次检索返回3个相关片段 # 量化配置降低显存占用 USE_4BIT_QUANTIZATION True # 启用4位量化8GB显存必备RAG系统初始化加载嵌入模型与LLMRAGSystem类是核心负责初始化嵌入模型和LLM这是系统的“大脑”和“眼睛”. 嵌入模型BGEM3将文本转化为向量数字用于后续检索LLMQwen3基于检索到的文本片段生成自然语言回答1初始化嵌入模型给文本“编数字”BGEM3有一个关键优化支持查询指令能让查询向量更精准。例如在生成查询向量时添加“为这个句子生成表示以用于检索相关文章”前缀提升检索命中率def_init_embeddings(self): print(f加载BGE-M3嵌入模型: {self.config.EMBEDDING_MODEL_NAME}) # BGE-M3专属查询指令优化中文检索效果 query_instruction 为这个句子生成表示以用于检索相关文章 return HuggingFaceBgeEmbeddings( model_nameself.config.EMBEDDING_MODEL_NAME, model_kwargs{device: cudaif torch.cuda.is_available() elsecpu}, encode_kwargs{normalize_embeddings: True}, # 向量归一化提升检索精度 query_instructionquery_instruction )2初始化LLM给系统“装大脑”Qwen3-7B模型默认需要24GB显存我们通过4位量化将其压缩到8GB以内。这个时候Qwen有专属的提示词格式|im_start|/|im_end|需要自定义格式函数适配def_init_llm(self): print(f加载Qwen3模型: {self.config.LLM_MODEL_NAME}) # 4位量化配置关键优化降低显存占用 quantization_config None if self.config.USE_4BIT_QUANTIZATION and torch.cuda.is_available(): quantization_config BitsAndBytesConfig( load_in_4bitTrue, bnb_4bit_use_double_quantTrue, # 双重量化进一步压缩 bnb_4bit_quant_typenf4, # 适配大模型的量化类型 bnb_4bit_compute_dtypetorch.float16 ) # 加载tokenizer和模型device_mapauto自动分配GPU/CPU tokenizer AutoTokenizer.from_pretrained(self.config.LLM_MODEL_NAME) model AutoModelForCausalLM.from_pretrained( self.config.LLM_MODEL_NAME, quantization_configquantization_config, device_mapauto, torch_dtypetorch.float16, trust_remote_codeTrue# 加载Qwen的自定义代码 ) # Qwen专属提示词格式必须严格遵循否则模型无法正常响应 defqwen_prompt_format(prompt): returnf|im_start|system\n你是一个 helpful 的助手基于提供的上下文回答问题。|im_end|\n|im_start|user\n{prompt}|im_end|\n|im_start|assistant\n # 创建文本生成pipeline包装成LangChain的LLM pipe pipeline( text-generation, modelmodel, tokenizertokenizer, max_new_tokens500, # 最大生成500个字符 temperature0.7, # 随机性0严谨1灵活 repetition_penalty1.1, # 避免重复生成 pad_token_idtokenizer.pad_token_id, eos_token_idtokenizer.eos_token_id, prompt_format_templateqwen_prompt_format ) return HuggingFacePipeline(pipelinepipe)文档处理从“原始文档”到“向量库”文档处理是RAG的“地基”直接影响检索精度。这一步分为3个关键操作加载文档→分割文档→创建向量库。(1) 加载文档支持多格式TXT/PDF/Word我们用DirectoryLoader批量加载documents目录下的文档默认支持TXT格式若需处理PDF/Word只需替换loader\_cls为PyPDFLoader/Docx2txtLoaderdefload_and_process_documents(self): start_time time.time() # 加载文档glob*.txt指定只加载TXT文件 loader DirectoryLoader( self.config.DOCUMENTS_DIR, glob*.txt, loader_clsTextLoader, loader_kwargs{encoding: utf-8} # 解决中文乱码问题 ) documents loader.load() ifnot documents: raise ValueError(f请在 {self.config.DOCUMENTS_DIR} 目录中添加文档) print(f成功加载 {len(documents)} 个文档)2分割文档中文适配的“黄金分割点”大模型有上下文长度限制如Qwen3-7B支持8k tokens若直接将长文档传入会丢失上下文。我们用RecursiveCharacterTextSplitter按中文标点分割避免将完整句子切散# 分割文档按“段落→句子→标点”分层分割保留中文语义text_splitter RecursiveCharacterTextSplitter( chunk_sizeself.config.CHUNK_SIZE, chunk_overlapself.config.CHUNK_OVERLAP, separators[\n\n, \n, 。, , , 、, , ] # 中文优先分割符)texts text_splitter.split_documents(documents)print(f文档分割完成得到 {len(texts)} 个文本块)3创建向量库将文本块“存入数据库”用Chroma向量库存储文本块的向量后续检索时只需将问题转化为向量与库中的向量计算相似度就能快速找到相关片段# 创建并持久化向量库下次运行可直接加载无需重新处理self.vector_db Chroma.from_documents( documentstexts, embeddingself.embeddings, persist_directoryself.config.VECTOR_DB_DIR)self.vector_db.persist()# 创建检索链将“检索”与“生成”串联self.qa_chain RetrievalQA.from_chain_type( llmself.llm, chain_typestuff, # 简单高效将所有相关片段传入LLM retrieverself.vector_db.as_retriever(search_kwargs{k: self.config.TOP_K}), return_source_documentsTrue# 返回源文档便于溯源)end_time time.time()print(f文档处理完成耗时 {end_time - start_time:.2f} 秒)问答交互从“问题”到“答案”的闭环最后实现query方法接收用户问题调用检索链生成答案并返回源文档片段便于验证答案准确性defquery(self, question: str): ifnot self.qa_chain: raise ValueError(请先加载文档或向量库) start_time time.time() print(f处理查询: {question}) # 执行检索增强生成先检索相关片段再生成答案 result self.qa_chain({query: question}) end_time time.time() print(f查询处理完成耗时 {end_time - start_time:.2f} 秒) return result主函数一键运行系统在if name main:中我们实现“自动创建示例文档→初始化系统→加载向量库→测试问答”的全流程if __name__ __main__: os.environ[TOKENIZERS_PARALLELISM] false# 避免tokenizer并行警告 # 初始化配置与系统 config Config() rag_system RAGSystem(config) # 首次运行创建示例文档数据科学、LLM应用相关 ifnot os.listdir(config.DOCUMENTS_DIR): print(创建示例文档...) create_sample_documents(config.DOCUMENTS_DIR) # 加载向量库存在则直接加载不存在则重新处理文档 ifnot rag_system.load_existing_vector_db(): rag_system.load_and_process_documents() # 测试中文问答 test_questions [ 数据科学工作流包括哪些步骤, 大语言模型有哪些主要应用场景 ] # 输出结果包含答案和源文档片段 for question in test_questions: print(\n *80) print(f问题: {question}) result rag_system.query(question) print(\n回答:) print(result[result]) print(\n相关文档片段:) for i, doc in enumerate(result[source_documents], 1): print(f\n文档 {i}:) print(f来源: {doc.metadata[source]}) print(f内容: {doc.page_content[:200]}...)运行测试看看系统实际效果04将代码保存为rag\_qwe\_bge.py执行以下命令运行python rag_qwen_bge.py首次运行时系统会自动在documents目录创建2个示例文档数据科学、LLM应用下载BGE-M3和Qwen3-7B模型约10GB需耐心等待处理文档并创建向量库存入vector*db*qwen*bge*m3目录。运行成功后会输出如下结果以“数据科学工作流包括哪些步骤”为例问题: 数据科学工作流包括哪些步骤处理查询: 数据科学工作流包括哪些步骤回答:数据科学工作流通常包括以下9个步骤问题定义明确业务问题和分析目标这是整个工作流的基础确保后续工作围绕核心需求展开数据收集获取相关的结构化如数据库表和非结构化如文本、图片数据数据清洗处理数据中的缺失值、异常值和重复数据保证数据质量避免影响后续分析结果探索性数据分析通过统计方法和可视化工具理解数据分布、变量关系等挖掘数据潜在规律特征工程对原始数据进行转换、筛选或创建新特征生成适合机器学习模型输入的特征模型构建根据问题类型如分类、回归选择适当的机器学习模型并使用清洗后的数据集进行训练模型评估使用准确率、召回率、RMSE等指标评估模型性能判断模型是否满足业务需求结果部署将训练好的模型集成到业务流程中如API接口、业务系统实现实际应用监控与更新持续监控模型在实际场景中的性能当数据分布或业务需求变化时定期更新模型。相关文档片段:文档 1:来源: documents/data_science.txt内容: 数据科学是一个跨学科领域结合了统计学、机器学习、数据可视化和领域知识用于从结构化和非结构化数据中提取有价值的 insights。数据科学工作流通常包括以下步骤问题定义明确业务问题和分析目标数据收集获取相关的结构化和非结构化数据数据清洗处理缺失值、异常值和重复数据探索性数据分析理解数据分布和变量关系特征工程创建适合建模的特征模型构建选择和训练适当的机器学习模型模型评估使用合适的指标评估模型性能结果部署将模型集成到业务流程中监控与更新持续监控模型性能并定期更新总结展望一点建议05本文针对企业私有化、个性化问答需求提供了基于LangChainQwen3BGEM3的本地RAG系统搭建全流程通过4位量化技术降低硬件门槛至8GB显存新手也能落地。这个方案通过“检索生成”这种方式把大模型存在的知识会过时、容易产生“幻觉”以及没法适应私有数据这些难题给解决了既保障了数据的安全又保证了回答的准确性。以后本地RAG会朝着更轻、更多种模式的方向去发展呢给新手的建议是先从最基本的文本开始把流程熟悉起来等过了这一步之后呢就可以去摸索参数的优化以及多种技术融合这样更高级的东西啦。想入门 AI 大模型却找不到清晰方向备考大厂 AI 岗还在四处搜集零散资料别再浪费时间啦2025 年AI 大模型全套学习资料已整理完毕从学习路线到面试真题从工具教程到行业报告一站式覆盖你的所有需求现在全部免费分享扫码免费领取全部内容一、学习必备100本大模型电子书26 份行业报告 600 套技术PPT帮你看透 AI 趋势想了解大模型的行业动态、商业落地案例大模型电子书这份资料帮你站在 “行业高度” 学 AI1. 100本大模型方向电子书2. 26 份行业研究报告覆盖多领域实践与趋势报告包含阿里、DeepSeek 等权威机构发布的核心内容涵盖职业趋势《AI 职业趋势报告》《中国 AI 人才粮仓模型解析》商业落地《生成式 AI 商业落地白皮书》《AI Agent 应用落地技术白皮书》领域细分《AGI 在金融领域的应用报告》《AI GC 实践案例集》行业监测《2024 年中国大模型季度监测报告》《2025 年中国技术市场发展趋势》。3. 600套技术大会 PPT听行业大咖讲实战PPT 整理自 2024-2025 年热门技术大会包含百度、腾讯、字节等企业的一线实践安全方向《端侧大模型的安全建设》《大模型驱动安全升级腾讯代码安全实践》产品与创新《大模型产品如何创新与创收》《AI 时代的新范式构建 AI 产品》多模态与 Agent《Step-Video 开源模型视频生成进展》《Agentic RAG 的现在与未来》工程落地《从原型到生产AgentOps 加速字节 AI 应用落地》《智能代码助手 CodeFuse 的架构设计》。二、求职必看大厂 AI 岗面试 “弹药库”300 真题 107 道面经直接抱走想冲字节、腾讯、阿里、蔚来等大厂 AI 岗这份面试资料帮你提前 “押题”拒绝临场慌1. 107 道大厂面经覆盖 Prompt、RAG、大模型应用工程师等热门岗位面经整理自 2021-2025 年真实面试场景包含 TPlink、字节、腾讯、蔚来、虾皮、中兴、科大讯飞、京东等企业的高频考题每道题都附带思路解析2. 102 道 AI 大模型真题直击大模型核心考点针对大模型专属考题从概念到实践全面覆盖帮你理清底层逻辑3. 97 道 LLMs 真题聚焦大型语言模型高频问题专门拆解 LLMs 的核心痛点与解决方案比如让很多人头疼的 “复读机问题”三、路线必明 AI 大模型学习路线图1 张图理清核心内容刚接触 AI 大模型不知道该从哪学起这份「AI大模型 学习路线图」直接帮你划重点不用再盲目摸索路线图涵盖 5 大核心板块从基础到进阶层层递进一步步带你从入门到进阶从理论到实战。L1阶段:启航篇丨极速破界AI新时代L1阶段了解大模型的基础知识以及大模型在各个行业的应用和分析学习理解大模型的核心原理、关键技术以及大模型应用场景。L2阶段攻坚篇丨RAG开发实战工坊L2阶段AI大模型RAG应用开发工程主要学习RAG检索增强生成包括Naive RAG、Advanced-RAG以及RAG性能评估还有GraphRAG在内的多个RAG热门项目的分析。L3阶段跃迁篇丨Agent智能体架构设计L3阶段大模型Agent应用架构进阶实现主要学习LangChain、 LIamaIndex框架也会学习到AutoGPT、 MetaGPT等多Agent系统打造Agent智能体。L4阶段精进篇丨模型微调与私有化部署L4阶段大模型的微调和私有化部署更加深入的探讨Transformer架构学习大模型的微调技术利用DeepSpeed、Lamam Factory等工具快速进行模型微调并通过Ollama、vLLM等推理部署框架实现模型的快速部署。L5阶段专题集丨特训篇 【录播课】四、资料领取全套内容免费抱走学 AI 不用再找第二份不管你是 0 基础想入门 AI 大模型还是有基础想冲刺大厂、了解行业趋势这份资料都能满足你现在只需按照提示操作就能免费领取扫码免费领取全部内容2025 年想抓住 AI 大模型的风口别犹豫这份免费资料就是你的 “起跑线”