o
    Ci:+                     @   s   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 deeef Zee  e!e" e#e$ e%e& e'e( e)e* e+e, e-e. e/e0 ej1e2dd ej1e3d	d ej1e4d	d	d
 ej5e6 Z7e8e7D ]YZ9e:e7e9Z;e<e;re;Z=e>e=e?re@e= e>e=eAreBe= e>e=eCreDe= e>e=eEreFe= e>e=eGse>e=eHreIe= e>e=eJreKe= e>e=eLreMe= qdd ZNdd ZOdd ZPdd ZQdd ZReNeSd  eNeTd  eNeUd dgd gd ePeUdd  eNeVd  eNeWd  eNeXd  eNeYd  eNeZd  eNe[d  eNe\d  eNe]d  eQe]d eNe^d  eNe_d  eNe`d  eNeGd  eNeHd  eNead  eNebd  eNecd  ePeddd  ePeedd  eNefd gd gd eNegdd dgi eNehd  eNeid  eNejd  eNekd  ePeldd  ePemdd  eNend  eNeod  eNepd  eNeqerd eNeserd eNeterd euZvd'ddZuewZxd'ddZwelZyezZ{e|Z}e~Zdd  Zd!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_resultsz%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 f/var/www/html/fyndo/python/python_agents/rag_suite/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>c   s    zMadd_ref_in_constructor.<locals>.replacement_init_multiple.<locals>.<listcomp>)lenr   )r   r   psetr   r%   r!   replacement_init_multiple`   s   z9add_ref_in_constructor.<locals>.replacement_init_multiple)__init__typedict)	the_classr   r"   r)   r    r   r!   add_ref_in_constructorW   s   

r.   c                 C   s&   t | ds|g| _d S | j| d S Nr   )hasattrr   append)r   refr    r    r!   add_to_referenced_objectsk   s   
r3   c                    s(   t | |  fdd}t| || d S )Nc                    s"   | }t | |  | g|R  S r   )r3   )r   r   r2   original_methodr   r    r!   replacement_methodu   s   
z-add_ref_in_method.<locals>.replacement_methodgetattrsetattr)r-   method_namer   r6   r    r4   r!   add_ref_in_methodr   s   
r;   c                    s(   t | | d fdd	}t| || d S )NFc                    s<   |st | ds|g| _n| j| n|j   | ||S r/   )r0   r   r1   thisdisown)r   r2   ownr5   r    r!   r6      s   


z:add_ref_in_method_explicit_own.<locals>.replacement_method)Fr7   )r-   r:   r6   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   resultr2   original_functionr   r    r!   replacement_function   s   z1add_ref_in_function.<locals>.replacement_function)r8   this_moduler9   )function_namer   rD   r    rB   r!   add_ref_in_function   s   
rG   )   r   prepend_transform
replace_vt	add_shardrH   addIndexc                 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   uint64   float64r   rH   ndispre_transform_mscoarse_quantizer_msinvlist_scan_ms)npascontiguousarrayshapedIVFSearchParametersextract_index_ivfnprobe	max_codesemptyrM   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   


rp   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 )NrM   rN   r   rP   rQ   rR   r   rH   rS   )rX   rY   rZ   r[   r\   r]   r^   r_   r`   RangeSearchResultrange_search_with_parameters_crc   rev_swig_ptrlimscopyintrm   rn   )rd   re   radiusrg   rh   ri   r[   rj   rk   rl   resru   ndDoutIoutro   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rd   writerr    r    r!   serialize_index!     

r   c                 C      t  }t| |j t|S r   )VectorIOReadercopy_array_to_vectorr   
read_indexr   readerr    r    r!   deserialize_index(     r   c                 C   r~   r   )r   write_index_binaryr   r   r   r    r    r!   serialize_index_binary.  r   r   c                 C   r   r   )r   r   r   read_index_binaryr   r    r    r!   deserialize_index_binary5  r   r   )NF)numpyrX   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   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modules__name__rE   dirsymbolr8   objisclassr-   
issubclassIndexhandle_IndexIndexBinaryhandle_IndexBinaryVectorTransformhandle_VectorTransform	Quantizerhandle_QuantizerIndexRowwiseMinMaxIndexRowwiseMinMaxFP16handle_IndexRowwiseMinMaxSearchParametershandle_SearchParameters
CodePackerhandle_CodePackerr.   r3   r;   r@   rG   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IDSelectorXOrrp   rb   r}   rs   
IndexProxyHStackInvertedListsConcatenatedInvertedListsIndexResidualQuantizerIndexResidualSearchParametersIVFr\   r   r   r   r   r    r    r    r!   <module>   s   
L






















































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