Ë
    µŒjF ã                  óö  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
mZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlZd dlmZm Z  d dl!m"Z" d dl#m$Z$ d dl%m&Z& d d	l'm(Z( d d
l)m*Z* d dl+m,Z, d dl-m.Z.m/Z/ d dl0m1Z1  ejd                  «       Z3er.d dl4m5Z5 d dl6m7Z7 d dl8m9Z9m:Z: d dl;m<Z< d dl;m9Z= d dl>m?Z?m@Z@mAZAmBZBmCZC  e*ddd¬«      ZD e*ddd¬«      ZE e*ddd¬«      ZF e*ddd¬«      ZGdZHe	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d+	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d,d„«       ZIe	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d-	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d.d„«       ZI	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d+	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d/d „ZI G d!„ d"e,«      ZJ G d#„ d$e(«      ZK	 	 	 	 d0d%„ZL	 	 	 	 d1d&„ZM	 	 d2	 	 	 	 	 	 	 	 	 d3d'„ZN	 	 d2	 	 	 	 	 	 	 	 	 d4d(„ZOd5d)„ZPd6d7d*„ZQy)8é    )ÚannotationsN)ÚTracebackType)ÚTYPE_CHECKINGÚAnyÚCallableÚClassVarÚ
CollectionÚDictÚIterableÚListÚLiteralÚOptionalÚTupleÚTypeÚUnionÚcastÚoverload)Ú#AsyncCallbackManagerForRetrieverRunÚCallbackManagerForRetrieverRun)ÚDocument)Ú
Embeddings)ÚLangChainException)ÚBaseRetriever)Úget_from_env)ÚVectorStore)Ú
ConfigDictÚmodel_validator)Úmaximal_marginal_relevance)ÚTokenCredential©ÚAsyncTokenCredential)ÚSearchClientÚSearchItemPaged)ÚAsyncSearchItemPaged©r"   )ÚCorsOptionsÚScoringProfileÚSearchFieldÚSemanticConfigurationÚVectorSearchÚAZURESEARCH_FIELDS_IDÚid)ÚkeyÚenv_keyÚdefaultÚAZURESEARCH_FIELDS_CONTENTÚcontentÚ!AZURESEARCH_FIELDS_CONTENT_VECTORÚcontent_vectorÚAZURESEARCH_FIELDS_TAGÚmetadataiè  c                 ó   — y ©N© ©ÚendpointÚ
index_namer-   Úazure_ad_access_tokenÚsemantic_configuration_nameÚfieldsÚvector_searchÚsemantic_configurationsÚscoring_profilesÚdefault_scoring_profileÚdefault_fieldsÚ
user_agentÚcors_optionsÚasync_Ú additional_search_client_optionsÚazure_credentialÚazure_async_credentials                    úv/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/vectorstores/azuresearch.pyÚ_get_search_clientrK   V   s   € ð* ó    c                 ó   — y r7   r8   r9   s                    rJ   rK   rK   n   s   € ð*  #rL   c                ó  ‡7‡8‡9— ddl mŠ7m}m} ddlm} ddlm} ddlm	}m
} ddlm	} ddlm} ddlm} ddlm} dd	lm}m}m}m}m}m} m}!m}"m}#m}$m}%m}&m}'  G ˆ7fd
„d|«      }( G d„ d|«      })|xs i }|
xs g }
|�I|j?                  «       dk(  r+tA        d |«       «      }*|*jC                  d«        |)|*«      }+n4 ||«      }*|*}+n)|� |(|«      }* |)|*«      }+n|xs  |«       }*|xs  |«       }+ |d*| |*|dœ|¤Ž},	 |,jE                  |¬«       |s |d*| ||*|d)œ|¤ŽS  |d*| ||+|d)œ|¤ŽS # |$ �rÖ |�÷|D �-ci c]  }-|-jF                  |-jH                  “Œ nc c}-w c}-Š8|
D �.ci c]  }.|.jF                  |.jH                  “Œ nc c}.w c}.Š9tK        ‰9jM                  «       «      tK        ‰8jM                  «       «      z
  D ��/ci c]  \  }}/|‰9|   “Œ nc c}/}w }0}}/tO        |0«      dkD  rEd+ˆ8ˆ9fd„}1djQ                  |0D �2cg c]
  }2 |1|2«      ‘Œ nc c}2w c}2«      }3tS        d|0› d|3› �«      ‚|
}|€i |$ |d|%jT                   |ddd|&jV                  ¬«      ¬«       |d|%jX                   ||&jV                  ¬«      ¬«      g |'dd¬ «       |'d!d¬ «      g¬"«      }|rt[        |t\        «      s|g} |#||¬#«      }4n,|r( | | |" |!t^        ¬$«      g¬%«      ¬&«      }5 |#|5g¬'«      }4nd }4 |||||4||	|¬(«      }6|,ja                  |6«       Y �Œ÷w xY w),Nr   )ÚAccessTokenÚAzureKeyCredentialr   r    )ÚResourceNotFoundError)ÚDefaultAzureCredentialÚInteractiveBrowserCredential)rR   r%   )ÚSearchIndexClient)Ú#ExhaustiveKnnAlgorithmConfigurationÚExhaustiveKnnParametersÚHnswAlgorithmConfigurationÚHnswParametersÚSearchIndexr)   ÚSemanticFieldÚSemanticPrioritizedFieldsÚSemanticSearchr*   ÚVectorSearchAlgorithmKindÚVectorSearchAlgorithmMetricÚVectorSearchProfilec                  óB   •— e Zd Zdˆ fd„Zddddœ	 	 	 	 	 	 	 	 	 	 	 dd„Zy)ú6_get_search_client.<locals>.AzureBearerTokenCredentialc                ó^   •—  ‰|t        t        j                  «       «      dz   «      | _        y )Ni  )ÚintÚtimeÚ_token)ÚselfÚtokenrO   s     €rJ   Ú__init__z?_get_search_client.<locals>.AzureBearerTokenCredential.__init__´   s!   ø€ á% e¬S´·±³Ó-=ÀÑ-DÓEˆD�KrL   NF©ÚclaimsÚ	tenant_idÚ
enable_caec               ó   — | j                   S r7   )re   ©rf   rj   rk   rl   ÚscopesÚkwargss         rJ   Ú	get_tokenz@_get_search_client.<locals>.AzureBearerTokenCredential.get_token¸   s   € ð —;‘;ÐrL   )rg   Ústr©ro   rr   rj   úOptional[str]rk   rt   rl   Úboolrp   r   ÚreturnrO   )Ú__name__Ú
__module__Ú__qualname__rh   rq   )rO   s   €rJ   ÚAzureBearerTokenCredentialra   ³   sS   ø„ õ	Fð %)Ø'+Ø$ñ	àð	ð "ð	ð %ð		ð
 ð	ð ð	ð ô	rL   rz   c                  ób   — e Zd Zdd„Zddddœ	 	 	 	 	 	 	 	 	 	 	 d	d„Zd
d„Z	 	 	 d	 	 	 	 	 	 	 dd„Zy)ú7_get_search_client.<locals>.AsyncTokenCredentialWrapperc                ó   — || _         y r7   )Ú_credential)rf   Ú
credentials     rJ   rh   z@_get_search_client.<locals>.AsyncTokenCredentialWrapper.__init__Ã   s
   € Ø)ˆDÕrL   NFri   c             Ÿ  óJ   K  —  | j                   j                  ||||dœ|¤ŽS ­w)Nri   )r~   rq   rn   s         rJ   rq   zA_get_search_client.<locals>.AsyncTokenCredentialWrapper.get_tokenÆ   s9   è ø€ ð .�4×#Ñ#×-Ñ-ØØØ#Ø%ñ	ð
 ñð ùs   ‚!#c              “  ó   K  — y ­wr7   r8   ©rf   s    rJ   Úclosez=_get_search_client.<locals>.AsyncTokenCredentialWrapper.closeÖ   s	   è ø€ Øùó   ‚c              “  ó   K  — y ­wr7   r8   )rf   Úexc_typeÚ	exc_valueÚ	tracebacks       rJ   Ú	__aexit__zA_get_search_client.<locals>.AsyncTokenCredentialWrapper.__aexit__Ù   s   è ø€ ð ùr„   )r   r   rs   ©rv   ÚNone)NNN)r†   zOptional[Type[BaseException]]r‡   zOptional[BaseException]rˆ   zOptional[TracebackType]rv   r‹   )rw   rx   ry   rh   rq   rƒ   r‰   r8   rL   rJ   ÚAsyncTokenCredentialWrapperr|   Â   sŒ   „ ó	*ð %)Ø'+Ø$ñ	àð	ð "ð	ð %ð		ð
 ð	ð ð	ð ó	ó 	ð
 7;Ø15Ø15ð		à3ð	ð /ð	ð /ð		ð
 ô	rL   rŒ   ÚINTERACTIVEr   z!https://search.azure.com/.default)r:   r   rD   )Únamec           
     óž   •— | › d‰j                  | d«      › d‰j                  | «      › d‰j                  | «      › d| j                  «       › d�
S )Nz current type: 'ÚMISSINGz'. It has to be 'z#' or you can point to a different 'z;' field name by using the env variable 'AZURESEARCH_FIELDS_Ú')ÚgetÚupper)ÚxÚfields_typesÚmandatory_fieldss    €€rJ   Úfmt_errz#_get_search_client.<locals>.fmt_err  sk   ø€ à˜#Ð-¨l×.>Ñ.>¸qÀ)Ó.LÐ-Mð N)Ø)9×)=Ñ)=¸aÓ)@Ð(Að B+Ø+;×+?Ñ+?ÀÓ+BÐ*Cð DFØFGÇgÁgÃiÀ[ÐPQðSðrL   Ú
z2You need to specify at least the following fields z; or provide alternative field names in the env variables.

r/   é   i�  iô  )ÚmÚef_constructionÚ	ef_searchÚmetric)rŽ   ÚkindÚ
parametersÚdefault_exhaustive_knn)r�   ÚmyHnswProfile)rŽ   Úalgorithm_configuration_nameÚmyExhaustiveKnnProfile)Ú
algorithmsÚprofiles)ÚconfigurationsÚdefault_configuration_name)Ú
field_name)Úcontent_fields)rŽ   Úprioritized_fields)r¦   )rŽ   r>   r?   Úsemantic_searchrA   rB   rE   )r:   r;   r   rD   r8   )r”   rr   rv   rr   )1Úazure.core.credentialsrO   rP   r   Úazure.core.credentials_asyncr!   Úazure.core.exceptionsrQ   Úazure.identityrR   rS   Úazure.identity.aioÚazure.search.documentsr"   Úazure.search.documents.aioÚazure.search.documents.indexesrT   Ú%azure.search.documents.indexes.modelsrU   rV   rW   rX   rY   r)   rZ   r[   r\   r*   r]   r^   r_   r“   r   rq   Ú	get_indexrŽ   ÚtypeÚsetÚitemsÚlenÚjoinÚ
ValueErrorÚHNSWÚCOSINEÚEXHAUSTIVE_KNNÚ
isinstanceÚlistÚFIELDS_CONTENTÚcreate_index):r:   r;   r-   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rP   r   r!   rQ   rR   rS   ÚAsyncDefaultAzureCredentialr"   ÚAsyncSearchClientrT   rU   rV   rW   rX   rY   r)   rZ   r[   r\   r*   r]   r^   r_   rz   rŒ   r   Úasync_credentialÚindex_clientÚfÚdfÚvalueÚmissing_fieldsr—   r”   Úerrorr«   Úsemantic_configurationÚindexrO   r•   r–   s:                                                          @@@rJ   rK   rK   †   sÃ  ú€ ÷* XÑWÝAÝ;ßSÝXÝ3ÝLÝ@÷÷ ÷ õ ö  _ô ôÐ&:ô ð> (HÒ'MÈ2Ð$Ø#Ò) r€Nð
 €Ø�9‰9‹;˜-Ò'ÜÐ/Ñ1MÓ1OÓPˆJØ× Ñ Ð!DÔEÙ:¸:ÓFÑá+¨CÓ0ˆJØ)ÑØ	Ð	*Ù/Ð0EÓFˆ
