o
    rhf,                     @   sF  d dl Zd dlZd dlZddlT d dlmZ d dlT d dlT d dl	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ dee e!f Z"e#e$ e%e& e'e( e)e* e+e, e-e. e/e0 e1e2 e3e4 ej5e6dd ej5e7d	d ej5e8d	d	d
 e9e: ej;e< Z=e>e=D ]YZ?e@e=e?ZAeBeAreAZCeDeCeEreFeC eDeCeGreHeC eDeCeIreJeC eDeCeKreLeC eDeCeMseDeCeNreOeC eDeCePreQeC eDeCeRreSeC qdd ZTdd ZUdd ZVdd ZWdd ZXeTeYd  eTeZd  eTe[d dgd gd eVe[dd  eTe\d  eTe]d  eTe^d  eTe_d  eTe`d  eTead  eTebd  eTecd  eWecd eTedd  eTeed  eTefd  eTeMd  eTeNd  eTegd  eTehd  eTeid  eVejdd  eVekdd  eTeld gd gd eTemdd dgi eTend  eTeod  eTepd  eTeqd  eVerdd  eVesdd  eTetd  eTeud  eTevd  eTewexd eTeyexd eTezexd eTe{exd eTezexd eTe|exd e}Z~d(ddZ}eZd(ddZerZeZeZeZd d! Zd)d"d#Zd$d% Zd&d' ZdS )*    N   )*)class_wrappers)kminkmaxpairwise_distancesrandrandintlrandrandnrand_smooth_vectorseval_intersectionnormalize_L2
ResultHeapknnKmeanschecksummatrix_bucket_sort_inplacebucket_sortmerge_knn_resultsMapInt64ToInt64knn_hammingpack_bitstringsunpack_bitstringsz%d.%d.%dT)
class_ownsF)r   force_int64c                    sB   | j   fdd} fdd}ttkr|| _ d S || _ d S )Nc                    s     | g|R   | g| _ d S Nreferenced_objects)selfargsoriginal_initparameter_no L/var/www/html/alpaca_bot/venv/lib/python3.10/site-packages/faiss/__init__.pyreplacement_init^   s   z0add_ref_in_constructor.<locals>.replacement_initc                    s4   | g R   t   } fdd|D | _d S )Nc                    s   g | ]} | qS r$   r$   ).0nor    r$   r%   
<listcomp>e   s    zMadd_ref_in_constructor.<locals>.replacement_init_multiple.<locals>.<listcomp>)lenr   )r   r    psetr!   r)   r%   replacement_init_multipleb   s   z9add_ref_in_constructor.<locals>.replacement_init_multiple)__init__typedict)	the_classr#   r&   r-   r$   r!   r%   add_ref_in_constructorY   s   

r2   c                 C   s&   t | ds|g| _d S | j| d S Nr   )hasattrr   append)r   refr$   r$   r%   add_to_referenced_objectsm   s   
r7   c                    s(   t | |  fdd}t| || d S )Nc                    s"   | }t | |  | g|R  S r   )r7   )r   r    r6   original_methodr#   r$   r%   replacement_methodw   s   
z-add_ref_in_method.<locals>.replacement_methodgetattrsetattr)r1   method_namer#   r:   r$   r8   r%   add_ref_in_methodt   s   
r?   c                    s(   t | | d fdd	}t| || d S )NFc                    s<   |st | ds|g| _n| j| n|j   | ||S r3   )r4   r   r5   thisdisown)r   r6   ownr9   r$   r%   r:      s   


z:add_ref_in_method_explicit_own.<locals>.replacement_method)Fr;   )r1   r>   r:   r$   rC   r%   add_ref_in_method_explicit_own~   s   

rD   c                    s(   t t|   fdd}tt| | d S )Nc                     s    |  }|  }|g|_ |S r   r   )r    resultr6   original_functionr#   r$   r%   replacement_function   s   z1add_ref_in_function.<locals>.replacement_function)r<   this_moduler=   )function_namer#   rH   r$   rF   r%   add_ref_in_function   s   
rK   )   r   prepend_transform
replace_vt	add_shardrL   addIndex   c                 C   s   t j|dd}|j\}}|| jksJ |s$t }t| }|j|_|j|_t dd}t dd}	t j||ft j	d}
t j||ft j
d}t| |t||t|
t||t|t|		 |s`|
|fS |d |	d |	d |	d d	}|
||fS )
Nfloat32dtyper   uint64rQ   float64r   rL   ndispre_transform_mscoarse_quantizer_msinvlist_scan_ms)npascontiguousarrayshapedIVFSearchParametersextract_index_ivfnprobe	max_codesemptyrR   int64search_with_parameters_cswig_ptr)indexxkparamsoutput_statsnr_   	index_ivfnb_disms_per_stage	distanceslabelsstatsr$   r$   r%   search_with_parameters   s4   


