Faiss教程 索引 2

2022-03-07 04:32:31 字數 1020 閱讀 7203

所有的函式都是深複製,我們不需要關心物件關係。

i/o函式:

複製函式:

index_factory通過字串來建立索引,字串包括三部分:預處理、倒排、編碼。

預處理支援:

倒排支援:

編碼支援:

如:index = index_factory(128, "opq16_64,imi2x8,pq8+16"): 處理128維的向量,使用opq來預處理資料16是opq內部處理的blocks大小,64為opq後的輸出維度;使用multi-index建立65536(2^16)和倒排列表;編碼採用8位元組pq和16位元組refine的re-rank方案。

opq是非常有效的,除非原始資料就具有block-wise的結構如sift。

索引的引數包括兩種:bulid-time索引建立時需要設定的、run-time在搜尋前可以調整的。針對run-time引數可以進行auto-tuning。

key類名

run-time引數

備註ivf, imi2x

indexivf*

nprobe

控制速度和精度的折中

imi2x*

indexivf

max_codes

平衡倒排列表

pq*indexivfpq, indexpq

hthamming threshold for polysemous

pq+indexivfpqr

k_factor

re-rank時要核實的資料量

autotunecriterion:包含ground-truth,使用搜尋結果,評估召回;operatingpoints:包含(效能,時間,引數集合id),目標是找到最優的operating point——沒有其他point可以在更短的時間內達到更好的效能;parameterspace:引數空間是指數級的,但是這些引數有乙個共同的特性,值越高一般來說速度越慢,效能越好。

faiss/tests/demo_sift1m.cpp中有乙個自動調參的示例。自動調參依賴於:評測集合完備且充足,機器環境穩定。

Faiss 如何選擇索引

faiss 如何選擇索引 flyfish 問題一 是否需要精確結果?如果是,那麼應該使用 flat 能保證精確結果的只有 indexflatl2 或 indexflatip inner product 它們作為其他索引的基線結果.問題二 是否關心記憶體?請記住,所有faiss索引都儲存在ram中。以...

Faiss建立索引並儲存(C )

faiss 建立索引並儲存。如果用indexhnswflat,就採用indexidmap進行對映。這裡的距離不是ip,是l2 include index io.h include indexivf.h include indexivfflat.h include indexhnsw.h includ...

索引教程 PHP教程索引

索引教程 introduction to php php簡介 installing php to linux 將php安裝到linux installing php to windows 將php安裝到windows php hello world project with eclipse 帶有ec...