Skip to main content
Use PostgreSQL with pgvector extension as your vector database for storing and retrieving document embeddings.

Installation

Install the required packages:
pip install hypertic[pgvector]

Setup

Set up PostgreSQL with pgvector extension, then create a PgVector instance:
import os
from hypertic.vectordb import PgVectorDB
from hypertic.embedders import OpenAIEmbedder

# Create embedder
embedder = OpenAIEmbedder(
    api_key=os.getenv("OPENAI_API_KEY"),
    model="text-embedding-3-small"
)

# Create PgVector instance
vector_db = PgVectorDB(
    collection="my_collection",
    embedder=embedder,
    db_url="postgresql://postgres:password@localhost:5432/vectordb"
)

Usage

PgVector supports both sync and async operations:
# Add documents
vector_db.add(
    files=["data/index.pdf", "data/sample.txt"],
    metadatas=[
        {"source": "invoice.pdf", "type": "invoice"},
        {"source": "sample.txt", "type": "text"}
    ]
)

# Create retriever
retriever = vector_db.as_retriever(k=3)

# Search documents
docs = retriever.search("invoice payment")
print(docs)

Configuration Options

  • collection - Name of the collection/table
  • embedder - Embedder instance for generating embeddings
  • db_url - PostgreSQL connection string
For more details, see the pgvector documentation.