当前位置: 首页 > news >正文

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

本文全程本地开源模型+本地向量库,不上传数据、不依赖API、无付费、可商用,小白也能跟着跑通,附可直接复制运行的完整代码


一、本文你能学到什么


  • 本地跑开源大模型(无需GPU也能跑)
  • 本地搭建向量数据库(Chroma)
  • 实现 RAG 检索增强生成
  • 提供完整可运行 Python 代码
  • 一键启动脚本 + 部署说明

二、整体架构


很多小白觉得 RAG 很复杂,其实核心就 6 步:文档加载 → 文本分块 → 向量化 → 向量库存储 → 本地大模型 → RAG 问答

拆解说明(不用记原理,知道每步做什么即可):

  1. 文档加载:读取本地的 TXT、MD、PDF 文档(本文以 TXT 为例,PDF 可直接适配);
  2. 文本分块:把长文档切成小片段,解决大模型“记不住长文本”的问题;
  3. 向量化:用本地开源 Embedding 模型,把文本转换成计算机能识别的向量;
  4. 向量库存储:用 Chroma 本地向量库,存储所有文本向量,方便快速检索;
  5. 本地大模型:用开源大模型(Qwen 等),本地生成回答,不调用外部 API;
  6. RAG 问答:先检索向量库中最相关的文本,再让大模型基于这些文本生成回答,保证准确性。

三、环境准备


环境准备只需要 2 步:新建依赖文件 + 安装依赖,全程复制命令即可,不用手动一个个安装。

1. 新建依赖文件

新建一个名为requirements.txt的文件,复制下面的内容粘贴进去(所有依赖已适配兼容,避免版本冲突):

langchain==0.1.20langchain-community==0.0.38chromadb==0.4.24pypdf==4.2.0sentence-transformers==2.7.0transformers==4.40.0torch==2.2.2uvicorn==0.29.0fastapi==0.110.3python-multipart==0.0.9

2. 安装依赖

打开终端(Windows 用 CMD/PowerShell,Mac/Linux 用终端),进入文件所在目录,执行下面的命令,等待安装完成即可:

pip install -r requirements.txt

