原来向量数据库的应用场景是这样的!按照我的理解,大模型其实是没有学习能力的,它就相当于一个真值表或者矩阵,给它输入,它就输出,在使用它的过程中它不会自己训练自己,改变既有的参数,它也不会去网上查数据,自己训练自己,改变自己的参数。
通常大家会搞到一个已经训练好的大模型,但是这个大模型是用通用的大数据训练的,里面包含通用领域的信息,但是特定领域的信息是没有的,或者很浅,目前许多公司用大模型,是想利用大模型在特定领域实现专家系统或某种智能应用。
但大模型不会自己学习,让它学习其实就相当于重新训练大模型,成本高昂,而且大多数公司也不没有训练大模型的能力。
怎么办呢?办法就是在输入的问题或命令中,包含特定领域的背景知识,例如 “小明的妈妈有三个孩子,老大叫小军,老二叫小米,老三叫小明。小明是独生子吗?”。其中“小明是独生子吗?” 是我们想问大模型的问题,“小明的妈妈有三个孩子,老大叫小军,老二叫小米,老三叫小明。”是背景知识。
这一招被实践证明还挺好用,解决了不少问题,这就是所谓的提示词工程(prompt engineering),这个过程有个需求,就是要根据问题文本,查找出和这个问题相关的背景知识文本,很自然的想到,这个查询可以去搜索引擎上查,但是有的公司的数据是私有的,搜索引擎是差不到的,那么其实就要求公司内部建立这么个搜索引擎,这是一个思路,实际上使用和搜索引擎差不多的一个东西,就是向量数据库,把背景知识(小明的妈妈。。。)文本转成向量,把问题(小明是独生子吗)也转成向量,在查询大模型前,先查询向量数据库,得到相关性最强的背景知识,然后把背景知识文本和问题文本一起塞给大模型。
Retrieval Augmented Generation (RAG) | Prompt Engineering Guide (promptingguide.ai)
PostgreSQL as a Vector Database: Create, Store, and Query OpenAI Embeddings With pgvector (timescale.com)
这样实现让大模型“学习”的技术,除了提示词工程还有模型微调,这篇文章很大的介绍了这个概念:
通俗解读大模型微调(Fine Tuning) - 知乎 (zhihu.com)