o
    Fg                     @   sZ   d dl mZ d dlmZ d dlmZ d dl mZ d dlZd dlZ	de
fddZd	d
 ZdS )    )
ChatOpenAI)PromptTemplate)Milvus)OpenAIEmbeddingsNcollection_namec                 C   s"   t ddd}t|| dddddS )	Nztext-embedding-3-largez3sk-BJBMLzenOAiK9uGa5s5DT3BlbkFJdlwQPbVPKBFOkChjfD8r)modelopenai_api_keyagrotaz74.208.60.7919530)db_namehostport)r   connection_args)r   r   )r   
embeddings r   K/home/marcatoma/Documents/GitHub/back-agrota-serv-ia/app/filtro_vectores.pymilvus_busqueda	   s   r   c                    s   g }fddt j -  fdd| D }t j|D ]}| }|r1|| tt| qW d    |S 1 s=w   Y  |S )Nc                    sH   t | j dd}t|  |D ]}|d }|dkr!t| |  S qd S )N   )k   g?)r   similarity_search_with_scoreprint)	coleccioncoleccion_docsdocpuntaje)preguntar   r   procesar_coleccion   s   z0procesar_colecciones.<locals>.procesar_coleccionc                    s   i | ]	}  ||qS r   )submit).0r   )executorr   r   r   
<dictcomp>)   s    z(procesar_colecciones.<locals>.<dictcomp>)
concurrentfuturesThreadPoolExecutoras_completedresultappendr   len)coleccionesr   lista_coleccionesfuturosfuturo	resultador   )r    r   r   r   procesar_colecciones   s"   



r.   )langchain_openair   langchain_core.prompts.chatr    langchain_community.vectorstoresr   r   
statisticsconcurrent.futuresr"   strr   r.   r   r   r   r   <module>   s    