2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家
回顾一下,将我们的私有文档与大语言模型集成被称为检索增强生成。
假设我们有一些包含数据的便携式文档格式文件。这些文件中的数据将根据某些标准被分解为片段。这些片段将作为输入提供给模型。更具体地说,是嵌入模型。该模型将生成一个向量点。这个向量点是如何生成的?
让我们看一个简单的例子:
- 今天是星期三
- 明天是星期四
- 我今天要旅行
- 《星期三》是一部精彩的剧集
现在,让我们构建一个仅包含上述句子中唯一词汇的句子:
今天, 是, 星期三, 明天, 星期四, 我, 要, 旅行, 一部, 精彩的, 剧集
我们现在要将每个句子转换为数字格式。基于这个由唯一词汇构成的参考句,我们扫描每个句子,如果它包含某个词,我们就在该唯一词汇序列的对应位置赋值为 1,否则赋值为 0。
1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0
0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0
1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0
0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1
这种转换方法称为独热编码
现在回到检索增强生成,模型会根据上下文生成一个向量点。生成的向量点将是多维的(x, y, z, a ...)。这些生成的向量点能够实现语义搜索。什么是语义搜索?它有助于我们了解两个向量点之间的关联程度。基于含义的搜索称为语义搜索。对于每个数据片段,都会生成一个向量点。然后,模型确定各向量点之间的关系,并将相关的点绘制在一起。
向量数据库提供了一个存储相关向量点的场所,当查询数据时,它会提供相关的数据。
*我们如何判断两个向量点彼此更接近?
*
当距离较小时,我们说这两个向量点彼此更接近。仅仅因为存在两个点,我们不能总是断定它们彼此邻近。我们需要引入另一个点(用于比较)。为了计算点之间的距离,有几种算法:欧几里得距离、余弦相似度、曼哈顿距离。
让我们以余弦相似度为例,看看它是如何工作的:
图中有三个点(p1, p2, p3)。从原点向每个点画一条直线。我们将考虑与点 3 形成夹角的线条,并记录其角度。取该角度的余弦值。余弦值最大(即角度最小)的点即为最近的点。
假设有 100 个点。如果我想找到名为 x 的点的最近邻点,我需要计算 x 与所有其他剩余点之间的距离。只有这样,我才能确定最近的点。但这种方法非常耗时。
因此,检索增强生成的流程是:将数据提供给嵌入模型(如 nomic-embed-text),它将生成一个向量点(数据的数学表示)。该向量点将存储在向量数据库中。向量数据库的一些示例包括 ChromaDB、Pinecone、FAISS、Qdrant 等。
如果我提出任何查询,它将被发送到嵌入模型以生成一个向量点,并在向量数据库中检索返回与查询点最接近的点(例如 5 个)。
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。