
目录RAG的工作流程知识库的构建调用RAG的目标如何提高Query和知识库的匹配度如何优化Query如何优化知识库扩展Embedding模型RAG的工作流程上一节内容如何与大模型交互从提示词工程到RAG介绍到了RAGRetrieval-AugmentedGeneration检索增强生成。实际上只要是先搜索再把搜索到的信息用来辅助回答问题都叫做检索增强生成如跟豆包对话互联网搜索Sql语句查询等等。大模型中的RAG是指给大模型外挂一个知识库提问的时候先查资料再让大模型照着资料回答问题。核心就两个大步骤一个叫构建知识库一个叫调用。我们用下面这张图去讲讲这两个大步骤知识库的构建如上图中虚线框中的步骤就是是构建知识库了。它里面又分了如下三个步骤1整理文档Documents收集各种各样不同类型的原始文档格式包含 Word、PDF、PPT、Excel、图片、视频、网页等。通过人工或者AI辅助去做处理把它们全部都处理成纯文字格式。2文本切片Chunk / Chunking将处理完成的大段纯文字切分成一个个独立的知识切片。切片字数范围一般一两百字两三千字常用 六百~八百 字切片的原则是尽量让每一个切片能够独立完整表述一个主题或者讲清一件事情人工、代码、AI 辅助均可参与切片工作。3存入向量数据库Vector DataBase我们需要用到Embedding模型将知识切片转化成数学向量存入向量数据库中。所谓的数学向量就是一串数字用数学的语言描述了你原本的那段文字。每一条数学向量和你的每一个文字的知识切片都是一一对应的关系且它极大程度地包含了原本那段文字里面要表达的语言的意思。调用1用户提问Query用户的Query是一个问题或者是一个任务将这段文字描述送入Embedding模型必须要和生成知识库的Embedding模型一致生成代表问题语义的数学向量。2向量数据库相似度检索Retrive拿着问题向量和向量数据库里预先存储的向量逐一计算相似度系数得到0~1之间的一个数值数值越接近 1 代表内容越匹配。筛选出相似度较高的向量再通过向量与知识切片一一对应的映射关系还原出对应的原始文本知识切片。不存在完全没有相似度的情况只会出现相似度偏低。一条数学向量跟几千条数学向量去比较相似度计算量虽然大但是一点都不慢。原因就是这个向量数据库对这种向量检索的过程专门做了索引做了加速。所以你哪怕是上百万条它的检索速度都不会特别慢。3提示词拼接Augment将①系统提示词System Prompt②检索得到的相关知识切片文本Relevent Context ③用户原始提问Query这三部分的内容拼接成最终的提示词。4交给大模型LLM生成答案Generate将拼接完成的完整提示词交给大语言模型如豆包等由大模型输出回答返回给用户。RAG的目标如何提高Query和知识库的匹配度这个RAG的最终目标就是希望左边的用户Query能够检索出能真正跟它问题相关的知识切片即相似度系数比较高用以辅助大模型给用户输出精确的回复。想要提升用户Query与知识库切片的匹配效果不能只优化知识库一侧用户 Query和知识库两边都要做优化两者策略要互相匹配。如何优化Query用户原始提问经常存在缺陷缺少主语、依赖对话上下文、对比类问题、多问题连环提问、反问句式等直接拿去检索知识库效果很差。在标准 RAG 检索之前增加一个小 AgentAgented RAG对原始问题做改写、补全。如何优化知识库知识库的匹配的内容和回答的质量息息相关我们需要梳理该业务场景下用户的问题及情况收集的资料要尽量能够覆盖业务场景的情况。虽然写的很简单但是RAG的优化工作是无穷的比如有一天收集到100个用户问题有30个问题在搜索的时候知识库匹配的相关度系数比较高还有40个问题在搜索的时候知识库匹配的相关度系数比较低。那么就应该把这些问题导出来去分析原因并不断迭代知识库。扩展Embedding模型Embedding模型是一种专门的向量化模型它跟我们平时用的豆包、DeepSeek、通义千问这些不太一样。我们平时用的豆包通义千问这个叫大语言模型。就跟大语言模型一样。Embedding模型也有很多种有阿里巴巴提供的Embedding模型有字节跳动提供的Embedding模型我们都是要做选型的不同的Embedding模型也有不同的功能和作用。