RAG 检索增强生成(全链路) 目录一、什么是RAG(Retrieval-augmented Generation)二、核心流程三、从零实战1. 环境准备2. 准备你的资料3. 代码4. 运行结果四、RAG全链路1. 文档切分切块2. Embedding 向量化3. 向量库存储4. 语义检索5. LLM生成回答必备5个工具全免费实操最容易踩的坑一、什么是RAG(Retrieval-augmented Generation)RAG 给大模型配个专属“参考书”模型不再瞎编而是先从你上传的文档里查答案再组织语言回复专治幻觉、不懂私域数据、知识过时。二、核心流程把你的文档PDF/TXT/MD切成小段转成向量存在本地库你提问 → 系统去库里找最相关的段落把段落问题丢给大模型 → 模型照着回答三、从零实战1. 环境准备装必备包一行命令pipinstalllangchain langchain-community chromadb sentence-transformers2. 准备你的资料新建一个info.txt内容如下本公司主营企业级软件开发与数字化咨询服务主要产品包括企业管理系统、数据可视化平台、智能客服系统三类。 企业管理系统支持财务核算、人事管理、供应链协同功能适配生产制造、商贸流通、现代服务等行业。 数据可视化平台可对接MySQL、PostgreSQL等主流数据库支持实时数据看板、多维度报表分析。 智能客服系统具备意图识别、多轮对话、知识库自动检索能力可降低企业人工客服成本60%以上。 公司服务标准为工作日9:00-18:00技术支持需求响应时效不超过4小时提供远程部署与现场培训服务。3. 代码fromlangchain.document_loadersimportTextLoaderfromlangchain.text_splitterimportRecursiveCharacterTextSplitterfromlangchain.embeddingsimportHuggingFaceEmbeddingsfromlangchain.vectorstoresimportChromafromlangchain.chainsimportRetrievalQAfromlangchain.llmsimportTongyi# 1. 加载你的文档loaderTextLoader(info.txt,encodingutf-8)docsloader.load()# 2. 切分成小块splitterRecursiveCharacterTextSplitter(chunk_size200,chunk_overlap0)splitssplitter.split_documents(docs)# 3. 向量化 存入本地向量库embHuggingFaceEmbeddings(model_nameall-MiniLM-L6-v2)dbChroma.from_documents(splits,emb)retrieverdb.as_retriever()# 4. 接入大模型这里用通义千问填自己的API KeyllmTongyi(dashscope_api_key你的API_KEY,model_nameqwen-turbo)# 5. 组装RAG链ragRetrievalQA.from_chain_type(llmllm,chain_typestuff,retrieverretriever)# 6. 提问测试question公司的智能客服系统能带来什么效果print(rag.run(question))4. 运行结果模型会严格按你写的文档回答公司的智能客服系统具备意图识别、多轮对话、知识库自动检索能力可降低企业人工客服成本60%以上。四、RAG全链路文档切分→Embedding→向量库→检索→生成1. 文档切分切块解释把长篇大论拆成一小段一小段短文例子一本说明书、合同、笔记、PDF直接整篇太长没法用切成300-800字小片段目的片段短好查找信息集中不会杂乱小技巧切块留一点重叠内容防止关键句子被一刀切断丢信息2. Embedding 向量化解释Embedding 就是把文字、图片等东西转换成计算机能理解的数字向量一串数字。原理AI看不懂纯文字只能认数字意思越相近的文字数字密码越像举例“今天天气很好” 【1,3,5,7…】“今日天气不错” 【1.1,3.2,5.0,7.1…】两句数字几乎一致作用把所有文本块全部转成数字为快速搜索做准备3. 向量库存储解释专门放「文字片段对应数字密码」的专属仓库和普通数据库区别普通库搜关键词向量库搜语义相似度通俗理解把所有转好的数字密码整齐入库建好索引方便一秒查找新手首选轻量库Chroma、FAISS免安装、零配置4. 语义检索解释用户提问AI去仓库里找最匹配的资料用户输入问题把问题同样转成数字密码向量库对比所有库存数字捞出意思最接近的3-5段原文资料只拿有用素材过滤无关内容5. LLM生成回答解释拿着找到的真实资料让大模型整理成通顺答案固定指令约束只允许用检索到的资料回答不准自己瞎编知识流程用户问题 找到的参考文档 → 丢给大模型 → 输出精准答案必备5个工具全免费文档读取读PDF/Word/TXT文本分割LangChain分割器一键切块嵌入模型Embedding本地免费BGE-M3不用付费接口向量库Chroma最简单一行代码启动大模型本地通义千问/DeepSeek离线可用实操最容易踩的坑切块太大回答杂乱无重点切块太小信息残缺答不全检索片段太多上下文过长模型混乱不加限制词模型脱离资料自由发挥瞎编不用本地Embedding依赖外网接口慢还花钱