
    ug                         d dl mZmZ d dl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mZ d dlmZ d d	lmZmZ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)	overrides)	GetResultIncludeEnumMetadataQueryResult)System)Executor)	CountPlanGetPlanKNNPlan)MetadataReaderVectorReader)LocalSegmentManager)
CollectionVectorQueryVectorQueryResult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       V/var/www/openai/venv/lib/python3.12/site-packages/chromadb/execution/executor/local.py_clean_metadatar      sM    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 )LocalExecutor_managersystemc                 X    t         |   |       | j                  t              | _        y N)super__init__requirer   r*   )selfr+   	__class__s     r   r/   zLocalExecutor.__init__.   s!     %89r    planr   c                     | j                  |j                  j                        j                  |j                  j                        S r-   )_metadata_segmentscan
collectioncountversion)r1   r3   s     r   r8   zLocalExecutor.count2   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LocalExecutor.get6   s)   (()=)=>KK$(II$5$5++##;;55$$**""::??! L 
 !((1qw(
		6??$$7|a..tyy/C/CDPPTYY5F5F Q  7>>gang
>!V
OOK223??##6=>ga
m,gI>OOK112??189AD:'D9OOK,,-??##AHIA:7I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LocalExecutor.knnj   s|   ;;4;;#4#48R8R,,TYY-A-ABOO(,		(9(9kk''#{{99KK((!& P G 1881qwO879dSATAT=U6U
 "c/&:Q&>++((..+#'??#<#<(,		(9(9E ''		(<(<=KKERD7;<tV(A$(t<
			6??$$IMNv6:6a1[>6:JNOOK223??GKLtV8A!J-8tILOOK112??##t'?'?4??CVCVcC"IC&&B2&2C"IJKJ#55		$$ l(,		(9(9#!%    ?OO>Nagq}4>NNO'' #&"% CII&BT.,,R67&I"%    5 56"" #&"% CII&BT.,,R67&I"%    0 01'' #&"% NTTVr_^%7%7D%ABV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LocalExecutor._metadata_segment   s    }}((GGr    c                 V    | j                   j                  |j                  t              S r-   )r*   rl   rC   r   rm   s     r   rR   zLocalExecutor._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)   +   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   r   chromadb.api.typesr   r   r   r	   chromadb.configr
   $chromadb.execution.executor.abstractr   "chromadb.execution.expression.planr   r   r   chromadb.segmentr   r   #chromadb.segment.impl.manager.localr   chromadb.typesr   r   r   r   r#   r%   r'   r)    r    r   <module>r~      s    %  L L " 9 J J 9 C E E
hx0 
Xh5G 
8H% (3- 8H% (3- bFH bFr    