728x90
faiss : 페이스북에서 C++로 제작한 Vector 자료 구조를 색인화하고 유사성을 검색하는 모듈이다.
CPU 기반의 모듈(pip install faiss-cpu )과 GPU (pip install faiss-gpu ) 모듈이 각각이 있어 환경에 맞는 모듈을 설치한다.
# pip install faiss-cpu
import faiss
def create_index_kmean(vector, size, saved_file=None):
dimension = 768
index_obj = faiss.IndexIDMap( faiss.IndexFlatIP(dimension) )
xidx = np.array( range(0, size), dtype='int64' )
index_obj.add_with_ids(vector, xidx)
if savefile:
faiss.write_index(index_obj, savefile)
return index_obj
def create_index_cosine(vector, size, saved_file=None):
dimension = 768
index_obj = faiss.IndexIDMap( faiss.IndexFlatIP(dimension) )
xidx = np.array( range(0, size), dtype='int64')
faiss.normalize_L2(vector) # cosine 유사도에서는 normalize_L2 처리.
index_obj.add_with_ids(vector, xidx)
if savefile:
faiss.write_index(index_obj, savefile)
return index_obj
#인덱스 생성
index_obj = create_index_kmean( database_vector, size=len(database_vector) )
k = 5 # 최대 5개의 서치 결과를 반환하도록 설정.
distance, index = index_obj.search(query_vec, k)
print(distance[0:])
print(index[0:])
728x90
'Data Science > Python' 카테고리의 다른 글
[Python] Dataframe에서 Zip파일 읽기 (0) | 2022.09.27 |
---|---|
[Python] pandas : Adding Multiple Columns from DatatFrame.apply() (0) | 2022.09.17 |
[Python] NLP : TreebankWordTokenizer, Pos Tag (0) | 2022.09.17 |
[python] ML Model Parameter Optimization : GridSearchCV (0) | 2022.09.17 |
[colab] Kaggle Dataset Load in Colab (0) | 2022.09.08 |
최근댓글