news 2026/4/27 20:54:28

faiss向量检索库(并非向量数据库)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
faiss向量检索库(并非向量数据库)

文章目录

        • faiss是一个轻量数据库吗?
        • 安装依赖
        • 最简单示例
        • 带持久化的简单示例

faiss # 轻量
chromadb # 中量
milvus # 重量
faiss是一个轻量数据库吗?

轻量 # 对
数据库 # 错,它不是一个完整的数据库(没有服务、没有事务、没有分布式),只是一个向量检索库

安装依赖

注:安装的包名是faiss-cpu,不是faiss

pip install faiss-cpu
最简单示例

代码:

importnumpyasnpimportfaiss data=np.array([[1.0,1.0],[1.0,2.0],[5.0,5.0],[5.0,6.0],[9.0,1.0]],dtype='float32')# ⚠️ 注意:FAISS 必须用 float32# IndexFlatL2 代表:计算欧几里得距离(直线距离)dimension=2index=faiss.IndexFlatL2(dimension)index.add(data)print(f"📚 库里现在有{index.ntotal}条数据")# 进行搜索 假设用户问了一个问题,它的向量是 (1.1, 1.1) —— 离 (1,1) 最近query=np.array([[1.1,1.1]],dtype='float32')# k=2 表示返回最近的 2 个结果D,I=index.search(query,k=2)print("🔍 查询向量:",query)print("📏 距离 (越小越近):",D)print("🆔 找到的索引位置:",I)# 验证:I[0][0] 应该是 0,因为 data[0] 是 [1.0, 1.0],离 [1.1, 1.1] 最近print(f"✅ 最相似的数据是第{I[0][0]}条,内容是:{data[I[0][0]]}")

只需要关注这3个对象:
1、data (矩阵)
你的数据库内容。必须是 float32 格式的 NumPy 数组。
2、index (索引)
这就是“数据库引擎”。
IndexFlatL2 是最基础的索引,意思是“把所有数据存下来,查的时候一个个算距离”。它不需要训练,适合小数据量(<10万)。
3、D 和 I (结果)
search 函数永远返回两个值。
D (Distance):距离。数值越小,代表越相似。
I (Index):下标。代表这个数据在原来数组里的第几行。

带持久化的简单示例

要实现持久化,核心就是利用FAISS自带的write_index和read_index函数。

importnumpyasnpimportfaissimportos# 定义文件名INDEX_FILE="my_faiss_index.bin"dimension=2ifos.path.exists(INDEX_FILE):print(f"📂 发现本地文件{INDEX_FILE},正在加载...")# 【关键步骤】从硬盘读取索引index=faiss.read_index(INDEX_FILE)else:print("✨ 未找到文件,正在创建新索引...")# 1.1 准备数据 (注意这里强制转为 float32)data=np.array([[1.0,1.0],[1.0,2.0],[5.0,5.0],[5.0,6.0],[9.0,1.0]],dtype='float32')# 1.2 建立索引并添加数据index=faiss.IndexFlatL2(dimension)index.add(data)# 【关键步骤】将索引保存到硬盘print(f"💾 正在保存索引到{INDEX_FILE}...")faiss.write_index(index,INDEX_FILE)print("✅ 保存完成!")query=np.array([[1.1,1.1]],dtype='float32')D,I=index.search(query,k=2)print("-"*30)print(f"🔍 查询结果 (距离:{D}, 索引:{I})")print(f"当前内存中数据总量:{index.ntotal}")
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/27 20:54:27

3步永久激活IDM:开源脚本终极指南,告别30天试用期限制

3步永久激活IDM&#xff1a;开源脚本终极指南&#xff0c;告别30天试用期限制 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 还在为Internet Download Manager&…

作者头像 李华
网站建设 2026/4/27 20:52:09

3个简单步骤:如何用游戏手柄控制你的Windows电脑?

3个简单步骤&#xff1a;如何用游戏手柄控制你的Windows电脑&#xff1f; 【免费下载链接】Gopher360 Gopher360 is a free zero-config app that instantly turns your Xbox 360, Xbox One, or even DualShock controller into a mouse and keyboard. Just download, run, and…

作者头像 李华
网站建设 2026/4/27 20:51:33

MCPal:模块化Minecraft服务器玩家管理框架的设计与实现

1. 项目概述&#xff1a;一个为Minecraft服务器量身定制的玩家管理工具如果你运营过Minecraft服务器&#xff0c;尤其是像Paper、Spigot这类基于Bukkit API的服务器&#xff0c;那你一定对玩家管理这件事深有感触。从基础的权限分配、经济系统&#xff0c;到复杂的领地保护、公…

作者头像 李华
网站建设 2026/4/27 20:51:30

JTS Topology Suite 入门指南:Java 向量几何库的快速上手教程

JTS Topology Suite 入门指南&#xff1a;Java 向量几何库的快速上手教程 【免费下载链接】jts The JTS Topology Suite is a Java library for creating and manipulating vector geometry. 项目地址: https://gitcode.com/gh_mirrors/jt/jts JTS Topology Suite&#…

作者头像 李华
网站建设 2026/4/27 20:51:09

ECS蓝绿部署终极指南:实现零停机应用升级的完整策略

ECS蓝绿部署终极指南&#xff1a;实现零停机应用升级的完整策略 【免费下载链接】og-aws &#x1f4d9; Amazon Web Services — a practical guide 项目地址: https://gitcode.com/gh_mirrors/og/og-aws 在当今云计算时代&#xff0c;应用的持续部署和零停机升级已成为…

作者头像 李华
网站建设 2026/4/27 20:50:31

五大趋势,智能汽车开启“中国时间”|2026车展

文丨刘俊宏 编丨王一粟 2026年的北京车展&#xff0c;大到只有超人才能一天逛完。 由于新展馆的启用&#xff0c;整个北京车展的展览面积大了一倍多&#xff0c;从最南边的E1展馆&#xff0c;走到最北边的A1展馆&#xff0c;要将近20分钟。 光锥智能逛了一天&#xff0c;看…

作者头像 李华