File size: 1,202 Bytes
0e197ca
 
372720a
 
 
 
 
 
0e197ca
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
372720a
 
0e197ca
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 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."