当前位置: 首页 > news >正文

RAG(检索增强生成)详解:让大模型更“博学”更“靠谱”

1. 什么是 RAG?为什么需要它?

想象一下,你是一位学识渊博的专家,但被关在了一个没有互联网、没有书籍、没有最新资料的房间里。别人问你关于最近新闻或者某家公司内部文件的问题,你只能依靠自己的记忆(即模型训练时学到的知识)来回答,这显然不够准确和及时。

这就是传统大语言模型(如 ChatGPT 基于 GPT-3.5/4)的核心局限:

  1. 知识滞后性 (Static Knowledge): 模型的训练数据有截止日期,无法知晓之后的事件。

  2. 幻觉问题 (Hallucination): 当模型遇到其训练数据中未包含的内容时,可能会“编造”出看似合理但实则错误的答案。

  3. 无法访问私有/域外知识 (No Access to Private Data): 模型无法看到你的个人文档、公司内部wiki、数据库等非公开信息。

RAG (Retrieval-Augmented Generation,检索增强生成) 就是为了解决这些问题而诞生的。它相当于给这位“专家”配了一个强大的外部知识库助理和一套高效的检索工具。每当有问题来时,助理会先快速地去资料库(知识库)里查找最相关的资料,然后把资料和问题一起交给专家,专家再基于这些最新的、准确的资料来组织语言回答问题。

核心价值: 将LLM的通用推理能力与外部知识源的信息相结合,生成更准确、可追溯、时效性强的答案。

2. RAG 的工作流程(图文解析)

RAG 的工作流程可以清晰地分为两个主要阶段:数据索引准备(Indexing) 和 运行时检索与生成(Retrieval & Generation)

为了更直观地理解,我们先来看一张全局的工作流程图,它清晰地展示了RAG如何将外部知识库与LLM的生成能力相结合:

上述流程可以分解为以下几个关键环节:

阶段一:数据索引准备 (Indexing) - “修建图书馆”

这个阶段是离线进行的,目的是将杂乱无章的原始数据整理成一个LLM可以快速查询的结构化“图书馆”(即向量数据库)。

  1. 加载数据 (Loading): 从各种数据源(如PDF、Word、PPT、MySQL、网页、公司内部文档等)获取原始数据。

  2. 分割文档 (Splitting):将加载的长文档拆分成更小的、语义上有意义的“块”(Chunks)。这是因为LLM有上下文长度限制,且小块信息更易于精准检索。

  3. 嵌入向量化 (Embedding):使用嵌入模型(Embedding Model)(如 text-embedding-ada-002BGEM3E)将每个文本块转换成一个高维数值向量(Vector)。这个向量可以理解为该文本片段的“数学指纹”,语义相近的文本指纹也相近。

  4. 存储向量 (Storing): 将上一步生成的所有“向量-文本”对存储到向量数据库(Vector Database) 中。常见的向量数据库有 ChromaPineconeWeaviateQdrant 等

阶段二:运行时检索与生成 (Retrieval & Generation) - “问答过程”

这个阶段是在用户提问时实时发生的。

  1. 检索 (Retrieval)

    • 用户提问: 用户提出一个问题(Query)。

    • 查询向量化: 使用同一个Embedding模型将用户的问题也转换为一个查询向量(Query Vector)。

    • 相似性搜索: 将这个查询向量送到向量数据库中,进行相似度计算(通常使用余弦相似度等度量方法),找出与问题最相关的 Top-K 个文本块。

  2. 增强 (Augmentation)

    • 内容: 将上一步检索到的Top-K个文本块(Context)和用户的原始问题(Query)组合成一个增强后的提示(Prompt),递给大语言模型(LLM)。

    • 提示词模板(Prompt Template)示例:

      请严格根据以下提供的信息来回答问题。如果信息中不包含答案,请直接说“根据已有资料无法回答该问题”,不要编造。【提供的资料】
      {context}【问题】
      {question}
  3. 生成 (Generation)

    • 内容: LLM接收到这个精心设计的Prompt后,它会严格遵守指令,基于提供的资料(Context)而不是仅凭内部记忆来生成答案(Answer)。

    • 优势: 答案质量高、来源可追溯(可注明引用来源)、极大减少幻觉。

http://www.dtcms.com/a/496644.html

相关文章:

  • 我有域名怎么建网站鱼滑怎么制作教程
  • 萧县做网站的公司商城app官方下载
  • 网站弹广告是什么样做的辽阳做网站
  • 德州市德城区城乡建设局网站电子商务网页设计与制作课后作业
  • 网站中的滑动栏怎么做的asp网站路径
  • 深圳专业网站建设公网站建设系统怎么样
  • Python基础语法与数据类型详解2
  • AFL++测试工具
  • php做网站的支付功能公司建设网站的报告
  • 破解工业通信瓶颈:耐达讯自动化Modbus转Profinet网关连接驱动器的奥秘
  • 网站备案有幕布国家企业信用公示系统官方网站
  • 深圳高端网站建设网页设计如何优化网页
  • 崇川网站建设网站建设与管理心得体会和总结
  • 美食网站网站建设定位郴州市人力资源网官网
  • 芜湖网站建设芜湖厦门公共资源交易中心
  • 小杰-自然语言处理(two)——RNN系列——RNN为什么能做时序预测
  • Android Studio JAVA开发按钮跳转功能
  • 五华网站建设wordpress视频商店
  • 个人做网站怎么赚钱企业如何网络营销推广
  • 路由器屏蔽网站怎么做具有营销型网站的公司
  • 企业网站建设要素建设公司官网的请示
  • 苏州网站建设哪里好个人网站 费用
  • 位操作符a
  • GaussDB 应用侧报no pg_hba.conf entry for host处理方法
  • Linux中内存初始化mem_init函数的实现
  • 怎么做微信钓鱼网站吗有哪些设计好看的企业官网
  • html做的网页怎么变成网站seo分析网站
  • 沈阳网站建设技术公司怎么登陆自己的公司网站
  • nextjs前端工程如何打包部署(nginx)
  • 网站设计与建设的阿里巴巴代加工平台