Skip to content

ThomasJanssen-tech/Agentic-RAG-with-LangChain

Repository files navigation

Agentic RAG (Retrieval Augmented Generation) with LangChain and Supabase

Watch the full tutorial on my YouTube Channel

Prerequisites

  • Python 3.11+

Installation

1. Clone the repository:

git clone https://github.com/ThomasJanssen-tech/Agentic-RAG-with-LangChain.git
cd Agentic RAG with LangChain

2. Create a virtual environment

python -m venv venv

3. Activate the virtual environment

venv\Scripts\Activate
(or on Mac): source venv/bin/activate

4. Install libraries

pip install -r requirements.txt

5. Create accounts

6. Execute SQL queries in Supabase

Execute the following SQL query in Supabase:

-- Enable the pgvector extension to work with embedding vectors
create extension if not exists vector;

-- Create a table to store your documents
create table
  documents (
    id uuid primary key,
    content text, -- corresponds to Document.pageContent
    metadata jsonb, -- corresponds to Document.metadata
    embedding vector (1536) -- 1536 works for OpenAI embeddings, change if needed
  );

-- Create a function to search for documents
create function match_documents (
  query_embedding vector (1536),
  filter jsonb default '{}'
) returns table (
  id uuid,
  content text,
  metadata jsonb,
  similarity float
) language plpgsql as $$
#variable_conflict use_column
begin
  return query
  select
    id,
    content,
    metadata,
    1 - (documents.embedding <=> query_embedding) as similarity
  from documents
  where metadata @> filter
  order by documents.embedding <=> query_embedding;
end;
$$;

7. Add API keys to .env file

  • Rename .env.example to .env
  • Add the API keys for Supabase and OpenAI to the .env file

Executing the scripts

  • Open a terminal in VS Code

  • Execute the following command:

python ingest_in_db.py
python agentic_rag.py
streamlit run agentic_rag_streamlit.py

Sources

While making this video, I used the following sources: