commit 5d76e20c7918ee2753a66195afcb2c8a4fa0299d Author: abhishek Date: Mon Jul 13 19:31:20 2026 +0530 first commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..113b03c --- /dev/null +++ b/README.md @@ -0,0 +1,63 @@ +# Kirana AI — RAG-Powered Brand Product Search Engine + +This is the v2.0 upgrade of the Indian FMCG product catalog project: the +same discovery/enrichment pipeline (Ollama + pgvector + S3 image +storage), now with a **Retrieval-Augmented Generation (RAG) layer** and a +**React UI** in place of the old Streamlit app. + +Two independent pieces: + +- **`backend/`** - FastAPI service. Browse/search/chat endpoints over a + pgvector-backed catalog; a RAG chat endpoint that retrieves relevant + products and asks a local Ollama model to answer grounded in them. +- **`frontend/`** - React + Vite single-page app: product search/browse + grid, a conversational "Ask AI" panel with source citations, and an + admin page to ingest new brands. + +See **`docs/`** for the full architecture write-up, setup guide, and API +reference — including **`docs/SKU_RESOLVER.md`** for the Product +Resolver library (`POST /api/resolve`), which accepts any BigBasket +product ID, Amazon ASIN, or Internal SKU, resolves it against the +database or the matching external source, and stores it for next time. +The two component READMEs (`backend/README.md`, +`frontend/README.md`) are quick local references once you've read the +main docs once. + +## Fastest path to a working demo + +```bash +# 1. Backend +cd backend +python3 -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate +pip install -r requirements.txt +cp .env.example .env # edit DB_PASSWORD, see docs +docker compose -f ../docker-compose.yml up -d # local Postgres+pgvector (skip if you already have one) +python scripts/seed_sample_data.py # loads bundled sample catalogs - no LLM needed +ollama pull qwen2.5:1.5b # one-time +uvicorn app.main:app --reload --port 8000 + +# 2. Frontend (new terminal) +cd frontend +npm install +npm run dev +``` + +Open http://localhost:5173, pick a brand, try the search bar, then switch +to **Ask AI** and ask something like "recommend a low sugar biscuit". + +## Why this exists (what changed from v1.0) + +The original project (`Project_LLM`) could discover, enrich, and store +products with embeddings in pgvector - but nothing ever read those +embeddings back out. There was no similarity-search function, no API +layer (`app/api/` was an empty folder), and the UI was a Streamlit app +that only ever queried the catalog by exact brand/category, never by +meaning. This project adds the missing retrieval layer +(`vector_store.semantic_search`), a RAG orchestration service +(`rag_service.py`), a full FastAPI surface, and a React UI to use it. + +It also fixes a real security issue: `app/infrastructure/settings.py` +used to hard-code a live database host/port/password as Python literal +fallbacks. Every credential now comes only from environment +variables/`.env` - see `backend/app/infrastructure/settings.py` for +details, and `docs/` for the full write-up.