chatapp1 / README.md
dreamthehacker's picture
Update README.md
c08e771 verified
|
Raw
History Blame Contribute Delete
2.11 kB
---
license: mit
title: ChatQnA RAG Service
sdk: docker
emoji:
colorFrom: red
colorTo: yellow
---
# RAG Service (Python)
`apps/rag-service` is now the production Python intelligence engine used by `apps/api`.
It contains migrated retrieval + LLM routing behavior from the Streamlit reference (`app.py`).
## Run locally
```bash
python -m pip install -r requirements.txt
uvicorn app.main:app --reload --port 8002 --app-dir .
```
## API contract
- `POST /query` accepts:
- `sessionId`, `message`, `history`, `topK`
- optional `document` object (`documentName`, `documentKind`, `documentText`)
- returns:
- `answer`
- `retrievedChunks[]` with `id`, `page`, `chunkType`, `text`
- optional span mapping fields: `startOffset`, `endOffset`, `sourceDocument`, `score`
- `citations[]` aligned to returned chunks
## Runtime behavior
- Primary retrieval:
- Uploaded document text (if provided) is chunked and ranked.
- Default mode is `lexical` for low-memory/free-tier reliability.
- Optional mode `semantic` uses `all-MiniLM-L6-v2` embeddings (higher memory).
- Secondary retrieval:
- Qdrant if configured, else FAISS local fallback (`faiss_store/`).
- Answer generation:
- HF Router->Groq primary route, Groq fallback.
- Local guarded fallback answer if LLM route is unavailable.
## Required/optional env
- `RAG_SERVICE_URL` (set in API, points to this service)
- Optional:
- `QDRANT_URL`, `QDRANT_API_KEY`, `QDRANT_COLLECTION`
- `KB_BACKEND` (`qdrant` or `faiss`)
- `RAG_RETRIEVAL_MODE` (`lexical` or `semantic`, default `lexical`)
- `HUGGINGFACE_API_TOKEN`, `GROQ_API_KEY`
- `RAG_MODEL_ID`, `RAG_TEMPERATURE`, `RAG_MAX_TOKENS`
- `UPLOAD_CHUNK_SIZE`, `UPLOAD_CHUNK_OVERLAP`
## Deploy on Hugging Face Spaces (free CPU)
1. Create a new Space with SDK = `Docker`.
2. Point the Space to `apps/rag-service`.
3. The included `Dockerfile` exposes FastAPI on port `7860`.
4. Add secrets:
- `QDRANT_URL`, `QDRANT_API_KEY`, `HUGGINGFACE_API_TOKEN`, `GROQ_API_KEY`
5. Add variables:
- `KB_BACKEND=qdrant`
- `RAG_RETRIEVAL_MODE=lexical`
- `QDRANT_COLLECTION=doc_kb`