Ù6°zÓBÑà%ÒAÑ)?Ó)Aˆ
Ø1ÒRÑ5PÓ5RÐá&7ð 'ØØØñ'ð +ñ	'€Lða)Ø×Ñ JÐÔ/ñF Ùð 
ØØ!Ø!Ø!ñ	
ð
 /ñ
ð 	
ñ !ð 
ØØ!Ø'Ø!ñ	
ð
 /ñ
ð 	
øðW !ó _)àÐá4:Ó;±F¨q˜AŸF™F A§F¡F™N±FùÔ;ˆLÙ;IÓJ¹>°R §¡¨¯©Ñ 0¹>ùÔJÐô #&Ð&6×&<Ñ&<Ó&>Ó"?Ü�l×(Ñ(Ó*Ó+ò#,ôñ#,‘J�C˜ð Ð% cÑ*Ñ*ñ#,ùóˆNñ ô
 �>Ó" QÒ&öð Ÿ	™	±~Ó"F±~°!¡7¨1¥:±~ùÔ"FÓG�Ü ØHØ%Ð&ð '%Ø%* Gð-óð ð $ˆFàÐ Ù(á.Ø&Ø6×;Ñ;Ù#1ØØ,/Ø&)Ø#>×#EÑ#Eô	$ô	ñ 8Ø5Ø6×EÑEÙ#:Ø#>×#EÑ#Eô$ôðñ( (Ø,Ø5>ôñ (Ø5Ø5Môð	ô)ˆMñB #ÜÐ5´tÔ<Ø+BÐ*CÐ'Ù,Ø6Ø+Fô‰Oñ )á%:Ø0Ù#<Ù$1¼^Ô$LÐ#Mô$ô&Ð"ñ -Ð=SÐ<TÔU‰Oð #ˆOñ ØØØ'Ø+Ø-Ø$;Ø%ô
ˆð 	×!Ñ! %×(ð_)úsC   Ã=D+ Ä+LÄ7EÅLÅ"FÆ ?LÆ?GÇ.LÇ=H
ÈC7LÌLc                  ó<  — e Zd ZdZ	 	 	 	 	 	 	 	 d8ddddddœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d9d„Zd:d„Zed;d„«       Zd<d„Z	 d=ddœ	 	 	 	 	 	 	 	 	 d>d	„Z		 d=ddœ	 	 	 	 	 	 	 	 	 d>d
„Z
	 d=ddœ	 	 	 	 	 	 	 d?d„Z	 d=ddœ	 	 	 	 	 	 	 d?d„Zd=d@d„Zd=d@d„Z	 dAddœ	 	 	 	 	 	 	 	 	 dBd„Zddœ	 	 	 	 	 	 	 dCd„Z	 dAddœ	 	 	 	 	 	 	 	 	 dBd„Zddœ	 	 	 	 	 	 	 dCd„Z	 dAddœ	 	 	 	 	 	 	 	 	 dDd„Z	 dAddœ	 	 	 	 	 	 	 	 	 dDd„Z	 dAddœ	 	 	 	 	 	 	 	 	 dEd„Z	 dAddœ	 	 	 	 	 	 	 	 	 dEd„Z	 	 dF	 	 	 	 	 	 	 	 	 dGd„Z	 	 dF	 	 	 	 	 	 	 	 	 dGd„Z	 	 	 dHddœ	 	 	 	 	 	 	 	 	 	 	 	 	 dId„Z	 	 	 dHddœ	 	 	 	 	 	 	 	 	 	 	 	 	 dId„ZdAdJd „Z	 dA	 	 	 	 	 	 	 dJd!„Z	 	 dF	 	 	 	 	 	 	 	 	 dGd"„Z	 	 dF	 	 	 	 	 	 	 	 	 dGd#„Z	 dAddœ	 	 	 	 	 	 	 	 	 dDd$„Z	 dAddœ	 	 	 	 	 	 	 	 	 dDd%„Z 	 	 	 dHddœ	 	 	 	 	 	 	 	 	 	 	 	 	 dId&„Z!	 	 	 dHddœ	 	 	 	 	 	 	 	 	 	 	 	 	 dId'„Z"ddœ	 	 	 	 	 	 	 	 	 	 	 dKd(„Z#ddœ	 	 	 	 	 	 	 	 	 	 	 dLd)„Z$	 dA	 	 	 	 	 	 	 dJd*„Z%	 dA	 	 	 	 	 	 	 dJd+„Z&	 	 dMddœ	 	 	 	 	 	 	 	 	 	 	 dNd,„Z'	 	 dMddœ	 	 	 	 	 	 	 	 	 	 	 dNd-„Z(	 dAddœ	 	 	 	 	 	 	 	 	 dOd.„Z)	 dAddœ	 	 	 	 	 	 	 	 	 dOd/„Z*e+	 	 	 	 	 	 dP	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dQd2„«       Z,e+	 	 	 	 	 	 dP	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dQd3„«       Z-e+	 d=d0d0d1dd4œ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dRd5„«       Z.e+	 d=d0d0d1dd4œ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dRd6„«       Z/dSd7„Z0y)TÚAzureSearchz&`Azure Cognitive Search` vector store.N)Úvector_search_dimensionsrG   r<   rH   rI   c               ó¾  — 	 ddl m}m}m}m} 	 || _        t        | j                  t        «      r| j                  j                  | _	        n| j                  | _	         |t        |j                  dd¬«       |t        |j                  ¬«       |t        |j                  |j                  «      d|xs t!        | j                  d«      «      d¬	«       |t"        |j                  ¬«      g}d
}d|v r|d   r|d|d   z   z  }t%        ||||||||	|
||||t'        j(                  |«      |¬«      | _        t%        ||||||||	|
||||d|||¬«      | _        || _        || _        |r|n|| _        || _        || _        || _        || _        || _        || _        |	| _         |
| _!        || _"        || _#        || _$        || _%        y # t
        $ r}t        d«      |‚d }~ww xY w)Nr   )ÚSearchableFieldr(   ÚSearchFieldDataTypeÚSimpleFieldzeUnable to import azure.search.documents. Please install with `pip install -U azure-search-documents`.T)rŽ   r¶   r-   Ú
filterable)rŽ   r¶   ÚTextr¡   )rŽ   r¶   Ú
searchablerÐ   Úvector_search_profile_nameÚ	langchainrD   Ú )r=   r>   r?   r@   rA   rB   rC   rD   rE   rG   rH   )r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   )&r´   rÒ   r(   rÓ   rÔ   ÚImportErrorÚembedding_functionr¿   r   Úembed_queryÚ	FIELDS_IDÚStringrÁ   ÚFIELDS_CONTENT_VECTORr	   ÚSingler¹   ÚFIELDS_METADATArK   ÚcopyÚdeepcopyÚclientÚasync_clientÚsearch_typer=   r>   Ú_azure_search_endpointÚ_azure_search_keyÚ_index_nameÚ_semantic_configuration_nameÚ_fieldsÚ_vector_searchÚ_semantic_configurationsÚ_scoring_profilesÚ_default_scoring_profileÚ_default_fieldsÚ_user_agentÚ_cors_options)rf   Úazure_search_endpointÚazure_search_keyr;   rÜ   rç   r=   r>   r?   r@   rA   rB   rE   rÐ   rG   r<   rH   rI   rp   rÒ   r(   rÓ   rÔ   ÚerC   rD   s                             rJ   rh   zAzureSearch.__init__u  s=  € ð0	÷ó ð 	4à"4ˆÔä�d×-Ñ-¬zÔ:Ø#×6Ñ6×BÑBˆDÕà#×6Ñ6ˆDÔñ ÜØ(×/Ñ/ØØô	ñ Ü#Ø(×/Ñ/ôñ Ü*Ø(×3Ñ3Ð4G×4NÑ4NÓOØØ)Aò *1Ü�t×'Ñ'¨Ó/Ó0Ø+:ôñ Ü$Ø(×/Ñ/ôð'
ˆð0 !ˆ
Ø˜6Ñ! f¨\Ò&:Ø˜#  |Ñ 4Ñ4Ñ4ˆJô )Ø!ØØØ!Ø(CØØ'Ø$;Ø-Ø$;Ø)Ø!Ø%Ü-1¯]©]Ø0ó.ð .ô#
ˆŒô* /Ø!ØØØ!Ø(CØØ'Ø$;Ø-Ø$;Ø)Ø!Ø%ØØ-MØ-Ø#9ô#
ˆÔð& 'ˆÔØ+FˆÔ(Ù &‘f¨NˆŒà&;ˆÔ#Ø!1ˆÔØ%ˆÔØ,GˆÔ)ØˆŒØ+ˆÔØ(?ˆÔ%Ø!1ˆÔØ(?ˆÔ%Ø-ˆÔØ%ˆÔØ)ˆÕøôG ò 	Üð;óð ðûð	ús   ‚G Ç	GÇGÇGc                óš  — t        | d«      r&| j                  r| j                  j                  «        t        | d«      r†| j                  ry	 t	        j
                  «       }|j                  «       r*|j                  | j                  j                  «       «       y |j                  | j                  j                  «       «       y y y # t        $ r{ t	        j                  «       }t	        j                  |«       	 |j                  | j                  j                  «       «       |j                  «        Y y # |j                  «        w xY ww xY w)Nrå   ræ   )Úhasattrrå   rƒ   ræ   ÚasyncioÚget_event_loopÚ
is_runningÚcreate_taskÚrun_until_completeÚRuntimeErrorÚnew_event_loopÚset_event_loop)rf   Úloops     rJ   Ú__del__zAzureSearch.__del__ù  sù   € ä�4˜Ô" t§{¢{Ø�K‰K×ÑÔô �4˜Ô(¨T×->Ò->ð!Ü×-Ñ-Ó/�Ø—?‘?Ô$à×$Ñ$ T×%6Ñ%6×%<Ñ%<Ó%>Õ?ð ×+Ñ+¨D×,=Ñ,=×,CÑ,CÓ,EÕFð .?Ð(øô  ò !ä×-Ñ-Ó/�Ü×&Ñ& tÔ,ð!Ø×+Ñ+¨D×,=Ñ,=×,CÑ,CÓ,EÔFà—J‘J–Lø�D—J‘J•Lúð!ús+   ÁAC Â)C Ã2E
Ã9)D4Ä"E
Ä4EÅE
c                óR   — t        | j                  t        «      r| j                  S d S r7   )r¿   rÜ   r   r‚   s    rJ   Ú
embeddingszAzureSearch.embeddings  s.   € ô
 ˜$×1Ñ1´:Ô>ð ×#Ñ#ð	
