,

RAG基础知识

RAG,全称 Retrieval-Augmented Generation,中文:检索增强生成 核心思想:为大…

RAG,全称 Retrieval-Augmented Generation,中文:检索增强生成

核心思想:为大模型补充来自于外部的相关数据与上下文,从而帮助大模型生成更丰富、更准确、更可靠的内容。

也就是 临时给大模型外挂一个知识库

经典架构

简单的 RAG 应用从整体上分为两个阶段:

  1. 数据索引(Data Indexing)
  2. 数据查询(Query)
    1. 检索(Retrieval)
    2. 生成(Generation)

1. 数据索引

在做数据索引时,通常分为这么几个步骤:

  1. 加载文档
  2. 切分成 chunks
  3. 转化为向量嵌入
  4. 存入向量数据库

切分成chunks

对输入的文档进行分割,分割成一个一个知识块(Chunk),从而为后续嵌入做准备。

  1. 语义结构维度:强调的是语义完整性,防止模型拿到“断句、不完整”的上下文。可以按照句子的粒度进行切割,将每一段文本按句号、问号、叹号等 标点符号 分割。原文ChatGPT 是由 OpenAI 开发的大语言模型。它基于 Transformer 架构,具有强大的语言理解和生成能力。切割后ChatGPT 是由 OpenAI 开发的大语言模型。它基于 Transformer 架构,具有强大的语言理解和生成能力。
  2. 实现策略维度:满足向量模型有最大词元限制,比如 OpenAI embedding 最大约 8192 词元数。
    1. 固定长度字符切分:每 N 字符为一段,适合规则性较强的文档
    2. 词元切分:每 N 个词元切一段,兼容模型的词元数限制

上面这两个策略可以组合着来使用。

转为向量

将每个 chunk 转换为一个“高维向量”,用来表达其语义。

每个向量通常是一个长度为 1536 或 768 的浮点数数组,例如:

[0.112, -0.045, 0.203, ..., 0.087]  // 一个 chunk 的语义向量

存入向量数据库

一般会存储在功能全面的 向量数据库 里面,向量数据库会提供强大的向量检索算法与管理接口,这样可以很方便地对输入问题进行 语义检索

常见向量数据库:

向量库特点
SupabasePostgreSQL + pgvector 扩展
Weaviate云服务 + 本地部署均可
Pinecone高性能、易接入
Milvus海量数据、高性能搜索
MemoryVectorStore纯 JS 内存向量库(测试用)

2. 数据查询

数据查询阶段的两大核心阶段是 检索生成

检索阶段

分为下面几个步骤:

  1. 将 Query(用户的问题) 转化为向量
  2. 在向量数据库中进行相似度检索(语义检索),相似度的检索,有几种方式
    1. 余弦相似度
    2. 欧氏距离
    3. 点积
  3. 为生成阶段准备检索结果

Previous Post

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

About the Author

每个人都有自己得时区,在自己得时区里,一切都是准时的。

BlockSpare — News, Magazine and Blog Addons for (Gutenberg) Block Editor