rt   c              
   C   s  t j|dd}|j\}}|| jksJ |s$t }t| }|j|_|j|_t dd}t dd}	t	|}
t
| |t|||
|t|t|	 t|
j|d  }t|d }t|
j| }t|
j| }|sl|||fS |d |	d |	d |	d	 d
}||||fS )NrR   rS   r   rU   rQ   rV   r   rL   rW   )r\   r]   r^   r_   r`   ra   rb   rc   rd   RangeSearchResultrange_search_with_parameters_crg   rev_swig_ptrlimscopyintrq   rr   )rh   ri   radiusrk   rl   rm   r_   rn   ro   rp   resry   ndDoutIoutrs   r$   r$   r%   range_search_with_parameters   s8   


r   c                 C      t  }t| | t|jS z* convert an index to a numpy uint8 array  )VectorIOWriterwrite_indexvector_to_arraydatarh   writerr$   r$   r%   serialize_index'     

r   c                 C   s   t  }t| |j t||S r   )VectorIOReadercopy_array_to_vectorr   
read_index)r   io_flagsreaderr$   r$   r%   deserialize_index.  s   
r   c                 C   r   r   )r   write_index_binaryr   r   r   r$   r$   r%   serialize_index_binary4  r   r   c                 C   s   t  }t| |j t|S r   )r   r   r   read_index_binary)r   r   r$   r$   r%   deserialize_index_binary;  s   r   )NF)r   )numpyr\   sysinspectloaderfaissr   faiss.gpu_wrappersfaiss.array_conversionsfaiss.extra_wrappersr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   FAISS_VERSION_MAJORFAISS_VERSION_MINORFAISS_VERSION_PATCH__version__handle_Clustering
Clusteringhandle_Clustering1DClustering1Dhandle_MatrixStatsMatrixStatshandle_IOWriterIOWriterhandle_IOReaderIOReaderhandle_AutoTuneCriterionAutoTuneCriterionhandle_ParameterSpaceParameterSpace
handle_NSGIndexNSGhandle_MapLong2LongMapLong2Longhandle_IDSelectorSubsetIDSelectorBatchIDSelectorArrayIDSelectorBitmaphandle_CodeSetCodeSetmodules__name__rI   dirsymbolr<   objisclassr1   
issubclassIndexhandle_IndexIndexBinaryhandle_IndexBinaryVectorTransformhandle_VectorTransform	Quantizerhandle_QuantizerIndexRowwiseMinMaxIndexRowwiseMinMaxFP16handle_IndexRowwiseMinMaxSearchParametershandle_SearchParameters
CodePackerhandle_CodePackerr2   r7   r?   rD   rK   IndexIVFFlatIndexIVFFlatDedupIndexPreTransform
IndexIVFPQIndexIVFPQRIndexIVFPQFastScanIndexIVFResidualQuantizerIndexIVFLocalSearchQuantizer!IndexIVFResidualQuantizerFastScan$IndexIVFLocalSearchQuantizerFastScanIndexIVFSpectralHashIndex2LayerLevel1QuantizerIndexIVFScalarQuantizer
IndexIDMapIndexIDMap2	IndexHNSWIndexShardsIndexBinaryShardsIndexRefineFlatIndexRefineIndexBinaryIVFIndexBinaryFromFloatIndexBinaryIDMapIndexBinaryIDMap2IndexReplicasIndexBinaryReplicasBufferedIOWriterBufferedIOReaderIDSelectorNotIDSelectorAndsliceIDSelectorOrIDSelectorXOrIDSelectorTranslatedIndexIVFIndependentQuantizerrt   rf   r   rw   
IndexProxyHStackInvertedListsConcatenatedInvertedListsIndexResidualQuantizerIndexResidualSearchParametersIVFr`   r   r   r   r   r$   r$   r$   r%   <module>   s   
\























































 
$
