@@ -189,9 +189,6 @@ def __init__(self,
189189 knowledge_base = self .database .build (documents = langchain_documents , embedding = self .embeddings , ** kwargs )
190190 self .retriever = RetrieverAdapter (retrieval_type = self .retrieval_type , document_store = knowledge_base , \
191191 ** kwargs )
192- if self .vector_database == "Qdrant" and knowledge_base .is_local ():
193- # one local storage folder cannot be accessed by multiple instances of Qdrant client simultaneously.
194- knowledge_base .client .close ()
195192 elif self .retrieval_type == "child_parent" : # Using child-parent store retriever
196193 child_documents = self .splitter .split_documents (langchain_documents )
197194 langchain_documents = document_append_id (langchain_documents )
@@ -206,12 +203,6 @@ def __init__(self,
206203 sign = 'child' , ** kwargs )
207204 self .retriever = RetrieverAdapter (retrieval_type = self .retrieval_type , document_store = knowledge_base , \
208205 child_document_store = child_knowledge_base , ** kwargs )
209- if self .vector_database == "Qdrant" :
210- # one local storage folder cannot be accessed by multiple instances of Qdrant client simultaneously.
211- if knowledge_base .is_local ():
212- knowledge_base .client .close ()
213- if child_knowledge_base .is_local ():
214- child_knowledge_base .client .close ()
215206 elif self .retrieval_type == "bm25" :
216207 self .docs = document_append_id (langchain_documents )
217208 self .retriever = RetrieverAdapter (retrieval_type = self .retrieval_type , docs = self .docs , ** kwargs )
@@ -341,4 +332,23 @@ def pre_llm_inference_actions(self, model_name, query):
341332 prompt = generate_qa_prompt (query , context )
342333 else :
343334 logging .error ("The selected generation mode is invalid!" )
335+
336+ # qdrant local vector db need to be closed
337+ # one local storage folder cannot be accessed by multiple instances of Qdrant client simultaneously.
338+ if self .vector_database == "Qdrant" :
339+ to_close = []
340+ if self .retrieval_type == "default" :
341+ knowledge_base = self .retriever .retriever .vectorstore
342+ if knowledge_base .is_local ():
343+ to_close .append (knowledge_base )
344+ if self .retrieval_type == "child_parent" :
345+ knowledge_base = self .retriever .retriever .parentstore
346+ child_knowledge_base = self .retriever .retriever .vectorstore
347+ if knowledge_base .is_local ():
348+ to_close .append (knowledge_base )
349+ if child_knowledge_base .is_local ():
350+ to_close .append (child_knowledge_base )
351+ for kb in to_close :
352+ kb .client .close ()
353+
344354 return prompt , links
0 commit comments