开启左侧

向量数据库实战详解

[复制链接]
米落枫 发表于 昨天 22:50 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
作者:CSDN博客
为什么需要向量数据库

以NLP的相似问题场景为例。当我们将一个问题通过模型转化成了embedding向量,我们想要找到与这个问题相似的问题,也就是想要找到与embedding向量相似的向量。基本的做法之一,就是遍历备选向量与embedding向量做余弦相似度计算,然后按照计算出的余弦相似度排序,找出最相似的top N。基于向量检索的目的,向量数据库应运而生。向量数据库提供了一种高性能、高可用的查找方式。
接下来,以Annoy和Milvus两种向量数据库的实战为例详解。
Annoy

Annoy 安装很简单:
pip install --user annoy
Annoy是一个基于文件的向量数据库,最主要的三个操作如下:
a.save(fn, prefault=False) saves the index to disk and loads it (see next function). After saving, no more items can be added.
a.load(fn, prefault=False) loads (mmaps) an index from disk. If prefault is set to True, it will pre-read the entire file into memory (using mmap with MAP_POPULATE). Default is False.
a.unload() unloads.
a.get_nns_by_vector(v, n, search_k=-1, include_distances=False) same but query by vector v.
save是保存成索引文件,load是加载索引问题,unload是卸载索引文件。
这里面需要注意的一个关键问题是:
索引文件被进程load以后,才可以进行检索等操作get_nns_by_vector。如果索引文件被某进程A load,那么同时还可以被B load,即支持多进程加载索引文件。可是,这时如果索引内容有变化,想要重新save索引文件,就会报错,即load中的索引文件是无法被

原文地址:https://blog.csdn.net/tdaajames/article/details/125201950
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题
阅读排行更多+

Powered by Discuz! X3.4© 2001-2013 Discuz Team.( 京ICP备17022993号-3 )