以图搜图升级版faiss框架一之faiss介绍

1. Faiss
Faiss是一个用于高效相似性搜索和密集向量聚类的库。它包含搜索任意大小的向量集的算法,最多可能不适合RAM。它还包含用于评估和参数调整的支持代码。Faiss是用C ++编写的,包含Python / numpy的完整包装器。一些最有用的算法是在GPU上实现的。它由Facebook AI Research开发。

2. 介绍
Faiss包含几种相似性搜索方法。它假设实例表示为向量并由整数标识,并且可以将向量与L2距离或点积进行比较。与查询向量类似的向量是具有最低L2距离的向量或具有查询向量的最高点积。它还支持余弦相似性,因为它是归一化向量上的点积。

大多数方法,如基于二进制向量和紧凑量化代码的方法,仅使用向量的压缩表示,并且不需要保持原始向量。这通常以不太精确的搜索为代价,但是这些方法可以扩展到单个服务器上的主存储器中的数十亿个向量。

GPU实现可以接受来自CPU或GPU内存的输入。在具有GPU的服务器上,GPU索引可以用作CPU索引的替代品(例如,替换IndexFlatL2为GpuIndexFlatL2),并且自动处理GPU内存的复制。如果输入和输出都保留在GPU上,则结果会更快。支持单GPU和多GPU使用。

3.建造
该库主要使用C ++实现,通过CUDA提供可选的GPU支持,以及可选的Python接口。CPU版本需要BLAS库。它使用Makefile编译,可以打包在docker镜像中。有关详细信息,请参阅INSTALL.md。

4.Faiss如何运作
Faiss围绕存储一组向量的索引类型构建,并提供使用L2和/或点积矢量比较在其中搜索的函数。一些索引类型是简单的基线,例如精确搜索。大多数可用的索引结构对应于各种权衡
搜索时间
搜索质量
每个索引向量使用的内存
训练时间
需要外部数据进行无人监督的培训
可选的GPU实现提供了可能(截至2017年3月)高维向量的最快精确和近似(压缩域)最近邻搜索实现,最快Lloyd的k均值和已知的最快小k选择算法。

以下是一个使用百度AI开放平台的图像搜索API实现以图搜图的Python代码示例: ```python import requests import base64 # 百度AI开放平台图像搜索API接口地址 url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/realtime_search/similar/search" # 百度AI开放平台API Key和Secret Key api_key = "your_api_key" secret_key = "your_secret_key" # 读取待搜索的图片文件 with open("image.jpg", "rb") as f: image_data = f.read() # 将图片数据转换为base64编码格式 image_base64 = base64.b64encode(image_data).decode() # 构造API请求的参数 params = { "image": image_base64, "quality_control": "HIGH", "detect_direction": "true" } # 使用API Key和Secret Key进行身份验证,获取Access Token auth_url = "https://aip.baidubce.com/oauth/2.0/token" auth_params = { "grant_type": "client_credentials", "client_id": api_key, "client_secret": secret_key } auth_response = requests.post(auth_url, data=auth_params) access_token = auth_response.json()["access_token"] # 发送API请求,获取搜索结果 headers = {"Content-Type": "application/x-www-form-urlencoded"} params["access_token"] = access_token response = requests.post(url, headers=headers, data=params) result = response.json() # 输出搜索结果 print(result) ``` 在代码中,需要替换以下部分: - `your_api_key`和`your_secret_key`为在百度AI开放平台注册并创建的应用所对应的API Key和Secret Key。 - `"image.jpg"`为待搜索的图片文件路径,可以根据实际情况进行修改。 注意:使用百度AI开放平台的API需要进行身份验证,因此需要在代码中调用Access Token接口获取Access Token,并将Access Token作为请求参数发送给图像搜索API。Access Token的有效期为30天,过期后需要重新获取。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值