【大模型】FAISS向量数据库记录:从基础搭建到实战操作

文章目录

    • 文章简介
    • Embedding模型
      • BGE-M3 模型亮点
    • FAISS是什么
      • FAISS实战
        • 安装faiss
        • 加载Embedding模型
        • 创建FAISS数据库
        • 搜索FAISS数据
        • 删除FAISS数据
        • 保存、加载FAISS索引
    • 总结

本人数据分析领域的从业者,拥有专业背景和能力,可以为您的数据采集、数据挖掘和数据分析需求提供支持。期待着能够与您共同探索更多有意义的数据洞见,为您的项目和业务提供数据分析方面的帮助。

文章简介

RAG系统的成功在很大程度上取决于其高效地获取和处理海量信息的能力。向量数据库又在其中发挥了不可替代的作用,并构成了RAG系统的核心。向量数据库专门用于存储和管理高维向量数据,它们能把文本、图像、音频甚至视频转换为向量并存储。RAG系统最终能实现的效果就取决于这些底层向量数据库的表现。

在众多向量数据库和向量库中,每个都有自己的一些特点,选择一个适合自己应用场景的也需要经过评估,本文将介绍FAISS的基本搭建和使用。

Embedding模型

Embedding模型在RAG技术中非常关键,因为它们直接影响到信息检索的效果和生成文本的质量。经过多方对比和业务场景选择,本文选用了BGE-M3作为Embedding模型。

BGE-M3 模型亮点

  1. 多语言(Multi-Linguality),训练集包含100+种以上语言
  2. 多功能(Multi-Functionality),支持稠密检索(Dense Retrieval),还支持稀疏检索(Sparse Retrieval)与多向量检索(Multi-vector Retrieval)
  3. 多粒度(Multi-Granularity) BGE-M3目前可以处理最大长度为8192 的输入文本,支持“句子”、“段落”、“篇章”、“文档”等不同粒度的输入文本

huggingface下载太慢、超时可以使用国内的开源模型服务平台下载
如modelscope:

  • SDK下载
#模型下载
from modelscope import snapshot_download
model_dir = snapshot_download('Xorbits/bge-m3')
  • Git下载
    请确保 lfs 已经被正确安装
git lfs install
git clone https://www.modelscope.cn/Xorbits/bge-m3.git

FAISS是什么

Faiss 是一个用于高效相似性搜索和密集向量聚类的库。它包含在任意大小的向量组中搜索的算法,直到可能不适合 RAM 的向量组。它还包含用于评估和参数调整的支持代码。

Faiss 是用 C++ 编写的,带有完整的 Python 包装器(版本 2.0+ 和 3.0+)。一些最有用的算法是在 GPU 上实现的。它由Facebook AI Research开发。

FAISS实战

安装faiss

推荐使用Anaconda安装,如果你的电脑上还未安装与配置Anaconda环境,请先安装Anaconda。
cpu版本:

conda install -c pytorch faiss-cpu

gpu版本:

conda install -c pytorch faiss-gpu
加载Embedding模型

安装sentence_transformers

conda install sentence-transformers
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("./bge-m3") 
model.max_seq_length

可以看到该模型max_tokens为8192

创建FAISS数据库

Faiss 中有常用的三种索引方式 IndexFlatL2、IndexIVFFlat 和 IndexIVFPQ。

本示例使用IndexFlatL2 进行演示。

  • IndexFlatL2 - 暴力检索L2

    使用欧氏距离(L2)进行精确检索。

    适用于较小规模的数据集,采用暴力检索的方式,即计算查询向量与所有数据库向量之间的距离,然后返回相似度最高的前 k 个向量。

  • IndexIVFFlat - 倒排索引,加速:

    使用倒排索引结构,将数据集划分为多个聚类空间,以加速搜索。

    在查询阶段,首先定位到可能包含相似向量的聚类中心,然后在该聚类中心附近进行精确搜索。

  • IndexIVFPQ - 省空间超快:

  • 使用 Product Quantization(PQ)技术进行有损压缩,以节省内存。

    在查询阶段,返回近似结果。
    本示例使用IndexFlatL2