ð ð	
rL   c              ƒ  ó¬   K  — | j                   r#| j                   j                  |«      ƒ d {  –—† S  t        t        | j                  «      |«      S 7 Œ$­wr7   )r  Úaembed_queryr   r   rÜ   )rf   Útexts     rJ   Ú_aembed_queryzAzureSearch._aembed_query  sD   è ø€ Ø�?Š?ØŸ™×5Ñ5°dÓ;×;Ð;à:”4œ $×"9Ñ"9Ó:¸4Ó@Ð@ð <ús   ‚+A­A®%A©Úkeysc               ó  — t        | j                  t        «      r&	 | j                  j                  t	        |«      «      }n|D �cg c]  }| j                  |«      ‘Œ }}t        |«      dk(  rt        j                  d«       g S |s#d|v rt        |d   «      t        |«      k(  r|d   }| j                  t        ||«      ||¬«      S # t
        $ r1 |D �cg c]  }| j                  j                  |«      ‘Œ nc c}w }}Y Œ¡w xY wc c}w )z$Add texts data to an existing index.r   úNothing to insert, skipping.Úidsr	  )r¿   rÜ   r   Úembed_documentsrÀ   ÚNotImplementedErrorrÝ   r¹   ÚloggerÚdebugÚadd_embeddingsÚzip©rf   ÚtextsÚ	metadatasr
  rp   r  r”   s          rJ   Ú	add_textszAzureSearch.add_texts!  sû   € ô �d×-Ñ-¬zÔ:ðUØ!×4Ñ4×DÑDÄTÈ%Ã[ÓQ‘
ñ ?DÓD¹e¸˜$×1Ñ1°!Õ4¸eˆJÐDäˆz‹?˜aÒÜ�L‰LÐ7Ô8ØˆIñ
 ˜5 F™?´°V¸E±]Ó1CÄsÈ:ÃÒ1VØ˜%‘=ˆDà×"Ñ"¤3 u¨jÓ#9¸9È4Ð"ÓPÐPøô 'ò UÙNSÓTÉeÈ˜d×5Ñ5×AÑAÀ!ÕDÉeùÒT�
ÒTðUüò Es#   œ$C ÁDÃDÃ"C7Ã6DÄ Dc             ‹  óT  K  — t        | j                  t        «      r.	 | j                  j                  t	        |«      «      ƒ d {  –—† }n|D �cg c]  }| j                  |«      ‘Œ }}t        |«      dk(  rt        j                  d«       g S |s#d|v rt        |d   «      t        |«      k(  r|d   }| j                  t        ||«      ||¬«      ƒ d {  –—† S 7 Œ“# t
        $ r: |D �cg c]&  }| j                  j                  |«      ƒ d {  –—†7  ‘Œ( nc c}w }}Y Œ´w xY wc c}w 7 ŒQ­w)Nr   r  r  r	  )r¿   rÜ   r   Úaembed_documentsrÀ   r  r  r¹   r  r  Úaadd_embeddingsr  r  s          rJ   Ú
aadd_textszAzureSearch.aadd_texts?  s  è ø€ ô �d×-Ñ-¬zÔ:ðØ#'×#:Ñ#:×#KÑ#KÌDÐQVËKÓ#X×X‘
ñ ?DÓD¹e¸˜$×1Ñ1°!Õ4¸eˆJÐDäˆz‹?˜aÒÜ�L‰LÐ7Ô8ØˆIñ
 ˜5 F™?´°V¸E±]Ó1CÄsÈ:ÃÒ1VØ˜%‘=ˆDà×)Ñ)¬#¨e°ZÓ*@À)ÐRVÐ)ÓW×WÐWð% YùÜ&ò áKPóÙKPÀa˜$×1Ñ1×>Ñ>¸qÓA×AÒAÉ5ùò�
ò ðüò
 Eð Xúsk   ‚D(ž'C ÁCÁC Á
D(ÁD!Á'A-D(ÃD&ÃD(ÃC ÃDÃ(#DÄDÄDÄDÄD(ÄDÄ	D(c               óþ  — g }g }t        |«      D �]”  \  }\  }}|r||   }	nKt        t        j                  «       «      }	t	        j
                  t        |	d«      «      j                  d«      }	|r||   ni }
ddt        |	t        |t        t        j                  |t        j                  ¬«      j                  «       t        t!        j"                  |
«      i}|
r\|
j%                  «       D ���ci c].  \  }}|| j&                  D �cg c]  }|j(                  ‘Œ c}v r||“Œ0 }}}}|j+                  |«       |j-                  |«       |j-                  |	«       t/        |«      t0        k(  s�ŒZ| j2                  j5                  |¬«      }t7        d„ |D «       «      st9        |«      ‚g }�Œ— t/        |«      dk(  r|S | j2                  j5                  |¬«      }t7        d	„ |D «       «      r|S t9        |«      ‚c c}w c c}}}w )
ú$Add embeddings to an existing index.úutf-8Úasciiú@search.actionÚupload©Údtype©Ú	documentsc              3  ó4   K  — | ]  }|j                   –— Œ y ­wr7   ©Ú	succeeded©Ú.0Úrs     rJ   Ú	<genexpr>z-AzureSearch.add_embeddings.<locals>.<genexpr>‰  ó   è ø€ Ð9±¨1˜1Ÿ;�;±ùó   ‚r   c              3  ó4   K  — | ]  }|j                   –— Œ y ­wr7   r'  r)  s     rJ   r,  z-AzureSearch.add_embeddings.<locals>.<genexpr>•  ó   è ø€ Ð-¡H˜qˆq�{�{¡Hùr.  )Ú	enumeraterr   ÚuuidÚuuid4Úbase64Úurlsafe_b64encodeÚbytesÚdecoderÞ   rÁ   rà   ÚnpÚarrayÚfloat32Útolistrâ   ÚjsonÚdumpsr¸   r>   rŽ   ÚupdateÚappendr¹   ÚMAX_UPLOAD_BATCH_SIZErå   Úupload_documentsÚallr   ©rf   Útext_embeddingsr  r
  r  ÚdataÚir  Ú	embeddingr-   r5   ÚdocÚkÚvr”   Úadditional_fieldsÚresponses                    rJ   r  zAzureSearch.add_embeddings]  sÉ  € ð ˆð ˆÜ$-¨o×$>Ñ ˆAÑ ��iáØ˜1‘g‘äœ$Ÿ*™*›,Ó'�ä×.Ñ.¬u°S¸'Ó/BÓC×JÑJÈ7ÓS�á'0�y ’|°bˆHð ! (Ü˜3Ü Ü%¤r§x¡x°	ÄÇÁÔ'L×'SÑ'SÓ'UÜ¤§¡¨HÓ!5ðˆCñ ð !)§¡Ô 0õ%á 0™˜˜1Ø¨T¯[ª[Ó9©[¨˜QŸV›V¨[Ñ9Ñ9ð �q‘DØ 0ð "ò %ð
 —
‘
Ð,Ô-Ø�K‰K˜ÔØ�J‰J�sŒOä�4‹yÔ1Ô1ØŸ;™;×7Ñ7À$Ð7ÓG�äÑ9±Ó9Ô9Ü,¨XÓ6Ð6à’ðG %?ôL ˆt‹9˜Š>ØˆJð —;‘;×/Ñ/¸$Ð/Ó?ˆäÑ-¡HÓ-Ô-ØˆJä$ XÓ.Ð.ùò1 :ùô%s   Ã,G8
ÄG3Ä	G8
Ç3G8
c             ƒ  ó,  K  — g }g }t        |«      D �]›  \  }\  }}|r||   nt        t        j                  «       «      }	t	        j
                  t        |	d«      «      j                  d«      }	|r||   ni }
ddt        |	t        |t        t        j                  |t        j                  ¬«      j                  «       t        t!        j"                  |
«      i}|
r\|
j%                  «       D ���ci c].  \  }}|| j&                  D �cg c]  }|j(                  ‘Œ c}v r||“Œ0 }}}}|j+                  |«       |j-                  |«       |j-                  |	«       t/        |«      t0        k(  s�ŒY| j2                  j5                  |¬«      ƒ d{  –—† }t7        d„ |D «       «      st9        |«      ‚g }�Œž t/        |«      d	k(  r|S | j2                  j5                  |¬«      ƒ d{  –—† }t7        d
„ |D «       «      r|S t9        |«      ‚c c}w c c}}}w 7 Œ…7 Œ1­w)r  r  r  r   r!  r"  r$  Nc              3  ó4   K  — | ]  }|j                   –— Œ y ­wr7   r'  r)  s     rJ   r,  z.AzureSearch.aadd_embeddings.<locals>.<genexpr>Â  r-  r.  r   c              3  ó4   K  — | ]  }|j                   –— Œ y ­wr7   r'  r)  s     rJ   r,  z.AzureSearch.aadd_embeddings.<locals>.<genexpr>Î  r0  r.  )r1  rr   r2  r3  r4  r5  r6  r7  rÞ   rÁ   rà   r8  r9  r:  r;  râ   r<  r=  r¸   r>   rŽ   r>  r?  r¹   r@  ræ   rA  rB  r   rC  s                    rJ   r  zAzureSearch.aadd_embeddingsš  sß  è ø€ ð ˆð ˆÜ$-¨o×$>Ñ ˆAÑ ��iá!�$�q’'¤s¬4¯:©:«<Ó'8ˆCä×*Ñ*¬5°°gÓ+>Ó?×FÑFÀwÓOˆCÙ'0�y ’|°bˆHð ! (Ü˜3Ü Ü%¤r§x¡x°	ÄÇÁÔ'L×'SÑ'SÓ'UÜ¤§¡¨HÓ!5ðˆCñ ð !)§¡Ô 0õ%á 0™˜˜1Ø¨T¯[ª[Ó9©[¨˜QŸV›V¨[Ñ9Ñ9ð �q‘DØ 0ð "ò %ð
 —
‘
Ð,Ô-Ø�K‰K˜ÔØ�J‰J�sŒOä�4‹yÔ1Ô1Ø!%×!2Ñ!2×!CÑ!CÈdÐ!CÓ!S×S�äÑ9±Ó9Ô9Ü,¨XÓ6Ð6à’ð? %?ôD ˆt‹9˜Š>ØˆJð ×*Ñ*×;Ñ;ÀdÐ;ÓK×KˆäÑ-¡HÓ-Ô-ØˆJä$ XÓ.Ð.ùò1 :ùô%ð Tøð LúsP   ‚C+HÃ-H	
ÄHÄ	H	
Ä A	HÅ+HÆ
HÆAHÇ HÇ!#HÈH	
È	HÈHc                óŒ   — |r=| j                   j                  |D �cg c]
  }t        |i‘Œ c}«      }t        |«      dkD  S yc c}w )úµDelete by vector ID.

        Args:
            ids: List of ids to delete.

        Returns:
            bool: True if deletion is successful,
            False otherwise.
        r   F)rå   Údelete_documentsrÞ   r¹   ©rf   r  rp   rF  Úress        rJ   ÚdeletezAzureSearch.deleteÓ  sE   € ñ Ø—+‘+×.Ñ.ÉÓ/LÉÀ1´¸A²ÈÑ/LÓMˆCÜ�s“8˜a‘<Ðàùò 0Ms   œAc              ‹  ó    K  — |rA| j                   j                  |D �cg c]  }d|i‘Œ c}«      ƒ d{  –—† }t        |«      dkD  S yc c}w 7 Œ­w)rQ  r,   Nr   F)ræ   rR  r¹   rS  s        rJ   ÚadeletezAzureSearch.adeleteã  sQ   è ø€ ñ Ø×)Ñ)×:Ñ:ÉsÓ;SÉsÈ!¸TÀ1ºIÈsÑ;SÓT×TˆCÜ�s“8˜a‘<Ðàùò <TÐTús   ‚AžA©
