# ethanicbot_updater/utils.py from langchain_core.documents import Document from langchain_community.embeddings import OpenAIEmbeddings from langchain_community.vectorstores import FAISS from django.conf import settings import os from machinelearning.models import RegressionModel, ClassificationModel, NLPModel, UnsupervisedModel EMBEDDINGS = OpenAIEmbeddings() INDEX_PATH = os.path.join(settings.BASE_DIR, "ethanicbot", "faiss_index") def fetch_documents(): docs = [] def make_doc(model, title): for obj in model.objects.all(): content = f"{title}: {obj.name}\n{obj.description}" docs.append(Document(page_content=content, metadata={"model": title})) make_doc(RegressionModel, "Regression") make_doc(ClassificationModel, "Classification") make_doc(NLPModel, "NLP") make_doc(UnsupervisedModel, "Unsupervised") return docs def update_vectorstore(): documents = fetch_documents() db = FAISS.from_documents(documents, EMBEDDINGS) db.save_local(INDEX_PATH) return f"Vector store updated with {len(documents)} documents."