第 54 页 / 共 100 页 / 飞书修订版 6

4.The full RAG flow

此文档由 学习AI的1000天 翻译制作(抖音,B站,YouTube)

邮箱: szqshan@gmail.com | 微信: szqshan
网址: www.xueai.org

==================================================

现在我们已经介绍了RAG、文本分块和嵌入的基础知识,让我们逐步完整地演示RAG流水线。这个示例将准确展示所有这些组件如何协同工作来检索相关信息并生成响应。

步骤1:分块处理源文本

首先,我们将源文档分解为可管理的块。在这个示例中,我们将使用两个简单的文本片段:

  • 片段1:医学研究 - "今年我们对XDR-47的理解取得了重大进展,这是一个我们以前从未见过的'病毒'。"
  • 片段2:软件工程 - "这个部门投入了大量精力来研究我们分布式系统中的各种感染载体"

步骤2:生成嵌入向量

接下来,我们使用嵌入模型将每个文本块转换为数值嵌入向量。为了便于理解,让我们假设有一个完美的嵌入模型,它总是返回恰好两个数字,并且我们知道每个数字代表什么。

image1.jpeg

在我们假想的模型中:

  • 第一个数字表示文本涉及医学领域的程度
  • 第二个数字表示文本涉及软件工程的程度

对于医学研究部分,我们可能得到 [0.97, 0.34] - 医学导向性很强,但由于"bug"这个词的存在,也包含一些软件元素。对于软件工程部分,我们得到 [0.30, 0.97] - 软件导向性很强,但由于"感染载体"的存在,也带有医学色彩。

Normalization

embedding API 通常会执行一个归一化步骤,将每个向量缩放到幅度为 1.0。你不需要担心这里的数学计算 - 它会自动处理。这样我们得到归一化后的向量,如 [0.944, 0.331] 和 [0.295, 0.955]。

image2.jpeg

我们可以在单位圆上可视化这些 embeddings,其中每个点代表我们的一个文本块。

image3.jpeg

步骤 3:存储到向量数据库

我们将这些 embeddings 存储在向量数据库中 - 这是一种专门优化用于存储、比较和搜索长数字列表(如我们的 embeddings)的特殊数据库。

image4.jpeg

到此为止,我们暂停一下。到目前为止的所有工作都是提前进行的预处理。现在我们等待用户提交查询。

步骤 4:处理用户查询

当用户提出问题,如"我对公司很好奇。特别是,软件工程部门今年做了什么?"时,我们将他们的查询通过相同的 embedding 模型进行处理。

image5.jpeg

这个查询被嵌入为类似 [0.1, 0.89] 的向量 - 医学得分低,软件工程得分高。归一化后,我们得到 [0.112, 0.993]。

步骤 5:查找相似的 Embeddings

我们将用户查询的嵌入向量发送到向量数据库,并要求它找到最相似的存储嵌入向量。

image6.jpeg

数据库返回软件工程部分,因为它与用户询问的内容最为匹配。

相似性工作原理:余弦相似度

向量数据库使用余弦相似度来确定哪些嵌入向量最相似。这种方法测量两个向量之间夹角的余弦值。

image7.jpeg

关于余弦相似度的要点:

  • 结果范围从 -1 到 1
  • 接近 1 的值表示高度相似
  • 接近 -1 的值表示差异很大
  • 0 表示垂直(无关系)

在我们的示例中,用户查询与软件工程块之间的余弦相似度为 0.983 - 非常高的相似度。与医学研究块的相似度仅为 0.398 - 要低得多。

Cosine Distance

在向量数据库文档中,你经常会看到"余弦距离"这个概念。它的计算方式很简单:(1 - 余弦相似度)。对于余弦距离:

  • 接近0的值表示高相似度
  • 较大的值表示相似度较低

这种调整使得数值在许多情况下更容易理解。

步骤6:创建最终提示词

最后,我们将用户的问题和找到的最相关文本块结合起来,组合成一个提示词,然后发送给Claude获取回答。

image8.jpeg

提示词可能看起来像这样:

根据财务文档回答用户的问题。

<user_question>

工程师们今年修复了多少个bug?

</user_question>

<report>

## 第二部分:软件工程

该部门投入了大量精力研究我们分布式系统中的各种感染载体

</report>

这就是完整的RAG管道!该系统成功地基于语义相似性检索了最相关的信息,并将其作为上下文提供给系统以生成准确的响应。

==================================================



此文档由 学习AI的1000天 翻译制作(抖音,B站,YouTube)
邮箱: szqshan@gmail.com | 微信: szqshan
网址: www.xueai.org