
    rhA0                     	   d dl Zd dlZd dlZd dlZddl d dlmZ d dl d dl	 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  Z# ejH                  e%      Z& ejN                  e(        ejR                  e*        ejV                  e,        ejZ                  e.        ej^                  e0        ejb                  e2        ejf                  e4        ejj                  e6        ejn                  e8        ejr                  e:d        ejr                  e;d	        ejr                  e<d	d	
        ejz                  e>        ej~                  e@        ej~                  eA        ej                  eC        ej                  eE        ej                  eG        ej                  eI        ej                  eK      ZKej                  e%   ZM eNeM      D ]  ZO ePeMeO      ZQ ej                  eQ      seQZS eTeSeU      r ej                  eS        eTeSeW      r ej                  eS        eTeSeY      r ej                  eS        eTeSe[      r ej                  eS        eTeSe]      s	 eTeSe^      r ej                  eS        eTeSe`      r ej                  eS        eTeSeb      s ej                  eS        d Zdd Zed Zfd Zgd 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         efedd         efedd         eded gd gd        ededd dgi        eded         eded         eded         eded         efedd         efedd         eded         eded         eded         ede ed              ede ed              ede ed              ede ed              ede ed              ede ed             eZd dZeZd dZeZeZeZeZd!dZd!dZd Zd Z G d d      Zy)"    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                 z    | j                   fd}fd}t              t        k(  r|| _         y || _         y )Nc                 .     | g|  |   g| _         y Nreferenced_objects)selfargsoriginal_initparameter_nos     a/var/www/html/ai-insurance-compliance-backend/venv/lib/python3.12/site-packages/faiss/__init__.pyreplacement_initz0add_ref_in_constructor.<locals>.replacement_initj   s     d"T"#'#5"6    c                 n     | g|  t        |         }|D cg c]  }||   	 c}| _        y c c}w r   )lenr!   )r"   r#   psetnor$   r%   s       r&   replacement_init_multiplez9add_ref_in_constructor.<locals>.replacement_init_multiplen   s8    d"T"CI&6:";48";";s   2)__init__typedict)	the_classr%   r'   r-   r$   s    `  @r&   add_ref_in_constructorr2   e   s9     &&M7<
 LT!6	-	r(   c                 d    t        | d      s	|g| _        y | j                  j                  |       y Nr!   )hasattrr!   append)r"   refs     r&   add_to_referenced_objectsr8   y   s+    4-.#&%&&s+r(   c                 F    t        | |      fd}t        | ||       y )Nc                 8    |   }t        | |        | g| S r   )r8   )r"   r#   r7   original_methodr%   s      r&   replacement_methodz-add_ref_in_method.<locals>.replacement_method   s'    < !$,t+d++r(   getattrsetattr)r1   method_namer%   r<   r;   s     ` @r&   add_ref_in_methodrA      s#    i5O, I{$67r(   c                 D    t        | |      dfd	}t        | ||       y )Nc                     |s1t        | d      s	|g| _        n6| j                  j                  |       n|j                  j	                           | ||      S r4   )r5   r!   r6   thisdisown)r"   r7   ownr;   s      r&   r<   z:add_ref_in_method_explicit_own.<locals>.replacement_method   sN    4!56+.%'''..s3 HHOOtS#..r(   )Fr=   )r1   r@   r<   r;   s      @r&   add_ref_in_method_explicit_ownrG      s#    i5O	/ I{$67r(   c                 V    t        t        |       fd}t        t        | |       y )Nc                  ,     |  }|    }|g|_         |S r   r    )r#   resultr7   original_functionr%   s      r&   replacement_functionz1add_ref_in_function.<locals>.replacement_function   s&    "D)< %(E!r(   )r>   this_moduler?   )function_namer%   rL   rK   s    ` @r&   add_ref_in_functionrO      s$    ];
 K(<=r(   GPU)   r   prepend_transform
replace_vt	add_shardrQ   addIndex   c                    t        j                  |d      }|j                  \  }}|| j                  k(  sJ |s7t	               }t        |       }|j                  |_        |j                  |_        t        j                  dd      }t        j                  dd      }	t        j                  ||ft         j                        }
t        j                  ||ft         j                        }t        | |t        |      |t        |
      t        |      |t        |      t        |	      	       |s|
|fS |d   |	d   |	d   |	d   d	}|
||fS )
Nfloat32dtyper   uint64rV   float64r   rQ   ndispre_transform_mscoarse_quantizer_msinvlist_scan_ms)npascontiguousarrayshapedIVFSearchParametersextract_index_ivfnprobe	max_codesemptyrX   int64search_with_parameters_cswig_ptr)indexxkparamsoutput_statsnre   	index_ivfnb_disms_per_stage	distanceslabelsstatss                r&   search_with_parametersrz      s+   
Qi0A77DAq<<$&%e,	!(($..XXa"F88Ay)L!Qrzz2IXXq!fBHH-Fq(1+	8I (<"8	 &   1I ,Q#/?+A	
 &%''r(   c                    t        j                  |d      }|j                  \  }}|| j                  k(  sJ |s7t	               }t        |       }|j                  |_        |j                  |_        t        j                  dd      }t        j                  dd      }	t        |      }
