Semantic Vector Search
Integrate OpenAI or Google Gemini embeddings with pgvector for AI-powered semantic search in PostgreSQL.
Semantic Vector Search
Traditional text search relies on keyword matching. Semantic search understands the meaning behind the query. pg-smart-search integrates seamlessly with OpenAI and Google Gemini to provide vector similarity search via the pgvector PostgreSQL extension.
Prerequisites
- Install the
pgvectorextension in your PostgreSQL database. - Add a vector column to your table (e.g.,
embedding vector(1536)). - Ensure your data is embedded and stored in this column.
Configuration
Configure the engine with your preferred AI provider.
import { TrigramSearchEngine, OpenAIProvider, SearchTier } from "pg-smart-search";
const engine = new TrigramSearchEngine(adapter, {
tableName: "articles",
searchColumns: ["content"],
tier: SearchTier.VECTOR,
vectorProvider: new OpenAIProvider(
process.env.OPENAI_API_KEY,
"text-embedding-3-small"
),
});import { TrigramSearchEngine, GeminiProvider, SearchTier } from "pg-smart-search";
const engine = new TrigramSearchEngine(adapter, {
tableName: "articles",
searchColumns: ["content"],
tier: SearchTier.VECTOR,
vectorProvider: new GeminiProvider(
process.env.GEMINI_API_KEY,
"embedding-001"
),
});Querying
When a vector provider is configured, the engine will automatically generate embeddings for the users query and perform a similarity search alongside traditional text search.
const results = await engine.search({
query: "How to optimize database performance",
});Rate Limiting
AI APIs have strict rate limits. The engine includes an intelligent rate-limiting queue (p-queue) built-in. If the API returns 429 Too Many Requests, the engine automatically pauses vector search requests and retries them, preventing cascade failures.