tsgpt / src /data_module /vectorstore.py
brichett's picture
upload src folder
854f61d verified
from langchain_community.vectorstores import FAISS
from langchain_community.embeddings import OpenAIEmbeddings
from types import ModuleType
import numpy as np
# Note to self: try debugging this by visualizing the current DAG
def client_vector_store(
api_key: str,
ids: list[int],
labels: list[str],
text_contents: list[str],
ideologies: list[str],
embeddings: list[np.ndarray],
# properties: list[dict]
) -> ModuleType:
"""Upsert data objects to FAISS index"""
embedding = OpenAIEmbeddings(openai_api_key=api_key)
properties = [dict(id=id, ideology=ideology, label=label) for id, ideology, label in zip(ids, ideologies, labels)]
text_embeddings = [x.tolist() for x in embeddings]
embedding_pairs = list(zip(text_contents, text_embeddings))
faiss = FAISS.from_embeddings(embedding_pairs, embedding=embedding, metadatas=properties)
return faiss
def save_vector_store(
client_vector_store: ModuleType
) -> bool:
client_vector_store.save_local(folder_path=".\data2")
return True
def load_vector_store(api_key: str) -> ModuleType:
faiss = FAISS.load_local(folder_path="./data2", embeddings=OpenAIEmbeddings(openai_api_key=api_key), allow_dangerous_deserialization=True)
return faiss