import faiss 
import numpy as npd = 1024  # 设置向量维度为 1024
sentences = ['中国气象局启动暴雨二级应急响应!黄淮地区及四川盆地等地有强降雨', '强降雨集中在河南山东安徽江苏等地', '警惕次生灾害', '主雨带逐步移至四川盆地到黄淮一带(扎实做好防汛抗旱、抢险救灾各项工作)', '中国气象局启动暴雨二级响应,黄淮地区及四川盆地等有强降雨', '长江水利委员会贯彻落实水利部防汛会商要求',  '聚焦防汛抗洪丨河南对郑州等9市启动防汛三级应急响应', '受降雨影响', '河南郑州、南阳等地部分高速路段禁止所有车辆上站', '暴雨黄色预警:10省区部分地区有大到暴雨', '河南局地有特大暴雨', '超40支救援队驰援南阳!当地应急管理局:降水量逐渐减小,暂无人员伤亡', '透视2024广东高招提前批:小语种转向“复合型”', '大湾区做强“高教圈”', '广东省教育考试院:考生可通过这些方式查询高考录取结果', '广东2024高招录取启动!投档、进档、预录、退档、征集志愿……一文看懂!', '广东高考提前批本科院校录取结束,清华大学摘得非军检院校投档线首位', '\ufeff学子观察/中欧班列省成本', '“新三样”加速出海', '构建欧亚贸易“黄金通道”', '中欧班列(西安)让“中国制造”一路畅行', '江苏中欧(亚)班列累计开行超1.6万列', '2024年中欧班列累计开行1万列', '发送货物108.3万标箱同比增长11%', ......]embeddings = model.encode(sentences)  # 使用模型对句子进行编码,获取句子嵌入向量
index = faiss.IndexFlatL2(d)  # 创建一个 L2 距离的索引
index.add(embeddings)  # 将句子嵌入向量添加到索引中print("向量数量:", index.ntotal)  # 打印索引中向量的总数 101个
搜索FAISS数据
k = 5  # 设置检索的最近邻个数# 对查询句子进行编码,并在索引中进行检索,返回距离和索引
D, I = index.search(model.encode(['河南大雨']), k)  # 检查结果# 打印每个最近邻的距离和对应的句子
for i, _i in enumerate(I[0]):print(D[0][i], sentences[_i])

output:

0.31428105 河南局地有特大暴雨
0.5695877 受降雨影响
0.59010285 强降雨集中在河南山东安徽江苏等地
0.8355587 中国气象局启动暴雨二级响应,黄淮地区及四川盆地等有强降雨
0.8516881 聚焦防汛抗洪丨河南对郑州等9市启动防汛三级应急响应
删除FAISS数据
print(index.ntotal)
index.remove_ids(np.arange(5)) # 需要移除的向量的id
print(index.ntotal)  #移除了5个向量,还剩96个
保存、加载FAISS索引

可以使用如下方法将索引保存为文件:

faiss.write_index(index, "large.index")

需要使用时,使用以下方法读取文件建立索引:

index = faiss.read_index("news.index")
print("向量数量:", index.ntotal)  

可以看到索引数量依然是96个

总结

本文介绍了FAISS在RAG系统中的重要作用以及其基本使用方法。通过使用BGE-M3模型进行句子嵌入,并利用FAISS进行索引和检索,我们展示了如何高效地管理和搜索高维向量数据。此外,本文还涵盖了如何删除向量、保存和加载索引等实用操作。希望这些内容能帮助您更好地理解和应用FAISS,以提升数据处理和信息检索的效率。

数据采集、产品定制开发、数据分析

url='https://wx.《17610352720》.wx'

大数据分析为运营和各行业带来了前所未有的机会,使企业能够更敏锐地洞察市场、优化运营,并更有效地应对竞争和变革。在信息时代,充分利用大数据分析,将成为企业取得竞争优势的不可忽视的关键要素。

创作不易,如果你觉得有帮助,请点个赞支持一下。你的鼓励是我创作的最大动力,期待未来能为大家带来更多有趣的分析文章。感谢大家的阅读和支持!

最后,祝愿你我的生活都灿烂如花。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3247922.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

1.厦门面试

1.Vue的生命周期阶段 vue生命周期分为四个阶段 第一阶段(创建阶段):beforeCreate,created 第二阶段(挂载阶段):beforeMount(render),mounted 第三阶段&#…

数据库管理的艺术(MySQL):DDL、DML、DQL、DCL及TPL的实战应用(上:数据定义与控制)