💡 提示:如果安装速度慢,可以加上国内镜像源(末尾加上-i https://pypi.tuna.tsinghua.edu.cn/simple)。


四、开源模型本地部署


本文使用开源 Embedding + 开源 LLM,不用依赖任何外部 API,也不用 GPU,CPU ,就能跑通全部本地运行。

1. Embedding 模型(本地)

使用:

BAAI/bge-small-zh-v1.5

轻量、中文强、CPU 可跑。 关键说明:

  1. Embedding 模型:固定用BAAI/bge-small-zh-v1.5,中文向量化效果好,轻量(仅 100 多 MB),CPU 可跑;
  2. 大模型:本文默认用Qwen-1.8B-Chat(阿里云开源,中文极强),第一次运行代码时会自动下载,后续无需重复下载;
  3. 无 GPU 也能跑:代码中已默认适配 CPU,有 GPU 的同学可手动修改配置(后面会说)。

2. 大模型本地部署(二选一)

  • 方案A:Qwen-1.8B-Chat/Qwen-7B-Chat(阿里云开源,中文极强)
  • 方案B:使用llama.cpp+ GGUF 量化模型(CPU 超低占用)

为了小白一键运行,本文直接用 HuggingFace transformers 加载。


五、向量库配置(Chroma 本地版)


向量库我们选 Chroma,是目前最适合小白的本地向量库,优点拉满:

  • ✅ 纯 Python 编写,无需额外安装服务;
  • ✅ 本地文件存储,数据全部在自己电脑上;
  • ✅ 自动建库、自动持久化,关闭程序后再启动,向量库不会丢失;
  • ✅ 与 LangChain 无缝集成,配置只需一行代码。

核心配置代码(后面完整源码中已包含,这里仅展示关键部分):

Chroma.from_documents( documents=split_docs, embedding=embedding_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/pdf)DOC_DIR = "./docs"# 向量库持久化路径DB_DIR = "./chroma_db"# 本地模型路径(可换成你下载好的模型路径)LLM_MODEL = "qwen/Qwen-1_8B-Chat"EMBEDDING_MODEL = "BAAI/bge-small-zh-v1.5"# ====================== 2. 加载 Embedding 模型 ======================embedding = HuggingFaceEmbeddings( model_name=EMBEDDING_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_cls=TextLoader, loader_kwargs={"encoding": "utf-8"} ) documents = loader.load() splitter = RecursiveCharacterTextSplitter( chunk_size=500, chunk_overlap=100 ) 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( documents=split_docs, embedding=embedding, persist_directory=DB_DIR ) db.persist() else: db = Chroma( persist_directory=DB_DIR, embedding_function=embedding ) return db# ====================== 5. 加载本地大模型 ======================def load_local_llm(): tokenizer = AutoTokenizer.from_pretrained(LLM_MODEL, trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained( LLM_MODEL, torch_dtype="auto", device_map="auto", trust_remote_code=True ).eval() pipe = pipeline( "text-generation", model=model, tokenizer=tokenizer, max_new_tokens=1024, temperature=0.1, top_p=0.7, do_sample=True ) llm = HuggingFacePipeline(pipeline=pipe) return llm# ====================== 6. 构建 RAG 链 ======================def build_rag_chain(): db = init_vector_db() llm = load_local_llm() rag_chain = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", retriever=db.as_retriever(search_kwargs={"k": 3}), return_source_documents=True ) 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"{idx+1}.", doc.page_content[:200], "...")

七、一键启动教程


1. 新建文件夹结构

先新建一个文件夹(命名为rag_local),然后在里面新建 3 个文件/文件夹,结构如下(复制下面的结构,对照创建即可):

rag_local/├── docs/ # 放你的知识库文件(.txt)├── chroma_db/ # 自动生成├── rag_local.py # 上面代码└── requirements.txt

2. 放入文档

docs/文件夹里,放入你想要问答的文档,要求:

  • 格式:优先 TXT 格式(本文默认适配,PDF 后面会说如何适配);
  • 内容:任意内容(比如公司制度、产品手册、个人笔记、书籍章节等);
  • 数量:可放多个 TXT 文件,代码会自动全部加载。

示例:在 docs 里放入公司制度.txt产品手册.txt,启动后就能问关于这些文档的问题。

3. 运行

打开终端,进入rag_local文件夹(终端输入cd 文件夹路径,比如cd D:\rag_local),然后执行下面的命令:

python rag_local.py

4. 使用

✅ 第一次启动:会自动下载 Embedding 模型和大模型(约 4GB 左右,耐心等待),下载完成后,自动对 docs 里的文档进行向量化,生成向量库(chroma_db 文件夹);

✅ 后续启动:直接加载已有的向量库,无需重复下载模型和向量化,启动速度很快;

✅ 问答操作:启动成功后,输入你的问题(比如“公司考勤制度是什么?”),回车就能得到基于本地文档的回答,输入q可退出。


八、部署与升级(生产可用)


1. 一键启动脚本

对于小白来说,每次输命令启动太麻烦,我们可以做一个一键启动脚本,双击就能启动。

1)start_rag.bat(Windows)

新建一个名为start_rag.bat的文件,复制下面的内容粘贴进去,保存后双击即可启动:

@echo offpython rag_local.pypause

2)start_rag.sh(Linux/Mac)

新建一个名为start_rag.sh的文件,复制下面的内容粘贴进去,保存后执行chmod +x start_rag.sh,然后双击启动:

#!/bin/bashpython rag_local.py

2. 部署为 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 8000

3)访问方式:在浏览器输入下方链接,就能得到回答:

http://127.0.0.1:8000/rag?q=你的问题

