深度解读AI大模型的向量数据库(下)
在生成式AI时代(更确切地说,自从 ChatGPT 发布以来),你至少听说过“向量数据库”这个词。如果你不知道它们是什么,没关系,因为这篇文章就是为了详细解释向量数据库的一切。
在前面两篇文章《深度解读AI大模型的向量数据库(上)》、《深度解读AI大模型的向量数据库(中)》我们分别提到了什么是向量数据库、使用向量数据库的两个案例、以及向量数据库中嵌入的生成和BERT模型如何生成嵌入。
本篇文章讲的是向量数据库如何在大模型(LLM)中发挥作用。
向量数据库在大模型中发挥的作用很简单,就是帮助大模型生成的结果更加准确和可靠。
首先,我们必须知道大模型是在从训练期间提供的静态语料库中学习之后,才被部署使用。
假设这个模型学习的数据截止到2024年1月1日,并且我们是在模型学习后的一周才使用它,那么它其实不知道从2024年1月1日 – 2024年1月7日 这一周内发生了什么
而如果每天根据新数据反复训练模型,这其实也是不切实际且成本巨大的,而且大模型每次训练可能需要花费数周的时间
除此之外,如果我们开源了所训练的大模型,其他人如果想要在这个模型上应用自己的私人数据集,但是这些私人数据又没有经过训练,这该怎么办?
正如你想的,大模型对此一无所知。
但如果你仔细想一想,我们的目标是训练大模型了解世界上的每一件事吗?
其实不是的!
相反,我们更多的是帮助大模型学习语言的整体结构,以及如何理解和生成它。
一旦我们在足够大的训练语料库上训练了这个模型,就可以预期该模型将具有相当水平的语言理解和生成能力。
因此,如果我们能为大模型找到一种方法来查找他们未受过训练的新信息并将其用于文本生成(无需再次训练模型),那就太好了!
第一种方法是在你的Prompt中提供这些新信息
换句话说,如果不需要训练或微调模型,我们可以在向 LLM 提供的提示词中提供所有必要的详细信息。
但不幸的是,我们的大模型是自回归模型。因为模型是自回归的,它在生成文本时只能记住和参考它已经生成的词,这意味着它不能一次性考虑太多的信息。
所以,虽然你可以通过提示给模型提供一些信息,但是这种方法在处理大量信息时效果有限,而这时候我们的矢量数据库就派上用场了!
我们可以利用向量数据库动态更新大模型对世界的理解,而不是每次新数据出现或变化时都重新训练大模型。
正如我在之前的文章所讨论的,向量数据库帮助我们以向量的形式存储信息,其中每个向量会捕获文本片段的语义信息。
因此,我们可以通过使用前面文章提到的嵌入模型将可用信息编码为向量,从而将可用信息保留在向量数据库中。
当大模型需要访问此信息时,它就可以先将提示词转换为向量,并且使用相似性搜索在向量数据库中查询!
一旦使用相似性算法在数据库检索到相似向量,我们就会收集这些向量对应的原始信息
最后我们将检索到的内容与用户提供的Prompt一起填充为一个模板,并将其作为我们训练好的大模型的输入。
因为在预训练中,我们的大模型已经具有相当水平的语言理解和生成能力,这时候它就可以根据新的输入信息(详细的信息)进行总结,并生成内容返回给用户。
而这其实就是我在之前的文章中提到的检索增强生成(RAG)技术,相信你现在对这个技术应该有一个更深入的了解。
RAG的优势之一就是它可以极大地帮助大模型减少回答时的“幻觉”,也就是胡说八道,从而使得模型的响应更加准确、可靠且与上下文相关。
目前的向量数据库服务厂商有下面这几个:
- Pinecone[1]: Pinecone 是一种托管向量数据库服务,可提供快速、可扩展且高效的向量数据存储和检索。它提供了一系列用于构建人工智能应用程序的功能,例如相似性搜索和实时分析。
- Weaviate[2]: Weaviate 是一个 开源向量数据库 ,具有强大、可扩展、云原生且快速的特点。借助 Weaviate ,人们可以使用最先进的 ML 模型将文本、图像等转换为可搜索的向量数据库。
- Milvus[3]: Milvus 是一个开源向量数据库,旨在支持嵌入相似性搜索和 AI 应用程序。 Milvus 使非结构化数据搜索更容易访问,并且无论部署环境如何,都可以提供一致的用户体验。
- Qdrant[4]: Qdrant 是一个向量相似性搜索引擎和向量数据库。它提供了一个生产就绪的服务,带有一个方便的 API 来存储、搜索和管理具有额外负载的点向量。 Qdrant 专为扩展过滤支持而定制。
参考资料
[1]Pinecone: https://www.pinecone.io/?ref=dailydoseofds.com
[2]Weaviate: https://github.com/weaviate/weaviate?ref=dailydoseofds.com
[3]Milvus: https://github.com/milvus-io/milvus?ref=dailydoseofds.com
[4]Qdrant: https://github.com/qdrant/qdrant?ref=dailydoseofds.com