RAG 知识库搭建实战教程:从零到一构建本地问答系统 RAG检索增强生成从零搭建实战指南引言在当今人工智能快速发展的时代RAGRetrieval-Augmented Generation检索增强生成技术已成为连接大语言模型与私有知识库的关键桥梁。它通过将外部知识检索与生成模型相结合有效解决了大模型幻觉、知识过时和缺乏领域专业知识等问题。本文是一份面向初学者的RAG从零搭建实战指南旨在帮助没有任何AI开发经验的读者在Windows系统上一步步搭建完整的RAG问答系统。通过本教程你将学会环境搭建安装Python、VS Code及所有必要依赖知识库构建创建并管理本地文档知识库检索系统实现搭建基于向量数据库的文档检索系统问答系统集成结合大语言模型实现智能问答故障排查解决常见报错确保系统稳定运行无论你是技术爱好者、学生还是希望将AI技术应用于实际业务的开发者本指南都将为你提供清晰、可操作的步骤让你在30分钟内跑通第一个RAG应用。 阶段一环境准备Python VS Code步骤 1安装 Python 3.11打开浏览器访问 python.org鼠标悬停在Downloads→ 点击Windows在页面中找到 Python 3.11.x如 3.11.9点击Windows installer (64-bit)下载双击安装包务必先勾选Add Python to PATH然后点击Install Now安装完成后按Win R输入cmd在命令行中输入python --version确认显示Python 3.11.x步骤 2安装 VS Code 编辑器访问 code.visualstudio.com点击下载Windows 版双击安装包一路点击“下一步”完成安装打开 VS Code点击左侧扩展商店图标或按Ctrl Shift X在搜索框输入Python找到微软官方发布的 Python 插件点击安装 阶段二创建项目文件夹在电脑任意位置如F:\AI\新建一个文件夹命名为RAG打开 VS Code点击File → Open Folder选择刚才创建的 RAG 文件夹按Ctrl 打开终端此时终端路径应显示为PS F:\AI\RAG 阶段三安装所有依赖库在 VS Code 终端中按顺序执行以下命令1. 升级 pip让安装更顺畅py-mpipinstall--upgradepip setuptools wheel2. 安装核心依赖py-mpipinstallnumpy --only-binary :all: py-mpipinstalllangchain langchain-community langchain-text-splitters langchain-huggingface langchain-openai langchain-classic chromadb tiktoken sentence-transformers各依赖库的作用说明numpyPython 科学计算基础库为向量计算提供底层支持langchainLangChain 核心框架提供构建 LLM 应用的基础组件langchain-community社区维护的第三方集成和工具langchain-text-splitters文本分割器用于将长文档切分为适合处理的片段langchain-huggingfaceHuggingFace 模型集成用于加载本地 embedding 模型langchain-openaiOpenAI 兼容接口用于连接 DeepSeek、硅基流动等 APIlangchain-classic包含经典的 Chain 实现如 RetrievalQAchromadb轻量级向量数据库用于存储和检索文档向量tiktokenOpenAI 的分词器用于计算 token 数量sentence-transformersSentence Transformers 模型库提供文本 embedding 功能⏱️ 这个过程可能需要几分钟耐心等待即可。 阶段四创建测试文档在 VS Code 左侧资源管理器空白处右键 →新建文件命名为my_knowledge.txt双击打开复制以下内容进去公司内部规定所有员工每周五下午需要提交周报。 项目名称RAG 知识库搭建项目。 项目截止日期为 2026 年 7 月 30 日。 公司福利包括每年一次的健康体检和每年一次的团建旅游。 团队负责人的名字是张三如果有问题可以直接找他。按Ctrl S保存 阶段五编写并运行 RAG 检索脚本仅检索无需 API1. 新建文件 test_retrieval.py在左侧资源管理器空白处右键 →新建文件命名为test_retrieval.py2. 复制以下代码importos# 使用国内镜像加速下载模型os.environ[HF_ENDPOINT]https://hf-mirror.comfromlangchain_community.document_loadersimportTextLoaderfromlangchain_text_splittersimportRecursiveCharacterTextSplitterfromlangchain_huggingfaceimportHuggingFaceEmbeddingsfromlangchain_community.vectorstoresimportChromaprint(1. 正在加载并分割文档...)loaderTextLoader(my_knowledge.txt,encodingutf-8)docsloader.load()splitterRecursiveCharacterTextSplitter(chunk_size500,chunk_overlap50)textssplitter.split_documents(docs)print(2. 正在生成向量索引首次运行会自动下载约 80MB 的模型请稍等...)embeddingsHuggingFaceEmbeddings(model_namesentence-transformers/all-MiniLM-L6-v2)dbChroma.from_documents(texts,embeddings)print(3. 开始检索...)query项目的截止日期是哪一天resultsdb.similarity_search(query,k2)print(\n*30)print(检索结果如下)fori,docinenumerate(results):print(f--- 找到的第{i1}个相关片段 ---)print(doc.page_content)print(-*30)3. 运行脚本在终端中输入py test_retrieval.py4. 预期结果程序会下载约 80MB 的模型文件然后输出 检索结果如下 --- 找到的第 1 个相关片段 --- 公司内部规定所有员工每周五下午需要提交周报。 项目名称RAG 知识库搭建项目。 项目截止日期为 2026 年 7 月 30 日。 公司福利包括每年一次的健康体检和每年一次的团建旅游。 团队负责人的名字是张三如果有问题可以直接找他。 ------------------------------✅ 看到这个结果说明 RAG 检索功能已完全跑通 阶段六编写并运行完整 RAG 问答脚本需要 API1. 注册并获取 API 密钥二选一选项 ADeepSeek推荐质量高访问 platform.deepseek.com手机号注册登录点击左侧API Keys→ 创建 API Key复制sk-开头的密钥⚠️ 注意新账号需确认是否有免费额度若无需充值最低 10 元选项 B硅基流动 SiliconFlow零成本访问 siliconflow.cn 注册进入API Keys创建密钥新用户赠送 2000 万 tokens复制sk-开头的密钥2. 新建文件 test_rag.py3. 复制以下代码根据你选的平台修改对应部分importos os.environ[HF_ENDPOINT]https://hf-mirror.comfromlangchain_community.document_loadersimportTextLoaderfromlangchain_text_splittersimportRecursiveCharacterTextSplitterfromlangchain_huggingfaceimportHuggingFaceEmbeddingsfromlangchain_community.vectorstoresimportChromafromlangchain_openaiimportChatOpenAIfromlangchain_classic.chainsimportRetrievalQAprint(*30)print( 正在启动完整 RAG 问答系统...)print(*30)# # 1. 配置大模型根据你的平台选择一种# # --- 选项ADeepSeek ---llmChatOpenAI(modeldeepseek-chat,temperature0.7,openai_api_key这里填你的DeepSeek密钥,openai_api_basehttps://api.deepseek.com/v1)# --- 选项B硅基流动 SiliconFlow ---# llm ChatOpenAI(# modelQwen/Qwen2.5-7B-Instruct,# temperature0.7,# openai_api_key这里填你的硅基流动密钥,# openai_api_basehttps://api.siliconflow.cn/v1# )# # 2. 加载并分割文档# loaderTextLoader(my_knowledge.txt,encodingutf-8)docsloader.load()splitterRecursiveCharacterTextSplitter(chunk_size500,chunk_overlap50)textssplitter.split_documents(docs)# # 3. 向量化存储# print( 正在加载向量数据库...)embeddingsHuggingFaceEmbeddings(model_namesentence-transformers/all-MiniLM-L6-v2)dbChroma.from_documents(texts,embeddings)# # 4. 创建问答链# qa_chainRetrievalQA.from_chain_type(llmllm,chain_typestuff,retrieverdb.as_retriever())# # 5. 提问# print(\n*30)query我们公司有什么福利print(f❓ 提问{query})resultqa_chain.invoke({query:query})print(f AI 回答{result[result]})4. 运行脚本py test_rag.py5. 预期结果❓ 提问我们公司有什么福利 AI 回答公司福利包括每年一次的健康体检和每年一次的团建旅游。本例子使用的是选项B硅基流动 SiliconFlow✅ 看到这个结果说明完整的 RAG 问答系统已完全跑通 常见报错及解决方案报错信息原因解决方法ModuleNotFoundError: No module named sentence_transformers缺少库执行py -m pip install sentence-transformersError code: 402 - Insufficient BalanceAPI 账户余额不足充值 DeepSeek 或 换用硅基流动[WinError 10054] 远程主机强迫关闭连接无法访问 HuggingFace 官网在代码开头添加os.environ[HF_ENDPOINT] https://hf-mirror.comImportError: cannot import name ChatOpenAI导入路径错误改为from langchain_openai import ChatOpenAIModuleNotFoundError: No module named langchain.chains模块路径变更改为from langchain_classic.chains import RetrievalQA模型下载卡住不动网络慢耐心等待 3-5 分钟或使用镜像站 总结你已经成功完成了以下所有步骤✅ 安装了 Python 3.11 和 VS Code✅ 安装了所有 RAG 相关依赖库✅ 创建了测试文档my_knowledge.txt✅ 运行了仅检索脚本test_retrieval.py验证了向量搜索✅ 运行了完整问答脚本test_rag.py实现了基于文档的 AI 问答你现在可以修改my_knowledge.txt里的内容换成你自己的资料修改query变量里的问题问任何你想问的问题把更多文档放在同一个文件夹里扩展知识库