Python中怎么利用Faiss库实现向量近邻搜索
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,Python中怎么利用Faiss库实现向量近邻搜索,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、读取预训练好的Embedding数据
千家信息网最后更新 2025年01月31日Python中怎么利用Faiss库实现向量近邻搜索
Python中怎么利用Faiss库实现向量近邻搜索,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
1、读取预训练好的Embedding数据
import pandas as pd
import numpy as np
df = pd.read_csv("./datas/movielens_sparkals_item_embedding.csv")
# 提取要使用的电影ID列表,注意要转换成int64
ids = df["id"].values.astype(np.int64)
# 记录ID列表的大小
ids_size = ids.shape[0]
# 读取内容embedding数据,转换成二维array
import json
import numpy as np
datas = []
for x in df["features"]:
datas.append(json.loads(x))
# 变成二维array
datas = np.array(datas).astype(np.float32)
# 记录数据维度
dimension = datas.shape[1]
2、使用faiss建立索引
import faiss
index = faiss.IndexFlatL2(dimension)
index2 = faiss.IndexIDMap(index)
index2.add_with_ids(datas, ids)
3、实现近邻搜索
# 读取user embedding数据
df_user = pd.read_csv("./datas/user_embedding.csv")
df_user.head()
# 挑选一条user的embedding,转换成1行N列的二维array
user_embedding = np.array(json.loads(df_user[df_user["id"] == 10]["features"].iloc[0]))
user_embedding = np.expand_dims(user_embedding, axis=0).astype(np.float32)
user_embedding
# 实现搜索,这里的I就是近邻ID列表
tok = 30
D, I = index.search(user_embedding, topk) # actual search
4、拼接得到内容列表
# 把搜索出来的ID变成Series
target_ids = pd.Series(I[0], name="MovieID")
# 读取电影数据
df_movie = pd.read_csv("./datas/ml-1m/movies.dat",
sep="::", header=None, engine="python",
names = "MovieID::Title::Genres".split("::"))
# 实现内容JOIN
df_result = pd.merge(target_ids, df_movie)
看完上述内容,你们掌握Python中怎么利用Faiss库实现向量近邻搜索的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
搜索
内容
数据
近邻
二维
向量
方法
更多
电影
问题
束手无策
为此
原因
大小
对此
就是
技能
篇文章
索引
经验
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全论文1500字英文版
ps5哪个服务器比较便宜
用python软件开发
合肥软通动力软件开发C
sql 数据库 顺序排列
网络安全主题班会反思
惠普服务器磁盘设置
漳州软件开发笃行网络
杭州首创网络技术有限公司
在数据库技术中反映班级
网络安全技术方面的书籍
网络技术发展阶段是什么
亳州招聘软件开发人员
市委网信办公室网络安全防线
如何确定无线网络安全
软件开发企业怎么进行会计核算
数据库如何存放压缩文件
服务器时间条的很快
魔兽世界 刀片服务器
东莞市民传授网络安全
dns服务器配置外部域名
廊坊方舟网络技术有限公司
计算机网络技术专业情况评估
杨浦区软件开发技术服务公司
MGI数据库导出基因
网站360网络安全研究员
西安软件开发好找工作吗
数据库每个字段名都是什么意思
阿里云xshell数据库
阿里云服务器怎么设置默认配置