Toc
  1. 为什么要 RAG
  2. RAG 流程图
    1. 非结构化数据处理
    2. 索引indexing
    3. 检索search
    4. prompt combine
    5. 其他
Toc
0 条结果
lllyyb
RAG 普通流程
2024/03/03   592 字 rag

为什么要 RAG

  • LLM 知识是有时间节点的
  • LLM 输入的token是有限的
  • LLM 可能会出现幻觉,但可以通过prompt来解决(阅读理解的能力还不错)

RAG 流程图

检索增强生成(RAG) 是一种使用来自私有或专有数据源的信息来辅助文本生成的技术。 它将检索模型(设计用于搜索大型数据集或知识库)和生成模型(例如大型语言模型(LLM),此类模型会使用检索到的信息生成可供阅读的文本回复)结合在一起。

rag流程图

RAG 核心部分主要包括:非结构化数据处理、数据索引、数据检索、prompt拼接

非结构化数据处理
  • 文档load
  • 文档拆分成文本

现实中,我们很多知识都是以pdf、word、excel等文档的形式存在的,我们需要把这些文档转换成易于检索的文本数据,同时应该尽量保证每个文本的知识点应该是很完整独立的(难点)。langchain 有提供很多文档加载器,包括csv、markdown等。

文档加载之后,需要把文档的内容按照一定的逻辑拆成单个的知识点。理想的拆分当然是一个知识点是一个独立且完整的内容,但是很难。langchain也提供了很多Text Splitters,比较常用的是Split by tokens,按照token来拆分,因为后续的embedding的模型对于文本的token也是有限制的。

索引indexing
  • embedding

embedding向量化Massive Text Embedding Benchmark (MTEB) Leaderboard

中文领域较好用的embedding模型有openai的、bge、m3e(这是好几个月前我开始搞rag的时候的数据,这个领域更新也很快,可能已经有更多更好的embedding模型了)

将获取的知识点通过向量模型向量化之后存储到向量数据库里。

检索search

将用户的query同样经过向量化之后,去向量数据库里检索。获取与用户query相似度较高的TOP N的知识点。

prompt combine

将用户的query和检索到的TOP N的知识点拼接之后,一起提交到模型进行处理,得出答案。

其他

以上是一个最普通的RAG模型,里面的每一个步骤都有很大的优化空间。

本文作者:lybtt
版权声明:本文首发于lybtt的博客,转载请注明出处!