当前位置: 首页 > news >正文

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}")
http://www.jsqmd.com/news/710389/

相关文章:

  • 如何3天掌握FModel:零基础解锁虚幻引擎游戏资源的完整指南
  • ARM设备如何突破架构壁垒?Box86革命性x86模拟方案深度解析
  • 告别数据手册!用STM32CubeMX和HAL库5分钟搞定MAX31855热电偶测温(附模拟SPI备用方案)
  • AutoJs实战避坑:模拟器环境(雷电9/夜神)配置与抖音自动化脚本调试全记录
  • MZmine 3:如何用开源工具完成从原始质谱数据到生物学洞察的完整分析?
  • lichobile开发者入门教程:从零开始构建国际象棋应用
  • 旧电脑焕新颜:实测Xubuntu 24.04 LTS在老笔记本上的流畅度,附详细安装与优化配置
  • 10个超实用Preact企业培训技巧:打造高性能前端团队完整方案
  • 从Vite到你的项目:手把手教你用Node.js os模块复刻‘自动打开浏览器’功能
  • 如何快速掌握Pixelle-Video:面向新手的AI短视频创作完整指南
  • 如何创建PostCSS自定义解析器:轻松扩展新CSS语法的完整指南
  • 终极指南:DevDocs安全协议如何保障API文档的加密与认证安全
  • 专业的节能玻璃生产厂家哪家好 - 品牌企业推荐师(官方)
  • Material Design Lite移动端适配:触控优化与响应式设计终极指南
  • Google面试经典题:用动态规划解决‘高楼扔鸡蛋’问题(附C++代码详解)
  • 20252230 实验三《Python程序设计》实验报告
  • 告别复制粘贴:深入理解TMS320F28335的GPIO配置寄存器(MUX/DIR/PUD)
  • 7个实用技巧掌握NW.js用户行为分析:从入门到精通
  • 突破Agentic LLM推理的存储带宽瓶颈:DualPath系统设计
  • C++的显示类型转换和隐式类型转换
  • 2026年改灯车灯透镜推荐榜:市场分析与四款标杆产品深度解读#马瑞利透镜#树懒舒透镜 - Reaihenh
  • HTTPie CLI与Bash脚本:10个命令行自动化终极技巧
  • 上海别墅新古典风格落地指南:从比例控制到材质搭配的工程化方法
  • 2026重庆黄金回收机构排行榜(实测靠谱) 诚鑫名品依旧遥遥领先 - 品牌企业推荐师(官方)
  • XTuner V1:专为超大规模MoE模型设计的高效训练引擎
  • Python深度学习实战:Keras与TensorFlow 2.x快速入门
  • 2026年桂林靠谱中介大揭秘,哪家才是你的最佳之选? - 品牌企业推荐师(官方)
  • 华硕笔记本性能调优终极指南:用G-Helper释放硬件全部潜力
  • Confucius Code Agent架构解析与性能优化
  • 2026选对太阳能路灯厂家,这三点最值得细看 - 品牌企业推荐师(官方)