what is rag?

Rag

Rag:Retrieval Augmented Generation

什么是RAG?

假如你是一位导游, 但是对景点并不熟悉,你通过查询资料来完成导游工作,此时你更像是一个知识的总结者。同样的,给大模型配置知识库,让它参考查询到的信息回答原本无法回答的问题,这种结合了传统的信息检索与文本生成的方法就是检索增强生成

这里存在两种知识库形式

  1. 统一配置的知识库,比如像常见的阿里云官网的agent,它配置了相关产品的知识库,因此提问时可以做出相应的回答
  2. 支持用户上传个性化资料,来满足个性化业务的需求,也就是允许用户搭建私域知识库
    这两种方式都是通过知识库来增强大模型能力,减少”幻觉”回答的情况

RAG包括三个步骤:

  • 索引,建立知识库的过程就是给知识索引
  • 检索,大模型根据问题检索知识库
  • 生成,根据检索到的资料进行思考生成结果
    具体来说:
  1. 建立索引。清洗和提取原始数据,将PDF、Docx等不同格式的文件解析为纯文本数据,然后将文本数据分割成更小的chunk,进入嵌入模型转化为向量数据(embedding),以便后续检索

  2. 检索生成。系统会获取到用户输入,随后计算出用户的问题与向量数据库中的文档快的相似度,选择相似度最高的K个文档块作为回答当前问题的知识。知识与问题会合并到提示词模板中提交给大模型,大模型给出回复,这就是检索生成的过程

    提示词模板: 请阅读:{knowledge}, 请问:{question}

增强RAG能力

  1. 提高索引准确率
  • 优化文本解析
  • 优化chunk切分
  • 句子滑动窗口检索
  • 自动合并检索
  1. 让问题更好理解
  • Enrich完善用户问题
  1. 改造信息抽取途径
  • 互联网搜索
  1. 回答前反复思考
  • Self-RAG