a
    ^g@0                  
   @   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jJe% ZKeLeKD ]ZMeNeKeMZOePeOreOZQeReQeSreTeQ eReQeUreVeQ eReQeWreXeQ eReQeYreZeQ eReQe[s$eReQe\r.e]eQ eReQe^rDe_eQ eReQe`reaeQ qdd Zbdd Zcdd Zddd Zedd Zfz6ebegd ebehd ebeid ebejd ebekd W n: ely Zm z e&ndemjod    W Y dZm[mn
dZm[m0 0 ebepd  ebeqd  eberd dgd gd ederdd  ebesd  ebetd  ebeud  ebevd  ebewd  ebexd  ebeyd  ebezd  eeezd ebe{d  ebe|d  ebe}d  ebe[d  ebe\d  ebe~d  ebed  ebed  ededd  ededd  ebed gd gd ebedd dgi ebed  ebed  ebed  ebed  ededd  ededd  ebed  ebed  ebed  ebeed ebeed ebeed ebeed ebeed ebeed eZd+ddZeZd,dd ZeZeZeZeZd-d!d"Zd.d#d$Zd%d& Zd'd( ZG d)d* 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   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 \/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/faiss/__init__.pyreplacement_initi   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>p       zMadd_ref_in_constructor.<locals>.replacement_init_multiple.<locals>.<listcomp>)lenr   )r   r   Zpsetr    r'   r#   replacement_init_multiplem   s    z9add_ref_in_constructor.<locals>.replacement_init_multiple)__init__typedict)	the_classr!   r$   r+   r"   r    r#   add_ref_in_constructord   s    r0   c                 C   s$   t | ds|g| _n| j| d S Nr   )hasattrr   append)r   refr"   r"   r#   add_to_referenced_objectsx   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   zMFailed to load GPU Faiss: %s. Will not load constructor refs for GPU indexes.)   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_indexB  s    rw   c                 C   s   t  }t| | t|jS rm   )rn   Zwrite_index_binaryro   rp   )rX   rr   r"   r"   r#   serialize_index_binaryH  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_binaryO  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,   V  s    zTimeoutGuard.__init__c                 C   s   t | j d S r   )ZTimeoutCallbackresetr|   )r   r"   r"   r#   	__enter__Y  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   U  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	QINCoStep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GpuIndexIVFFlatZGpuIndexBinaryFlatZGpuIndexFlatZGpuIndexIVFPQZGpuIndexIVFScalarQuantizer	NameErroreinfor   Z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   \





























*



























 
$

