Ë
    µŒj;&  ã                  óv   — d dl mZ d dlmZmZmZmZ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  G d„ de«      Zy)	é    )Úannotations)ÚAnyÚDictÚIterableÚListÚOptionalÚTupleÚTypeÚUnion)ÚDocument)Ú
Embeddings)ÚVectorStoreÚVectorStoreRetrieverc                  ó|  ‡ — e Zd ZdZ	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 d	 	 	 	 	 	 	 	 	 dd„Zddd„Z	 d	 	 	 	 	 	 	 dd„Z	 d	 	 	 	 	 	 	 dd„Z	 d	 	 	 	 	 	 	 dd„Z		 d	 	 	 	 	 	 	 dd„Z
	 d	 	 	 	 	 	 	 dd	„Z	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dd
„Z	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dd„Ze	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 dd„«       Zdˆ fd„Zˆ xZS )Ú
VespaStoreaƒ  
    `Vespa` vector store.

    To use, you should have the python client library ``pyvespa`` installed.

    Example:
        .. code-block:: python

            from langchain_community.vectorstores import VespaStore
            from langchain_community.embeddings.openai import OpenAIEmbeddings
            from vespa.application import Vespa

            # Create a vespa client dependent upon your application,
            # e.g. either connecting to Vespa Cloud or a local deployment
            # such as Docker. Please refer to the PyVespa documentation on
            # how to initialize the client.

            vespa_app = Vespa(url="...", port=..., application_package=...)

            # You need to instruct LangChain on which fields to use for embeddings
            vespa_config = dict(
                page_content_field="text",
                embedding_field="embedding",
                input_field="query_embedding",
                metadata_fields=["date", "rating", "author"]
            )

            embedding_function = OpenAIEmbeddings()
            vectorstore = VespaStore(vespa_app, embedding_function, **vespa_config)

    c                óÜ   — 	 ddl m} t        ||«      st	        dt        |«      › �«      ‚|| _        || _        || _        || _	        || _
        || _        y# t        $ r t        d«      ‚w xY w)z3
        Initialize with a PyVespa client.
        r   )ÚVespazTCould not import Vespa python package. Please install it with `pip install pyvespa`.z:app should be an instance of vespa.application.Vespa, got N)Úvespa.applicationr   ÚImportErrorÚ
isinstanceÚ
ValueErrorÚtypeÚ
_vespa_appÚ_embedding_functionÚ_page_content_fieldÚ_embedding_fieldÚ_input_fieldÚ_metadata_fields)ÚselfÚappÚembedding_functionÚpage_content_fieldÚembedding_fieldÚinput_fieldÚmetadata_fieldsr   s           úp/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/vectorstores/vespa.pyÚ__init__zVespaStore.__init__+   s‡   € ð	Ý/ô ˜#˜uÔ%ÜØLÌTÐRUËYÈKÐXóð ð ˆŒØ#5ˆÔ Ø#5ˆÔ Ø /ˆÔØ'ˆÔØ /ˆÕøô ò 	Üð@óð ð	ús   ‚A ÁA+c                óà  — d}| j                   �$| j                   j                  t        |«      «      }|€*t        |«      D ��cg c]  \  }}t	        |dz   › «      ‘Œ }}}g }t        |«      D ]‹  \  }}	i }
| j
                  �|	|
| j
                  <   | j                  �|�||   |
| j                  <   |�0| j                  �$| j                  D ]  }|||   v sŒ||   |   |
|<   Œ |j                  ||   |
dœ«       Œ� | j                  j                  |«      }|D ]N  }t	        |j                  «      j                  d«      rŒ(t        d|j                  › d|j                  d   › �«      ‚ |S c c}}w )a˜  
        Add texts to the vectorstore.

        Args:
            texts: Iterable of strings to add to the vectorstore.
            metadatas: Optional list of metadatas associated with the texts.
            ids: Optional list of ids associated with the texts.
            kwargs: vectorstore specific parameters

        Returns:
            List of ids from adding the texts into the vectorstore.
        Né   )ÚidÚfieldsÚ2z-Could not add document to Vespa. Error code: ú. Message: Úmessage)r   Úembed_documentsÚlistÚ	enumerateÚstrr   r   r   Úappendr   Ú
