日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Python利用Faiss庫實現ANN近鄰搜索的方法詳解

瀏覽:31日期:2022-07-15 13:06:37

Embedding的近鄰搜索是當前圖推薦系統非常重要的一種召回方式,通過item2vec、矩陣分解、雙塔DNN等方式都能夠產出訓練好的user embedding、item embedding,對于embedding的使用非常的靈活:

輸入user embedding,近鄰搜索item embedding,可以給user推薦感興趣的items 輸入user embedding,近鄰搜搜user embedding,可以給user推薦感興趣的user 輸入item embedding,近鄰搜索item embedding,可以給item推薦相關的items

然而有一個工程問題,一旦user embedding、item embedding數據量達到一定的程度,對他們的近鄰搜索將會變得非常慢,如果離線階段提前搜索好在高速緩存比如redis存儲好結果當然沒問題,但是這種方式很不實時,如果能在線階段上線幾十MS的搜索當然效果最好。

Faiss是Facebook AI團隊開源的針對聚類和相似性搜索庫,為稠密向量提供高效相似度搜索和聚類,支持十億級別向量的搜索,是目前最為成熟的近似近鄰搜索庫。

接下來通過jupyter notebook的代碼,給大家演示下使用faiss的簡單流程,內容包括:

讀取訓練好的Embedding數據 構建faiss索引,將待搜索的Embedding添加進去 取得目標Embedding,實現搜索得到ID列表 根據ID獲取電影標題,返回結果

對于已經訓練好的Embedding怎樣實現高速近鄰搜索是一個工程問題,facebook的faiss庫可以構建多種embedding索引實現目標embedding的高速近鄰搜索,能夠滿足在線使用的需要

安裝命令:

conda install -c pytorch faiss-cpu

提前總結下faiss使用經驗:

1. 為了支持自己的ID,可以用faiss.IndexIDMap包裹faiss.IndexFlatL2即可

2. embedding數據都需要轉換成np.float32,包括索引中的embedding以及待搜索的embedding

3. ids需要轉換成int64類型

1. 準備數據

import pandas as pdimport numpy as np

df = pd.read_csv('./datas/movielens_sparkals_item_embedding.csv')df.head()

