{"id":28863160,"url":"https://github.com/balaji-r-05/askdocs-ai","last_synced_at":"2026-05-09T19:32:18.624Z","repository":{"id":299675553,"uuid":"1003795001","full_name":"Balaji-R-05/askdocs-ai","owner":"Balaji-R-05","description":"An AI-powered chatbot that leverages RAG (Retrieval-Augmented Generation) to answer your questions based on the content of uploaded PDFs","archived":false,"fork":false,"pushed_at":"2025-06-17T17:55:35.000Z","size":0,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-17T18:46:32.922Z","etag":null,"topics":["chromadb","groq-cloud","langchain","python","streamlit"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Balaji-R-05.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-17T17:17:37.000Z","updated_at":"2025-06-17T18:00:25.000Z","dependencies_parsed_at":"2025-06-17T18:57:18.255Z","dependency_job_id":null,"html_url":"https://github.com/Balaji-R-05/askdocs-ai","commit_stats":null,"previous_names":["balaji-r-05/rag-chatbot"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Balaji-R-05/askdocs-ai","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Balaji-R-05%2Faskdocs-ai","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Balaji-R-05%2Faskdocs-ai/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Balaji-R-05%2Faskdocs-ai/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Balaji-R-05%2Faskdocs-ai/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Balaji-R-05","download_url":"https://codeload.github.com/Balaji-R-05/askdocs-ai/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Balaji-R-05%2Faskdocs-ai/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260898761,"owners_count":23079263,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chromadb","groq-cloud","langchain","python","streamlit"],"created_at":"2025-06-20T07:02:03.992Z","updated_at":"2026-05-09T19:32:18.617Z","avatar_url":"https://github.com/Balaji-R-05.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AskDocs AI: AI-Powered PDF Q\u0026A Bot\n\n**AskDocs AI** is an AI-powered chatbot that leverages **Hybrid RAG (Retrieval-Augmented Generation)** to answer your questions based on the content of uploaded PDFs. It combines semantic vector search with traditional keyword-based search for superior accuracy.\n\n\u003cimg src=\"./images/landing_page.png\" alt=\"Landing Page\"\u003e\n\u003cimg src=\"./images/chat_interface.png\" alt=\"Chat Interface\"\u003e\n\n## Key Features\n\n- **Hybrid Search**: Combines **ChromaDB** (semantic) and **BM25** (keyword) retrieval.\n- **LLM Powered**: High-performance LLM via Groq Cloud.\n- **Async Processing**: PDF ingestion and indexing are offloaded to background threads.\n- **Multimodal Support**: Optimized for PDF extraction and processing.\n\n## Tech Stack\n\n- **Backend:** FastAPI, LangChain (Classic), ChromaDB, Groq Cloud\n- **Frontend:** Streamlit\n- **Search Engines:** BM25 (Keyword), Vector (Cosine Similarity)\n- **Embeddings:** HuggingFace (Sentence Transformers)\n- **Containerization:** Docker \u0026 Docker Compose\n\n## Configuration\n\nControl the behavior of the Hybrid Search by adjusting weights in your `.env` file or `server/config.py`:\n\n| Variable | Description | Default |\n|----------|-------------|---------|\n| `HYBRID_SEARCH_BM25_WEIGHT` | Weight for keyword search (0.0 to 1.0) | `0.5` |\n| `HYBRID_SEARCH_CHROMA_WEIGHT` | Weight for semantic search (0.0 to 1.0) | `0.5` |\n| `GROQ_API_KEY` | Your Groq Cloud API Key | *Required* |\n\n## Optimization Features\n\n- **Split Dependencies**: Client and Server have separate requirement files to minimize image sizes.\n- **CPU-Only Optimization**: Server image is optimized for CPU-only environments, reducing size from ~12.8GB to ~2.3GB.\n- **Persistent Memory**: Uses Docker volumes to persist the ChromaDB vector store and uploaded files.\n\n## Setup Instruction\n\n### 1. Set up environment variables\nCreate a `.env` file in the root directory:\n```env\nGROQ_API_KEY=your_api_key_here\n```\n\n### 2. Run with Docker (Recommended)\n```sh\ndocker-compose up -d --build\n```\n- **Streamlit UI**: [http://localhost:8501](http://localhost:8501)\n- **FastAPI Docs**: [http://localhost:8000/docs](http://localhost:8000/docs)\n\n---\n\n### Alternative: Local Setup\n\n1. **Create and activate a virtual environment**\n   ```sh\n   python -m venv venv\n   .\\venv\\Scripts\\activate  # Windows\n   ```\n\n2. **Install dependencies**\n   ```sh\n   pip install -r requirements.client.txt\n   pip install -r requirements.server.txt\n   ```\n\n3. **Run the services**\n   ```sh\n   # Backend\n   python server/main.py\n   \n   # Frontend\n   streamlit run client/main.py\n   ```\n\n## Testing \u0026 Verification\n\nTo verify that the Hybrid Search mechanism and LLM integration are working correctly:\n\n```sh\npython server/tests/test_hybrid_search.py\n```\nThis script validates:\n1. Vectorstore connectivity.\n2. BM25 index reconstruction.\n3. Ensemble Retriever initialization.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbalaji-r-05%2Faskdocs-ai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbalaji-r-05%2Faskdocs-ai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbalaji-r-05%2Faskdocs-ai/lists"}