详细内容或原文请订阅后点击阅览
您的 RAG 可能还不需要矢量数据库
Numpy 或 SciKit-Learn 可能会满足您所有的检索需求这篇文章《您可能不需要 RAG 的矢量数据库 — 然而》首先出现在《走向数据科学》上。
来源:走向数据科学,在检索增强生成(RAG)的支持下,矢量数据库在人工智能世界中受到了广泛的关注。
许多人说您需要 Pinecone、Weaviate、Milvus 或 Qdrant 等工具来构建 RAG 系统并管理嵌入。如果您正在开发具有数亿个向量的企业应用程序,那么像这样的工具是必不可少的。它们允许您执行 CRUD 操作、按元数据过滤以及使用超出计算机内存的基于磁盘的索引。
但对于大多数内部工具、文档机器人或 MVP 代理来说,添加专用向量数据库可能有点过头了。它增加了复杂性、网络延迟、增加了序列化成本,并使管理变得更加复杂。
事实上,“向量搜索”(即 RAG 的检索部分)只是矩阵乘法。 Python 已经拥有一些世界上最好的工具。
在本文中,我们将展示如何仅使用 NumPy 和 SciKit-Learn 为中小型数据量构建 RAG 管道的生产就绪检索组件。您将看到可以在几毫秒内搜索数百万个文本字符串,所有这些都在内存中并且没有任何外部依赖性。
将检索理解为矩阵数学
通常,RAG 涉及四个主要步骤:
步骤 1 和 4 依赖于大型语言模型。步骤2和3是Vector DB的域。我们将重点关注第 2 部分和第 3 部分以及如何完全避免使用矢量数据库。
但是当我们搜索矢量数据库时,“接近度”到底是什么?通常,它是余弦相似度。如果两个向量的大小标准化为 1,则余弦相似度就是两者的点积。
分数 = D.Q^T
实施
先决条件
其中:
