什么是矢量数据库?
矢量数据库将信息存储为数字:
矢量数据库是一种将数据存储为高维向量的数据库,高维向量是特征或属性的数学表示。(
来源)
这使得相似性搜索能够快速而准确地进行。使用矢量数据库,您可以根据语义和上下文含义搜索相关数据,而无需使用传统的数据库查询。
一个简化的例子
向量数据库可以存储“n8n 是一个源代码可用的自动化工具,您可以自行托管”这句话,但它不是以文本形式存储,而是存储一个维度数组(0 到 1 之间的数字),这些维度代表了句子的特征。这并不意味着要将句子中的每个字母都转换成数字。相反,向量数据库中的向量描述了句子。
假设在向量中存储表示、表示和表示。最终可能会得到以下向量:
| 句子 | 向量(维度数组) |
|---|---|
| n8n 是一个源代码可用的自动化工具,您可以自行托管 | [0.1, 0.2, 0.3] |
| Zapier 是一个自动化工具 | [0.1] |
| Make是一个自动化工具 | [0.1] |
| Confluence 是一个可以自行托管的 wiki 工具 | [0.3] |
这个例子非常简单
实际上,向量要复杂得多。一个向量的大小可以从几十维到几千维不等。维度与单个特征并非一一对应,因此无法将单个维度直接转化为单个概念。这个例子给出的是一个近似的思维模型,而非真正的技术理解。
展示相似性搜索的威力
Qdrant 提供
矢量搜索演示,帮助用户了解矢量数据库的强大功能。美食发现演示展示了矢量存储如何根据视觉相似性匹配图片。此演示使用了来自 Delivery Service 的数据。用户可能会喜欢或不喜欢某道菜的照片,该应用会根据菜品的外观推荐更多类似的菜品。用户还可以选择查看配送范围内的餐厅搜索结果。(
来源)
有关完整的技术细节,请参阅
Qdrant demo-food-discovery GitHub 存储库。嵌入器、检索器、文本分割器和文档加载器
矢量数据库需要其他工具才能运行:
- 文档加载器和文本分割器:文档加载器提取文档和数据,并准备嵌入。文档加载器可以使用文本分割器将文档拆分成块。
- 嵌入:这些工具可以将数据(文本、图像等)转换为向量,然后再转换为原始数据。请注意,n8n 仅支持文本嵌入。
- 检索器:检索器从向量数据库中获取文档。你需要将它们与嵌入配对,以将向量转换回数据。