目录

RAG基础

LLM的缺陷–为什么需要RAG?

  1. 大模型的知识源于pretrain阶段输入的语料,对于时效性较近的问题,会出现答案错误或过时。(可以重新训练模型或者微调,但是成本偏高)
  2. LLM的生成结果不可解释,RAG不仅给出答案,还可以给出每个答案的来源,可以溯源。
  3. RAG类似于外挂知识库,保密性更强,知识不会被训练到模型里。

RAG的基本工作流程

  1. 准备数据
    1. 从数据源提取数据
    2. 清洗数据并存储到数据库中(一些常见的如Faiss向量数据库,Elasticsearch数据库,Neo4j图数据库)
  2. 数据召回
    1. 根据用户输入的查询条件并从数据库中检索相关数据。
  3. 答案生成
    1. 利用检索到的数据和用户输入的查询条件生成输出结果。

RAG的优缺点

RAG的优点

  1. 高质量的答案生成,降低答案生成的幻觉。
    1. 利用了文档中相关的现有信息,减少编造信息的幻觉。
  2. 可扩展性。可以实时更新增加新数据
  3. 具有一定的可解释性。
    1. 可以追溯模型时从哪些文档里提取信息的。
  4. 成本效益。

RAG的缺点

  1. 答案依赖于检索模块的质量。
  2. 依赖于知识库内容,首先需要构建一个高质量的知识库。
  3. RAG需要线检索再生成,整体耗时会更长。
  4. 上下文窗口限制。相比较于直接把问题倒入 会附加知识库中的检索内容,增加输入大小,占用窗口大小 tokens消耗也增加。

RAG使用场景和面临的挑战

  1. 文档问答。如chatpdf之类。

挑战

  • 相似度搜索的性能问题
  • 开放式回答中,用llm生成的文本进行query的时候,检索的可靠性较低。
  • 复杂的推理任务,使用相似度度量通常不足以应对推理任务。

常见数据库

向量数据库(Faiss等)

搜索引擎 (Elsaticsearch,Solr等)

图数据库