从零开始手把手教你搭建RAG私有知识库,小白也能跑通!

📅 发布时间:2026/7/14 13:36:19 👁️ 浏览次数:
从零开始手把手教你搭建RAG私有知识库,小白也能跑通!
本文全程本地开源模型本地向量库不上传数据、不依赖API、无付费、可商用小白也能跟着跑通附可直接复制运行的完整代码。一、本文你能学到什么本地跑开源大模型无需GPU也能跑本地搭建向量数据库Chroma实现 RAG 检索增强生成提供完整可运行 Python 代码一键启动脚本 部署说明二、整体架构很多小白觉得 RAG 很复杂其实核心就 6 步文档加载 → 文本分块 → 向量化 → 向量库存储 → 本地大模型 → RAG 问答拆解说明不用记原理知道每步做什么即可文档加载读取本地的 TXT、MD、PDF 文档本文以 TXT 为例PDF 可直接适配文本分块把长文档切成小片段解决大模型“记不住长文本”的问题向量化用本地开源 Embedding 模型把文本转换成计算机能识别的向量向量库存储用 Chroma 本地向量库存储所有文本向量方便快速检索本地大模型用开源大模型Qwen 等本地生成回答不调用外部 APIRAG 问答先检索向量库中最相关的文本再让大模型基于这些文本生成回答保证准确性。三、环境准备环境准备只需要 2 步新建依赖文件 安装依赖全程复制命令即可不用手动一个个安装。1. 新建依赖文件新建一个名为requirements.txt的文件复制下面的内容粘贴进去所有依赖已适配兼容避免版本冲突langchain0.1.20langchain-community0.0.38chromadb0.4.24pypdf4.2.0sentence-transformers2.7.0transformers4.40.0torch2.2.2uvicorn0.29.0fastapi0.110.3python-multipart0.0.92. 安装依赖打开终端Windows 用 CMD/PowerShellMac/Linux 用终端进入文件所在目录执行下面的命令等待安装完成即可pip install -r requirements.txt 提示如果安装速度慢可以加上国内镜像源末尾加上-i https://pypi.tuna.tsinghua.edu.cn/simple。四、开源模型本地部署本文使用开源 Embedding 开源 LLM不用依赖任何外部 API也不用 GPUCPU 就能跑通全部本地运行。1. Embedding 模型本地使用BAAI/bge-small-zh-v1.5轻量、中文强、CPU 可跑。 关键说明Embedding 模型固定用BAAI/bge-small-zh-v1.5中文向量化效果好轻量仅 100 多 MBCPU 可跑大模型本文默认用Qwen-1.8B-Chat阿里云开源中文极强第一次运行代码时会自动下载后续无需重复下载无 GPU 也能跑代码中已默认适配 CPU有 GPU 的同学可手动修改配置后面会说。2. 大模型本地部署二选一方案AQwen-1.8B-Chat/Qwen-7B-Chat阿里云开源中文极强方案B使用llama.cpp GGUF 量化模型CPU 超低占用为了小白一键运行本文直接用 HuggingFace transformers 加载。五、向量库配置Chroma 本地版向量库我们选 Chroma是目前最适合小白的本地向量库优点拉满✅ 纯 Python 编写无需额外安装服务✅ 本地文件存储数据全部在自己电脑上✅ 自动建库、自动持久化关闭程序后再启动向量库不会丢失✅ 与 LangChain 无缝集成配置只需一行代码。核心配置代码后面完整源码中已包含这里仅展示关键部分Chroma.from_documents( documentssplit_docs, embeddingembedding_model, persist_directory./chroma_db)无需手动创建向量库代码会自动判断如果没有向量库就自动创建并向量化文档如果已有向量库就直接加载无需重复向量化。六、完整可运行源码直接复制这是本文的核心新建一个名为rag_local.py的文件复制下面的完整代码粘贴进去即可无需修改任何内容小白直接用import osimport torchfrom langchain.vectorstores import Chromafrom langchain.document_loaders import TextLoader, DirectoryLoaderfrom langchain.text_splitter import RecursiveCharacterTextSplitterfrom langchain.embeddings import HuggingFaceEmbeddingsfrom langchain.llms import HuggingFacePipelinefrom langchain.chains import RetrievalQAfrom transformers import AutoModelForCausalLM, AutoTokenizer, pipeline# 1. 配置路径 # 知识库文档存放目录放入txt/md/pdfDOC_DIR ./docs# 向量库持久化路径DB_DIR ./chroma_db# 本地模型路径可换成你下载好的模型路径LLM_MODEL qwen/Qwen-1_8B-ChatEMBEDDING_MODEL BAAI/bge-small-zh-v1.5# 2. 加载 Embedding 模型 embedding HuggingFaceEmbeddings( model_nameEMBEDDING_MODEL, model_kwargs{device: cpu}, # GPU 改为 cuda encode_kwargs{normalize_embeddings: True})# 3. 加载文档 分块 def load_and_split_docs(): loader DirectoryLoader( DOC_DIR, glob*.txt, loader_clsTextLoader, loader_kwargs{encoding: utf-8} ) documents loader.load() splitter RecursiveCharacterTextSplitter( chunk_size500, chunk_overlap100 ) split_docs splitter.split_documents(documents) return split_docs# 4. 初始化向量库 def init_vector_db(): ifnot os.path.exists(DB_DIR): split_docs load_and_split_docs() db Chroma.from_documents( documentssplit_docs, embeddingembedding, persist_directoryDB_DIR ) db.persist() else: db Chroma( persist_directoryDB_DIR, embedding_functionembedding ) return db# 5. 加载本地大模型 def load_local_llm(): tokenizer AutoTokenizer.from_pretrained(LLM_MODEL, trust_remote_codeTrue) model AutoModelForCausalLM.from_pretrained( LLM_MODEL, torch_dtypeauto, device_mapauto, trust_remote_codeTrue ).eval() pipe pipeline( text-generation, modelmodel, tokenizertokenizer, max_new_tokens1024, temperature0.1, top_p0.7, do_sampleTrue ) llm HuggingFacePipeline(pipelinepipe) return llm# 6. 构建 RAG 链 def build_rag_chain(): db init_vector_db() llm load_local_llm() rag_chain RetrievalQA.from_chain_type( llmllm, chain_typestuff, retrieverdb.as_retriever(search_kwargs{k: 3}), return_source_documentsTrue ) return rag_chain# 7. 测试问答 if __name__ __main__: print(本地 RAG 私有知识库启动中...) rag_chain build_rag_chain() whileTrue: query input(\n请输入问题输入 q 退出) if query.lower() q: break res rag_chain({query: query}) print(\n【回答】, res[result]) print(\n【来源片段】) for idx, doc in enumerate(res[source_documents]): print(f{idx1}., doc.page_content[:200], ...)七、一键启动教程1. 新建文件夹结构先新建一个文件夹命名为rag_local然后在里面新建 3 个文件/文件夹结构如下复制下面的结构对照创建即可rag_local/├── docs/ # 放你的知识库文件.txt├── chroma_db/ # 自动生成├── rag_local.py # 上面代码└── requirements.txt2. 放入文档在docs/文件夹里放入你想要问答的文档要求格式优先 TXT 格式本文默认适配PDF 后面会说如何适配内容任意内容比如公司制度、产品手册、个人笔记、书籍章节等数量可放多个 TXT 文件代码会自动全部加载。示例在 docs 里放入公司制度.txt、产品手册.txt启动后就能问关于这些文档的问题。3. 运行打开终端进入rag_local文件夹终端输入cd 文件夹路径比如cd D:\rag_local然后执行下面的命令python rag_local.py4. 使用✅ 第一次启动会自动下载 Embedding 模型和大模型约 4GB 左右耐心等待下载完成后自动对 docs 里的文档进行向量化生成向量库chroma_db 文件夹✅ 后续启动直接加载已有的向量库无需重复下载模型和向量化启动速度很快✅ 问答操作启动成功后输入你的问题比如“公司考勤制度是什么”回车就能得到基于本地文档的回答输入q可退出。八、部署与升级生产可用1. 一键启动脚本对于小白来说每次输命令启动太麻烦我们可以做一个一键启动脚本双击就能启动。1start_rag.batWindows新建一个名为start_rag.bat的文件复制下面的内容粘贴进去保存后双击即可启动echo offpython rag_local.pypause2start_rag.shLinux/Mac新建一个名为start_rag.sh的文件复制下面的内容粘贴进去保存后执行chmod x start_rag.sh然后双击启动#!/bin/bashpython rag_local.py2. 部署为 Web 服务FastAPI如果想让局域网内的其他人也能访问你的知识库可以部署为 Web 服务基于 FastAPI步骤如下1在rag_local.py文件末尾添加下面的 Web 接口代码直接复制粘贴from fastapi import FastAPIapp FastAPI()rag_chain build_rag_chain()app.get(/rag)def rag(q: str): res rag_chain({query: q}) return { question: q, answer: res[result], sources: [d.page_content[:300]... for d in res[source_documents]] }2启动 Web 服务执行下面的命令uvicorn rag_local:app --host 0.0.0.0 --port 80003访问方式在浏览器输入下方链接就能得到回答http://127.0.0.1:8000/rag?q你的问题九、常见问题问题CPU 运行太慢生成回答要很久换 GGUF 量化模型 llama.cpp换更小模型qwen-0.5B / tinyllama问题想加载 PDF 文档运行后无法识别解决方案把代码中的TextLoader换成PyPDFLoader步骤① 新增导入from langchain.document_loaders import PyPDFLoader② 把loader_clsTextLoader改成loader_clsPyPDFLoader③ 把glob*.txt改成glob*.pdf。换向量库可替换FAISS、Milvus、ES问题不想下载模型想直接用本地已有的模型把LLM_MODEL和EMBEDDING_MODEL改成你本地模型的路径比如LLM_MODEL ./qwen-1.8b-chat。问题启动时报错“No module named ‘xxx’”解决方案大概率是依赖没安装全重新执行pip install -r requirements.txt确保所有依赖都安装成功。十、总结到这里你已经获得了一套本地开源 RAG 完整架构一份可直接运行的代码一个本地私有知识库一套一键启动部署方案它的优势完全私有化数据不泄露、无付费、可商用、可二次开发适合个人、中小企业搭建自己的问答系统比如企业知识库、个人笔记问答、产品手册问答等。普通人如何抓住AI大模型的风口领取方式在文末为什么要学习大模型目前AI大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 大模型作为其中的重要组成部分 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 为各行各业带来了革命性的改变和机遇 。目前开源人工智能大模型已应用于医疗、政务、法律、汽车、娱乐、金融、互联网、教育、制造业、企业服务等多个场景其中应用于金融、企业服务、制造业和法律领域的大模型在本次调研中占比超过30%。随着AI大模型技术的迅速发展相关岗位的需求也日益增加。大模型产业链催生了一批高薪新职业人工智能大潮已来不加入就可能被淘汰。如果你是技术人尤其是互联网从业者现在就开始学习AI大模型技术真的是给你的人生一个重要建议最后只要你真心想学习AI大模型技术这份精心整理的学习资料我愿意无偿分享给你但是想学技术去乱搞的人别来找我在当前这个人工智能高速发展的时代AI大模型正在深刻改变各行各业。我国对高水平AI人才的需求也日益增长真正懂技术、能落地的人才依旧紧缺。我也希望通过这份资料能够帮助更多有志于AI领域的朋友入门并深入学习。真诚无偿分享vx扫描下方二维码即可加上后会一个个给大家发【附赠一节免费的直播讲座技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等欢迎大家~】大模型全套学习资料展示自我们与MoPaaS魔泊云合作以来我们不断打磨课程体系与技术内容在细节上精益求精同时在技术层面也新增了许多前沿且实用的内容力求为大家带来更系统、更实战、更落地的大模型学习体验。希望这份系统、实用的大模型学习路径能够帮助你从零入门进阶到实战真正掌握AI时代的核心技能01教学内容从零到精通完整闭环【基础理论 →RAG开发 → Agent设计 → 模型微调与私有化部署调→热门技术】5大模块内容比传统教材更贴近企业实战大量真实项目案例带你亲自上手搞数据清洗、模型调优这些硬核操作把课本知识变成真本事‌02适学人群应届毕业生‌无工作经验但想要系统学习AI大模型技术期待通过实战项目掌握核心技术。零基础转型‌非技术背景但关注AI应用场景计划通过低代码工具实现“AI行业”跨界‌。业务赋能突破瓶颈传统开发者Java/前端等学习Transformer架构与LangChain框架向AI全栈工程师转型‌。vx扫描下方二维码即可【附赠一节免费的直播讲座技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等欢迎大家~】本教程比较珍贵仅限大家自行学习不要传播更严禁商用03入门到进阶学习路线图大模型学习路线图整体分为5个大的阶段04视频和书籍PDF合集从0到掌握主流大模型技术视频教程涵盖模型训练、微调、RAG、LangChain、Agent开发等实战方向新手必备的大模型学习PDF书单来了全是硬核知识帮你少走弯路不吹牛真有用05行业报告白皮书合集收集70报告与白皮书了解行业最新动态0690份面试题/经验AI大模型岗位面试经验总结谁学技术不是为了赚$呢找个好的岗位很重要07 deepseek部署包技巧大全由于篇幅有限只展示部分资料并且还在持续更新中…真诚无偿分享vx扫描下方二维码即可加上后会一个个给大家发【附赠一节免费的直播讲座技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等欢迎大家~】