文章目录 DDL数据定义语言1、创建数据库2、创建表3、修改表结构4、删除5、数据类型 列的约束主键约束(primary key)唯一约束(unique key)非空约束检查约束(check)外键约束(foreign key&#xff…

【java】力扣 合法分割的最小下标

文章目录 题目链接题目描述思路代码 题目链接 2780.合法分割的最小下标 题目描述 思路 这道题是摩尔算法的一种扩展 我们先可以找到候选人出来,然后去计算他在左右两边元素出现的次数,只有当他左边时,左边出现的次数2 >左边的长度&…

在pycharm 2023.2.1中运行由R语言编写的ipynb文件

在pycharm 2023.2.1中运行由R语言编写的ipynb文件 背景与目标: 项目中包含由R语言编写的ipynb文件,希望能在pycharm中运行该ipynb文件。 最终实现情况: 未能直接在pycharm中运行该ipynb文件,但是替代的实现方法有:…

基于 Web 的家校联系系统的设计与实现

目录 基于 Web 的家校联系系统的设计与实现 一、绪论 (一)研究背景 (二) 研究目的 (三) 研究意义 二、需求分析 (一) 功能需求 (二) 性能需求 &#…

物联网实训室的核心功能有哪些?

随着物联网技术的迅猛发展和广泛应用,唯众凭借其深厚的技术积累和丰富的行业经验,为职业院校提供了全面的物联网实训室解决方案。这些实训室不仅为学生提供了真实、实用、创新的实践环境,还促进了产学研用的深度融合,推动了物联网…

智能锁赛道内卷加剧,磐金锁王42年来行稳致远,底气何在?

中国智能门锁市场正处于一个快速发展的黄金阶段,呈现出了前所未有的繁荣。奥维云网(AVC)的线上推总数据显示,2024年1-5月,中国家用智能门锁线上市场推总销量规模为274.3万套,同比增长28.3%;推总…

前端基础之Grid布局

【图书推荐】《HTML5CSS3 Web前端开发与实例教程(微课视频版)》-CSDN博客 Grid布局概述 Grid布局又称为网格布局(Grid Layout),是一种现代且功能极为强大的二维网页布局系统。它将容器划分为行和列,产生单…

71.PLC Settings for OPCSERVER(KEPWare)- SAP ME实施

目录 0.目的 1.三菱PLCMitsubishi Ethernet 1.1 型号FX-3U的配置 选择Operational settings 按下图设置通讯参数 选择Open settings 按下图设置通讯端口 选择Router ralay parameter 按下图设置网关 1.2型号Q Series 按下图设置IP、网关 按下图设置端口…

VDI 与 VM的區別

VDI 或虚拟桌面基础架构是一种计算机虚拟化形式,允许将桌面托管在远程服务器上。 它允许许多用户从一台中央服务器访问自己的虚拟桌面。 每个虚拟桌面都在单独的操作系统上运行,并拥有自己的资源,例如 CPU、内存和存储。 虚拟机 (VM) 是虚拟…

高校转专业新政解读:自由转出有序转入,激发个性发展与教育活力

随着社会对人才需求的多样化和个性化发展趋势,我国高等教育正迎来一场深刻的变革。近期,不少高校公布了本科生转专业的新政策,这一变化不仅为学生提供了更广阔的发展空间,也为高校的教育改革和专业建设带来了新的挑战和机遇。 一、…

开放式激光振镜运动控制器的激光清洗应用

市场应用背景 随着我国半导体、3C电子、汽车及精密制造等关键行业的快速发展,工业清洗的质量、效率和环保性日益受到重视。激光清洗作为一种无需使用化学清洗剂、无二次废物产生且低能耗的绿色技术,正迅速成为工业清洗领域的热点。 激光清洗通过高能量…

wps office 2019 Pro Plus 集成序列号Vba安装版教程

前言 wps office 2019专业增强版含无云版是一款非常方便的办公软件,我们在日常的工作中总会碰到需要使用WPS的时候,它能为我们提供更好的文档编写帮助我们更好的去阅读PDF等多种格式的文档,使用起来非常的快捷方便。使用某银行专业增强版制作…

深度学习模型快速开发平台推荐

前言 本文面向深度学习初学者或者工程师,推荐几个常用的深度学习模型快速开发平台。可以帮助初学者快速跑通模型,帮助工程师快速对模型进行部署和应用。 huggingface 简介 不多介绍,全球最大的模型托管平台,该平台最大的特点是…

数据库系统概论:数据库系统模式

数据库系统在我们的数字世界中扮演着至关重要的角色,无论是个人设备还是企业级应用,数据的有效管理和访问都是必不可少的。而数据库系统的模式结构是确保数据一致性和可访问性的关键组成部分。 数据库系统模式 基本概念 型和值 数据模型中有 型(type…

Bentley技术赋能水务基础设施,助力水质改善

ProjectWise Components Center 助力简化可重复工作流,节省 370 多万英镑的成本,支持环境可持续发展 满足严格的除磷要求 英国水务行业的第七项资产管理计划将水质改善方案列为工作的重中之重。该计划尤其注重减少排放到水道(包括水流经过的天…

2024牛客多校D.XOR of Suffix Sums

题目 题目要求的是求后缀和的异或和。首先我们考虑疑惑和情况下,什么时候为1,很显然,在当前二进制位0和1 的其中任意一个个数为奇数的时候才能让当前二进制位为1。 再观察到,题目中的模数很奇怪,他是。那么大于的数位…

Jmeter关联

案例脚本实现:选择商品加入购物车 客户端发送一个登录的HTTP请求,服务端返回一个带着token的响应,后续发出一个带token信息的加入购物车的HTTP请求,返回响应。 关联:当请求直接由依赖关系的时候,比如一个请…

“论软件维护方法及其应用”精选范文,软考高级论文,系统架构设计师论文

论文真题 软件维护是指在软件交付使用后,直至软件被淘汰的整个时间范围内,为了改正错误或满足 新的需求而修改软件的活动。在软件系统运行过程中,软件需要维护的原因是多种多样的, 根据维护的原因不同,可以将软件维护…

FastAPI 学习之路(五十六)将token缓存到redis

在之前的文章中,FastAPI 学习之路(二十九)使用(哈希)密码和 JWT Bearer 令牌的 OAuth2,FastAPI 学习之路(二十八)使用密码和 Bearer 的简单 OAuth2,FastAPI 学习之路&…