feed_batchÚstatus_codeÚ
startswithÚRuntimeErrorÚjson)r   ÚtextsÚ	metadatasÚidsÚkwargsÚ
embeddingsÚiÚ_ÚbatchÚtextr+   Úmetadata_fieldÚresultsÚresults                 r&   Ú	add_textszVespaStore.add_textsJ   s�  € ð( ˆ
Ø×#Ñ#Ð/Ø×1Ñ1×AÑAÄ$ÀuÃ+ÓNˆJàˆ;Ü/8¸Ô/?Ô@Ñ/?¡t q¨!”3˜!˜a™%˜•?Ð/?ˆCÑ@àˆÜ  Ö'‰GˆAˆtØ9;ˆFØ×'Ñ'Ð3Ø37��t×/Ñ/Ñ0Ø×$Ñ$Ð0°ZÐ5KØ0:¸1±��t×,Ñ,Ñ-ØÐ$¨×)>Ñ)>Ð)JØ&*×&;Ô&;�NØ%¨°1©Ò5Ø1:¸1±¸nÑ1M˜˜~Ò.ð '<ð �L‰L  A¡°&Ñ9Õ:ð (ð —/‘/×,Ñ,¨UÓ3ˆÛˆFÜ˜×*Ñ*Ó+×6Ñ6°sÕ;Ü"ð#Ø#)×#5Ñ#5Ð"6ð 7 Ø &§¡¨IÑ 6Ð7ð9óð ð ð ˆ
ùó/ As   ÁE*c                óÎ   — |€y|D �cg c]  }d|i‘Œ }}| j                   j                  |«      }t        |D �cg c]  }|j                  dk(  rdnd‘Œ c}«      dk(  S c c}w c c}w )NFr*   éÈ   r   r)   )r   Údelete_batchÚsumr5   )r   r;   r<   r*   r@   rD   Úrs          r&   ÚdeletezVespaStore.delete|   sm   € Øˆ;ØÙ&)Ó*¡c �$˜’ cˆÐ*Ø—‘×-Ñ-¨eÓ4ˆÜ¹fÓE¹f¸˜Ÿ™¨#Ò-‘A°1Ñ4¸fÑEÓFÈ!ÑKÐKùò +ùâEs
   ˆA¹A"c                óì   — |}| j                   }| j                  }d|v r|d   nd}d|v r|d   nd }d|v r|d   nd}	|	rdnd}	d}
