a
    ^g                     @   s,   d dl Z d dlZdd Zdd Zdd ZdS )    Nc                 C   s  |dkr| d S | dr:| d t| |dtd   S td|}|rZt| |dS td|}|rzt| |dS td	|}|rt| |dS td
|}|rt| |dt| |d S td|}|rt|dt|d d d S td|}|r,t|dt|d S td|}|rLt|dS |dks`|dkrl| d d S |dkrz| S |dkr| d d S |dkr| d d d S |dkr| d S |dkr| d S td|}|rtt|d|dS td|}|r&tt|d|dS td|}|rHt| |dS td|}|rttt|d|dS td| dS )z[ size of one vector in an index in dimension d
    constructed with factory string indexkeyFlat   z,RFlatNzIVF\d+(_HNSW32)?,(.*)$   zIVF\d+\(.*\)?,(.*)$   zIMI\d+x2,(.*)$z(.*),Refine\((.*)\)$zPQ(\d+)x(\d+)(fs|fsr)?$      zPQ(\d+)\+(\d+)$zPQ(\d+)$ZHNSW32zHNSW32,Flat   ZSQ8ZSQ4ZSQ6   ZSQfp16ZSQbf16zPCAR?(\d+),(.*)$zOPQ\d+_(\d+),(.*)$zOPQ\d+,(.*)$zRR(\d+),(.*)$zcannot parse )endswithget_code_sizelenrematchgroupintRuntimeError)dZindexkeymo r   i/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/faiss/contrib/factory_tools.pyr   
   sd    
  $




r   c                 C   s   | j jdd S )Nr   r   )ZhnswZcum_nneighbor_per_levelat)indexr   r   r   
get_hnsw_MM   s    r   c              
   C   s  t | } t| t jrdS t| t jr2t | j}t|t jrNd| j }nbt|t jrtd|jj	 d|jj
 }n<t|t jrd| j dt| }nd| j dt| d}t| t jr|d S t| t jr|d	 S t| t jr|d
| jj	 d| jj
  S t| t jr|d
| jj	 d| jj
 d S nt| t jr| j dkrVt t | jd}t|t jrd|j	 d|j }nbt|t jrd|jj }nDt|t jr|jdksJ d|jrdnd t|j }nt | dt| j  S t| t jrdt|  S t| t j!rHt| j" dt| j# dS t| t j$rpd| jj	 d| jj
 dS t| t j%rd| jj	 d| jj
 S t| t j&rd| j'rdnd | j(rdnd S t| t j)rt j*j+dt j*j,dt j*j-dt j*j.dt j*j/di}d || j0j1  S t d!S )"zE
    attempts to get the factory string the index was built with
    r   ZIVFZIMIxZ_HNSW()z,Flatz,SQ8z,PQfsr   r   ZOPQ_ZITQZPCAR ,ZHNSWz,Refine(ZPQZLSHrt846Zfp16Zbf16ZSQN)2faissZdowncast_index
isinstanceZ	IndexFlatZIndexIVF	quantizerZnlistZMultiIndexQuantizerZpqMnbitsZ	IndexHNSWr   reverse_index_factoryZIndexIVFFlatZIndexIVFScalarQuantizerZ
IndexIVFPQZIndexIVFPQFastScanZIndexPreTransformchainsizeNotImplementedErrorZdowncast_VectorTransformr   Z	OPQMatrixZd_outZITQTransformZitqZ	PCAMatrixZeigen_powerZrandom_rotationstrr   ZIndexRefineZ
base_indexZrefine_indexZIndexPQFastScanZIndexPQZIndexLSHZrotate_dataZtrain_thresholdsZIndexScalarQuantizerZScalarQuantizerZQT_8bitZQT_4bitZQT_6bitZQT_fp16ZQT_bf16sqZqtype)r   r(   prefixvtZsqtypesr   r   r   r+   Q   sh    
" $r+   )r&   r   r   r   r+   r   r   r   r   <module>   s   C