
    i                     j    d dl mZ d dlmZ d dlmZ  G d d          Zddeded	e	fd
Z
ded	efdZdS )    )Pinecone)settings)OpenAIEmbeddingsc                       e Zd Zd Zd ZdS )PineconeServicec                     t           j        r2t          t           j                  | _        t           j        | _        d S d | _        d | _        d S )N)api_key)r   PINECONE_API_KEYr   pcPINECONE_INDEX_HOST
index_nameselfs    6/var/www/html/ls-ibe-bot-apis/app/services/pinecone.py__init__zPineconeService.__init__   sB    $ 	#x'@AAADG&:DOOODG"DOOO    c                 l    | j         st          d          | j                             | j                  S )Nz#Pinecone API key is not configured.)r   
ValueErrorIndexr   r   s    r   	get_indexzPineconeService.get_index   s2    w 	DBCCCw}}T_---r   N)__name__
__module____qualname__r   r    r   r   r   r      s2        # # #. . . . .r   r      querykreturnc                   K   t                      }|                                }t          |            d{V }|                    ||dd          }t	          |dg           pg }g }|D ]W}t	          |dd          pi }	|	                    d          p|	                    d          }
|
sB|                    |	           X|S )	zFQuery Pinecone directly and tolerate vectors missing metadata/content.NTF)vectortop_kinclude_metadatainclude_valuesmatchesmetadatacontenttext)r   r   get_embeddingsr   getattrgetappend)r   r   pinecone_serviceindexquery_vectorresultsr$   	documentsmatchr%   r&   s              r   retriever2      s      &((&&((E'........Lkk
	   G gy"--3GI # #5*d339r,,y))AX\\&-A-A 	""""r   c                    K   t           j        st          d          t          dt           j        d          }|                    |            d {V }|S )Nz!OpenAI API key is not configured.ztext-embedding-3-smalli   )modelopenai_api_key
dimensions)r   OPENAI_API_KEYr   r   aembed_query)r   r4   	embeddings      r   r(   r(   .   sm      " ><===&.  E ((////////Ir   N)r   )pineconer   app.configs.settingsr   langchain_openai.embeddingsr   r   strintlistr2   r(   r   r   r   <module>r@      s          ) ) ) ) ) ) 8 8 8 8 8 8. . . . . . . .  # # d    2 (8      r   