PgVector Hybrid Search

Code

1from kern.agent import Agent
2from kern.knowledge.knowledge import Knowledge
3from kern.models.openai import OpenAIResponses
4from kern.vectordb.pgvector import PgVector, SearchType
5
6db_url = "postgresql+psycopg://ai:ai@localhost:5532/ai"
7
8knowledge = Knowledge(
9 name="My PG Vector Knowledge Base",
10 description="This is a knowledge base that uses a PG Vector DB",
11 vector_db=PgVector(
12 table_name="vectors", db_url=db_url, search_type=SearchType.hybrid
13 ),
14)
15
16knowledge.insert(
17 name="Recipes",
18 url="https://kern-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf",
19 metadata={"doc_type": "recipe_book"},
20)
21
22agent = Agent(
23 model=OpenAIResponses(id="gpt-5.2"),
24 knowledge=knowledge,
25 search_knowledge=True,
26 read_chat_history=True,
27 markdown=True,
28)
29agent.print_response(
30 "How do I make chicken and galangal in coconut milk soup", stream=True
31)
32agent.print_response("What was my last question?", stream=True)

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_hybrid_search.py