|
import os
|
|
from langchain_community.vectorstores import FAISS
|
|
from langchain_huggingface import HuggingFaceEmbeddings
|
|
|
|
|
|
def load_retriever():
|
|
embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
|
|
vectorstore_path = "vectorstore"
|
|
|
|
|
|
if os.path.exists(vectorstore_path) and os.path.exists(os.path.join(vectorstore_path, "index.faiss")):
|
|
retriever = FAISS.load_local(vectorstore_path, embeddings, allow_dangerous_deserialization=True).as_retriever(search_kwargs={"k": 5})
|
|
print("✅ Đã load vectorstore thành công.")
|
|
else:
|
|
retriever = None
|
|
print("⚠️ Vectorstore chưa tồn tại. Hãy upload tài liệu trước khi tìm kiếm.")
|
|
return retriever
|
|
|
|
|
|
retriever = load_retriever()
|
|
|
|
|
|
def reload_retriever():
|
|
global retriever
|
|
retriever = load_retriever()
|
|
|
|
|
|
def retrieve_docs(query):
|
|
if retriever:
|
|
return retriever.get_relevant_documents(query)
|
|
else:
|
|
print("⚠️ Chưa có vectorstore để tìm kiếm. Bạn cần tải tài liệu trước.")
|
|
return []
|
|
|