A³A´Ar™   )rç   c               óè   — |xs | j                   }|dk(  r | j                  |fd|i|¤Ž}|S |dk(  r | j                  |fd|i|¤Ž}|S |dk(  r | j                  |fd|i|¤Ž}|S t	        d|› d�«      ‚©NÚ
similarityrI  ÚhybridÚsemantic_hybridúsearch_type of ú not allowed.)rç   r?   Úhybrid_searchÚsemantic_hybrid_searchr»   ©rf   ÚqueryrI  rç   rp   Údocss         rJ   Úsimilarity_searchzAzureSearch.similarity_searchó  s°   € ð "Ò5 T×%5Ñ%5ˆØ˜,Ò&Ø%�4×%Ñ% eÑ;¨qÐ;°FÑ;ˆDð ˆð ˜HÒ$Ø%�4×%Ñ% eÑ;¨qÐ;°FÑ;ˆDð
 ˆð	 Ð-Ò-Ø.�4×.Ñ.¨uÑD¸ÐD¸VÑDˆDð ˆô ˜¨{¨m¸=ÐIÓJÐJrL   )rI  c               óô   — |j                  d| j                  «      }|dk(  r | j                  |fd|i|¤ŽS |dk(  r | j                  |fd|i|¤ŽS |dk(  r | j                  |fd|i|¤ŽS t        d|› d�«      ‚)ú$Run similarity search with distance.rç   rZ  rI  r[  r\  r]  r^  )Úpoprç   Úvector_search_with_scoreÚhybrid_search_with_scoreÚ!semantic_hybrid_search_with_scorer»   ©rf   rb  rI  rp   rç   s        rJ   Úsimilarity_search_with_scorez(AzureSearch.similarity_search_with_score  sž   € ð
 —j‘j °×0@Ñ0@ÓAˆØ˜,Ò&Ø0�4×0Ñ0°ÑF¸!ÐF¸vÑFÐFØ˜HÒ$Ø0�4×0Ñ0°ÑF¸!ÐF¸vÑFÐFØÐ-Ò-Ø9�4×9Ñ9¸%ÑOÀ1ÐOÈÑOÐOä˜¨{¨m¸=ÐIÓJÐJrL   c             ‹  ó,  K  — |xs | j                   }|dk(  r | j                  |fd|i|¤Žƒ d {  –—† }|S |dk(  r | j                  |fd|i|¤Žƒ d {  –—† }|S |dk(  r | j                  |fd|i|¤Žƒ d {  –—† }|S t	        d|› d�«      ‚7 Œ]7 Œ;7 Œ­wrY  )rç   Úavector_searchÚahybrid_searchÚasemantic_hybrid_searchr»   ra  s         rJ   Úasimilarity_searchzAzureSearch.asimilarity_search  sË   è ø€ ð "Ò5 T×%5Ñ%5ˆØ˜,Ò&Ø,˜×,Ñ,¨UÑB°aÐB¸6ÑB×BˆDð ˆð ˜HÒ$Ø,˜×,Ñ,¨UÑB°aÐB¸6ÑB×BˆDð
 ˆð	 Ð-Ò-Ø5˜×5Ñ5°eÑK¸qÐKÀFÑK×KˆDð ˆô ˜¨{¨m¸=ÐIÓJÐJð CøàBøàKús3   ‚.B°B±#BÁBÁ#BÁ8BÁ9BÂBÂBc             ‹  ó8  K  — |j                  d| j                  «      }|dk(  r | j                  |fd|i|¤Žƒ d{  –—† S |dk(  r | j                  |fd|i|¤Žƒ d{  –—† S |dk(  r | j                  |fd|i|¤Žƒ d{  –—† S t        d|› d�«      ‚7 ŒW7 Œ77 Œ­w)	rf  rç   rZ  rI  Nr[  r\  r]  r^  )r’   rç   Úavector_search_with_scoreÚahybrid_search_with_scoreÚ"asemantic_hybrid_search_with_scorer»   rk  s        rJ   Úasimilarity_search_with_scorez)AzureSearch.asimilarity_search_with_score(  s¹   è ø€ ð —j‘j °×0@Ñ0@ÓAˆØ˜,Ò&Ø7˜×7Ñ7¸ÑMÀÐMÀfÑM×MÐMØ˜HÒ$Ø7˜×7Ñ7¸ÑMÀÐMÀfÑM×MÐMØÐ-Ò-Ø@˜×@Ñ@ÀÑVÈ!ÐVÈvÑV×VÐVä˜¨{¨m¸=ÐIÓJÐJð NøàMøàVús3   ‚:B¼B½!BÁBÁ!BÂ BÂBÂBÂB)Úscore_thresholdc               óp   —  | j                   |fd|i|¤Ž}|€|S |D �cg c]  }|d   |k\  sŒ|‘Œ c}S c c}w ©NrI  é   ©rh  ©rf   rb  rI  rw  rp   Úresultr+  s          rJ   Ú'similarity_search_with_relevance_scoresz3AzureSearch.similarity_search_with_relevance_scores6  ó\   € ð /�×.Ñ.¨uÑD¸ÐD¸VÑDˆð Ð&ð ð	
ñ $Ó?™V˜ q¨¡t¨Ó'>’!˜VÑ?ð	
ùò @ó   ž3¬3c             ‹  óŒ   K  —  | j                   |fd|i|¤Žƒ d {  –—† }|€|S |D �cg c]  }|d   |k\  sŒ|‘Œ c}S 7 Œ!c c}w ­wry  ©rs  r|  s          rJ   Ú(asimilarity_search_with_relevance_scoresz4AzureSearch.asimilarity_search_with_relevance_scoresE  ói   è ø€ ð 6�t×5Ñ5°eÑK¸qÐKÀFÑK×Kˆð Ð&ð ð	
ñ $Ó?™V˜ q¨¡t¨Ó'>’!˜VÑ?ð	
ð Lúò @ùó    ‚A›=œA¨?¶?ºA¿A)Úfiltersc               ó`   — | j                  |||¬«      }|D ��cg c]  \  }}|‘Œ	 c}}S c c}}w )á\  
        Returns the most similar indexed documents to the query text.

        Args:
            query (str): The query text for which to find similar documents.
            k (int): The number of documents to return. Default is 4.

        Returns:
            List[Document]: A list of documents that are most similar to the query text.
        ©rI  r†  r{  ©rf   rb  rI  r†  rp   Údocs_and_scoresrH  Ú_s           rJ   r?   zAzureSearch.vector_searchT  s7   € ð ×7Ñ7¸ÀÈGÐ7ÓTˆÙ"1Ô2¡/™˜˜Q’ /Ò2Ð2ùÓ2s   š*c             ‹  ó|   K  — | j                  |||¬«      ƒ d{  –—† }|D ��cg c]  \  }}|‘Œ	 c}}S 7 Œc c}}w ­w)rˆ  r‰  Nr‚  rŠ  s           rJ   rn  zAzureSearch.avector_searchd  sN   è ø€ ð !%× >Ñ >Ø�Q ð !?ó !
÷ 
ˆñ #2Ô2¡/™˜˜Q’ /Ò2Ð2ð
úó 3ùs   ‚<š4›	<¤6°<¶<c                óh   — | j                  |«      } | j                  |d|fd|i|¤Ž}t        |«      S )áž  Return docs most similar to query.

        Args:
            query (str): Text to look up documents similar to.
            k (int, optional): Number of Documents to return. Defaults to 4.
            filters (str, optional): Filtering expression. Defaults to None.

        Returns:
            List[Tuple[Document, float]]: List of Documents most similar
                to the query and score for each
        Ú r†  ©rÝ   Ú_simple_searchÚ_results_to_documents©rf   rb  rI  r†  rp   rG  Úresultss          rJ   rh  z$AzureSearch.vector_search_with_scorev  s?   € ð$ ×$Ñ$ UÓ+ˆ	Ø%�$×%Ñ% i°°QÑRÀÐRÈ6ÑRˆä$ WÓ-Ð-rL   c              ‹  ó¬   K  — | j                  |«      ƒ d{  –—† } | j                  |d|fd|i|¤Žƒ d{  –—† }t        |«      ƒ d{  –—† S 7 Œ67 Œ7 Œ­w)r�  Nr�  r†  ©r  Ú_asimple_searchÚ_aresults_to_documentsr”  s          rJ   rs  z%AzureSearch.avector_search_with_score�  sj   è ø€ ð$ ×,Ñ,¨UÓ3×3ˆ	Ø,˜×,Ñ,Ø�r˜1ñ
Ø&-ð
Ø17ñ
÷ 
ˆô ,¨GÓ4×4Ð4ð 4øð
øð 5úó1   ‚A—A˜A¶A·AÁ	AÁ
AÁAÁAc               ó–   — | j                  |«      } | j                  |d|fd|i|¤Ž}t        |t        j                  |«      ||¬«      S )á"  Perform a search and return results that are reordered by MMR.

        Args:
            query (str): Text to look up documents similar to.
            k (int, optional): How many results to give. Defaults to 4.
            fetch_k (int, optional): Total results to select k from.
                Defaults to 20.
            lambda_mult: Number between 0 and 1 that determines the degree
                        of diversity among the results with 0 corresponding
                        to maximum diversity and 1 to minimum diversity.
                        Defaults to 0.5
            filters (str, optional): Filtering expression. Defaults to None.

        Returns:
            List[Tuple[Document, float]]: List of Documents most similar
                to the query and score for each
        r�  r†  ©Úquery_embeddingÚlambda_multrI  ©rÝ   r’  Ú0_reorder_results_with_maximal_marginal_relevancer8  r9  ©	rf   rb  rI  Úfetch_krŸ  r†  rp   rG  r•  s	            rJ   Ú(max_marginal_relevance_search_with_scorez4AzureSearch.max_marginal_relevance_search_with_score¦  sU   € ð6 ×$Ñ$ UÓ+ˆ	Ø%�$×%Ñ% i°°WÑXÀgÐXÐQWÑXˆä?Ø¤R§X¡X¨iÓ%8ÀkÐUVô
ð 	
rL   c             ‹  óÚ   K  — | j                  |«      ƒ d{  –—† } | j                  |d|fd|i|¤Žƒ d{  –—† }t        |t        j                  |«      ||¬«      ƒ d{  –—† S 7 ŒM7 Œ07 Œ­w)rœ  Nr�  r†  r�  ©r  r˜  Ú1_areorder_results_with_maximal_marginal_relevancer8  r9  r¢  s	            rJ   Ú)amax_marginal_relevance_search_with_scorez5AzureSearch.amax_marginal_relevance_search_with_scoreÈ  s„   è ø€ ð6 ×,Ñ,¨UÓ3×3ˆ	Ø,˜×,Ñ,Ø�r˜7ñ
Ø,3ð
Ø7=ñ
÷ 
ˆô GØÜŸH™H YÓ/Ø#Øô	
÷ 
ð 	
ð 4øð
øð
úó1   ‚A+—A%˜A+¶A'·)A+Á A)Á!A+Á'A+Á)A+c                ób   —  | j                   |fd|i|¤Ž}|D ��cg c]  \  }}|‘Œ	 c}}S c c}}w )rˆ  rI  ©ri  ©rf   rb  rI  rp   r‹  rH  rŒ  s          rJ   r_  zAzureSearch.hybrid_searchï  s<   € ð 8˜$×7Ñ7¸ÑMÀÐMÀfÑMˆÙ"1Ô2¡/™˜˜Q’ /Ò2Ð2ùÓ2s   ›+c              ‹  ó~   K  —  | j                   |fd|i|¤Žƒ d{  –—† }|D ��cg c]  \  }}|‘Œ	 c}}S 7 Œc c}}w ­w)rˆ  rI  N©rt  r¬  s          rJ   ro  zAzureSearch.ahybrid_searchý  sI   è ø€ ð !? × >Ñ >¸uÑ TÈÐ TÈVÑ T×TˆÙ"1Ô2¡/™˜˜Q’ /Ò2Ð2ð UúÛ2ùs   ‚=›5œ	=¥7±=·=c                óh   — | j                  |«      } | j                  |||fd|i|¤Ž}t        |«      S )á!  Return docs most similar to query with a hybrid query.

        Args:
            query: Text to look up documents similar to.
            k: Number of Documents to return. Defaults to 4.

        Returns:
            List of Documents most similar to the query and score for each
        r†  r‘  r”  s          rJ   ri  z$AzureSearch.hybrid_search_with_score  s?   € ð" ×$Ñ$ UÓ+ˆ	Ø%�$×%Ñ% i°¸ÑUÀ7ÐUÈfÑUˆä$ WÓ-Ð-rL   c              ‹  ó¬   K  — | j                  |«      ƒ d{  –—† } | j                  |||fd|i|¤Žƒ d{  –—† }t        |«      ƒ d{  –—† S 7 Œ67 Œ7 Œ­w)r°  Nr†  r—  r”  s          rJ   rt  z%AzureSearch.ahybrid_search_with_score#  sj   è ø€ ð" ×,Ñ,¨UÓ3×3ˆ	Ø,˜×,Ñ,Ø�u˜añ
Ø)0ð
Ø4:ñ
÷ 
ˆô ,¨GÓ4×4Ð4ð 4øð
øð 5úrš  c               óp   —  | j                   |fd|i|¤Ž}|€|S |D �cg c]  }|d   |k\  sŒ|‘Œ c}S c c}w ry  r«  r|  s          rJ   Ú#hybrid_search_with_relevance_scoresz/AzureSearch.hybrid_search_with_relevance_scores;  r  r€  c             ‹  óŒ   K  —  | j                   |fd|i|¤Žƒ d {  –—† }|€|S |D �cg c]  }|d   |k\  sŒ|‘Œ c}S 7 Œ!c c}w ­wry  r®  r|  s          rJ   Ú$ahybrid_search_with_relevance_scoresz0AzureSearch.ahybrid_search_with_relevance_scoresJ  r„  r…  c               ó–   — | j                  |«      } | j                  |||fd|i|¤Ž}t        |t        j                  |«      ||¬«      S )á  Return docs most similar to query with a hybrid query
            and reorder results by MMR.

        Args:
            query (str): Text to look up documents similar to.
            k (int, optional): Number of Documents to return. Defaults to 4.
            fetch_k (int, optional): Total results to select k from.
                Defaults to 20.
            lambda_mult: Number between 0 and 1 that determines the degree
                        of diversity among the results with 0 corresponding
                        to maximum diversity and 1 to minimum diversity.
                        Defaults to 0.5
            filters (str, optional): Filtering expression. Defaults to None.

        Returns:
            List of Documents most similar to the query and score for each
        r†  r�  r   r¢  s	            rJ   Ú/hybrid_max_marginal_relevance_search_with_scorez;AzureSearch.hybrid_max_marginal_relevance_search_with_scoreY  s`   € ð8 ×$Ñ$ UÓ+ˆ	Ø%�$×%Ñ%Ø�u˜gñ
