Agentic RAG with PgVector
Agentic RAG with PgVector, storing and searching embeddings with hybrid search.
Implement Agentic RAG using PgVector (PostgreSQL with vector extensions) to store and search embeddings with hybrid search.
Code
"""
1. Run: `./cookbook/scripts/run_pgvector.sh` to start a postgres container with pgvector
2. Run: `pip install openai sqlalchemy psycopg pgvector pypdf agno` to install the dependencies
3. Run: `python agentic_rag_pgvector.py` to run the agent
"""
from agno.agent import Agent
from agno.knowledge.embedder.openai import OpenAIEmbedder
from agno.knowledge.knowledge import Knowledge
from agno.models.openai import OpenAIResponses
from agno.vectordb.pgvector import PgVector, SearchType
db_url = "postgresql+psycopg://ai:ai@localhost:5532/ai"
knowledge = Knowledge(
# Use PgVector as the vector database and store embeddings in the `ai.recipes` table
vector_db=PgVector(
table_name="recipes",
db_url=db_url,
search_type=SearchType.hybrid,
embedder=OpenAIEmbedder(id="text-embedding-3-small"),
),
)
knowledge.insert(
url="https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf"
)
agent = Agent(
model=OpenAIResponses(id="gpt-5.2"),
knowledge=knowledge,
# Add a tool to search the knowledge base which enables agentic RAG.
# This is enabled by default when `knowledge` is provided to the Agent.
search_knowledge=True,
markdown=True,
)
agent.print_response(
"How do I make chicken and galangal in coconut milk soup", stream=True
)
# agent.print_response(
# "Hi, i want to make a 3 course meal. Can you recommend some recipes. "
# "I'd like to start with a soup, then im thinking a thai curry for the main course and finish with a dessert",
# stream=True,
# )Usage
Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activateInstall dependencies
uv pip install -U agno openai sqlalchemy psycopg pgvector pypdfRun PgVector
docker run -d \
-e POSTGRES_DB=ai \
-e POSTGRES_USER=ai \
-e POSTGRES_PASSWORD=ai \
-e PGDATA=/var/lib/postgresql \
-v pgvolume:/var/lib/postgresql \
-p 5532:5432 \
--name pgvector \
agnohq/pgvector:18Export your OpenAI API key
export OPENAI_API_KEY=your_openai_api_key_hereRun Agent
python agentic_rag_pgvector.pyNext Steps
| Task | Guide |
|---|---|
| Retrieve before the first model call instead | Traditional RAG with PgVector |
| Tune hybrid ranking | Hybrid Search |
| Apply metadata filters | Filtering |