大模型RAG (一)
一、RAG介绍1、LLM的缺陷LLM的知识不是实时的不具备知识更新.LLM可能不知道你私有的领域/业务知识.LLM有时会在回答中生成看似合理但实际上是错误的信息。2、为什么会用到RAG减少幻觉Hallucination回答基于真实资料大幅降低 AI 编造事实的概率。知识实时更新只需更新外部文档库无需重新训练昂贵的大模型。接入私有数据让通用 AI如 GPT使用企业内部文件、客户数据等私有知识。可追溯、可验证回答可附带来源链接 / 文档方便审核与查证。成本更低相比全量微调Fine-tuningRAG 是更经济的领域适配方案。总之提高准确性通过检索相关的信息RAG可以提高生成文本的准确性。减少训练成本与需要大量数据来训练的大型生成模型相比RAG可以通过检索机制来减少所需的训练数据量从而降低训练成本。适应性强RAG模型可以适应新的或不断变化的数据。由于它们能够检索最新的信息因此在新数据和事件出现时它们能够快速适应并生成相关的文本。3、RAG 定义RAG (Retrieval Augmented Generation 检索增强生成)是一种让大语言模型LLM在回答问题时先从外部知识库检索相关信息再基于检索到的内容生成回答的 AI 技术框架。简单来说就是让模型 **“开卷考试”**先查资料再作答4、RAG vs. 传统搜索 vs. 模型微调传统搜索返回文档片段需要用户自己阅读总结RAG直接返回自然语言答案。纯 LLM知识有截止日期、易编造RAG基于外部实时 / 私有数据。模型微调Fine-tuning修改模型权重、成本高、难更新RAG外挂知识库、成本低、易更新。RAG文档2312.109975、核心工作流程RAG 主要分为离线构建与在线查询两大阶段1. 离线构建知识库Indexing文档处理将 PDF、Word、网页等资料切割成小文本块Chunk。向量化Embedding用 Embedding 模型将每个文本块转换成数值向量代表语义。存储将向量与原文存入向量数据库Vector DB2. 在线查询与生成检索Retrieval用户提问 → 问题向量化 → 在向量库中做语义相似度搜索→ 找出最相关的几段文本。增强Augmentation将用户问题 检索到的参考资料拼接成一个新的 Prompt。生成Generation将 Prompt 送入 LLM模型严格依据参考资料生成最终回答。6、典型应用场景企业智能客服基于产品手册、内部规章回答员工 / 客户问题。法律 / 医疗助手引用法条、病历、文献生成专业分析。学术研究总结论文、基于最新文献回答专业问题。个人知识库基于自己的笔记、邮件、资料进行问答。7、核心技术栈简版向量数据库Milvus, FAISS, Pinecone, ChromaEmbedding 模型text-embedding-ada-002, BGE, E5LLMGPT-4o, Claude 3, Llama 3, 通义千问框架LangChain, LlamaIndex二、完整走一遍RAG检索增强生成流程。场景用公司内部产品手册做一个智能问答客服。一、先明确目标用户问“咱们这款智能门锁支持指纹解锁吗最多能录几个指纹”纯大模型会瞎编幻觉RAG 会先去查手册 → 再回答。二、第 1 步准备知识库离线你有一份智能门锁产品手册.pdf1. 文档切分Chunking把长 PDF 切成小段比如chunk1产品外观、材质chunk2解锁方式指纹、密码、NFCchunk3指纹录入上限说明chunk4电池续航...2. 向量化Embedding把每个 chunk 变成一串数字向量语义向量。比如“指纹最多支持 50 个” →[0.12, 0.45, 0.67, ...]3. 存入向量数据库把向量 原文一起存起来方便后面快速检索。三、第 2 步用户提问在线用户问题“智能门锁支持指纹吗能录多少个”1. 问题向量化把问题也变成向量[0.11, 0.46, 0.68, ...]2. 向量检索最关键一步系统在向量库里找最相似的 chunks最相似chunk2解锁方式次相似chunk3指纹上限返回结果chunk2本门锁支持指纹、密码、NFC 三种解锁方式。chunk3指纹最多支持录入 50 个。三、第 3 步构造 Prompt增强把问题 检索到的资料一起喂给大模型请根据以下资料回答问题不要编造。资料1. 本门锁支持指纹、密码、NFC 三种解锁方式。2. 指纹最多支持录入 50 个。问题智能门锁支持指纹吗能录多少个四、第 4 步大模型生成回答模型输出这款智能门锁支持指纹解锁最多可以录入 50 个指纹。这就是 RAG检索 → 增强 → 生成五、RAG 检索增强生成 标准技术架构框图六、RAG 干了啥传统 LLM闭卷考试容易瞎编RAG开卷考试先查资料再答题一句话极简版先查资料 → 再给答案检索 查书增强 把书里内容放进问题里生成 AI 整理成通顺回答先外挂知识库检索 → 再把资料喂给模型 → 最后生成可靠回答三、RAG系统搭建流程英文术语中文释义User用户Query查询Input输入Output输出Knowledge base知识库loader加载Documents文档Spliter切分document snippets文档片段Embedding Machine嵌入器Embeddings向量化Vetor Database向量数据库Similarity query相似度查询Relevant Snippets相关片段Combine Context and Prompt结合上下文和提示Indexing索引Retrieval检索索引(Indexing)索引首先清理和提取各种格式的原始数据如PDF、HTML、Word、Markdown然后将其转换为统一的纯文本格式。为了适应语言模型的上下文限制文本被分割成更小的、可消化的块【chunk】。然后使用嵌入模型将块编码成向量表示并存储在向量数据库中。这一步对于在随后的检索阶段实现高效的相似性搜索至关重要。知识库分割成chunks并将chunks向量化至向量库中。检索(Retrieval)在收到用户查询(Query)后RAG系统采用与索引I阶段相同的编码模型将查询转换为向量表示然后计算索引语料库中查询向量与块向量的相似性得分。该系统优先级和检索最高k(Top-K)块显示最大的相似性查询。例如二维空间中的向量可以表示为(x,y)表示从原点0,0)到点(x,y的有向线段1.将文本转成一组浮点数每个下标i对应一个维度2.整个数组对应一个n维空间的一个点即文本向量又叫Embeddings3.向量之间可以计算距离距离远近对应语义相似度大小