- Each user has a unique ID and profile.
- Users can create, view, and manage multiple chat sessions.
- Each user can create multiple chat sessions.
- Each chat session stores metadata (
title,created_at) and is linked to its creator.
- Chat messages (user + assistant) are stored in the database.
- Each message is converted into a vector embedding using a HuggingFace model (
embedding dimension = 384).
- When a user sends a query, the system:
- Retrieves top 5 most similar past messages from that chat session via vector similarity search.
- Passes these retrieved conversation snippets as context to the LLM.
- Generates an assistant response based on the context, maintaining chat continuity.
- User Router: Create users, fetch user info, list user chats.
- Chat Router: Create chats (user-linked or generic), send messages, fetch messages, delete chats, list all chats.
- Clear RESTful hierarchy:
/users/{user_id}/chats→ user-specific chats/chats/{chat_id}→ chat-specific operations
- Prepared for future authentication and permission enforcement.
- PostgreSQL used as the main DB.
- Vector embeddings stored using
pgvector. ChatSession↔Userrelationship implemented.ChatMessage↔ChatSessionrelationship implemented.
1. docker pull postgres:15
2. docker run --name NeuralFoundryPostgreServer -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=yourpassword -e POSTGRES_DB=postgres -p 5432:5432 -d postgres:15
3. docker exec -it NeuralFoundryPostgreServer psql -U postgres
4. create database neuralfoundry;
5. docker run --name NeuralFoundryPgAdminServer -p 5050:80 -e PGADMIN_DEFAULT_EMAIL=<> -e PGADMIN_DEFAULT_PASSWORD=<> -d dpage/pgadmin4
6. docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' NeuralFoundryPostgreServer
7. register pgadmin with the above ip address, username(postgres) and password(above password) and name postgres-neural-foundry
docker pull postgres:16
docker pull pgvector/pgvector:pg16
docker run --name pgvector -e POSTGRES_PASSWORD=<> -p 5433:5432 -d pgvector/pgvector:pg16
docker network create pgnet
docker network connect pgnet pgvector
docker run -d --name pgadmin --network pgnet -e PGADMIN_DEFAULT_EMAIL=<> -e PGADMIN_DEFAULT_PASSWORD=<> -p 5050:80 dpage/pgadmin4
uvicorn main:app --reload
npm run dev