Skip to content

认识 RAG:打造垂直领域的私有 AI 知识库

在上一篇,我们了解到了公司私有组件库生成代码的问题,这个问题的本质是:由于大模型的训练数据集不包含你公司的私有组件数据,因此不能够生成符合公司私有组件库的代码。

于是,我们需要让大模型知道你公司的私有组件库是什么样的,这就是 RAG 技术的应用场景。

在开始实践之前,我们先来认识一下 RAG 技术。

前置名词

  • Chunk: 将文本(或其它数据)切分为每一段数据,是一种数据切片的方法。

  • Embedding: 将每个 chunk 转换为向量,是一种将高维空间的数据(文字、图片等)转换为低维空间的表示方法,后续可以通过匹配向量之间的余弦相似度来实现语义检索。

  • Vector Database: 向量数据库,用于存储 Embedding 和原始 Chunk 的数据库(注意:某些 Vector Database 只支持存储 Embedding,需要自行来建立 Embedding 和原始 Chunk 之间的映射关系)。

图示构建 RAG 知识库的过程

  1. 原始数据(Resource Data):

    • 从各种来源收集原始数据,比如公司私有组件库的文档文本。
  2. 分块(Chunking):

    • 将资源数据细分为更小的块,称为Chunk
  3. 向量化(Embedding):

    • 将每个Chunk转换为向量表示,便于后续根据向量进行语义相似度匹配。
  4. 存储至向量数据库:

    • 将所有的ChunkEmbedding一一对应存储在向量数据库中,用于后续向量匹配检索出原始的 Chunk 数据。

RAG 检索过程的简单示例

  1. 用户输入一个问题,如:帮我生成一个table,包含姓名、年龄、性别。

  2. 将问题转换为向量表示。

  3. 将用户需求的向量和向量数据库中的向量进行相似度匹配,检索出相似度高的数据源(Retrieval)。

  4. 将检索出的数据源和用户需求的问题组合(Augmented),一起输入给大模型(Generation)。

注意

嵌入和向量数据库只是一种特定的检索方法,用于实现语义搜索,而不是 RAG 的必要组件,你也可以通过其它方式来实现检索,比如谷歌搜索等。

了解了 RAG 的基本原理,接下来我们将基于 RAG 技术,来实现私有组件库的代码生成。

👬 交个朋友,一起探索 AI 时代下前端的转型(超级个体)之路