PgVector

Code

1from kern.agent import Agent
2from kern.knowledge.knowledge import Knowledge
3from kern.vectordb.pgvector import PgVector
4
5db_url = "postgresql+psycopg://ai:ai@localhost:5532/ai"
6
7vector_db = PgVector(table_name="vectors", db_url=db_url)
8
9knowledge = Knowledge(
10 name="My PG Vector Knowledge Base",
11 description="This is a knowledge base that uses a PG Vector DB",
12 vector_db=vector_db,
13)
14knowledge.insert(
15 name="Recipes",
16 url="https://kern-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf",
17 metadata={"doc_type": "recipe_book"},
18)
19
20agent = Agent(
21 knowledge=knowledge,
22 search_knowledge=True,
23 read_chat_history=True,
24)
25
26agent.print_response("How do I make pad thai?", markdown=True)
27
28vector_db.delete_by_name("Recipes")
29
30vector_db.delete_by_metadata({"doc_type": "recipe_book"})

Usage

Set up your virtual environment

1uv venv --python 3.12
2source .venv/bin/activate
1uv venv --python 3.12
2.venv\Scripts\activate

Install dependencies

1uv pip install -U psycopg2-binary pgvector pypdf openai kern-ai

Run PgVector on Docker

Create a file resources.py with the following contents:

1from kern.docker.app.postgres import PgVectorDb
2from kern.docker.resources import DockerResources
3
4# -*- PgVector running on port 5432:5432
5vector_db = PgVectorDb(
6 pg_user="ai",
7 pg_password="ai",
8 pg_database="ai",
9 debug_mode=True,
10)
11
12# -*- DockerResources
13dev_docker_resources = DockerResources(apps=[vector_db])

Start resources using:

1ag start resources.py
1ag start resources.py

Press Enter to confirm and verify container status on the docker dashboard.

Set environment variables

1export OPENAI_API_KEY=xxx

Run Agent

1python cookbook/08_knowledge/vector_db/pgvector/pgvector_db.py