a
    ¬ÀhA0  ã                   @   s   d dl Z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%¡Z&e 'e(¡ e )e*¡ e +e,¡ e -e.¡ e /e0¡ e 1e2¡ e 3e4¡ e 5e6¡ e 7e8¡ ej9e:dd ej9e;d	d ej9e<d	d	d
 e =e>¡ e ?e@¡ e ?eA¡ e BeC¡ e DeE¡ e FeG¡ e HeI¡ e JeK¡ZKejLe% ZMeNeMƒD ]ÆZOePeMeOƒZQe ReQ¡r eQZSeTeSeUƒrÔe VeS¡ eTeSeWƒrêe XeS¡ eTeSeYƒr e ZeS¡ eTeSe[ƒre \eS¡ eTeSe]ƒs.eTeSe^ƒr8e _eS¡ eTeSe`ƒrNe aeS¡ eTeSebƒr e ceS¡ q dd„ Zddd„ Zedd„ Zfdd„ Zgdd„ Zhdeiƒ v rÎedejdƒ edekdƒ edeldƒ edemdƒ edendƒ edeod ƒ edepd ƒ edeqd dgd gdœƒ efeqdd ƒ ederd ƒ edesd ƒ edetd ƒ edeud ƒ edevd ƒ edewd ƒ edexd ƒ edeyd ƒ egeydƒ edezd ƒ ede{d ƒ ede|d ƒ ede]d ƒ ede^d ƒ ede}d ƒ ede~d ƒ eded ƒ efe€dd ƒ efedd ƒ ede‚d gd gdœƒ edeƒdd dgiƒ ede„d ƒ ede…d ƒ ede†d ƒ ede‡d ƒ efeˆdd ƒ efe‰dd ƒ edeŠd ƒ ede‹d ƒ edeŒd ƒ edeeŽdƒƒ edeeŽdƒƒ edeeŽdƒƒ ede‘eŽdƒƒ edeeŽdƒƒ ede’eŽdƒƒ e“Z”d+dd„Z“e•Z–d,dd „Z•eˆZ—e˜Z™ešZ›eœZd-d!d"„Zžd.d#d$„ZŸd%d&„ Z d'd(„ Z¡G d)d*„ d*ƒZ¢d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   Zforce_int64c                    s@   | j ‰ ‡ ‡fdd„}‡ ‡fdd„}tˆƒtkr6|| _ n|| _ d S )Nc                    s    ˆ | g|¢R Ž  |ˆ g| _ d S ©N©Úreferenced_objects)ÚselfÚargs©Zoriginal_initÚparameter_no© úJ/var/www/html/assistant/venv/lib/python3.9/site-packages/faiss/__init__.pyÚreplacement_initj   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>q   ó    zMadd_ref_in_constructor.<locals>.replacement_init_multiple.<locals>.<listcomp>)Úlenr   )r   r   Zpsetr    r'   r#   Úreplacement_init_multiplen   s    z9add_ref_in_constructor.<locals>.replacement_init_multiple)Ú__init__ÚtypeÚdict)Ú	the_classr!   r$   r+   r"   r    r#   Úadd_ref_in_constructore   s    r0   c                 C   s$   t | dƒs|g| _n| j |¡ d S ©Nr   )Úhasattrr   Úappend)r   Úrefr"   r"   r#   Úadd_to_referenced_objectsy   s    

r5   c                    s(   t | |ƒ‰ ‡ ‡fdd„}t| ||ƒ d S )Nc                    s"   |ˆ }t | |ƒ ˆ | g|¢R Ž S r   )r5   )r   r   r4   ©Úoriginal_methodr!   r"   r#   Úreplacement_methodƒ   s    
z-add_ref_in_method.<locals>.replacement_method©ÚgetattrÚsetattr)r/   Úmethod_namer!   r8   r"   r6   r#   Úadd_ref_in_method€   s    
r=   c                    s(   t | |ƒ‰ d‡ fdd„	}t| ||ƒ d S )NFc                    s<   |s&t | dƒs|g| _q0| j |¡ n
|j ¡  ˆ | ||ƒS r1   )r2   r   r3   ÚthisZdisown)r   r4   Zown©r7   r"   r#   r8   Ž   s    


z:add_ref_in_method_explicit_own.<locals>.replacement_method)Fr9   )r/   r<   r8   r"   r?   r#   Úadd_ref_in_method_explicit_ownŠ   s    

r@   c                    s(   t t| ƒ‰ ‡ ‡fdd„}tt| |ƒ d S )Nc                     s   ˆ | Ž }| ˆ }|g|_ |S r   r   )r   Úresultr4   ©Zoriginal_functionr!   r"   r#   Úreplacement_functionŸ   s    z1add_ref_in_function.<locals>.replacement_function)r:   Úthis_moduler;   )Zfunction_namer!   rC   r"   rB   r#   Úadd_ref_in_function›   s    
rE   ZGPU)é   r   Zprepend_transformZ
replace_vtZ	add_shardrF   ZaddIndexé   c                 C   sì   t j|dd}|j\}}|| jks&J ‚|sHtƒ }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 d S )
NÚfloat32©Zdtyper   Úuint64rG   Úfloat64r   rF   ©ZndisZpre_transform_msZcoarse_quantizer_msZinvlist_scan_ms)ÚnpÚascontiguousarrayÚshapeÚdÚIVFSearchParametersÚextract_index_ivfÚnprobeÚ	max_codesÚemptyrH   Zint64Úsearch_with_parameters_cÚswig_ptr)ÚindexÚxÚkÚparamsÚoutput_statsÚnrP   Ú	index_ivfÚnb_disÚms_per_stageÚ	distancesÚlabelsÚstatsr"   r"   r#   Úsearch_with_parametersè   s4    

üürd   c              
   C   s  t j|dd}|j\}}|| jks&J ‚|sHtƒ }t| ƒ}|j|_|j|_t  dd¡}t  dd¡}	t	|ƒ}
t
| |t|ƒ||
|t|ƒt|	ƒƒ t|
j|d ƒ ¡ }t|d ƒ}t|
j|ƒ ¡ }t|
j|ƒ ¡ }|sØ|||fS |d |	d |	d |	d	 d
œ}||||fS d S )NrH   rI   r   rJ   rG   rK   éÿÿÿÿr   rF   rL   )rM   rN   rO   rP   rQ   rR   rS   rT   rU   ZRangeSearchResultÚrange_search_with_parameters_crW   Zrev_swig_ptrÚlimsÚcopyÚintra   rb   )rX   rY   Zradiusr[   r\   r]   rP   r^   r_   r`   Úresrg   ÚndZDoutZIoutrc   r"   r"   r#   Úrange_search_with_parameters  s8    

