A custom chatbot built with NestJS, MongoDB, PostgreSQL with pgvector extension for vector similarity search.
- Node.js (>= v16)
- MongoDB
- PostgreSQL (with pgvector extension)
- Ollama (for text embeddings)
- Clone the repository
- Copy
.env.exampleto.envand update the following variables:
# Application
PORT=
NODE_ENV=
# PostgreSQL
POSTGRES_HOST=
POSTGRES_PORT=
POSTGRES_USER=
POSTGRES_PASSWORD=
POSTGRES_DATABASE=
DB_SCHEMA=
# MongoDB
MONGODB_URI=your_mongodb_connection_stringThis README provides:
- Clear setup instructions
- Environment configuration
- Database setup requirements
- Available API endpoints
- Project structure
- Testing instructions
Feel free to customize this README further based on any specific requirements or additional features of your project.
CREATE DATABASE vectordb;-- Enable vector extension for embedding operations
CREATE EXTENSION IF NOT EXISTS vector;
-- Enable pg_trgm extension for text similarity operations
CREATE EXTENSION IF NOT EXISTS pg_trgm;CREATE TABLE question_n_answers (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
question TEXT NOT NULL,
answer TEXT NOT NULL,
"botId" TEXT NOT NULL,
embedding vector(768) NOT NULL,
"createdAt" TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);id: UUID (Primary Key, auto-generated)question: TEXT (NOT NULL)answer: TEXT (NOT NULL)botId: TEXT (NOT NULL)embedding: vector(768) (NOT NULL)createdAt: TIMESTAMP WITH TIME ZONE (default: CURRENT_TIMESTAMP)updatedAt: TIMESTAMP WITH TIME ZONE (default: CURRENT_TIMESTAMP)
- The table uses the
pgvectorextension for vector operations - The
pg_trgmextension is required for text similarity operations - Vector dimension is set to 768
- Timestamps are automatically managed
- Primary key is auto-generated using
gen_random_uuid()
