
    Ig                         d dl mZmZ d dlmZmZmZmZ d dlm	Z	 d dl
mZ d dlmZmZmZ d dlmZ d dlmZmZ d dlmZmZmZ d d	lmZ d
ee   dee   fdZd
ee   dee   fdZd
ee   dee   fdZ G d de      Zy)    )OptionalSequence)	GetResultIncludeEnumMetadataQueryResult)System)Executor)	CountPlanGetPlanKNNPlan)DistributedSegmentManager)MetadataReaderVectorReader)VectorQueryVectorQueryResult
Collection)	overridesmetadatareturnc                     | syi }| j                         D ]  \  }}|j                  d      r|||<    t        |      dk(  ry|S )z[Remove any chroma-specific metadata keys that the client shouldn't see from a metadata map.Nzchroma:r   )items
startswithlen)r   resultkvs       d/var/www/html/answerous/venv/lib/python3.12/site-packages/chromadb/execution/executor/distributed.py_clean_metadatar      sR    F  1||I&F1I 6{aM    c                 ,    | rd| v rt        | d         S y)z2Retrieve the document (if any) from a Metadata mapzchroma:documentNstrr   s    r   _docr%   "   s#     %18-.//r    c                 ,    | rd| v rt        | d         S y)z-Retrieve the uri (if any) from a Metadata mapz
chroma:uriNr"   r$   s    r   _urir'   *   s!     LH,8L)**r    c                        e Zd ZU eed<   def fdZedede	fd       Z
ededefd       Zededefd       Zd	edefd
Zd	edefdZ xZS )DistributedExecutor_managersystemc                 X    t         |   |       | j                  t              | _        y N)super__init__requirer   r*   )selfr+   	__class__s     r   r/   zDistributedExecutor.__init__5   s!     %>?r    planr   c                     | j                  |j                  j                        j                  |j                  j                        S r-   )_metadata_segmentscan
collectioncountversion)r1   r3   s     r   r8   zDistributedExecutor.count9   s2    %%dii&:&:;AA$))BSBSTTr    c           	      :   | j                  |j                  j                        j                  |j                  j                  |j
                  j                  |j
                  j                  |j
                  j                  |j                  j                  |j                  j                  d      }|D cg c]  }|d   	 }}d }d }d }d }t               }	|j                  j                  rt        |      dkD  r]| j!                  |j                  j                        j#                  ||j                  j                        }
|
D cg c]  }|d   	 }}n
t               }|	j%                  t&        j(                         |j                  j*                  r:|D cg c]  }t-        |d          }}|	j%                  t&        j.                         |j                  j0                  r:|D cg c]  }t3        |d          }}|	j%                  t&        j4                         |j                  j6                  r:|D cg c]  }t9        |d          }}|	j%                  t&        j:                         t=        ||||d ||	      S c c}w c c}w c c}w c c}w c c}w )	NTrequest_version_contextwherewhere_documentidslimitoffsetinclude_metadataidr   )r?   r<   	embeddingr   )r?   
embeddings	documentsurisdata	metadatasincluded)r5   r6   r7   get_metadatar9   filterr=   r>   user_idsr@   fetchskiplist
projectionrD   r   _vector_segmentget_vectorsappendr   rE   documentr%   rF   urir'   rG   r   r   rI   r   )r1   r3   recordsrr?   rE   rF   rG   rI   rJ   vectorsr   s               r   getzDistributedExecutor.get=   s$   (()=)=>KK$(II$5$5++##;;55$$**""::??! L 
 !((1qw((
		6??$$7|a..tyy/C/CDPPTYY5F5F Q  7>>an>
>!V
OOK223??##6=>a
m,>I>OOK112??189AD:'9D9OOK,,-??##AHIA:7IIIOOK112 !
 	
= ) ? ? : Js   8J
J	J,J<Jc                 
   d }|j                   j                  s,|j                   j                  s|j                   j                  r| j	                  |j
                  j                        j                  |j
                  j                  |j                   j                  |j                   j                  |j                   j                  d dd      }|D cg c]  }|d   	 }}g gt        |j                  j                        z  }|t        |      dkD  rt        |j                  j                  |j                  j                  ||j                  j                  d |j
                  j                        }| j!                  |j
                  j                        j#                  |      }|D cg c]  }|D cg c]  }|d   	 c} }}}d }	d }