ý
ürl   c                 C   s   t ƒ }t| ||ƒ t|jƒS ©z* convert an index to a numpy uint8 array  )ÚVectorIOWriterZwrite_indexÚvector_to_arrayÚdata)rX   Úio_flagsÚwriterr"   r"   r#   Úserialize_index:  s    rs   c                 C   s   t ƒ }t| |jƒ t||ƒS r   )ÚVectorIOReaderÚcopy_array_to_vectorrp   Z
read_index)rp   rq   Úreaderr"   r"   r#   Údeserialize_indexA  s    rw   c                 C   s   t ƒ }t| |ƒ t|jƒS rm   )rn   Zwrite_index_binaryro   rp   )rX   rr   r"   r"   r#   Úserialize_index_binaryG  s    
rx   c                 C   s   t ƒ }t| |jƒ t|ƒS r   )rt   ru   rp   Zread_index_binary)rp   rv   r"   r"   r#   Údeserialize_index_binaryN  s    ry   c                   @   s*   e Zd Zedœdd„Zdd„ Zdd„ ZdS )	ÚTimeoutGuard)Útimeout_in_secondsc                 C   s
   || _ d S r   )Útimeout)r   r{   r"   r"   r#   r,   U  s    zTimeoutGuard.__init__c                 C   s   t  | j¡ d S r   )ZTimeoutCallbackÚresetr|   )r   r"   r"   r#   Ú	__enter__X  s    zTimeoutGuard.__enter__c                 C   s   t  ¡  d S r   )ZPythonInterruptCallbackr}   )r   Úexc_typeÚ	exc_valueÚ	tracebackr"   r"   r#   Ú__exit__[  s    zTimeoutGuard.__exit__N)Ú__name__Ú
__module__Ú__qualname__Úfloatr,   r~   r‚   r"   r"   r"   r#   rz   T  s   rz   )NF)NF)r   )r   )£ÚnumpyrM   ÚloggingÚsysÚinspectÚloaderZfaissr   Zfaiss.gpu_wrappersZfaiss.array_conversionsZfaiss.extra_wrappersr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ZFAISS_VERSION_MAJORZFAISS_VERSION_MINORZFAISS_VERSION_PATCHÚ__version__Ú	getLoggerrƒ   ÚloggerZhandle_ClusteringZ
ClusteringZhandle_Clustering1DZClustering1DZhandle_MatrixStatsZMatrixStatsZhandle_IOWriterZIOWriterZhandle_IOReaderZIOReaderZhandle_AutoTuneCriterionZAutoTuneCriterionZhandle_ParameterSpaceZParameterSpaceZ
handle_NSGZIndexNSGZhandle_MapLong2LongZMapLong2LongZhandle_IDSelectorSubsetZIDSelectorBatchZIDSelectorArrayZIDSelectorBitmapZhandle_CodeSetZCodeSetZhandle_Tensor2DZTensor2DZInt32Tensor2DZhandle_EmbeddingZ	EmbeddingZhandle_LinearZLinearZhandle_QINCoZQINCoZhandle_QINCoStepZ	QINCoStepZ handle_shard_ivf_index_centroidsZshard_ivf_index_centroidsÚmodulesrD   ÚdirÚsymbolr:   ÚobjÚisclassr/   Ú
issubclassÚIndexZhandle_IndexZIndexBinaryZhandle_IndexBinaryZVectorTransformZhandle_VectorTransformZ	QuantizerZhandle_QuantizerZIndexRowwiseMinMaxZIndexRowwiseMinMaxFP16Zhandle_IndexRowwiseMinMaxZSearchParametersZhandle_SearchParametersZ
CodePackerZhandle_CodePackerr0   r5   r=   r@   rE   Zget_compile_optionsZGpuIndexIVFFlatZGpuIndexBinaryFlatZGpuIndexFlatZGpuIndexIVFPQZGpuIndexIVFScalarQuantizerZIndexIVFFlatZIndexIVFFlatDedupZIndexPreTransformZ
IndexIVFPQZIndexIVFPQRZIndexIVFPQFastScanZIndexIVFResidualQuantizerZIndexIVFLocalSearchQuantizerZ!IndexIVFResidualQuantizerFastScanZ$IndexIVFLocalSearchQuantizerFastScanZIndexIVFSpectralHashZIndex2LayerZLevel1QuantizerZIndexIVFScalarQuantizerZ
IndexIDMapZIndexIDMap2Z	IndexHNSWZIndexShardsZIndexBinaryShardsZIndexRefineFlatZIndexRefineZIndexBinaryIVFZIndexBinaryFromFloatZIndexBinaryIDMapZIndexBinaryIDMap2ZIndexReplicasZIndexBinaryReplicasZBufferedIOWriterZBufferedIOReaderZIDSelectorNotZIDSelectorAndÚsliceZIDSelectorOrZIDSelectorXOrZIDSelectorTranslatedZIndexIVFIndependentQuantizerrd   rV   rl   rf   Z
IndexProxyZHStackInvertedListsZConcatenatedInvertedListsZIndexResidualQuantizerZIndexResidualZSearchParametersIVFrQ   rs   rw   rx   ry   rz   r"   r"   r"   r#   Ú<module>   sì   \þ























ÿ



































 
$

