浅谈向量检索在LLM中的应用

浅谈向量检索在LLM中的应用

导言

在大语言模型出现之前(2020年以前),向量检索这项技术就已经发展成熟。随着深度学习技术广泛应用于图片、音频、视频的搜索和推荐,人脸识别以及语音识别等传统人工智能应用领域。2023年,伴随GPT大模型惊艳登场,关于向量检索技术和向量数据库的探讨再次成为焦点。本文将基于LLM模型存在的一些问题和挑战,简述一下向量检索的相关理论和算法。

一.背景

GPT-3.5/4的出现带来了惊人的效果,但同时也存在一些问题。

一是GPT的上下文Token数有限,如何处理用户的数据量大到超过了Token数限制的情况。
在这里插入图片描述

二是大模型的幻觉问题,大模型生成的答案有可能是不基于任何事实数据,完全通过杜撰生成。

三是私有数据产生的任何变更,都需要去训练LLM进行知识迭代更新,如何保证模型数据的实时性。

基于以上存在的问题和挑战,业界提出多种方法来增强LLM的知识能力,减少幻觉带来的不良影响,主要包括:基于知识图谱的检索增强生成(RAG),**模型微调(fine-tune),基于语言模型的数据增强 (LAMBADA)**等。这里主要介绍其中的一种:向量检索增强生成。

二.向量检索增强生成

向量检索增强生成的核心思想是,将文本转换成向量后,以数组存储在向量数据库或其他支持向量类型的数据库中,查询时通过相关算法获取与目标最相似的数据。

具体而言,当用户输入问题时,使用Embedding模型将问题转换为向量,然后在数据库中检索最相似的上下文向量,找到对应的文本信息作为提示词重新交由GPT处理,最后由GPT生成相应答案给用户。
在这里插入图片描述

也可以将文档进行切分,使用Embedding模型将文本块转换为向量直接存入数据库,主动为GPT提供丰富的上下文资料。当用户提出相类似的问题时,重复上面的步骤即可。

在机器学习和自然语言处理中,embedding是指将高维度的数据(例如文字、图片、音频)映射到低维度空间的过程。

常见的embedding模型

Word2Vec:是一种基于神经网络的模型,用于将单词映射到向量空间中。

GloVe:是一种基于共现矩阵的模型。

OpenAI的Embeddings模型(收费,每1000个 tokens 大约0.0004美元)。

三.向量检索简述

向量指的是由n个数字(二值向量由n个比特组成)组成的数组,称之为n维向量。
而向量检索就是在一个给定向量数据集中,按照某种度量方式,检索出与查询向量相近的K个向量(K-Nearest Neighbor,KNN),但由于KNN计算量过大,通常只关注近似近邻(Approximate Nearest Neighbor,ANN)问题。

关于向量的度量有以下四种:

欧式距离
在这里插入图片描述

余弦
在这里插入图片描述
在这里插入图片描述

内积

在这里插入图片描述

海明距离(Hamming distance)
在这里插入图片描述

在信息编码中,两个合法代码对应位上编码不同的位数称为码距,又称海明距离
举个例子:10101 和 00110 从第一位开始依次有第一位、第四、第五位不同,则海明距离为3。

通常欧式距离用于图片检索,余弦用于人脸识别,内积多用于推荐,海明距离由于向量比较小,通常用于大规模视频检索场景。

有了度量以后,通常使用召回率(也通常叫精度)来评估向量检索的效果。

向量召回是指将商品或者内容等以向量的形式表达,并建立向量索引库,索引库上支持输入一个或多个用户或商品向量来根据向量距离召回topK的商品或内容。

对于给定的向量q,其在数据集上的K近邻为N,通过检索召回的K个近邻集合为M,则

https://pic3.zhimg.com/80/v2-9d0b71d384e7410f02f965ea58d0f966_720w.webp

召回越接近100%代表检索效果越好。

举个例子,考虑一个二分类模型用于检测垃圾邮件。假设有100封垃圾邮件和100封非垃圾邮件作为测试数据。

  • 模型正确识别了80封垃圾邮件(True Positives)。
  • 但模型错过了20封垃圾邮件,将它们错误地分类为非垃圾邮件(False Negatives)。

在这个例子中,召回率的计算是

在这里插入图片描述

或者说80%。这意味着模型成功捕捉到了所有实际垃圾邮件中的80%。所以,召回率体现了对正确结果的覆盖效果。

四.向量检索算法简述

暴力算法:将目标向量与集合里每个向量的距离都算一遍,然后排个序,取前面K个。召回率100%。

KD树(K-Dimensional Tree):本质是平衡二叉树建树,搜索的过程。通过计算每个点坐标的每一维度上的方差,取方差最大的那一维对应的中间值,作为分裂点。

平衡二叉树(AVL树)
1.左右子树的高度差称之为平衡因子,树中每个节点的平衡因子绝对值不大于1
2.左子树的所有节点值小于该节点的值

在这里插入图片描述

Annoy(Approximate Nearest Neighbors Oh Yeah):二叉树,森林遍历。从平面随机选取两个点连线,用其中垂线进行空间划分,空间的两侧分别为二叉树的左枝和右枝。
在这里插入图片描述

HNSW算法(Hierarchcal Navigable Small World graphs)

五.总结

大模型引入向量检索技术有效增强了大模型的知识能力,增加了模型的个性化,提高了领域知识的安全性和实时性。但同时值得注意的是,向量检索在大模型应用中存在一些需仔细考虑的地方,如数据量大可能影响检索性能,使用什么作为数据存储载体,如何选择Embedding模型以及要采用哪种算法等。所以,接下来有两个方向去探索,向上游探索就是【了解Embedding模型的原理和相关的Embedding模型】,向下游探索就是【深入了解向量检索算法及向量检索的应用案例】。

📎 参考文章

https://www.51cto.com/article/768678.htmlLLM的token
https://zhuanlan.zhihu.com/p/260083265【一文纵览向量检索】
https://www.cnblogs.com/live41/archive/2009/12/30/1635786.html【利用向量余弦计算相似度】
https://baijiahao.baidu.com/s?id=1773807769428720295&wfr=spider&for=pc向量检索在大模型应用场景的技术和实践
https://blog.csdn.net/qq_41904236/article/details/128778063【KD树】
https://blog.csdn.net/ClickHouseDB/article/details/134615083【使用ClickHouse进行向量检索】

  • 18
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七老板的blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值