欢迎光临散文网 会员登陆 & 注册

【上集】向量数据库技术鉴赏

2023-11-30 20:06 作者:王小c的c  | 我要投稿

  • 引-向量化表示数据
  • 是什么:比如用(体型大小,毛发长短,鼻子长短)来表示狗这个对象这样,可以区分出不同种类的狗狗;如果有些种类难以区分,还可以继续扩充向量的维度。世界万物都可以用这种方法表达。
  • 为什么:不仅仅能用于表示和区分事物,用向量表示事物还有很多美妙的特性,比如概念更接近的事物会更近,比如在向量表示后 警察 - 小偷 的结果与 猫 - 老鼠 的结果相近。


  • 怎么用:已经有很广泛的应用了,比如把图片进行向量化,就可以根据搜索相似的向量实现“以图搜图”的功能;类似的把视频或商品进行向量化,也可以实现相关推荐的功能;
  • 向量化的思路,在自然语言领域的应用取得了不错的成绩,比如相关答案的推荐,【词向量】技术的使用,也有人使用该方法让ChatGPT可以处理更长的上下文。
  • 随着向量化方法表示数据大量的应用,传统数据库已经不太适用,所以最近几年人们开始设计专门的向量数据库
  • 向量数据库:与传统数据库的区别:存储的是向量数据,查询操作是找相似的向量。
  • 如何搜索相似向量(最近邻搜索算法)?判断相似的依据可以是 向量夹角的大小 或 向量间的欧氏距离。
  • 暴力算法:优点是搜索质量是完美的,缺点是耗时;如果数据集小,搜索时间可以接受,那可以用。
  • 优化思路:缩小搜索范围,比如用【聚类算法】(比如k-means),【哈希算法】(位置敏感哈希)等,但不能不能保证是最近邻的(除了暴搜能保证,其他都不能保证)
  • k-means:1 随机生成四个点,作为初始的聚类中心点,然后根据与中心点距离的远近进行分类;2 计算已有分类的平均点,该平均点作为中心点继续分类,然后不断重复


  • 哈希碰撞:由于输入是固定长度的数据,而输出是固定长度的哈希值,根据鸽巢原理,必然会出现数据不同而哈希值相同的情况,这叫碰撞。
  • 正常而言,哈希算法要尽可能减少碰撞的发生,而(对向量)位置敏感哈希函数-LSH则相反,尽可能让位置相近的数据发生碰撞,然后根据哈希碰撞来进行分组,构建方法:随机划出直线分割平面,两面的点分别增加意味0或1来表示

--------------------------------

该笔记已整合入个人知识体系,详见 [资料](http://wangc.site/cbrain/share?nodeid=c15cca7dcd8d0e71)


【上集】向量数据库技术鉴赏的评论 (共 条)

分享到微博请遵守国家法律