
    g                     (    d dl Z d dlZd Zd Zd ZdS )    Nc           	         |dk    r| dz  S |                     d          r,| dz  t          | |dt          d                              z   S t          j        d|          }|r#t          | |                    d                    S t          j        d|          }|r#t          | |                    d                    S t          j        d	|          }|r#t          | |                    d                    S t          j        d
|          }|rGt          | |                    d                    t          | |                    d                    z   S t          j        d|          }|rKt          |                    d                    t          |                    d                    z  dz   dz  S t          j        d|          }|rEt          |                    d                    t          |                    d                    z   S t          j        d|          }|r"t          |                    d                    S |dk    s|dk    r| dz  dz   S |dk    r| S |dk    r| dz   dz  S |dk    r| dz  dz   dz  S |dk    r| dz  S |dk    r| dz  S t          j        d|          }|rCt          t          |                    d                    |                    d                    S t          j        d|          }|rCt          t          |                    d                    |                    d                    S t          j        d|          }|r#t          | |                    d                    S t          j        d|          }|rCt          t          |                    d                    |                    d                    S t          d|z             )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   SQfp16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)dindexkeymos      Y/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/faiss/contrib/factory_tools.pyr   r   
   s    61u"" C1u}Q3x==.(ABBBB	+X	6	6B	 -Q,,,	*H	5	5B	 -Q,,,	#X	.	.B	 -Q,,,	*H	5	5B	 MQ,,}Q/L/LLL	-x	8	8B	 >BHHQKK  3rxx{{#3#33a7A==	&	1	1B	 5BHHQKK  3rxx{{#3#334	+x	(	(B	  288A;;8x=881uv~5	U		A!|	U		A	a	X		1u	X		1u	%x	0	0B	 <S!--rxx{{;;;	((	3	3B	 <S!--rxx{{;;;	/8	,	,B	 -Q,,,	"H	-	-B	 <S!--rxx{{;;;
1
2
22    c                 F    | j         j                            d          dz  S )Nr   r   )hnswcum_nneighbor_per_levelat)indexs    r   
get_hnsw_Mr$   M   s     :-0033q88r   c           
      L	   t          j        |           } t          | t           j                  rdS t          | t           j                  rxt          j        | j                  }t          |t           j                  rd| j         }nt          |t           j                  rd|j        j	         d|j        j
         }nPt          |t           j                  rd| j         dt          |           }nd| j         dt          |           d}t          | t           j                  r|dz   S t          | t           j                  r|d	z   S t          | t           j                  r|d
| j        j	         d| j        j
         z   S t          | t           j                  r |d
| j        j	         d| j        j
         dz   S nt          | t           j                  r | j                                        dk    rt+                      t          j        | j                            d                    }t          |t           j                  rd|j	         d|j         }nt          |t           j                  rd|j        j         }nYt          |t           j                  r1|j        dk    sJ d|j        rdndz   t?          |j                  z   }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%                  rd| j        j	         d| j        j
         S t          | t           j&                  rd| j'        rdndz   | j(        rdndz   S t          | t           j)                  rlt           j*        j+        dt           j*        j,        dt           j*        j-        dt           j*        j.        dt           j*        j/        di}d || j0        j1                  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bf16SQ)2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QT_bf16sqqtype)r#   rD   prefixvtsqtypess        r   rK   rK   Q   sw     ''E%)) =.v	E5>	*	* ;.(99	i11 	M(5;((FF	5#<== 	M@9<>@@IL,>@@FF	5?33 	MD5;DDZ	-B-BDDFFL5;LL)>y)I)ILLLFeU/00 	$G##eU:;; 	#F?"eU-.. 	@?%(*??ux~????eU566 	BA%(*AAux~AAAAA	B 
E52	3	3 &.;""%'''+EKNN1,=,=>>b%/** 	(,24,,"(,,FFE.// 	()26<))FFEO,, 	(>Q&&&&R%7?ccR@3rx==PFF%'''??0==???	E5?	+	+ .)j'')))	E5,	-	- .'(899ooCXY^YkClCloooo	E50	1	1 .3EHJ333333	E5=	)	) .1EHJ11111	E5>	*	* .u08b9EDZ=bSS`bcc	E55	6	6 .!)3!)3!)3!)6!)6
 .GEHN+---


r   )r?   r   r   r$   rK    r   r   <module>rr      sY     				@3 @3 @3F9 9 9D  D  D  D  D r   