|
d	|› d
|	› d�z  }
|
d|› d|› d�z  }
|�|
d|› �z  }
d|
d|› d�|d|d|i}|S )NÚrankingÚdefaultÚfilterÚapproximateFÚtrueÚfalsezselect * from sources * where z{targetHits: z, approximate: Ú}znearestNeighbor(z, Ú)z and Úyqlzinput.query(Úhits)r   r   )r   Úquery_embeddingÚkr<   rV   Údoc_embedding_fieldÚinput_embedding_fieldÚranking_functionrO   rP   rU   Úquerys               r&   Ú_create_queryzVespaStore._create_queryƒ   sç   € ð ˆØ"×3Ñ3ÐØ $× 1Ñ 1ÐØ09¸VÑ0C˜6 )Ò,ÈÐØ%-°Ñ%7�˜Ò!¸Tˆà/<ÀÑ/F�f˜]Ò+ÈEˆÙ +‘f°ˆà.ˆØ� ˜v _°[°MÀÐDÑDˆØÐ!Ð"5Ð!6°bÐ9NÐ8OÈqÐQÑQˆØÐØ�U˜6˜(Ð#Ñ#ˆCð �3ØÐ0Ð1°Ð3°_ØÐ'Ø�Dð	
ˆð ˆó    c                ó6  — d|v r|d   }n | j                   ||fi |¤Ž}	 | j                  j                  |¬«      }t        |j                  «      j                  d	«      s(t	        d
|j                  › d|j                  d   › �«      ‚|j                  d   }d|v r!ddl	}t	        |j                  |d   «      «      ‚|�|j                  €g S g }	|j                  D ]t  }
|
d   | j                     }|
d   }d|
d   i}| j                  �(| j                  D ]  }|
d   j                  |«      ||<   Œ t        ||¬«      }|	j!                  ||f«       Œv |	S # t        $ r<}t	        d|j
                  d   d   d   › d|j
                  d   d   d   › �«      ‚d}~ww xY w)aŸ  
        Performs similarity search from a embeddings vector.

        Args:
            query_embedding: Embeddings vector to search for.
            k: Number of results to return.
            custom_query: Use this custom query instead default query (kwargs)
            kwargs: other vector store specific parameters

        Returns:
            List of ids from adding the texts into the vectorstore.
        Úcustom_query)Úbodyz$Could not retrieve data from Vespa: r   Úsummaryz	. Error: r.   Nr,   z0Could not retrieve data from Vespa. Error code: r-   ÚrootÚerrorsr+   Ú	relevancer*   )Úpage_contentÚmetadata)r]   r   r\   Ú	Exceptionr7   Úargsr2   r5   r6   r8   ÚdumpsrV   r   r   Úgetr   r3   )r   rW   rX   r<   r\   ÚresponseÚerc   r8   ÚdocsÚchildrf   Úscorerg   ÚfieldÚdocs                   r&   Ú&similarity_search_by_vector_with_scorez1VespaStore.similarity_search_by_vector_with_score�   sÕ  € ð ˜VÑ#Ø˜>Ñ*‰Eà&�D×&Ñ& ¸ÑD¸VÑDˆEð	Ø—‘×,Ñ,°%Ð,Ó8ˆHô �8×'Ñ'Ó(×3Ñ3°CÔ8ÜðØ'×3Ñ3Ð4ð 5Ø$ŸM™M¨)Ñ4Ð5ð7óð ð �}‰}˜VÑ$ˆØ�tÑÛä˜tŸz™z¨$¨x©.Ó9Ó:Ð:àÐ˜xŸ}™}Ð4ØˆIàˆØ—]”]ˆEØ  ™?¨4×+CÑ+CÑDˆLØ˜+Ñ&ˆEØ˜e D™kÐ*ˆHØ×$Ñ$Ð0Ø!×2Ô2�EØ&+¨H¡o×&9Ñ&9¸%Ó&@�H˜U’Oð 3ä¨¸xÔHˆCØ�K‰K˜˜e˜Õ%ð #ð ˆøôA ò 	ÜØ6Ø—6‘6˜!‘9˜Q‘< 	Ñ*Ð+ð ,ØŸ&™& ™) A™, yÑ1Ð2ð4óð ûð	ús    E Å	FÅ7FÆFc                óZ   —  | j                   ||fi |¤Ž}|D �cg c]  }|d   ‘Œ	 c}S c c}w ©Nr   )rs   )r   Ú	embeddingrX   r<   rC   rJ   s         r&   Úsimilarity_search_by_vectorz&VespaStore.similarity_search_by_vectorÕ   s9   € ð >�$×=Ñ=¸iÈÑUÈfÑUˆÙ%Ó&™g˜��!“˜gÑ&Ð&ùÒ&ó   ™(c                ó|   — g }| j                   �| j                   j                  |«      } | j                  ||fi |¤ŽS ©N)r   Úembed_queryrs   )r   r\   rX   r<   Ú	query_embs        r&   Úsimilarity_search_with_scorez'VespaStore.similarity_search_with_scoreÛ   sE   € ð ˆ	Ø×#Ñ#Ð/Ø×0Ñ0×<Ñ<¸UÓCˆIØ:ˆt×:Ñ:¸9ÀaÑRÈ6ÑRÐRr^   c                óZ   —  | j                   ||fi |¤Ž}|D �cg c]  }|d   ‘Œ	 c}S c c}w ru   )r}   )r   r\   rX   r<   rC   rJ   s         r&   Úsimilarity_searchzVespaStore.similarity_searchã   s9   € ð 4�$×3Ñ3°E¸1ÑGÀÑGˆÙ%Ó&™g˜��!“˜gÑ&Ð&ùÒ&rx   c                ó   — t        d«      ‚)NzMMR search not implemented©ÚNotImplementedError)r   r\   rX   Úfetch_kÚlambda_multr<   s         r&   Úmax_marginal_relevance_searchz(VespaStore.max_marginal_relevance_searché   s   € ô "Ð">Ó?Ð?r^   c                ó   — t        d«      ‚)Nz$MMR search by vector not implementedr�   )r   rv   rX   rƒ   r„   r<   s         r&   Ú'max_marginal_relevance_search_by_vectorz2VespaStore.max_marginal_relevance_search_by_vectoró   s   € ô "Ð"HÓIÐIr^   c                óB   —  | dd|i|¤Ž}|j                  |||¬«       |S )Nr!   )r9   r:   r;   © )rE   )Úclsr9   rv   r:   r;   r<   Úvespas          r&   Ú