Ø/6ð
Ø:@ñ
ˆô @Ø¤R§X¡X¨iÓ%8ÀkÐUVô
ð 	
rL   c             ‹  óÚ   K  — | j                  |«      ƒ d{  –—† } | j                  |||fd|i|¤Žƒ d{  –—† }t        |t        j                  |«      ||¬«      ƒ d{  –—† S 7 ŒM7 Œ07 Œ­w)r·  Nr†  r�  r¦  r¢  s	            rJ   Ú0ahybrid_max_marginal_relevance_search_with_scorez<AzureSearch.ahybrid_max_marginal_relevance_search_with_score~  s„   è ø€ ð8 ×,Ñ,¨UÓ3×3ˆ	Ø,˜×,Ñ,Ø�u˜gñ
Ø/6ð
Ø:@ñ
÷ 
ˆô GØÜŸH™H YÓ/Ø#Øô	
÷ 
ð 	
ð 4øð
øð
úr©  c          	     ól   — ddl m}  | j                  j                  d| |||t        ¬«      g||dœ|¤ŽS )á©  Perform vector or hybrid search in the Azure search index.

        Args:
            embedding: A vector embedding to search in the vector space.
            text_query: A full-text search query expression;
                Use "*" or omit this parameter to perform only vector search.
            k: Number of documents to return.
            filters: Filtering expression.
        Returns:
            Search items
        r   ©ÚVectorizedQuery©ÚvectorÚk_nearest_neighborsr>   ©Úsearch_textÚvector_queriesÚfilterÚtopr8   )Úazure.search.documents.modelsr¾  rå   Úsearchrà   ©rf   rG  Ú
text_queryrI  r†  rp   r¾  s          rJ   r’  zAzureSearch._simple_search¦  sQ   € õ( 	Bà!ˆt�{‰{×!Ñ!ð 
Ø"áØ$Ø()Ü0ôðð Øñ
ð ñ
ð 	
rL   c          	   ‹  óˆ   K  — ddl m}  | j                  j                  d| |||t        ¬«      g||dœ|¤Žƒ d{  –—† S 7 Œ­w)r¼  r   r½  r¿  rÂ  Nr8   )rÇ  r¾  ræ   rÈ  rà   rÉ  s          rJ   r˜  zAzureSearch._asimple_searchÊ  sa   è ø€ õ( 	Bà-�T×&Ñ&×-Ñ-ð 
Ø"áØ$Ø()Ü0ôðð Øñ
ð ñ
÷ 
ð 	
ð 
ús   ‚9A»A ¼Ac                ód   —  | j                   |fd|i|¤Ž}|D ��cg c]  \  }}}|‘Œ
 c}}S c c}}w )á‡  
        Returns the most similar indexed documents to the query text.

        Args:
            query (str): The query text for which to find similar documents.
            k (int): The number of documents to return. Default is 4.
            filters: Filtering expression.

        Returns:
            List[Document]: A list of documents that are most similar to the query text.
        rI  ©Ú,semantic_hybrid_search_with_score_and_rerankr¬  s          rJ   r`  z"AzureSearch.semantic_hybrid_searchî  sJ   € ð L˜$×KÑKØñ
Øð
Ø ñ
ˆñ &5Ô5¡_™	˜˜Q ’ _Ò5Ð5ùÓ5s   ›,c              ‹  ó€   K  —  | j                   |fd|i|¤Žƒ d{  –—† }|D ��cg c]  \  }}}|‘Œ
 c}}S 7 Œc c}}w ­w)rÍ  rI  N©Ú-asemantic_hybrid_search_with_score_and_rerankr¬  s          rJ   rp  z#AzureSearch.asemantic_hybrid_search  sZ   è ø€ ð !S × RÑ RØñ!
Øð!
Ø ñ!
÷ 
ˆñ &5Ô5¡_™	˜˜Q ’ _Ò5Ð5ð
úó 6ùs   ‚>›6œ	>¥8²>¸>c               óâ   —  | j                   |fd|i|¤Ž}|dk(  r!|D ���	cg c]  \  }}}	|�||k\  r||f‘Œ c}	}}S |dk(  r!|D ��	�
cg c]  \  }}	}
|�|
|k\  r||
f‘Œ c}
}	}S yc c}	}}w c c}
}	}w )á  
        Returns the most similar indexed documents to the query text.

        Args:
            query (str): The query text for which to find similar documents.
            k (int): The number of documents to return. Default is 4.
            score_type: Must either be "score" or "reranker_score".
                Defaulted to "score".
            filters: Filtering expression.

        Returns:
            List[Tuple[Document, float]]: A list of documents and their
                corresponding scores.
        rI  ÚscoreNÚreranker_scorerÎ  ©rf   rb  rI  Ú
score_typerw  rp   r‹  rH  rÕ  rŒ  rÖ  s              rJ   rj  z-AzureSearch.semantic_hybrid_search_with_score  sÂ   € ð. L˜$×KÑKØñ
Øð
Ø ñ
ˆð ˜Ò ñ &5õá%4‘M�C˜ Ø"Ð*¨e°Ò.Fð �e’Ø%4óð ð
 Ð+Ò+ñ />õá.=Ñ*�C˜˜NØ"Ð*¨nÀÒ.Oð �nÒ%Ø.=óð ð ,ùôùôs   ¡A#ÁA*c             ‹  óþ   K  —  | j                   |fd|i|¤Žƒ d{  –—† }|dk(  r!|D ���	cg c]  \  }}}	|�||k\  r||f‘Œ c}	}}S |dk(  r!|D ��	�
cg c]  \  }}	}
|�|
|k\  r||
f‘Œ c}
}	}S y7 ŒQc c}	}}w c c}
}	}w ­w)rÔ  rI  NrÕ  rÖ  rÑ  r×  s              rJ   ru  z.AzureSearch.asemantic_hybrid_search_with_score;  sÐ   è ø€ ð. !S × RÑ RØñ!
Øð!
Ø ñ!
÷ 
ˆð ˜Ò ñ &5õá%4‘M�C˜ Ø"Ð*¨e°Ò.Fð �e’Ø%4óð ð
 Ð+Ò+ñ />õá.=Ñ*�C˜˜NØ"Ð*¨nÀÒ.Oð �nÒ%Ø.=óð ð ,ð
úôùôùs,   ‚A=›A-œA=«A/ÁA=ÁA6Á'A=Á/A=c               óÈ  — ddl m}  | j                  j                  d| || j	                  |«      |t
        ¬«      g|d| j                  dd|dœ|¤Ž}|j                  «       xs g }i }|D ](  }	|	j                  |	j                  dœ||	j                  <   Œ* |D �
��cg c�]/  }
t        |
j                  t        «      i t        |
v rt        |
j                  t        «      ini ¥t        |
v rt!        j"                  |
t           «      n,|
j%                  «       D ��ci c]  \  }}|t
        k7  r||“Œ c}}¥|
j'                  d«      rA|
j'                  di g«      d   j                  |
j'                  di g«      d   j                  dœni |j'                  |
j'                  t        d	«      d	«      d
œ¥¬«      t)        |
d   «      t)        |
d   «      f‘�Œ2 }}}
}|S c c}}w c c}}}
w )áL  Return docs most similar to query with a hybrid query.

        Args:
            query: Text to look up documents similar to.
            k: Number of Documents to return. Defaults to 4.
            filters: Filtering expression.

        Returns:
            List of Documents most similar to the query and score for each
        r   r½  r¿  ÚsemanticÚ
extractive©rÃ  rÄ  rÅ  Ú
query_typer=   Úquery_captionÚquery_answerrÆ  ©r  Ú
highlightsú@search.captionsr�  ©ÚcaptionsÚanswers©Úpage_contentr5   ú@search.scoreú@search.reranker_scorer8   )rÇ  r¾  rå   rÈ  rÝ   rà   r=   Úget_answersr  rã  r-   r   rg  rÁ   rÞ   râ   r<  Úloadsr¸   r’   Úfloat)rf   rb  rI  r†  rp   r¾  r•  Úsemantic_answersÚsemantic_answers_dictÚsemantic_answerr}  rJ  rc  s                rJ   rÏ  z8AzureSearch.semantic_hybrid_search_with_score_and_rerankb  s+  € õ 	Bà$�$—+‘+×$Ñ$ð 
ØáØ×+Ñ+¨EÓ2Ø()Ü0ôðð Ø!Ø(,×(HÑ(HØ&Ø%Øñ
ð ñ
ˆð$ #×.Ñ.Ó0Ò6°BÐØ&(ÐÛ/ˆOà'×,Ñ,Ø-×8Ñ8ñ:Ð! /×"5Ñ"5Ò6ð  0ñ` "õU+
òT "�ôQ Ø!'§¡¬NÓ!;ð!ô  )¨FÑ2ô '¨¯
©
´9Ó(=Ñ>à!#ð	!ô  /°&Ñ8ô !ŸJ™J v¬oÑ'>Ô?ð -3¯L©L¬Nô"á,:¡D A qØ#$Ô(=Ò#=ð !" 1¡Ø,:ò"ð!ð2 $*§:¡:Ð.@Ô#Að -3¯J©JÐ7IÈBÈ4Ó,PØ()ñ-&ç&*¡dØ28·*±*Ð=OÐRTÐQUÓ2VØ()ñ3&ç&0¡jò!"ð &(à'<×'@Ñ'@Ø &§
¡
¬9°bÓ 9Ø "ó(ñð!ô$ôJ �f˜_Ñ-Ó.Ü�fÐ5Ñ6Ó7óO(ðR "ðU 	ò +
ðX ˆùó?"ùô+
s   ÂA<GÄGÄ.B#GÇGc             ‹  ó(  K  — ddl m} | j                  |«      ƒ d{  –—† } | j                  j                  d| |||t
        ¬«      g|d| j                  dd|dœ|¤Žƒ d{  –—† }|j                  «       ƒ d{  –—† xs g }i }	|D ](  }
