Faiss建立索引並儲存(C )

2021-10-03 10:28:39 字數 1275 閱讀 7423

faiss 建立索引並儲存。如果用indexhnswflat,就採用indexidmap進行對映。

這裡的距離不是ip,是l2

#include "index_io.h"

//#include "indexivf.h"

//#include "indexivfflat.h"

#include "indexhnsw.h"

//#include "indexivfpq.h"

#include "metaindexes.h"

const char* output_file;

uint64_t fea_dim;

uint64_t img_num;

float *img_fea = new float[fea_dim*img_num];

// value the img_fea

// ...

// method flatip

//faiss::indexflatip index(fea_dim);

img_fea);

// method hnsw

faiss::indexhnswflat index_hsnw(fea_dim, 32);

faiss::indexidmap index(&index_hsnw);

long *ids = new long [img_num];

for (auto n=0; n<(long)img_num; n++)

index.add_with_ids(img_num, img_fea, ids);

file *fr;

fr=fopen(output_file,"wb");

faiss::write_index(&index, fr);

delete img_fea;

其中add_with_ids的定義如下,因此可以呼叫如上。

template void indexidmaptemplate::add_with_ids

(idx_t n, const typename indext::component_t * x,

const typename indext::idx_t *xids)

期間報錯如下

note: virtual void faiss::indexidmap::add_with_ids(faiss::index::idx_t, const float*, const long int*)

需要 long,改了就ok了。

C 建立XML檔案並儲存

隨著xml的普及以及在動態web應用程式中大量應用,如何通過.net建立,刪除,修改xml檔案變的也來也重要了。乙個簡單的概念是,xml檔案跟大的文字檔案並沒有什麼區別,同時它是先於.net出現,很多asp的開發者,當他需要程式輸出xml檔案的時候,通常都是用response.write 方法輸出為...

oracle建立儲存過程並呼叫

儲過程 stored procedure 是在大型資料庫系統中,一組為了完成特定功能的sql 語句集,儲存在資料庫中,經過第一次編譯後再次呼叫不需要再次編譯,使用者通過指定儲存過程的名字並給出引數 如果該儲存過程帶有引數 來執行它。儲存過程是資料庫中的乙個重要物件。create or replace...

lucene建立索引並搜尋mysql資料庫

lucene結合資料庫步驟 1 寫一段傳統的jdbc程式,將每條的使用者資訊從資料庫讀取出來 2 針對每條使用者記錄,建立乙個lucene document document doc new document 並根據你的需要,將使用者資訊的各個字段對應luncene document中的field ...