from_textszVespaStore.from_textsý   s-   € ñ Ñ; yÐ;°FÑ;ˆØ�‰˜e¨y¸cˆÔBØˆr^   c                ó"   •— t        ‰| �  di |¤ŽS )Nr‰   )ÚsuperÚas_retriever)r   r<   Ú	__class__s     €r&   r�   zVespaStore.as_retriever
  s   ø€ Ü‰wÑ#Ñ- fÑ-Ð-r^   )NNNNN)r    r   r!   zOptional[Embeddings]r"   úOptional[str]r#   r‘   r$   r‘   r%   úOptional[List[str]]ÚreturnÚNone)NN)
r9   zIterable[str]r:   úOptional[List[dict]]r;   r’   r<   r   r“   ú	List[str]rz   )r;   r’   r<   r   r“   zOptional[bool])é   )rW   úList[float]rX   Úintr<   r   r“   r   )rW   r˜   rX   r™   r<   r   r“   úList[Tuple[Document, float]])rv   r˜   rX   r™   r<   r   r“   úList[Document])r\   r2   rX   r™   r<   r   r“   rš   )r\   r2   rX   r™   r<   r   r“   r›   )r—   é   g      à?)r\   r2   rX   r™   rƒ   r™   r„   Úfloatr<   r   r“   r›   )rv   r˜   rX   r™   rƒ   r™   r„   r�   r<   r   r“   r›   )rŠ   zType[VespaStore]r9   r–   rv   r   r:   r•   r;   r’   r<   r   r“   r   )r<   r   r“   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r'   rE   rK   r]   rs   rw   r}   r   r…   r‡   ÚclassmethodrŒ   r�   Ú__classcell__)r�   s   @r&   r   r   
   sŠ  ø„ ñðF 48Ø,0Ø)-Ø%)Ø/3ð0àð0ð 1ð0ð *ð	0ð
 'ð0ð #ð0ð -ð0ð 
ó0ðD +/Ø#'ð	0àð0ð (ð0ð !ð	0ð
 ð0ð 
ó0ôdLð 67ðØ*ðØ/2ðØBEðà	óð6 67ð6Ø*ð6Ø/2ð6ØBEð6à	%ó6ðr 01ð'Ø$ð'Ø),ð'Ø<?ð'à	ó'ð $%ðSØðSØ ðSØ03ðSà	%óSð $%ð'Øð'Ø ð'Ø03ð'à	ó'ð ØØ ð@àð@ð ð@ð ð	@ð
 ð@ð ð@ð 
ó@ð ØØ ðJàðJð ðJð ð	Jð
 ðJð ðJð 
óJð ð
 +/Ø#'ð
Øð
àð
ð ð
ð (ð	
ð
 !ð
ð ð
ð 
ò
ó ð
÷.ñ .r^   r   N)Ú
__future__r   Útypingr   r   r   r   r   r	   r
   r   Úlangchain_core.documentsr   Úlangchain_core.embeddingsr   Úlangchain_core.vectorstoresr   r   r   r‰   r^   r&   Ú<module>r©      s(   ðÝ "ç J× JÓ Jå -Ý 0ß IôA.�õ A.r^   