|
j                  |
j                  dœ|	|
j                  <   Œ* |2 ���cg c3 d{  –—† }t        |j                  t        «      i t        |v rt        |j                  t        «      ini ¥t        |v rt!        j"                  |t           «      n,|j%                  «       D ��ci c]  \  }}|t
        k7  r||“Œ c}}¥|j'                  d	«      rA|j'                  d	i g«      d   j                  |j'                  d	i g«      d   j                  dœni |	j'                  |j'                  t        d
«      d
«      dœ¥¬«      t)        |d   «      t)        |d   «      f‘�Œ77 �ŒÔ7 �Œ’7 �Œ}7 �Œ<c c}}w 6 nc c}}}w }}}}|S ­w)rÛ  r   r½  Nr¿  rÜ  rÝ  rÞ  râ  rä  r�  rå  rè  rê  rë  r8   )rÇ  r¾  r  ræ   rÈ  rà   r=   rì  r  rã  r-   r   rg  rÁ   rÞ   râ   r<  rí  r¸   r’   rî  )rf   rb  rI  r†  rp   r¾  rÀ  r•  rï  rð  rñ  r}  rJ  rc  s                 rJ   rÒ  z9AzureSearch.asemantic_hybrid_search_with_score_and_rerank¹  sV  è ø€ õ 	Bà×)Ñ)¨%Ó0×0ˆØ0˜×)Ñ)×0Ñ0ð 
ØáØ!Ø()Ü0ôðð Ø!Ø(,×(HÑ(HØ&Ø%Øñ
ð ñ
÷ 
ˆð$ #*×"5Ñ"5Ó"7×7Ò>¸BÐØ&(ÐÛ/ˆOà'×,Ñ,Ø-×8Ñ8ñ:Ð! /×"5Ñ"5Ò6ð  0ñ` !(÷U+
õ +
ðT ôQ Ø!'§¡¬NÓ!;ð!ô  )¨FÑ2ô '¨¯
©
´9Ó(=Ñ>à!#ð	!ô  /°&Ñ8ô !ŸJ™J v¬oÑ'>Ô?ð -3¯L©L¬Nô"á,:¡D A qØ#$Ô(=Ò#=ð !" 1¡Ø,:ò"ð!ð2 $*§:¡:Ð.@Ô#Að -3¯J©JÐ7IÈBÈ4Ó,PØ()ñ-&ç&*¡dØ28·*±*Ð=OÐRTÐQUÓ2VØ()ñ3&ç&0¡jò!"ð &(à'<×'@Ñ'@Ø &§
¡
¬9°bÓ 9Ø "ó(ñð!ô$ôJ �f˜_Ñ-Ó.Ü�fÐ5Ñ6Ó7óO(ð9 1ùð
ùð$ 8ùð+
ûó"ñ+
ùô +
ˆò +
ðX ˆùsx   ‚H�G1žAHÁ"G4Á#HÁ:G7Á;=HÂ8HÂ:H
Â>G:Â?H
ÃA7HÄ9G=ÅB"HÇ1HÇ4HÇ7HÇ:H
Ç=HÈHr�  úlangchain-indexc	                óL   —  | ||||f||dœ|	¤Ž}
 |
j                   ||fi |	¤Ž |
S ©N)r>   r<   )r  ©Úclsr  rG  r  rô   rõ   r<   r;   r>   rp   Úazure_searchs              rJ   Ú
from_textszAzureSearch.from_texts  sP   € ñ Ø!ØØØð	
ð
 Ø"7ñ
ð ñ
ˆð 	ˆ×Ñ˜u iÑ:°6Ò:ØÐrL   c	              ‹  óh   K  —  | ||||f||dœ|	¤Ž}
 |
j                   ||fi |	¤Žƒ d {  –—†  |
S 7 Œ­wrõ  )r  rö  s              rJ   Úafrom_textszAzureSearch.afrom_texts+  s`   è ø€ ñ Ø!ØØØð	
ð
 Ø"7ñ
ð ñ
ˆð &ˆl×%Ñ% e¨YÑA¸&ÑA×AÐAØÐð 	Bús   ‚'2©0ª2)rô   rõ   r;   r>   c          
   ‹  óº   K  — t        |«      \  }}	|	€t        d«      ‚t        |	d   «      }
 | d||||||
dœ|¤Ž} |j                  ||fi |¤Žƒ d {  –—†  |S 7 Œ­w©Nz0Cannot create AzureSearch from empty embeddings.rz  )rô   rõ   r;   rÜ   r>   rÐ   r8   )Ú_peekr»   r¹   r  ©r÷  rD  rG  r  rô   rõ   r;   r>   rp   Úfirst_text_embeddingrÐ   rø  s               rJ   Úafrom_embeddingszAzureSearch.afrom_embeddingsE  s‘   è ø€ ô 16°oÓ0FÑ-ˆÐ-ØÐ'ÜÐOÓPÐPÜ#&Ð';¸AÑ'>Ó#?Ð áð 
Ø"7Ø-Ø!Ø(ØØ%=ñ
ð ñ
ˆð +ˆl×*Ñ*¨?¸IÑPÈÑP×PÐPØÐð 	Qús   ‚AAÁAÁAc          
     óž   — t        |«      \  }}	|	€t        d«      ‚t        |	d   «      }
 | d||||||
dœ|¤Ž} |j                  ||fi |¤Ž |S rý  )rþ  r»   r¹   r  rÿ  s               rJ   Úfrom_embeddingszAzureSearch.from_embeddingsc  s�   € ô 16°oÓ0FÑ-ˆÐ-ØÐ'ÜÐOÓPÐPÜ#&Ð';¸AÑ'>Ó#?Ð áð 
Ø"7Ø-Ø!Ø(ØØ%=ñ
ð ñ
ˆð 	$ˆ×#Ñ# O°YÑIÀ&ÒIØÐrL   c                óÐ   — |j                  d| j                  «      }||d<   |j                  dd«      xs g }|j                  | j	                  «       «       t        dd| i|¤d|i¤ŽS )aÇ  Return AzureSearchVectorStoreRetriever initialized from this VectorStore.

        Args:
            search_type (Optional[str]): Overrides the type of search that
                the Retriever should perform. Defaults to `self.search_type`.
                Can be "similarity", "hybrid", or "semantic_hybrid".
            search_kwargs (Optional[Dict]): Keyword arguments to pass to the
                search function. Can include things like:
                    score_threshold: Minimum relevance threshold
                        for similarity_score_threshold
                    fetch_k: Amount of documents to pass to MMR algorithm (Default: 20)
                    lambda_mult: Diversity of results returned by MMR;
                        1 for minimum diversity and 0 for maximum. (Default: 0.5)
                    filter: Filter by document metadata

        Returns:
            AzureSearchVectorStoreRetriever: Retriever class for VectorStore.
        rç   ÚtagsNÚvectorstorer8   )r’   rç   rg  ÚextendÚ_get_retriever_tagsÚAzureSearchVectorStoreRetriever)rf   rp   rç   r  s       rJ   Úas_retrieverzAzureSearch.as_retriever‚  sg   € ð& —j‘j °×0@Ñ0@ÓAˆØ +ˆˆ}Ñà�z‰z˜& $Ó'Ò-¨2ˆØ�‰�D×,Ñ,Ó.Ô/Ü.ÑU¸4ÐUÀ6ÑUÐPTÒUÐUrL   )r[  NNNNNNN)$rô   rr   rõ   rt   r;   rr   rÜ   zUnion[Callable, Embeddings]rç   rr   r=   rt   r>   úOptional[List[SearchField]]r?   úOptional[VectorSearch]r@   úCOptional[Union[SemanticConfiguration, List[SemanticConfiguration]]]rA   úOptional[List[ScoringProfile]]rB   rt   rE   úOptional[CorsOptions]rÐ   zOptional[int]rG   úOptional[Dict[str, Any]]r<   rt   rH   úOptional[TokenCredential]rI   úOptional[AsyncTokenCredential]rp   r   rŠ   )rv   zOptional[Embeddings])r  rr   rv   úList[float]r7   )
r  zIterable[str]r  úOptional[List[dict]]r
  úOptional[List[str]]rp   r   rv   ú	List[str])rD  ú!Iterable[Tuple[str, List[float]]]r  r  r
  r  rv   r  )r  r  rp   r   rv   ru   )r™   )
rb  rr   rI  rc   rç   rt   rp   r   rv   úList[Document])rb  rr   rI  rc   rp   r   rv   úList[Tuple[Document, float]])
rb  rr   rI  rc   rw  úOptional[float]rp   r   rv   r  )
rb  rr   rI  rc   r†  rt   rp   r   rv   r  )r™   N)
rb  rr   rI  rc   r†  rt   rp   r   rv   r  )r™   é   ç      à?)rb  rr   rI  rc   r£  rc   rŸ  rî  r†  rt   rp   r   rv   r  )rb  rr   rI  rc   rp   r   rv   r  )rG  r  rÊ  rr   rI  rc   r†  rt   rp   r   rv   zSearchItemPaged[dict])rG  r  rÊ  rr   rI  rc   r†  rt   rp   r   rv   zAsyncSearchItemPaged[dict])r™   rÕ  )rb  rr   rI  rc   rØ  z"Literal['score', 'reranker_score']rw  r  rp   r   rv   r  )
rb  rr   rI  rc   r†  rt   rp   r   rv   z#List[Tuple[Document, float, float]])Nr�  r�  Nró  N)r÷  úType[AzureSearch]r  r  rG  r   r  r  rô   rr   rõ   rr   r<   rt   r;   rr   r>   r  rp   r   rv   rÏ   )r÷  r  rD  r  rG  r   r  r  rô   rr   rõ   rr   r;   rr   r>   r  rp   r   rv   rÏ   )rp   r   rv   r	  )1rw   rx   ry   Ú__doc__rh   r  Úpropertyr  r  r  r  r  r  rU  rW  rd  rl  rq  rv  r~  rƒ  r?   rn  rh  rs  r¤  r¨  r_  ro  ri  rt  r³  rµ  r¸  rº  r’  r˜  r`  rp  rj  ru  rÏ  rÒ  Úclassmethodrù  rû  r  r  r
  r8   rL   rJ   rÏ   rÏ   r  sŒ  „ Ù0ð $Ø59Ø.2Ø04ð Ø;?Ø15Ø.2ðB*ð" 37ØEIØ/3Ø6:ØAEñ+B*à"ðB*ð (ðB*ð ð	B*ð
 8ðB*ð ðB*ð &3ðB*ð ,ðB*ð .ðB*ð"
ðB*ð 9ðB*ð "/ðB*ð ,ðB*ð" #0ð#B*ð$ +Cð%B*ð&  -ð'B*ð( 4ð)B*ð* !?ð+B*ð, ó-B*óH!ð2 ò
ó ð
óAð +/ðQð
 %)ñQàðQð (ðQð
 "ðQð ðQð 
óQðB +/ðXð
 %)ñXàðXð (ðXð
 "ðXð ðXð 
óXðB +/ð;/ð
 %)ñ;/à:ð;/ð (ð;/ð
 "ð;/ð 
ó;/ð@ +/ð7/ð
 %)ñ7/à:ð7/ð (ð7/ð
 "ð7/ð 
ó7/ôrô ð& ðð
 &*ñàðð ðð
 #ðð ðð 
óð( '(ñKØðKØ #ðKØ36ðKà	%óKð$ ðð
 &*ñàðð ðð
 #ðð ðð 
óð( '(ñKØðKØ #ðKØ36ðKà	%óKð" ð
ð
 ,0ñ
àð
ð ð
ð
 )ð
ð ð
ð 
&ó
ð$ ð
ð
 ,0ñ
àð
ð ð
ð
 )ð
ð ð
ð 
&ó
ð  $%ð3ØBFñ3Øð3Ø ð3Ø2?ð3ØRUð3à	ó3ð" $%ð3ØBFñ3Øð3Ø ð3Ø2?ð3ØRUð3à	ó3ð* Ø!%ð	.àð.ð ð.ð ð	.ð
 ð.ð 
&ó.ð4 Ø!%ð	5àð5ð ð5ð ð	5ð
 ð5ð 
&ó5ð8 ØØ ð 
ð "&ñ 
àð 
ð ð 
ð ð	 
ð
 ð 
ð ð 
ð ð 
ð 
&ó 
ðJ ØØ ð%
ð "&ñ%
àð%
ð ð%
ð ð	%
ð
 ð%
ð ð%
ð ð%
ð 
&ó%
ôN3ð $%ð3Øð3Ø ð3Ø03ð3à	ó3ð& Ø!%ð	.àð.ð ð.ð ð	.ð
 ð.ð 
&ó.ð2 Ø!%ð	5àð5ð ð5ð ð	5ð
 ð5ð 
&ó5ð6 ð
ð
 ,0ñ
àð
ð ð
ð
 )ð