id features 0 10 [0.25866490602493286, 0.3560594320297241, 0.15… 1 20 [0.12449632585048676, -0.29282501339912415, -0… 2 30 [0.9557555317878723, 0.6764761805534363, 0.114… 3 40 [0.3184879720211029, 0.6365472078323364, 0.596… 4 50 [0.45523127913475037, 0.34402626752853394, -0….

構建ids

ids = df['id'].values.astype(np.int64)type(ids), ids.shape(numpy.ndarray, (3706,))ids.dtypedtype(’int64’)ids_size = ids.shape[0]ids_size3706

構建datas

import jsonimport numpy as npdatas = []for x in df['features']: datas.append(json.loads(x))datas = np.array(datas).astype(np.float32)datas.dtypedtype(’float32’)datas.shape(3706, 10)datas[0]array([ 0.2586649 , 0.35605943, 0.15589039, -0.7067125 , -0.07414215, -0.62500805, -0.0573845 , 0.4533663 , 0.26074877, -0.60799956], dtype=float32)# 維度dimension = datas.shape[1]dimension10

2. 建立索引

import faissindex = faiss.IndexFlatL2(dimension)index2 = faiss.IndexIDMap(index)ids.dtypedtype(’int64’)index2.add_with_ids(datas, ids)index.ntotal3706

4. 搜索近鄰ID列表

df_user = pd.read_csv('./datas/movielens_sparkals_user_embedding.csv')df_user.head()id features

id features 0 10 [0.5974288582801819, 0.17486965656280518, 0.04… 1 20 [1.3099910020828247, 0.5037978291511536, 0.260… 2 30 [-1.1886241436004639, -0.13511677086353302, 0…. 3 40 [1.0809299945831299, 1.0048035383224487, 0.986… 4 50 [0.42388680577278137, 0.5294889807701111, -0.6…

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_embeddingarray([[ 0.59742886, 0.17486966, 0.04345559, -1.3193961 , 0.5313592 , -0.6052168 , -0.19088413, 1.5307966 , 0.09310367, -2.7573566 ]], dtype=float32)user_embedding.shape(1, 10)user_embedding.dtypedtype(’float32’)topk = 30D, I = index.search(user_embedding, topk) # actual searchI.shape(1, 30)Iarray([[3380, 2900, 1953, 121, 3285, 999, 617, 747, 2351, 601, 2347, 42, 2383, 538, 1774, 980, 2165, 3049, 2664, 367, 3289, 2866, 2452, 547, 1072, 2055, 3660, 3343, 3390, 3590]])

5. 根據電影ID取出電影信息

target_ids = pd.Series(I[0], name='MovieID')target_ids.head()0 33801 29002 19533 1214 3285Name: MovieID, dtype: int64df_movie = pd.read_csv('./datas/ml-1m/movies.dat', sep='::', header=None, engine='python', names = 'MovieID::Title::Genres'.split('::'))df_movie.head()

MovieID Title Genres 0 1 Toy Story (1995) Animation|Children’s|Comedy 1 2 Jumanji (1995) Adventure|Children’s|Fantasy 2 3 Grumpier Old Men (1995) Comedy|Romance 3 4 Waiting to Exhale (1995) Comedy|Drama 4 5 Father of the Bride Part II (1995) Comedy

df_result = pd.merge(target_ids, df_movie)df_result.head()

MovieID Title Genres 0 3380 Railroaded! (1947) Film-Noir 1 2900 Monkey Shines (1988) Horror|Sci-Fi 2 1953 French Connection, The (1971) Action|Crime|Drama|Thriller 3 121 Boys of St. Vincent, The (1993) Drama 4 3285 Beach, The (2000) Adventure|Drama

總結

到此這篇關于Python利用Faiss庫實現ANN近鄰搜索的文章就介紹到這了,更多相關Python用Faiss庫ANN近鄰搜索內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
1024精品一区二区三区| 日韩av片子| 日韩中文影院| 久久中文字幕一区二区三区| 国产福利一区二区三区在线播放| 久久国产婷婷国产香蕉| 国产免费av国片精品草莓男男| 日韩1区2区3区| 久久狠狠亚洲综合| 国产激情一区| 岛国精品一区| 欧洲av一区二区| 最新亚洲一区| 中文字幕亚洲在线观看| 欧美日韩一区二区三区在线电影| 国产免费播放一区二区| 久久一区欧美| 国产精品久久久久久久免费观看| 国产一区丝袜| 成人自拍av| 另类av一区二区| 久久精品超碰| 国产91在线播放精品| 国产一区二区中文| 伊人精品久久| 国产乱人伦丫前精品视频| 91综合视频| 一区免费在线| 国产亚洲精品精品国产亚洲综合| 精品国产a一区二区三区v免费| 日韩精品不卡一区二区| 日韩午夜免费| 青草国产精品久久久久久| 精品一区二区男人吃奶| 中文另类视频| 中文字幕亚洲精品乱码| 精品无人区麻豆乱码久久久| 亚洲国内精品| 91精品啪在线观看国产爱臀| 福利视频一区| 日韩视频精品在线观看| 欧美日一区二区在线观看| 中文字幕在线视频久| 热久久国产精品| 欧美激情精品| 成人av动漫在线观看| 日本久久二区| 日韩精品诱惑一区?区三区| 首页亚洲欧美制服丝腿| 麻豆精品一区二区综合av| 国产99久久久国产精品成人免费| 在线观看亚洲精品福利片| 精品免费av一区二区三区| 九一国产精品| 久久国产乱子精品免费女| 久久久国产亚洲精品| 97精品久久| 婷婷亚洲五月| 国产激情久久| 亚洲欧美日韩精品一区二区| 国产一区二区精品久| 综合一区在线| 97精品一区二区| 亚洲不卡视频| 偷拍精品精品一区二区三区| 日韩一区二区三区四区五区| 久久蜜桃精品| 久久不见久久见中文字幕免费 | 国产在线一区不卡| 在线亚洲国产精品网站| 国产一区二区色噜噜| 在线精品一区| 亚洲www啪成人一区二区| 欧美亚洲tv| 中文日韩在线| 精品国产亚洲一区二区三区大结局| 亚洲欧洲一区二区天堂久久| 精品视频网站| 日韩激情av在线| 99国产精品久久久久久久| av在线最新| 国产精品视频一区视频二区| 蜜臀av在线播放一区二区三区| 中文字幕系列一区| 久久精品国产亚洲aⅴ| 亚洲欧洲国产精品一区| 五月天激情综合网| 日韩在线中文| 国内在线观看一区二区三区| 欧美永久精品| 午夜精品影院| 精品三级久久| 国产91在线播放精品| 久久狠狠亚洲综合| 免费美女久久99| 偷拍欧美精品| 久久在线免费| 日韩福利一区| 精品国产美女a久久9999| 日韩国产91| 亚洲精品成人一区| 蜜臀精品久久久久久蜜臀| 精品日韩毛片| 私拍精品福利视频在线一区| 成人在线视频区| 国产精品一线| 欧美亚洲一区二区三区| 日韩精品国产精品| 中文无码久久精品| 水野朝阳av一区二区三区| 黄页网站一区| 狠狠爱成人网| 亚洲精品在线观看91| 欧美午夜精彩| 免费国产自久久久久三四区久久| 久久精品播放| 亚洲二区三区不卡| 欧美a级一区| 午夜欧美视频| 伊人成人在线视频| 亚洲精品国产偷自在线观看| 2023国产精品久久久精品双| 黄色免费成人| 久久国产精品亚洲77777| 免费在线看一区| 日韩欧美2区| 国产精品久久久久av蜜臀| 国产精品高潮呻吟久久久久| 久久av国产紧身裤| 精品免费在线| 日本国产精品| 在线 亚洲欧美在线综合一区| 国产免费成人| 亚洲人www| 国产日韩亚洲欧美精品| 国产精品久av福利在线观看| 久久99国产精品视频| 日韩毛片视频| 亚洲高清av| 综合五月婷婷| 国产精品www.| 高清不卡亚洲| 99pao成人国产永久免费视频 | 日韩电影在线视频| 亚洲午夜av| 一区二区精彩视频| 欧美日韩国产一区二区在线观看| 国产区精品区| 国产aⅴ精品一区二区四区| 日本韩国欧美超级黄在线观看| 亚洲高清影视| 日韩精品一页| 超碰成人av| 国产女优一区| 国产精品一区二区美女视频免费看| 精品国产中文字幕第一页| 日韩在线短视频| 日韩中文字幕1| 你懂的网址国产 欧美| 日韩一区三区| 最新亚洲国产| 丰满少妇一区| 婷婷丁香综合| 欧美天堂在线| 日韩精品dvd| 免费高清在线一区| 久久a爱视频| 激情欧美一区| 日韩午夜视频在线| 91欧美国产| 视频一区二区国产| 精品国产中文字幕第一页| 好吊一区二区三区| 国产调教一区二区三区| 神马午夜久久| 日韩精品视频网站| 日韩在线欧美| 鲁大师成人一区二区三区| 国产精品.xx视频.xxtv| av一区二区高清| 国产精品sss在线观看av| 1024精品久久久久久久久| 国产色噜噜噜91在线精品| 久久精品卡一| 国产精品久久久久久模特| 亚洲成人三区| 麻豆精品蜜桃视频网站| 午夜视频精品| 麻豆传媒一区二区三区| 久久国产精品久久久久久电车| 精品一区二区三区在线观看视频| 亚洲欧美日韩精品一区二区| 精品中文字幕一区二区三区| 亚洲一区日本| 四季av一区二区凹凸精品| 日韩中文av| 不卡av一区二区| 精品国产91| 日本午夜精品久久久久| 狠狠爱成人网|