大型语言模型(LLM)已经将许多惊人的想法变为现实,比如任何事物上的机器人、知识专家、研究助理等等。这些伟大的应用中的大多数将LLM与特定知识领域结合起来,向量数据库在此发挥作用。例如,假设你对一个领域有一个问题,最佳实践是从数据库中检索可能的领域并动态构建提示。
选择适合你的应用的正确向量数据库可以显著影响其效率和有效性。目前,市场上有许多向量数据库产品可供选择,通常分为两类——专业向量数据库和综合向量数据库。虽然像Pinecone这样的专业向量数据库由于易用性而受到欢迎,但在扩展或支持各种数据类型方面往往不足。这就是为什么我们需要综合向量数据库。
# 什么是综合向量数据库
综合向量数据库是一种将向量搜索功能与传统结构化数据库相结合的数据库。与仅为向量索引设计的专业向量数据库不同,综合向量数据库在同一个数据库中存储向量和结构化数据,并将向量搜索算法与结构化数据库结合起来。这种集成提供了几个优势,包括能够执行高效的通信、灵活的元数据过滤、执行SQL和向量联合查询,以及利用通常与通用数据库相关的成熟工具和集成。
MyScale (opens new window) 是一个基于开源OLAP数据库ClickHouse构建的、针对AI应用和解决方案优化的云数据库。它成功地提高了综合向量数据库中的向量搜索性能。它拥有其他综合向量数据库可以提供的所有优势,并提供一些额外的好处,如使用专有的向量索引算法MSTG实现良好的性能。
在这篇文章中,我们将聚焦MyScale,一个顶级的综合向量数据库之一,并讨论这些综合向量数据库如何增强您的LLM应用。
# 通信至关重要
通信对您的应用性能至关重要。由于成本较低、可扩展性和通信效率提高,DBaaS(数据库即服务)和SaaS(软件即服务)正在被广泛采用。
专业的向量索引可能无法容纳您拥有的所有数据,这意味着您可能需要将其存储在其他地方。在这种设置中,您将不得不对单个查询进行2次请求,共进行4次数据传输。但使用综合数据库解决方案,您只需要1次请求,进行2次传输。
较少的传输意味着较低的延迟,而延迟确实会影响用户体验。如果您认真考虑通信延迟,或者您想对数据库进行大量查询,请考虑将MyScale作为综合解决方案中的一个选项。
# 无约束地过滤任何内容
LLM应用通过工具得到增强。向量数据库是最重要的工具之一。当您有大量的向量需要搜索时,使用关键词缩小结果通常是更好的选择,这些向量可以代表文章、网页或提示。所以,元数据过滤搜索的概念由此产生。
过滤搜索在LLM应用中相当常见。您可能会使用它们来剔除一些无用的数据以提高准确性。大多数向量索引服务都为您提供元数据过滤器,以便对那些不必要的数据进行修剪。一些实现确实对您将要过滤的数据有限制,无论是在大小还是过滤函数本身。例如,Pinecone的实现有一个40KB的元数据限制,这限制了元数据过滤器的功能。如果您想在非常大的段落中匹配正则表达式模式,或者过滤出与查询位置地理位置远的一些数据,这将是一个巨大的障碍。
数据库解决方案,例如MyScale,能够对几乎任何大小和类型的数据执行元数据过滤。您可以将任何内容作为元数据过滤器,例如,地理位置(如H3和S2)、正则表达式匹配、数学表达式阈值,甚至可以使用SQL子查询进行元数据过滤。
如果您的提示需要计算一些地理距离,以下是一个示例,说明如何使用它:
WHERE h3Distance(<data column in h3 index type>, <h3 index>) > 10
假设您正在搜索一组匹配某些关键词的文章,您可以使用字符串的模式匹配来限制您的向量搜索:
WHERE column_1 LIKE '%value%'
您还可以使用正则表达式来缩小搜索范围
WHERE match(column_1, '(?i)(value\s)')
您还可以使用数学表达式进行过滤,例如,计算少量样本学习者的预测,并使用阈值来过滤结果:
WHERE 1/(1+exp(column_1)) > 0.9
您还可以使用SQL子查询执行元数据过滤:
WHERE column_1 IN (SELECT ... FROM another_table WHERE ...)
此外,可以进行元数据过滤的数据实际上存储为列。它们的大小或数据类型没有额外的限制。您还可以从其他表中JOIN
一些外部列,这允许您设计具有良好性能的复杂查询管道。
# 多向量索引单实例
某些LLM应用可能有多个向量列。如果您的应用需要在搜索文章之前搜索段落,或者在检索相关信息之前决定提示,那么您的应用可能需要多个向量索引。
大多数专门的向量数据库只支持每个实例一个向量索引,这意味着您需要为每个向量列创建一个新实例。如果您的应用程序需要处理多个向量数据库实例,这可能是不利的。长期而言,延迟和计算上的不一致可能会影响性能以及维护问题。
然而,集成向量数据库,特别是MyScale,将向量索引视为一种数据索引类型。它允许您为每个表创建一个向量索引。如果您有多个应用程序,并且它们都需要向量数据库,您可以为它们创建表和向量索引,并将它们压缩到一个实例中!现在您只需要为使用多个向量索引的LLM应用程序运行一个实例。
# 结论
尽管由于SQL接口导致学习曲线陡峭,集成向量数据库具有不可否认的优势。通过提供灵活的元数据过滤、多索引支持和改进的通信效率,它们可以将您的LLM应用提升到一个新的高度。在MyScale,我们坚信集成向量数据库是未来的方向。MyScale是一个高性能的集成向量数据库解决方案,由先进的向量索引算法支持,提供了高数据密度和成本效益。