ð ð
ð 
&ó
ð$ ð
ð
 ,0ñ
àð
ð ð
ð
 )ð
ð ð
ð 
&ó
ð$ ØØ ð#
ð "&ñ#
àð#
ð ð#
ð ð	#
ð
 ð#
ð ð#
ð ð#
ð 
&ó#
ðP ØØ ð&
ð "&ñ&
àð&
ð ð&
ð ð	&
ð
 ð&
ð ð&
ð ð&
ð 
&ó&
ð\ "&ñ"
àð"
ð ð"
ð ð	"
ð ð"
ð ð"
ð 
ó"
ðT "&ñ"
àð"
ð ð"
ð ð	"
ð ð"
ð ð"
ð 
$ó"
ðJ $%ð6Øð6Ø ð6Ø03ð6à	ó6ð( $%ð6Øð6Ø ð6Ø03ð6à	ó6ð, Ø9@ð	%ð ,0ñ%àð%ð ð%ð 7ð	%ð )ð%ð ð%ð 
&ó%ðT Ø9@ð	%ð ,0ñ%àð%ð ð%ð 7ð	%ð )ð%ð ð%ð 
&ó%ðP $%ðUØBFñUØðUØ ðUØ2?ðUØRUðUà	,óUðp $%ðVØBFñVØðVØ ðVØ2?ðVØRUðVà	,óVðp ð
 +/Ø%'Ø "Ø/3Ø+Ø.2ðØðàðð ðð (ð	ð
  #ðð ðð  -ðð ðð ,ðð ðð 
òó ðð2 ð
 +/Ø%'Ø "Ø/3Ø+Ø.2ðØðàðð ðð (ð	ð
  #ðð ðð  -ðð ðð ,ðð ðð 
òó ðð2 ð
 +/ð	ð &(Ø "Ø+Ø.2ñØðà:ðð ðð (ð	ð  #ðð ðð ðð ,ðð ðð 
òó ðð: ð
 +/ð	ð &(Ø "Ø+Ø.2ñØðà:ðð ðð (ð	ð  #ðð ðð ðð ,ðð ðð 
òó ðô<VrL   rÏ   c                  óÈ   — e Zd ZU dZded<   	 dZded<   	 dZded	<   	 i Zd
ed<   	 dZded<    e	d¬«      Z
 ed¬«      edd„«       «       Z	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 dd„Zy)r	  z-Retriever that uses `Azure Cognitive Search`.rÏ   r  r[  rr   rç   r™   rc   rI  ÚdictÚsearch_kwargs)rZ  Úsimilarity_score_thresholdr[  Úhybrid_score_thresholdr\  Úsemantic_hybrid_score_thresholdzClassVar[Collection[str]]Úallowed_search_typesT)Úarbitrary_types_allowedÚbefore)Úmodec                ój   — d|v r.|d   }|| j                   vrt        d|› d| j                   › �«      ‚|S )zValidate search type.rç   r]  z  not allowed. Valid values are: )r'  r»   )r÷  Úvaluesrç   s      rJ   Úvalidate_search_typez4AzureSearchVectorStoreRetriever.validate_search_type¿  sS   € ð ˜FÑ"Ø  Ñ/ˆKØ #×":Ñ":Ñ:Ü Ø% k ]Ð2RØ×/Ñ/Ð0ð2óð ð ˆrL   c                óœ  — i | j                   ¥|¥}| j                  dk(  r+ | j                  j                  |fd| j                  i|¤Ž}|S | j                  dk(  r= | j                  j
                  |fd| j                  i|¤ŽD ��cg c]  \  }}|‘Œ	 }}}|S | j                  dk(  r+ | j                  j                  |fd| j                  i|¤Ž}|S | j                  dk(  r= | j                  j                  |fd| j                  i|¤ŽD ��cg c]  \  }}|‘Œ	 }}}|S | j                  dk(  r+ | j                  j                  |fd| j                  i|¤Ž}|S | j                  dk(  r= | j                  j                  |fd| j                  i|¤ŽD ��cg c]  \  }}|‘Œ	 }}}|S t        d| j                  › d	�«      ‚c c}}w c c}}w c c}}w ©
NrZ  rI  r$  r[  r%  r\  r&  r]  r^  )r#  rç   r  r?   rI  r~  r_  r³  r`  rj  r»   )rf   rb  Úrun_managerrp   Úparamsrc  rH  rŒ  s           rJ   Ú_get_relevant_documentsz7AzureSearchVectorStoreRetriever._get_relevant_documentsÌ  sB  € ð 2�D×&Ñ&Ð1¨&Ð1ˆà×Ñ˜|Ò+Ø1�4×#Ñ#×1Ñ1°%ÑL¸4¿6¹6ÐLÀVÑLˆDð8 ˆð7 ×ÑÐ!=Ò=ð W˜d×.Ñ.×VÑVØñØ!ŸV™VðØ'-òôñ‘F�C˜ò ðð ñ ð4 ˆð) ×Ñ Ò)Ø1�4×#Ñ#×1Ñ1°%ÑL¸4¿6¹6ÐLÀVÑLˆDð& ˆð% ×ÑÐ!9Ò9ð S˜d×.Ñ.×RÑRØñØ!ŸV™VðØ'-òôñ‘F�C˜ò ðð ñ ð" ˆð ×ÑÐ!2Ò2Ø:�4×#Ñ#×:Ñ:¸5ÑUÀDÇFÁFÐUÈfÑUˆDð ˆð ×ÑÐ!BÒBð Q˜d×.Ñ.×PÑPØñØ!ŸV™VðØ'-òôñ‘F�C˜ò ðð ñ ð ˆô ˜¨t×/?Ñ/?Ð.@ÀÐNÓOÐOùó3ùóùós   ÂF<ÄGÆGc             ‹  ó*  K  — i | j                   ¥|¥}| j                  dk(  r3 | j                  j                  |fd| j                  i|¤Žƒ d {  –—† }|S | j                  dk(  rG | j                  j
                  |fd| j                  i|¤Žƒ d {  –—† }|D ��cg c]  \  }}|‘Œ	 }}}|S | j                  dk(  r3 | j                  j                  |fd| j                  i|¤Žƒ d {  –—† }|S | j                  dk(  rG | j                  j                  |fd| j                  i|¤Žƒ d {  –—† }|D ��cg c]  \  }}|‘Œ	 }}}|S | j                  dk(  r3 | j                  j                  |fd| j                  i|¤Žƒ d {  –—† }|S | j                  dk(  rE | j                  j                  |fd| j                  i|¤Žƒ d {  –—† D ��cg c]  \  }}|‘Œ	 }}}|S t        d| j                  › d	�«      ‚7 �Œ¤7 �Œec c}}w 7 �Œ7 ŒØc c}}w 7 ŒŠ7 ŒJc c}}w ­wr/  )r#  rç   r  rn  rI  rƒ  ro  rµ  rp  ru  r»   )	rf   rb  r0  rp   r1  rc  r‹  rH  rŒ  s	            rJ   Ú_aget_relevant_documentsz8AzureSearchVectorStoreRetriever._aget_relevant_documentsó  s|  è ø€ ð 2�D×&Ñ&Ð1¨&Ð1ˆà×Ñ˜|Ò+Ø8˜×)Ñ)×8Ñ8¸ÑSÀ$Ç&Á&ÐSÈFÑS×SˆDð< ˆð; ×ÑÐ!=Ò=àO�d×&Ñ&×OÑOØñØ!ŸV™VðØ'-ñ÷ ð ñ
 '6Ô6¡o™F˜C ’C oˆDÑ6ð. ˆð- ×Ñ Ò)Ø8˜×)Ñ)×8Ñ8¸ÑSÀ$Ç&Á&ÐSÈFÑS×SˆDð* ˆð) ×ÑÐ!9Ò9àK�d×&Ñ&×KÑKØñØ!ŸV™VðØ'-ñ÷ ð ñ
 '6Ô6¡o™F˜C ’C oˆDÑ6ð ˆð ×ÑÐ!2Ò2ØA˜×)Ñ)×AÑAØñØŸ™ðØ#)ñ÷ ˆDð ˆð ×ÑÐ!BÒBð %X D×$4Ñ$4×$WÑ$WØñ%Ø!ŸV™Vð%Ø'-ñ%÷ ð ôñ‘F�C˜ò ðð ñ ð ˆô ˜¨t×/?Ñ/?Ð.@ÀÐNÓOÐOð; Tùðûó 7àSùðúó 7ðøðúóùs›   ‚AHÁG2ÁAHÂG5Â	HÂG8Â&A HÃ&G>Ã'AHÄ(HÄ)	HÄ2HÄ>A HÅ>H	Å?AHÇ HÇHÇHÇHÇ5HÇ8HÈHÈHÈHÈHN)r,  r
   rv   r   )rb  rr   r0  r   rp   r   rv   r  )rb  rr   r0  r   rp   r   rv   r  )rw   rx   ry   r  Ú__annotations__rç   rI  r#  r'  r   Úmodel_configr   r   r-  r2  r4  r8   rL   rJ   r	  r	  �  sÑ   … Ù7àÓØ?Ø€K�Óð-ð €A€sƒJØ(Ø€M�4Óðð7ÐÐ3ó ñ Ø $ô€Lñ ˜(Ô#Øò	ó ó $ð	ð%àð%ð 4ð%ð ð	%ð
 
