Spaces:
Sleeping
Sleeping
| # retrievers/custom_retriever.py | |
| import os | |
| from langchain_huggingface import HuggingFaceEmbeddings | |
| from langchain_community.vectorstores import SupabaseVectorStore | |
| from supabase.client import create_client | |
| from config import settings | |
| def get_vector_store(): | |
| # Read env variables only when needed | |
| supabase_url = settings.supabase_url | |
| supabase_key = settings.supabase_key | |
| if not supabase_url or not supabase_key: | |
| raise ValueError("SUPABASE_URL and SUPABASE_SERVICE_KEY must be set in your environment or .env file.") | |
| embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-mpnet-base-v2") | |
| supabase = create_client(supabase_url, supabase_key) | |
| return SupabaseVectorStore( | |
| client=supabase, | |
| embedding=embeddings, | |
| table_name="documents", | |
| query_name="match_documents_langchain", | |
| ) | |
| def retrieve(query: str) -> str: | |
| try: | |
| vector_store = get_vector_store() | |
| results = vector_store.similarity_search(query) | |
| if results: | |
| return results[0].page_content | |
| except Exception as e: | |
| return f"Retriever is not available (reason: {e})" | |
| return "No similar questions found." | |