Spaces:
Sleeping
Sleeping
| import os | |
| from dotenv import load_dotenv | |
| from huggingface_hub import login | |
| from supabase import Client, create_client | |
| from supabase.client import ClientOptions | |
| from langchain_community.vectorstores import SupabaseVectorStore | |
| from langchain_huggingface.embeddings import HuggingFaceEmbeddings | |
| from langchain.tools.retriever import create_retriever_tool | |
| load_dotenv() | |
| MODEL_NAME = "BAAI/bge-base-en-v1.5" | |
| TBL_NAME = "documents_tbl" | |
| QUERY_NAME = "match_documents" | |
| def get_retriever_tool(): | |
| embedding_model = HuggingFaceEmbeddings(model_name = MODEL_NAME) | |
| DIMS_EMBEDDING = embedding_model._client.get_sentence_embedding_dimension() | |
| # Supabase client | |
| supabase: Client = create_client( | |
| os.environ.get("SUPABASE_URL"), | |
| os.environ.get("SUPABASE_ANON_KEY"), | |
| options = ClientOptions(schema = "public") | |
| ) | |
| # Vector Store | |
| vector_store = SupabaseVectorStore( | |
| client = supabase, | |
| embedding = embedding_model, | |
| table_name = TBL_NAME, | |
| query_name = QUERY_NAME | |
| ) | |
| vector_retriever = vector_store.as_retriever() | |
| retriever_tool = create_retriever_tool( | |
| retriever = vector_retriever, | |
| name = "question_search_tool", | |
| description = "A tool to retrieve similar questions based on embedding from Supabase vector store." | |
| ) | |
| return vector_store, vector_retriever, retriever_tool | |