AI一点通:向量数据库FAISS 平均延迟的测量

FAISS(Facebook AI Similarity Search)是一款强大的库,用于高效地进行相似性搜索和密集向量的聚类。它针对高性能和可扩展性进行了优化,是处理大规模数据集和计算最近邻选择的绝佳选择。

在这篇简短的博客中,我们将探讨如何在搭载Apple M1处理器的 Mac 上使用 FAISS 来测量搜索 1000 条记录的平均延迟。

设置环境

首先,您需要安装 FAISS 并确保您拥有合适的开发工具和库。您可以使用 pip 来安装 FAISS:

shell 复制代码
pip install faiss-cpu

接下来,我们通过导入必要的包和定义常量来设置我们的环境。

python 复制代码
import faiss
import numpy as np
import time

# Define constants
num_vectors = 500000
dim = 20
num_searches = 1000
k = 100 # Number of nearest neighbors to retrieve

生成随机向量

FAISS 处理密集向量。这里,我们生成模拟数据集的随机向量:

python 复制代码
# Create random vectors
np.random.seed(42) # For reproducibility
vectors = np.random.random((num_vectors, dim)).astype('float32')

初始化 FAISS 索引

我们使用 IndexFlatL2 初始化 FAISS 索引,它计算向量之间的欧几里得(L2)距离:

python 复制代码
# Initialize FAISS index
index = faiss.IndexFlatL2(dim) # L2 distance (Euclidean)

# Add vectors to the index
index.add(vectors)

测量延迟

为了测量搜索操作的延迟,我们生成一个查询向量并进行多次搜索,记录每次搜索所用的时间:

python 复制代码
# Generate query vector
query_vector = np.random.random((1, dim)).astype('float32')

# Measure latency of searches
latencies = []
for _ in range(num_searches):
  start_time = time.time()
  D, I = index.search(query_vector, k) # search for k nearest neighbors
  latencies.append(time.time() - start_time)

计算平均延迟

最后,我们计算以毫秒为单位的平均延迟并打印结果:

python 复制代码
# Calculate average latency in milliseconds
average_latency = np.mean(latencies) * 1000 # Convert to milliseconds
print(f'Average latency for {num_searches} searches: {average_latency:.4f} ms')

结果

在搭载 Apple M1 处理器的 Mac 上运行上述代码,我们在 1000 次搜索中的平均延迟大约为 7 毫秒。这一性能展示了 FAISS 的高效性以及 Apple M1 处理器在机器学习任务中的强大能力。

阅读英文

faiss-vector-store-latency-check

AI好书推荐

AI日新月异,再不学来不及了。但是万丈高楼拔地起,离不开良好的基础。您是否有兴趣了解人工智能的原理和实践? 不要再观望! 我们关于 AI 原则和实践的书是任何想要深入了解 AI 世界的人的完美资源。 由该领域的领先专家撰写,这本综合指南涵盖了从机器学习的基础知识到构建智能系统的高级技术的所有内容。 无论您是初学者还是经验丰富的 AI 从业者,本书都能满足您的需求。 那为什么还要等呢?

人工智能原理与实践 全面涵盖人工智能和数据科学各个重要体系经典

北大出版社,人工智能原理与实践 人工智能和数据科学从入门到精通 详解机器学习深度学习算法原理

相关推荐
麦麦大数据18 天前
M004_基于Langchain+RAG的银行智能客服系统设计与开发
typescript·langchain·flask·vue3·faiss·rag
veFuwcCVSXz20 天前
三相开绕组永磁同步电机的容错控制
faiss
pvIaUtLZ20 天前
单相逆变器的控制方案直接决定了系统在并网/离网模式下的动态响应。咱们今天拆解几个硬核玩法,从调制到控制层层递进,手把手看明白这背后的门道
faiss
charlee441 个月前
从零实现一个生产级 RAG 语义搜索系统:C++ + ONNX + FAISS 实战
c++·faiss·onnx·rag·语义搜索
dblens 数据库管理和开发工具1 个月前
开源向量数据库比较:Chroma, Milvus, Faiss,Weaviate
数据库·开源·milvus·faiss·chroma·weaviate
wanping158259923411 个月前
AI Agent(学习六-FAISS 持久化到磁盘(重启不丢记忆))
人工智能·学习·faiss
真智AI1 个月前
用 FAISS 搭个轻量 RAG 问答(Python)
开发语言·python·faiss
程序猿炎义2 个月前
【Easy-VectorDB】Faiss性能调优与评估
faiss
Java后端的Ai之路2 个月前
【AI大模型开发】-创建RAG问答实战(LangChain+DeepSeek+Faiss)
人工智能·langchain·faiss·deepseek
程序猿炎义2 个月前
【Easy-VectorDB】Faiss数据结构与索引类型
数据结构·算法·faiss