ó%ðN(àð(ð 9ð	(ð
 ð(ð 
ô(rL   r	  c                ó\   — | D �cg c]  }t        |«      t        |d   «      f‘Œ }}|S c c}w ©Nrê  ©Ú_result_to_documentrî  ©r•  r}  rc  s      rJ   r“  r“    sK   € ñ óñ
 ˆFô   Ó'Ü�&˜Ñ)Ó*ò	
ð ð 	ð ð €Kùòs   … )c              ƒ  ót   K  — | 2 �cg c3 d {  –—† }t        |«      t        |d   «      f‘Œ#7 Œ6 }}|S c c}w ­wr8  r9  r;  s      rJ   r™  r™  +  sU   è ø€ ñ $÷ó ð
 ô   Ó'Ü�&˜Ñ)Ó*ò	
ðøð €Dð ð €Kùòùs$   ‚8‡3‰.�,
Ž.‘3¬.®3¯	8c              ƒ  ó,  K  — | 2 �cg c3 d {  –—† }t        |«      t        |d   «      |t           f‘Œ+7 Œ&6 nc c}w }}t        t        t        |Ž «      \  }}}t        ||||¬«      }	g }
|	D ]#  }|dk(  r |
S |
j                  ||   ||   f«       Œ% |
S ­w©Nrê  )rI  rŸ  éÿÿÿÿ©r:  rî  rà   ÚmaprÀ   r  r   r?  ©r•  rž  rŸ  rI  r}  rc  r%  ÚscoresÚvectorsÚnew_orderingÚretr”   s               rJ   r§  r§  8  sÉ   è ø€ ñ $÷ó ð ô	   Ó'Ü�&˜Ñ)Ó*ØÔ(Ñ)ò	
ðøñ ùò €Dð ô "%¤T¬3°¨:Ó!6Ñ€Iˆv�wô .Ø˜ A°;ô€Lð
 )+€CÛˆà�Š7Øð €Jð 	�
‰
�I˜a‘L &¨¡)Ð,Õ-ð	 ð €Jùs'   ‚B‡8‰6�4
Ž6‘#8´6¶8·ABc                ó  — | D �cg c]#  }t        |«      t        |d   «      |t           f‘Œ% }}|sg S t        t        t        |Ž «      \  }}}t        ||||¬«      }	g }
|	D ]#  }|dk(  r |
S |
j                  ||   ||   f«       Œ% |
S c c}w r>  r@  rB  s               rJ   r¡  r¡  Y  sÇ   € ñ óñ ˆFô	   Ó'Ü�&˜Ñ)Ó*ØÔ(Ñ)ò	
ð
 ð 	ð ñ Øˆ	Ü!$¤T¬3°¨:Ó!6Ñ€Iˆv�wô .Ø˜ A°;ô€Lð
 )+€CÛˆà�Š7Øð €Jð 	�
‰
�I˜a‘L &¨¡)Ð,Õ-ð	 ð €Jùò3s   …(Bc                óx  — t         | v r>t        | t            t        «      r
| t            }nNt        j                  | t            «      }n1| j                  «       D ��ci c]  \  }}|t        t        fvr||“Œ }}}t        | v rt        | j                  t        «      i}ni }t        | t           i |¥|¥¬«      S c c}}w )Nrè  )râ   r¿   r"  r<  rí  r¸   rà   rÁ   rÞ   rg  r   )r}  Úfields_metadatar-   rÉ   Ú	fields_ids        rJ   r:  r:  |  sÅ   € ä˜&Ñ Ü�fœ_Ñ-¬tÔ4Ø$¤_Ñ5‰Oä"Ÿj™j¨´Ñ)@ÓA‰Oð %Ÿl™lœnô
á,‘
��UØÔ0´.ÐAÑAð �‰JØ,ð 	ñ 
ô �FÑÜ §
¡
¬9Ó 5Ð6‰	àˆ	ÜØœNÑ+ð
Øð
àð
ôð ùó
s   ÁB6c                óŒ   — 	 t        | «      }t        |«      }t        j                  |g|«      } | |fS # t        $ r | |fcY S w xY wr7   )ÚiterÚnextÚ	itertoolsÚchainÚStopIteration)Úiterabler/   ÚiteratorrÉ   s       rJ   rþ  rþ  —  sO   € ð!Ü˜“>ˆÜ�X“ˆÜ—?‘? E 7¨HÓ5ˆØ˜ˆÐøÜò !Ø˜Ð Ò ð!ús   ‚03 ³AÁA)NNNNNNNNNú"langchain-comm-python-azure-searchNFNNN)$r:   rr   r;   rr   r-   rt   r<   rt   r=   rt   r>   r  r?   r  r@   r  rA   r  rB   rt   rC   r  rD   rt   rE   r  rF   zLiteral[False]rG   r  rH   r  rI   r  rv   zUnion[SearchClient])NNNNNNNNNrS  NTNNN)$r:   rr   r;   rr   r-   rt   r<   rt   r=   rt   r>   r  r?   r  r@   r  rA   r  rB   rt   rC   r  rD   rt   rE   r  rF   zLiteral[True]rG   r  rH   r  rI   r  rv   zUnion[AsyncSearchClient])$r:   rr   r;   rr   r-   rt   r<   rt   r=   rt   r>   r  r?   r  r@   r  rA   r  rB   rt   rC   r  rD   rt   rE   r  rF   ru   rG   r  rH   r  rI   r  rv   z&Union[SearchClient, AsyncSearchClient])r•  úSearchItemPaged[Dict]rv   r  )r•  úAsyncSearchItemPaged[Dict]rv   r  )r  r™   )
r•  rU  rž  ú
np.ndarrayrŸ  rî  rI  rc   rv   r  )
r•  rT  rž  rV  rŸ  rî  rI  rc   rv   r  )r}  r
   rv   r   r7   )rQ  r   r/   zOptional[Any]rv   zTuple[Iterable, Any])RÚ
__future__r   rù   r4  rã   rN  r<  Úloggingrd   r2  Útypesr   Útypingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   Únumpyr8  Úlangchain_core.callbacksr   r   Úlangchain_core.documentsr   Úlangchain_core.embeddingsr   Úlangchain_core.exceptionsr   Úlangchain_core.retrieversr   Úlangchain_core.utilsr   Úlangchain_core.vectorstoresr   Úpydanticr   r   Ú&langchain_community.vectorstores.utilsr   Ú	getLoggerr  r¬   r   r­   r!   r±   r"   r#   r²   r$   rÄ   r´   r&   r'   r(   r)   r*   rÞ   rÁ   rà   râ   r@  rK   rÏ   r	  r“  r™  r§  r¡  r:  rþ  r8   rL   rJ   Ú<module>rf     s›  ðÝ "ã Û Û Û Û Û Û Û Ý ÷÷ ÷ ÷ ñ ó$ ÷õ .Ý 0Ý 8Ý 3Ý -Ý 3ß 0å Mà	ˆ×	Ñ	Ó	€áÝ6ÝAßDõõ÷õ ñ ØÐ)@È$ô€	ñ Ø$Ø(Øô€ñ
 %Ø+Ø/ØôÐ ñ
 Ø Ð*BÈJô€ð Ð ð 
ð Ø+/Ø15Ø*.Ø,0ð 	Ø7;Ø-1Ø26Ø DØ*.Ø"ØAEØ26Ø=Að'Øðàðð 
ðð )ð	ð
 "/ðð (ðð *ðððð 5ðð +ðð 0ðð ðð (ðð  ð!ð" '?ð#ð$ 0ð%ð& ;ð'ð( ò)ó 
ðð. 
ð Ø+/Ø15Ø*.Ø,0ð 	Ø7;Ø-1Ø26Ø DØ*.Ø ØAEØ26Ø=Að'#Øð#àð#ð 
ð#ð )ð	#ð
 "/ð#ð (ð#ð *ð#ðð#ð 5ð#ð +ð#ð 0ð#ð ð#ð (ð#ð  ð!#ð" '?ð##ð$ 0ð%#ð& ;ð'#ð( ò)#ó 
ð#ð4 Ø+/Ø15Ø*.Ø,0ð 	Ø7;Ø-1Ø26Ø DØ*.ØØAEØ26Ø=Að'i
Øði
àði
ð 
ði
ð )ð	i
ð
 "/ði
ð (ði
ð *ði
ðði
ð 5ði
ð +ði
ð 0ði
ð ði
ð (ði
ð  ð!i
ð" '?ð#i
ð$ 0ð%i
ð& ;ð'i
ð( ,ó)i
ôXhV�+ô hVôV)~ mô ~ðB
Ø"ð
à!ó
ð
Ø'ð
à!ó
ð  Øð	Ø'ðàðð ðð ð	ð
 "óðH Øð	 Ø"ð àð ð ð ð ð	 ð
 "ó óFõ6!rL   