t        | |t        |      ||
|t        |      t        |	             t        |
j                  |dz         j                         }t        |d         }t        |
j                   |      j                         }t        |
j"                  |      j                         }|s|||fS |d   |	d   |	d   |	d	   d
}||||fS )NrX   rY   r   r[   rV   r\   r   rQ   r]   )rb   rc   rd   re   rf   rg   rh   ri   rj   RangeSearchResultrange_search_with_parameters_crm   rev_swig_ptrlimscopyintrw   rx   )rn   ro   radiusrq   rr   rs   re   rt   ru   rv   resr   ndDoutIoutry   s                   r&   range_search_with_parametersr     sX   
Qi0A77DAq<<$&%e,	!(($..XXa"F88Ay)L
A
C"q(1+ (<"8
 !a%(--/D	T"XBr*//1D

B',,.DT4 1I ,Q#/?+A	
 T4&&r(   c                 Z    t               }t        | ||       t        |j                        S z* convert an index to a numpy uint8 array  )VectorIOWriterwrite_indexvector_to_arraydata)rn   io_flagswriters      r&   serialize_indexr   :  s%    Fvx(6;;''r(   c                 Z    t               }t        | |j                         t        ||      S r   )VectorIOReadercopy_array_to_vectorr   
read_index)r   r   readers      r&   deserialize_indexr   A  s%    Fv{{+fh''r(   c                 X    t               }t        | |       t        |j                        S r   )r   write_index_binaryr   r   )rn   r   s     r&   serialize_index_binaryr   G  s#    Fuf%6;;''r(   c                 X    t               }t        | |j                         t        |      S r   )r   r   r   read_index_binary)r   r   s     r&   deserialize_index_binaryr   N  s#    Fv{{+V$$r(   c                   $    e Zd ZdefdZd Zd Zy)TimeoutGuardtimeout_in_secondsc                     || _         y r   )timeout)r"   r   s     r&   r.   zTimeoutGuard.__init__U  s	    )r(   c                 B    t         j                  | j                         y r   )TimeoutCallbackresetr   )r"   s    r&   	__enter__zTimeoutGuard.__enter__X  s    dll+r(   c                 ,    t         j                          y r   )PythonInterruptCallbackr   )r"   exc_type	exc_value	tracebacks       r&   __exit__zTimeoutGuard.__exit__[  s    %%'r(   N)__name__
__module____qualname__floatr.   r   r    r(   r&   r   r   T  s    *5 *,(r(   r   )NF)r   )numpyrb   logging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__	getLoggerr   logger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handle_Tensor2DTensor2DInt32Tensor2Dhandle_Embedding	Embeddinghandle_LinearLinearhandle_QINCoQINCohandle_QINCoStep	QINCoStep handle_shard_ivf_index_centroidsshard_ivf_index_centroidsmodulesrM   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   r8   rA   rG   rO   get_compile_optionsGpuIndexIVFFlatGpuIndexBinaryFlatGpuIndexFlatGpuIndexIVFPQGpuIndexIVFScalarQuantizer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IndexIVFIndependentQuantizerrz   rl   r   r~   
IndexProxyHStackInvertedListsConcatenatedInvertedListsIndexResidualQuantizerIndexResidualSearchParametersIVFrf   r   r   r   r   r   r   r(   r&   <module>r+     sY     
   !   %' ' ' ' ' ' ///1 1 
		8	$       , " " "< 0 ! ! !+ .   x (   x ( ' ' '(9 : $ $ $^ 4   ( # " " "< 0 & & &4 H & & &5 I & & &'7EW\ ]   g &   x (   } -   	 *   V $   E "   	 *KNKKLef  kk(# + 8F
+v
&Cws	i''N''	2i--N--i8i11N11)<i++N++I6i!349&<=4N44Y?i!122N229=i,,N,,Y738N.(,88"	> 	!!?A.-q1<+=!,5q9 |Q ' (! , (q!f!*= > #%8! < z1 % {A & )1 - 0! 4 3Q 7 8! < ;Q ? +Q / 3\ B {A &  * . 2 )1 - -q 1 z1 % {A & y! $ +{A . #[! 4 QCQC(8 9 {QAK 0 ~q ) +Q / ' + (! , -Q / %z1 5 ' + ' + }a ( }eAh / |U1X . }eAh / +U1X 6 }eAh / 3U1X > 2 (@ "> 'H 
/ &) (((%( (r(   