
    g@0                        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  Z# ej$        e%          Z& ej'        e(            ej)        e*            ej+        e,            ej-        e.            ej/        e0            ej1        e2            ej3        e4            ej5        e6            ej7        e8            ej9        e:d            ej9        e;d	            ej9        e<d	d	
            ej=        e>            ej?        e@            ej?        eA            ejB        eC            ejD        eE            ejF        eG            ejH        eI           ejJ        e%         ZK eLeK          D ]ZM eNeKeM          ZO ejP        eO          reOZQ eReQeS          r ejT        eQ            eReQeU          r ejV        eQ            eReQeW          r ejX        eQ            eReQeY          r ejZ        eQ            eReQe[          s eReQe\          r ej]        eQ            eReQe^          r ej_        eQ            eReQe`          r eja        eQ           d Zbd Zcd Zdd Zed Zf	  ebegd            ebehd            ebeid            ebejd            ebekd           n5# el$ r-Zme&n                    demjo        d          z             Y dZm[mndZm[mww xY w 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             ebe ed                      ebe ed                      ebe ed                      ebe ed                      ebe ed                      ebe ed                     eZd dZeZd dZeZeZeZeZd!dZd!dZd Zd Z G 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   force_int64c                     | j         fd}fd}t                    t          k    r	|| _         d S || _         d S )Nc                 6     | g|R   |         g| _         d S Nreferenced_objects)selfargsoriginal_initparameter_nos     L/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/faiss/__init__.pyreplacement_initz0add_ref_in_constructor.<locals>.replacement_initi   s1    d"T""""#'#5"6    c                 l     | gR   t                             }fd|D             | _        d S )Nc                      g | ]
}|         S  r+   ).0nor#   s     r&   
<listcomp>zMadd_ref_in_constructor.<locals>.replacement_init_multiple.<locals>.<listcomp>p   s    ";";";48";";";r(   )lenr!   )r"   r#   psetr$   r%   s    ` r&   replacement_init_multiplez9add_ref_in_constructor.<locals>.replacement_init_multiplem   sN    d"T""""CII&";";";";d";";";r(   )__init__typedict)	the_classr%   r'   r1   r$   s    `  @r&   add_ref_in_constructorr6   d   s{     &M7 7 7 7 7 7< < < < < <
 LT!!6	-	r(   c                 n    t          | d          s
|g| _        d S | j                            |           d S Nr!   )hasattrr!   append)r"   refs     r&   add_to_referenced_objectsr<   x   sB    4-.. ,#&%&&s+++++r(   c                 X    t          | |          fd}t          | ||           d S )Nc                 F    |         }t          | |            | g|R  S r   )r<   )r"   r#   r;   original_methodr%   s      r&   replacement_methodz-add_ref_in_method.<locals>.replacement_method   s5    < !$,,,t+d++++r(   getattrsetattr)r5   method_namer%   r@   r?   s     ` @r&   add_ref_in_methodrE      sL    i55O, , , , , , I{$677777r(   c                 V    t          | |          dfd	}t          | ||           d S )NFc                     |s4t          | d          s	|g| _        n4| j                            |           n|j                                          | ||          S r8   )r9   r!   r:   thisdisown)r"   r;   ownr?   s      r&   r@   z:add_ref_in_method_explicit_own.<locals>.replacement_method   sm     	4!566 4+.%'''..s3333 HOOtS#...r(   )FrA   )r5   rD   r@   r?   s      @r&   add_ref_in_method_explicit_ownrK      sK    i55O	/ 	/ 	/ 	/ 	/ 	/ I{$677777r(   c                 l    t          t          |           fd}t          t          | |           d S )Nc                  2     |  }|          }|g|_         |S r   r    )r#   resultr;   original_functionr%   s      r&   replacement_functionz1add_ref_in_function.<locals>.replacement_function   s)    ""D)< %(E!r(   )rB   this_modulerC   )function_namer%   rP   rO   s    ` @r&   add_ref_in_functionrS      sM    ];;     
 K(<=====r(   zMFailed to load GPU Faiss: %s. Will not load constructor refs for GPU indexes.)   r   prepend_transform
replace_vt	add_shardrT   addIndex   c                    t          j        |d          }|j        \  }}|| j        k    sJ |s5t	                      }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   uint64rY   float64r   rT   ndispre_transform_mscoarse_quantizer_msinvlist_scan_ms)npascontiguousarrayshapedIVFSearchParametersextract_index_ivfnprobe	max_codesemptyr[   int64search_with_parameters_cswig_ptr)indexxkparamsoutput_statsnrh   	index_ivfnb_disms_per_stage	distanceslabelsstatss                r&   search_with_parametersr}      sX   
Qi000A7DAq<<<< /$&&%e,,	!($.Xa""F8Ay))L!Qrz222IXq!fBH---Fq(1++	8I  (<"8"8	    	(&   1I ,Q#/?+A	
 
 &%''r(   c                 (   t          j        |d          }|j        \  }}|| j        k    sJ |s5t	                      }t          |           }|j        |_        |j        |_        t          j        dd          }t          j        dd          }	t          |          }
t          | |t          |          ||
|t          |          t          |	                     t          |
j        |dz                                             }t          |d                   }t          |
j        |                                          }t          |
j        |                                          }|s|||fS |d         |	d         |	d         |	d	         d
}||||fS )Nr[   r\   r   r^   rY   r_   r   rT   r`   )re   rf   rg   rh   ri   rj   rk   rl   rm   RangeSearchResultrange_search_with_parameters_crp   rev_swig_ptrlimscopyintrz   r{   )rq   rr   radiusrt   ru   rv   rh   rw   rx   ry   resr   ndDoutIoutr|   s                   r&   range_search_with_parametersr     s   
Qi000A7DAq<<<< /$&&%e,,	!($.Xa""F8Ay))L
A

C"q(1++  (<"8"8  
 !a%((--//D	T"XBr**//11D
B'',,..D 	'T4 1I ,Q#/?+A	
 
 T4&&r(   c                 h    t                      }t          | ||           t          |j                  S z* convert an index to a numpy uint8 array  )VectorIOWriterwrite_indexvector_to_arraydata)rq   io_flagswriters      r&   serialize_indexr   ;  s/    Fvx(((6;'''r(   c                 h    t                      }t          | |j                   t          ||          S r   )VectorIOReadercopy_array_to_vectorr   
read_index)r   r   readers      r&   deserialize_indexr   B  s/    Fv{+++fh'''r(   c                 f    t                      }t          | |           t          |j                  S r   )r   write_index_binaryr   r   )rq   r   s     r&   serialize_index_binaryr   H  s-    Fuf%%%6;'''r(   c                 f    t                      }t          | |j                   t          |          S r   )r   r   r   read_index_binary)r   r   s     r&   deserialize_index_binaryr   O  s-    Fv{+++V$$$r(   c                   &    e Zd ZdefdZd Zd ZdS )TimeoutGuardtimeout_in_secondsc                     || _         d S r   )timeout)r"   r   s     r&   r2   zTimeoutGuard.__init__V  s    )r(   c                 D    t                               | j                   d S r   )TimeoutCallbackresetr   )r"   s    r&   	__enter__zTimeoutGuard.__enter__Y  s    dl+++++r(   c                 8    t                                            d S r   )PythonInterruptCallbackr   )r"   exc_type	exc_value	tracebacks       r&   __exit__zTimeoutGuard.__exit__\  s    %%'''''r(   N)__name__
__module____qualname__floatr2   r   r   r+   r(   r&   r   r   U  sM        *5 * * * *, , ,( ( ( ( (r(   r   )NF)r   )numpyre   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modulesrQ   dirsymbolrB   objisclassr5   
issubclassIndexhandle_IndexIndexBinaryhandle_IndexBinaryVectorTransformhandle_VectorTransform	Quantizerhandle_QuantizerIndexRowwiseMinMaxIndexRowwiseMinMaxFP16handle_IndexRowwiseMinMaxSearchParametershandle_SearchParameters
CodePackerhandle_CodePackerr6   r<   rE   rK   rS   GpuIndexIVFFlatGpuIndexBinaryFlatGpuIndexFlatGpuIndexIVFPQGpuIndexIVFScalarQuantizer	NameErroreinfor#   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IndexIVFIndependentQuantizerr}   ro   r   r   
IndexProxyHStackInvertedListsConcatenatedInvertedListsIndexResidualQuantizerIndexResidualSearchParametersIVFri   r   r   r   r   r   r+   r(   r&   <module>r-     s	        



      !                   % % % %' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ///1 1 
	8	$	$     , , , " "< 0 0 0 ! !+ . . .  x ( ( (  x ( ( ( ' '(9 : : : $ $^ 4 4 4  ( # # # " "< 0 0 0 & &4 H H H H & &5 I I I I & &'7EW\ ] ] ] ]  g & & &  x ( ( (  } - - -  	 * * *  V $ $ $  E " " "  	 * * * k(# c+ 8 8F
'+v
&
&Cws 8	:i'' 	3'N'	222:i-- 	9-N-i888:i11 	=1N1)<<<:i++ 	7+N+I666:i!344 	@
9&<==	@4N4Y???:i!122 	>2N29===:i,, 	8,N,Y777. . .(, , ,8 8 88 8 8"	> 	> 	>m?A...-q111<+++=!,,,5q9999 m m m
KK_bcbhijbkkllllllllm  |Q ' ' '  (! , , ,  (q!f!*=*= > > >  #%8! < < <  z1 % % %  {A & & &  )1 - - -  0! 4 4 4  3Q 7 7 7  8! < < <  ;Q ? ? ?  +Q / / /  3\ B B B  {A & & &   * * *  . 2 2 2  )1 - - -  -q 1 1 1  z1 % % %  {A & & &  y! $ $ $  +{A . . .  #[! 4 4 4  QCQC(8(8 9 9 9  {QAK 0 0 0  ~q ) ) )  +Q / / /  ' + + +  (! , , ,  -Q / / /  %z1 5 5 5  ' + + +  ' + + +  }a ( ( (  }eeAhh / / /  |UU1XX . . .  }eeAhh / / /  +UU1XX 6 6 6  }eeAhh / / /  3UU1XX > > > 2 ( ( ( (@ "> ' ' ' 'H 
/ &) ( ( ( (( ( ( (( ( (% % %( ( ( ( ( ( ( ( ( (s   9<K6 6L(;#L##L(