一、WhatRAG到底是什么大白话解释想象一下你正在参加一场重要考试。传统的学习方法是死记硬背教科书的内容传统方式是死记硬背教材答题全靠记忆但如果允许你带资料进考场遇到不确定的问题就可以翻阅相关内容给出更准确的回答。RAG技术正是这样工作的传统 AI仅依赖训练时“记住”的知识如同闭卷考试RAG增强的AI先搜索相关资料再基于搜索结果回答问题就像开卷考试RAGRetrieval-Augmented Generation检索增强生成本质上是一种让大模型“边查资料边回答”的技术。它的核心理念很简单不靠死记硬背而是现查现答。正如 IBM 和 Google 所指出的RAG 通过连接外部知识库使 AI 的回答更准确、及时、可溯源——而这恰恰是通用大模型最欠缺的三大能力。既然 RAG 能补足大模型的短板那它到底解决了哪些实际问题为什么越来越多的团队开始拥抱这项技术二、Why为什么需要RAG尽管大模型在许多任务上表现卓越但仍存在明显短板而 RAG 正好能有效弥补这些不足。知识时效性有限模型训练完成后知识就“冻结”了。例如ChatGPT 无法回答 2023 年 10 月之后发生的“东方甄选小作文”事件。RAG 通过接入实时知识库轻松突破这一限制。无法访问私有数据企业内部文档、个人笔记等私域信息无法被通用模型学习。本地部署 RAG 系统就能安全地利用这些专属知识。可解析性RAG检索结果提供事实依据减少猜测性回答。同时生成答案可标注来源文档增强可信度。缺乏可解释性传统大模型常“一本正经地胡说八道”。RAG 的答案基于真实文档还能标注来源显著提升可信度。成本更优相比为私有知识微调模型所需的大量标注数据和算力RAG 以极低代价实现了知识的动态注入。综合来看RAG 不仅缓解了大模型的幻觉问题还支持按需定制专业回答在效果与成本之间找到了理想平衡点。看到这里你可能会想RAG 听起来很强大但它是大公司的专利吗普通人能用得上吗三、Who个人和团队也能玩转RAG虽然企业级 RAG 系统开发复杂但对个人或小团队而言搭建一个轻量级 RAG 知识库完全可行——尤其当你资源有限、目标明确时。需求明确规模可控你可能只需从几份笔记、文档或网页中提取信息根本不需要处理复杂的多源数据集成问题。工具成熟上手门槛低 LangChain、LlamaIndex、FAISS 等开源框架已高度封装即使没有深厚技术背景也能快速入门。成本低灵活性强利用现有电脑或免费云资源即可开发测试功能也可随需求逐步扩展边做边学加深理解亲手搭建过程能让你深入掌握 RAG 的数据流、检索逻辑与优化技巧。当然也要注意几点数据质量确保数据的准确性和完整性避免“垃圾进垃圾出”。模型选择选择合适的预训练模型避免不必要的复杂度。持续优化定期评估系统的性能优化和调整系统。隐私与安全处理敏感数据时要注意加密和访问控制避免信息泄露。四、When什么时候用RAG什么时候用微调选择 RAG 还是微调关键看三点1、看数据数据更新频繁如新闻、商品信息→ 选 RAG任务高度专业化且有标注数据如法律文书分类→ 选微调2、看预算与资源预算有限用RAG更划算搭建RAG系统的成本可能只有微调的1/5。预算充足可以尝试混合方案。先用RAG处理日常问题再用微调优化复杂任务成本降低效率提升。3、看应用场景需要实时响应如电商客服→ RAG 更合适有案例显示响应时间从 30 秒缩短至 1 秒需要深度专业输出如学术综述→ 微调更可靠某高校医学院微调模型生成的内容被评价为“接近研究生水平”。最佳实践是互补而非二选一用 RAG 保证事实准确性用微调提升表达质量。未来趋势正是“RAG 微调”的组合拳五、WhereRAG真实行业案例RAG 尤其适用于对准确性高、内容更新快的场景。以下是几个典型应用智能客服客户咨询退换货政策时系统实时检索最新文档确保回答精准无误。企业知识管理摩根士丹利为 16,000 多名顾问部署 GPT-4 助手支持搜索 10 万份内部文档大幅提升新人培训效率。金融合规摩根大通利用 RAG 自动分析 KYC 文件处理效率提升 90%用更少人力完成更多任务同时降低合规风险。医疗辅助某大型医院构建医学知识库医生输入症状后系统自动匹配最新指南与文献辅助诊断并减少误判。教育培训在线平台通过 RAG 为学生提供精准答疑根据学习水平动态调整解释深度显著提升参与度与满意度。这些成功案例背后RAG 系统究竟是如何一步步搭建起来的如果你也想动手试试接下来我们就拆解它的完整构建流程。六、How如何构建RAG系统RAG 的工作流程可分为两个阶段、五个关键步骤准备阶段提问前1️⃣ 文档分片Document Chunking目的将长文档切分成易于处理的小片段就像整理一本厚厚的百科全书我们需要把它按章节、段落或页面分成小部分按字数分比如每1000字一个片段按段落分一个段落一个片段按章节分一个章节一个片段按主题分相关内容归为一个片段2️⃣ 向量索引Vector Indexing目的将文本转换为计算机能理解的”数字指纹”这个过程包含三个核心概念向量Vector简单理解每个文本片段的”数字指纹”技术表示一串数字如[1.0, 2.3, 5.76, -3.6]重要特性含义相近的文本其向量在数学空间中距离很近嵌入Embedding定义把文本转换为向量的过程举例 - “马克喜欢吃水果” → [1, 2] - “马克爱吃水果” → [1, 1]距离很近 - “天气真好” → [-3, -1]距离较远向量数据库Vector Database作用专门存储这些”数字指纹”的仓库内容文本内容 对应的向量优势可以快速找到相似的内容回答阶段提问后3️⃣ 语义检索Semantic Retrieval目的从海量信息中找到最相关的内容当用户提出问题时问题转向量将用户问题转换为向量相似度计算计算问题向量与所有文档向量的相似度初步筛选选出最相关的Top-10个片段相似度计算方法余弦相似度计算向量夹角夹角越小越相似欧氏距离计算直线距离距离越小越相似点积代数计算方法结果越大越相似4️⃣ 结果重排Re-ranking目的从初选结果中精挑细选最佳答案这就像招聘过程检索阶段简历筛选快速、低成本、准确率一般重排阶段面试评估慢速、高成本、准确率高通过Cross-encoder模型对Top-10结果进行精确评估选出最相关的3-5个片段。5️⃣ 答案生成Answer Generation目的基于精选的参考材料生成最终答案将用户问题 精选的文档片段一起发送给大语言模型如GPT-4o生成准确、有依据的最终答案。逐步构建RAG系统一设置环境构建RAG系统需要使用多个Python库包括langchain、langchain-core、langchain-community、langchain-experimental、pymupdf、langchain-text-splitters、faiss-cpu、langchain-ollama、langchain-openai等。这些库各自承担着不同的功能LangChain提供了构建大语言模型应用的整体框架和组件简化了开发流程。PyMuPDF能够从PDF文档中提取文本支持多种PDF特性的处理。FAISS为向量数据库提供高效的相似性搜索能力。Ollama和OpenAI集成允许使用不同的语言模型为用户提供了更多选择。可以使用pip命令安装这些库pip install langchain langchain-core langchain-community langchain-experimental pymupdf langchain-text-splitters faiss-cpu langchain-ollama langchai二组件1PDF加载器from langchain_community.document_loaders import PyMuPDFLoader class PdfLoader: def __init__(self): pass def read_file(self, file_path): loader PyMuPDFLoader(file_path) docs loader.load() return docs上述代码定义了一个PdfLoader类其read_file方法使用PyMuPDFLoader从指定的PDF文件路径中加载文档。PyMuPDFLoader基于PyMuPDF库也称为fitz能够高效地处理各种PDF特性包括文本、表格甚至通过OCR处理一些图像。load()方法返回一个Document对象列表每个对象代表PDF文件中的一页包含提取的文本内容page_content和元数据metadata如源文件路径和页码。在实际应用中可扩展该类以处理其他文档类型。三组件2文本分块from langchain_text_splitters import RecursiveCharacterTextSplitter from langchain_core.documents import Document class Chunker: def __init__(self, chunk_size1000, chunk_overlap100): self.text_splitter RecursiveCharacterTextSplitter( separators[\n\n, \n, , ., ,, \u200b, \uff0c, \u3001, \uff0e, \u3002, ], chunk_sizechunk_size, chunk_overlapchunk_overlap, length_functionlen, is_separator_regexFalse ) def chunk_docs(self, docs): list_of_docs [] for doc in docs: tmp self.text_splitter.split_text(doc.page_content) for chunk in tmp: list_of_docs.append( Document( page_contentchunk, metadatadoc.metadata ) ) return list_of_docsChunker类负责将加载的文档分割成较小的文本块。在初始化时通过设置chunk_size默认1000个字符和chunk_overlap默认100个字符来控制分块的大小和重叠程度。RecursiveCharacterTextSplitter使用一系列分隔符包括段落分隔符、换行符、空格、标点符号等来分割文本优先在自然边界处分割。chunk_docs方法对输入的文档列表进行处理为每个文本块创建新的Document对象并保留原始文档的元数据。四组件3向量存储import faiss from langchain_community.docstore.in_memory import InMemoryDocstore from langchain_community.vectorstores import FAISS from langchain_ollama import OllamaEmbeddings from uuid import uuid4 class VectorStore: def __init__(self): self.embeddings OllamaEmbeddings(modelllama3.2:3b) self.index faiss.IndexFlatL2(len(self.embeddings.embed_query(hello world))) self.vector_store FAISS( embedding_functionself.embeddings, indexself.index, docstoreInMemoryDocstore(), index_to_docstore_id{} ) def add_docs(self, list_of_docs): uuids [str(uuid4()) for _ in range(len(list_of_docs))] self.vector_store.add_documents(documentslist_of_docs, idsuuids) def search_docs(self, query, k5): results self.vector_store.similarity_search( query, kk ) return resultsVectorStore类是检索系统的核心。在初始化时创建一个OllamaEmbeddings嵌入模型这里使用llama3.2:3b模型并基于FAISS创建一个用于L2距离计算的索引同时初始化一个包含嵌入函数、索引和文档存储的向量存储。add_docs方法为每个文档生成唯一ID并将文档添加到向量存储中向量存储会计算文档内容的嵌入并进行索引。search_docs方法将输入的查询转换为嵌入在向量存储中执行相似性搜索并返回最相似的k个文档。在实际生产中可考虑使用持久化向量存储、添加元数据过滤功能或实现混合搜索。五组件4RAG系统from langchain_core.prompts import PromptTemplate from langchain_openai import OpenAI from langchain_ollama import OllamaLLM from pdf_loader import PdfLoader from vector_store import VectorStore from chunk_text import Chunker class RAG: def __init__(self): self.instructor_prompt Instruction: Youre an expert problem solver you answer questions from context given below. You strictly adhere to the context and never move away from it. Youre honest and if you do not find the answer to the question in the context you politely say I Dont know! So help me answer the user question mentioned below with the help of the context provided User Question: {user_query} Answer Context: {answer_context} self.prompt PromptTemplate.from_template(self.instructor_prompt) self.llm OllamaLLM(modelllama3.2:3b) # OpenAI() self.vectorStore VectorStore() self.pdfloader PdfLoader() self.chunker Chunker() def run(self, filePath, query): docs self.pdfloader.read_file(filePath) list_of_docs self.chunker.chunk_docs(docs) self.vectorStore.add_docs(list_of_docs) results self.vectorStore.search_docs(query) answer_context \n\n for res in results: answer_context answer_context \n\n res.page_content chain self.prompt | self.llm response chain.invoke( { user_query: query, answer_context: answer_context } ) return response if __name__ __main__: rag RAG() filePath investment.pdf query How to invest? response rag.run(filePath, query) print(response)RAG类将前面构建的各个组件整合在一起形成一个完整的RAG系统。在初始化时定义一个指导语言模型的提示模板创建PromptTemplate对象并初始化语言模型、向量存储、PDF加载器和文本分块器。run方法实现了完整的RAG工作流程加载PDF文档分块处理添加到向量存储根据用户查询搜索相关文本块组合检索到的文本块形成上下文将提示模板与语言模型结合生成回答。在主程序中创建RAG实例指定PDF文件路径和查询运行系统并打印结果。七、总结RAG技术作为AI领域的重要突破为解决传统大语言模型的核心局限性提供了优雅的解决方案。通过“检索-增强-生成”的工作模式RAG让AI系统能够✅ 获取最新信息突破训练数据的时间限制✅ 提供准确答案基于真实数据减少幻觉✅ 降低使用成本优化计算资源利用效率✅ 增强可信度提供可追溯的信息来源从学术研究到产业应用从金融服务到医疗教育RAG技术正在各个领域展现出巨大的价值。随着技术的不断完善和生态的日趋成熟我们有理由相信RAG将成为构建下一代智能系统的核心技术之一。对于普通用户而言RAG技术意味着我们将拥有更智能、更可靠、更有用的AI助手。对于企业而言RAG技术为数字化转型和智能化升级提供了强有力的技术支撑。记住RAG 不是终点而是 AI 走向‘可信、可用、可控’的关键一步。而你已经站在了这场变革的起点。普通人如何抓住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扫描下方二维码即可加上后会一个个给大家发【附赠一节免费的直播讲座技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等欢迎大家~】