向量数据库是构建可扩展 AI 驱动应用的关键部分。向量数据库在现有机器学习模型之上提供长期记忆。
如果没有向量数据库,您需要在每次查询前训练模型(或多个模型)或重新运行数据集,这将既慢又昂贵。
向量数据库确定哪些其他数据(表示为向量)接近您的输入查询。这使您能够在向量数据库之上构建不同的用例,包括:
- 语义搜索,用于返回与查询输入相似的结果。
- 分类,用于返回最接近输入查询的分组(或多个分组)。
- 推荐引擎,用于根据不同标准(例如以往产品销售或用户历史)返回与输入相似的内容。
- 异常检测,用于识别特定数据点是否与现有数据相似或不同。
向量数据库还可以驱动 Retrieval Augmented Generation ↗(RAG)任务,使您能够通过使用向量搜索的上下文来增强用户提示,为 LLM(Large Language Models)带来额外上下文。
在传统的向量搜索用例中,通过向向量数据库传递查询向量来查询,向量数据库返回与查询向量距离最短("最相似")的可配置向量列表。
分步工作流如下:
- 开发者通过将现有数据集(存储在 R2 中的文档、图像、日志)传递给针对该数据类型训练的机器学习模型,将其转换为一组向量嵌入(单向表示)。
- 输出嵌入被插入 Vectorize 数据库索引。
- 搜索查询、分类请求或异常检测查询也通过相同的 ML 模型传递,返回查询的向量嵌入表示。
- 使用此嵌入查询 Vectorize,返回与提供的查询最相似的向量嵌入集。
- 返回的嵌入用于从专用存储(例如 R2、KV 和 D1)检索原始源对象并返回给用户。
在没有向量数据库的工作流中,您每次都需要将整个数据集与查询一起传递,这既不可行(模型对输入大小有限制),也会消耗大量资源和时间。
Retrieval Augmented Generation(RAG)是一种用于改进 LLM(Large Language Model)在生成式 AI 用例(包括聊天机器人和通用问答应用)中上下文的方法。向量数据库用于通过向提示添加额外上下文来增强传递给 LLM 的提示。
在 RAG 方法中,您不是直接将提示传递给 LLM,而是:
- 从现有数据集或语料库(例如,您想用来为 LLM 响应添加额外上下文的数据集)生成向量嵌入。现有数据集或语料库可以是产品文档、研究数据、技术规格或产品目录和描述。
- 将输出嵌入存储在 Vectorize 数据库索引中。
当用户发起提示时,您 增强 它并添加额外上下文,而不是(无额外上下文地)直接传递:
- 用户提示传递给用于数据集的相同 ML 模型,返回查询的向量嵌入表示。
- 此嵌入用作向量数据库的查询(语义搜索),返回相似向量。
- 这些向量用于查找它们相关的内容(如果没有作为元数据与向量一起嵌入)。
- 此内容与原始用户提示一起作为上下文提供,为 LLM 提供额外上下文,使其能够返回可能比独立提示更具上下文相关性的答案。
立即使用 AI Search 创建 RAG 应用,只需几次点击即可部署完全托管的 RAG 流水线。AI Search 自动设置 Vectorize、处理持续索引,并通过单一 API 提供响应。
1 您可以通过阅读 RAG 论文 ↗ 了解更多 RAG 背后的理论。 1 您可以通过阅读 RAG 论文 ↗ 了解更多 RAG 背后的理论。
在 Vectorize 中,数据库和索引是同一概念。您创建的每个索引与其他索引是分开的。Vectorize 在您插入新数据时自动管理和重新生成索引。
向量嵌入将机器学习模型的特征表示为数值向量(数字数组)。它们是基于模型原始训练方式和内部结构,对模型理解所提供输入的单向表示。
例如,Workers AI 中的文本嵌入模型 能够接受文本输入并将其表示为 768 维向量。文本 This is a story about an orange cloud 表示为向量嵌入时,类似于:
[-0.019273685291409492,-0.01913292706012726,<764 dimensions here>,0.0007094172760844231,0.043409910053014755]当模型认为输入的特征"相似"(基于其理解)时,这两个输入的向量嵌入之间的距离会很短。
向量维度描述向量嵌入的宽度。向量嵌入的宽度是构成给定向量的浮点元素数量。
维度数量由用于生成向量嵌入的机器学习模型定义,以及它如何基于内部模型和复杂度表示输入特征。更多维度("更宽"的向量)可能提供更高精度,但会消耗计算和内存资源,以及向量搜索的延迟(速度)。
请参阅 维度 文档了解创建 Vectorize 索引时如何配置接受的向量维度大小。
距离度量是用于向量搜索的索引。它定义如何确定查询向量与索引内其他向量的接近程度。
- 距离度量决定向量搜索引擎如何评估向量之间的相似性。
- Cosine、Euclidean(L2)和 Dot Product 是向量搜索中最常用的距离度量。
- 您使用的机器学习模型和嵌入类型将决定哪种距离度量最适合您的用例。
- 不同的度量决定不同的评分特征。例如,
cosine距离度量非常适合文本、句子相似性和/或文档搜索用例。euclidean可能更适合图像或语音识别用例。
请参阅 距离度量 文档了解创建 Vectorize 索引时如何配置距离度量。