RAG基础
目录
LLM的缺陷–为什么需要RAG?
- 大模型的知识源于pretrain阶段输入的语料,对于时效性较近的问题,会出现答案错误或过时。(可以重新训练模型或者微调,但是成本偏高)
- LLM的生成结果不可解释,RAG不仅给出答案,还可以给出每个答案的来源,可以溯源。
- RAG类似于外挂知识库,保密性更强,知识不会被训练到模型里。
RAG的基本工作流程
- 准备数据
- 从数据源提取数据
- 清洗数据并存储到数据库中(一些常见的如Faiss向量数据库,Elasticsearch数据库,Neo4j图数据库)
- 数据召回
- 根据用户输入的查询条件并从数据库中检索相关数据。
- 答案生成
- 利用检索到的数据和用户输入的查询条件生成输出结果。
RAG的优缺点
RAG的优点
- 高质量的答案生成,降低答案生成的幻觉。
- 利用了文档中相关的现有信息,减少编造信息的幻觉。
- 可扩展性。可以实时更新增加新数据
- 具有一定的可解释性。
- 可以追溯模型时从哪些文档里提取信息的。
- 成本效益。
RAG的缺点
- 答案依赖于检索模块的质量。
- 依赖于知识库内容,首先需要构建一个高质量的知识库。
- RAG需要线检索再生成,整体耗时会更长。
- 上下文窗口限制。相比较于直接把问题倒入 会附加知识库中的检索内容,增加输入大小,占用窗口大小 tokens消耗也增加。
RAG使用场景和面临的挑战
- 文档问答。如chatpdf之类。
挑战
- 相似度搜索的性能问题
- 开放式回答中,用llm生成的文本进行query的时候,检索的可靠性较低。
- 复杂的推理任务,使用相似度度量通常不足以应对推理任务。