d }d }d }t%               }|j                  j                  rA|D cg c]  }|D cg c]  }|d   	 c} }	}}|j'                  t(        j                         |j                  j*                  rA|D cg c]  }|D cg c]  }|d   	 c} }}}|j'                  t(        j,                         |j                  j.                  s-|j                  j0                  s|j                  j2                  rt%        t5        |D cg c]  }|D ]  }|  c}}            }| j	                  |j
                  j                        j                  |j
                  j                  d d |d dd      }|D ci c]  }|d   |d	    }}|j                  j.                  rW|D cg c]+  }|D cg c]  }t7        |j9                  |d              c}- }
}}|j'                  t(        j:                         |j                  j2                  rW|D cg c]+  }|D cg c]  }t=        |j9                  |d              c}- }}}|j'                  t(        j>                         |j                  j0                  rW|D cg c]+  }|D cg c]  }tA        |j9                  |d              c}- }}}|j'                  t(        jB                         tE        ||	|
|d |||
      S c c}w c c}w c c}}w c c}w c c}}w c c}w c c}}w c c}}w c c}w c c}w c c}}w c c}w c c}}w c c}w c c}}w )Nr   Fr;   rC   )rY   r   allowed_idsinclude_embeddingsoptionsr<   rD   distanceTr   )r?   rE   rF   rG   rH   rI   	distancesrJ   )#rL   rM   r=   r>   r5   r6   r7   rK   r9   r   knnrE   r   rN   rQ   rD   rR   query_vectorsrP   rT   r   rankr`   rU   r   rV   setr%   rZ   rF   r'   rG   r   rI   r   )r1   r3   prefiltered_idsrW   rX   knnsqueryr   r?   rE   rF   rG   rI   r`   rJ   rC   
merged_idshydrated_recordsmetadata_by_ids                      r   ra   zDistributedExecutor.knnq   sT   ;;4;;#4#48R8R,,TYY-A-ABOO(,		(9(9kk''#{{99KK((!& P G 1881qw8O879dSATAT=U6U
 "c/&:Q&>++((..+#'??#<#<(,		(9(9E ''		(<(<=KKERD7;<V(A$(<<
			6??$$IMNv6:a1[>:NJNOOK223??GKLV8A!J-8LILOOK112??##t'?'?4??CVCVcC"I&&"IB2"I2"IJKJ#55		$$ l(,		(9(9#!%    ?OOagq}4ONO'' #& CIIBT.,,R67I	   5 56"" #& CIIBT.,,R67I   0 01'' #& NTTr_^%7%7D%ABT	   5 56 !	
 		
O 9$ )< ;N 9L #J P J J Us   R;/	S8S S;	SSS	SS'S S!S'<	S1"S,'S1)	S<2"S7S<	T"TT SSS,S17S<Tr7   c                 V    | j                   j                  |j                  t              S r-   )r*   get_segmentrC   r   r1   r7   s     r   r5   z%DistributedExecutor._metadata_segment   s    }}((GGr    c                 V    | j                   j                  |j                  t              S r-   )r*   rl   rC   r   rm   s     r   rR   z#DistributedExecutor._vector_segment   s    }}((EEr    )__name__
__module____qualname__r   __annotations__r	   r/   r   r   intr8   r   r   rZ   r   r   ra   r   r   r5   r   rR   __classcell__)r2   s   @r   r)   r)   2   s    ''@v @ U) U U U 1
 1
I 1
 1
f \
 \
K \
 \
|HJ H> HF* F Fr    r)   N)typingr   r   chromadb.api.typesr   r   r   r   chromadb.configr	   $chromadb.execution.executor.abstractr
   "chromadb.execution.expression.planr   r   r   )chromadb.segment.impl.manager.distributedr   chromadb.segmentr   r   chromadb.typesr   r   r   r   r   r#   r%   r'   r)    r    r   <module>r~      s    &  # 9 J J O 9 E E 
hx0 
Xh5G 
8H% (3- 8H% (3- bF( bFr    