o
    rht                     @   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|}|r-t| |dS td|}|r=t| |dS td	|}|rMt| |dS td
|}|ret| |dt| |d S td|}|rt|dt|d d d S td|}|rt|dt|d S td|}|rt|dS |dks|dkr| d d S |dkr| S |dkr| d d S |dkr| d d d S |dkr| d S td|}|rtt|d|dS td|}|rtt|d|dS td|}|rt| |dS td|}|r(tt|d|dS td| )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+)$HNSW32zHNSW32,Flat   SQ8SQ4SQ6   SQfp16z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)dindexkeymo r   Y/var/www/html/alpaca_bot/venv/lib/python3.10/site-packages/faiss/contrib/factory_tools.pyr   
   s`   
  $r   c                 C   s   | j jdd S )Nr   r   )hnswcum_nneighbor_per_levelat)indexr   r   r   
get_hnsw_MK   s   r    c                 C   s  t | } t| t jrdS t| t jrt | j}t|t jr&d| j }n1t|t jr9d|jj	 d|jj
 }nt|t jrKd| j dt| }nd| j dt| d}t| t jra|d S t| t jrk|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 t t| t jr| j dkrt t | jd}t|t jrd|j	 d|j }n-t|t jrd|jj }nt|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!rt| j" dt| j# dS t| t j$r/d| jj	 d| jj
 dS t| t j%rBd| jj	 d| jj
 S t| t j&r\d| j'rPdnd | j(rYd S d S t| t j)r~t j*j+dt j*j,dt j*j-dt j*j.di}d|| j/j0  S t ) zE
    attempts to get the factory string the index was built with
    r   IVFIMIx_HNSW()z,Flatz,SQ8z,PQfsr   r   OPQ_ITQPCAR ,HNSWz,Refine(PQLSHrt846fp16SQ)1faissdowncast_index
isinstance	IndexFlatIndexIVF	quantizernlistMultiIndexQuantizerpqMnbits	IndexHNSWr    reverse_index_factoryIndexIVFFlatIndexIVFScalarQuantizer
IndexIVFPQIndexIVFPQFastScanIndexPreTransformchainsizeNotImplementedErrordowncast_VectorTransformr   	OPQMatrixd_outITQTransformitq	PCAMatrixeigen_powerrandom_rotationstrr   IndexRefine
base_indexrefine_indexIndexPQFastScanIndexPQIndexLSHrotate_datatrain_thresholdsIndexScalarQuantizerScalarQuantizerQT_8bitQT_4bitQT_6bitQT_fp16sqqtype)r   r>   prefixvtsqtypesr   r   r   rE   O   sh   
)&rE   )r9   r   r   r    rE   r   r   r   r   <module>   s
   A