九、常见问题


  1. 问题:CPU 运行太慢,生成回答要很久?
  • 换 GGUF 量化模型 + llama.cpp
  • 换更小模型:qwen-0.5B / tinyllama
  1. 问题:想加载 PDF 文档,运行后无法识别?

    解决方案:把代码中的TextLoader换成PyPDFLoader,步骤:

  • ① 新增导入:from langchain.document_loaders import PyPDFLoader
  • ② 把loader_cls=TextLoader改成loader_cls=PyPDFLoader
  • ③ 把glob="*.txt"改成glob="*.pdf"
  1. 换向量库?
  • 可替换:FAISS、Milvus、ES
  1. 问题:不想下载模型,想直接用本地已有的模型?
  • LLM_MODELEMBEDDING_MODEL改成你本地模型的路径(比如LLM_MODEL = "./qwen-1.8b-chat")。
  1. 问题:启动时报错“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扫描下方二维码即可
加上后会一个个给大家发

【附赠一节免费的直播讲座,技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等,欢迎大家~】

http://www.jsqmd.com/news/457582/

相关文章:

  • 2026年天津好用的健身房品牌企业排行榜,艾克仕健身表现出色 - 工业品牌热点
  • 光伏泵站远程监控运维管理系统方案
  • 如何用OpenCore Configurator轻松配置黑苹果系统?新手入门全攻略
  • 3步突破系统壁垒:APK Installer实现跨平台应用运行全攻略
  • 华为OD机考双机位C卷 - 字符串计数匹配 (Java Python JS GO C++ C)
  • 四川寻人服务优质机构权威推荐指南:成都跨区域商务调查、四川企业背景调查、四川信息调查、四川债务找人选择指南 - 优质品牌商家
  • 网页文本替换完全指南:从安装到高级应用的实用技巧
  • 3步解锁无模拟器安卓体验:告别卡顿的Windows APK新方案
  • 视频剪辑就业培训优质机构专业推荐:跨境电商设计培训/软件测试就业培训/软件测试线下就业培训/ai软件测试培训/选择指南 - 优质品牌商家
  • 3步实现文档格式自由:面向研究者的格式转换解决方案
  • 聊聊2026年靠谱的玻璃吸盘车出租公司,宁波亿一在列 - myqiye
  • 获全国多地反诈中心致谢信,合合信息旗下启信宝AI助力反诈攻坚
  • WarcraftHelper游戏增强工具:兼容性问题解决与效率提升指南
  • 突破操控边界:3步实现手柄无缝映射,让1000+游戏重获新生
  • 讲讲2026年诚信的奉化食堂承包公司,高校食堂承包公司如何选择 - 工业推荐榜
  • 2026年3月:耐用室外防火涂料企业选择指南,防火涂料/一体板/岩棉板,防火涂料实力厂家口碑排行 - 品牌推荐师
  • 深度解析:AI领域的学历门槛,读博是必选项还是加分项
  • 3个核心价值:高德地图POI数据采集的高效指南
  • 钢格栅性价比如何,山东地区靠谱的经销商有哪些 - mypinpai
  • 解决Windows 11 LTSC微软商店缺失问题的完整方案:从功能缺失到应用生态重建
  • 3大核心场景提升50%跨语言开发效率:VSCode注释翻译插件实战指南
  • 告别存档管理困境:Apollo Save Tool如何革新PS4游戏体验
  • 收藏!带你从0掌握大模型核心技能,小白程序员转行必备
  • NCM格式转换工具:让音乐文件重获自由播放能力
  • SQLines实战指南:解决数据库迁移场景的3个关键难题
  • 小白程序员必看:收藏这份AI术语进化图谱,轻松入门大模型世界!
  • 音乐解密工具:数字音乐资产的自主掌控之道
  • 经典游戏复活神器:DDrawCompat让老游戏在现代系统焕发新生
  • 百度网盘直链提取技术:突破文件传输瓶颈的完整解决方案
  • v-viewer组件:一站式图片预览解决方案实现指南