{"id":25527138,"url":"https://github.com/darian16/rag-demo","last_synced_at":"2026-04-04T21:32:55.602Z","repository":{"id":277160961,"uuid":"929100244","full_name":"darian16/rag-demo","owner":"darian16","description":"Demo for the project Earground. RAG-powered AIS/AES analysis tool.","archived":false,"fork":false,"pushed_at":"2026-01-22T12:12:53.000Z","size":8850,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2026-01-23T03:47:32.080Z","etag":null,"topics":["chroma","docker","fastapi","firebase","gcp","langgraph","llmops","pylint","pytest","python","rag","reactjs","serverless"],"latest_commit_sha":null,"homepage":"https://rag-demo-33b16.web.app","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/darian16.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-02-07T20:06:29.000Z","updated_at":"2026-01-22T12:12:33.000Z","dependencies_parsed_at":"2025-02-12T13:51:15.209Z","dependency_job_id":"6f334b6a-d04e-4819-95a0-25ad923772ff","html_url":"https://github.com/darian16/rag-demo","commit_stats":null,"previous_names":["darian16/rag_demo","darian16/rag-demo"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/darian16/rag-demo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darian16%2Frag-demo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darian16%2Frag-demo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darian16%2Frag-demo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darian16%2Frag-demo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/darian16","download_url":"https://codeload.github.com/darian16/rag-demo/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darian16%2Frag-demo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31415110,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T20:09:54.854Z","status":"ssl_error","status_checked_at":"2026-04-04T20:09:44.350Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["chroma","docker","fastapi","firebase","gcp","langgraph","llmops","pylint","pytest","python","rag","reactjs","serverless"],"created_at":"2025-02-19T22:17:15.243Z","updated_at":"2026-04-04T21:32:55.593Z","avatar_url":"https://github.com/darian16.png","language":"JavaScript","readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/darian16/rag_demo/blob/master/.github/assets/logo.png\" alt=\"Earground\" width=\"300px\"\u003e\n  \u003cbr\u003e\n  \u003ch1\u003e\u003cimg width=\"40px\" src=\"https://github.com/darian16/rag_demo/blob/master/.github/assets/icon.svg\" alt=\"Icon\"\u003e RAG-powered AIS AES analysis tool\u003c/h1\u003e\n  \u003cstrong\u003eDemo for the project Earground\u003c/strong\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://rag-demo-33b16.web.app\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Status-Demo-blue.svg\" alt=\"Status\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/darian16/rag_demo/blob/master/LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/License-MIT-blue.svg\" alt=\"License (MIT)\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/darian16/rag_demo/blob/master/README.md\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Documentation-Readme.md-blue.svg\" alt=\"Documentation (Readme.md)\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/darian16/rag_demo/security/dependabot\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Dependencies-Dependabot-blue.svg\" alt=\"Dependencies (Dependabot)\"\u003e\n  \u003c/a\u003e\n  \u003c/br\u003e\n  \u003ca href=\"https://github.com/darian16/rag_demo/actions/workflows/frontend_linter.yml\"\u003e\n    \u003cimg src=\"https://github.com/darian16/rag_demo/actions/workflows/frontend_linter.yml/badge.svg\" alt=\"Frontend linter (ESlint)\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/darian16/rag_demo/actions/workflows/backend_linter.yml\"\u003e\n    \u003cimg src=\"https://github.com/darian16/rag_demo/actions/workflows/backend_linter.yml/badge.svg\" alt=\"Backend linter (pylint)\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/darian16/rag_demo/actions/workflows/backend_tests.yml\"\u003e\n    \u003cimg src=\"https://github.com/darian16/rag_demo/actions/workflows/backend_tests.yml/badge.svg\" alt=\"Tests (pytest)\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## Table of Contents\n- [Overview](#overview)\n- [Tech Stack](#tech-stack)\n- [RAG agent workflow](#rag-agent-workflow)\n- [Sample of queries](#sample-of-queries)\n- [Services topology diagram](#services-topology-diagram)\n- [Frontend](#frontend)\n  - [Frontend dependencies](#frontend-dependencies)\n  - [Frontend Severless settings recommendations](#frontend-severless-settings-recommendations)\n- [Backend](#backend)\n  - [Services](#services)\n    * [Index](#index)\n    * [Chat](#chat)\n  - [Backend dependencies](#backend-dependencies)\n  - [Backend Severless settings recommendations](#backend-severless-settings-recommendations)\n\n## Overview\nThis project involves developing a web application that enables users to explore, analyze, and compare two market research reports through AI-powered natural language interactions. The system architecture consists of a Python backend built with FastAPI, which serves as the bridge between the frontend interface and a Retrieval-Augmented Generation (RAG) system. The RAG system leverages advanced techniques such as vector embeddings, semantic search, and prompt engineering to retrieve relevant information from the reports and generate insightful, contextual responses. The application must ensure all results are traceable, enabling users to navigate directly to the original source data for verification and deeper analysis.\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/darian16/rag_demo/blob/master/.github/assets/preview.png\" alt=\"Preview\" width=\"90%\"\u003e\n\u003c/div\u003e\nThis software demonstrates Retrieval Augmented Generation (RAG) for in-context learning using specific PDF documents:\n\n- [Customs Import Procedures](https://www.revenue.ie/en/tax-professionals/tdm/customs/import-export-policy/customs-import-procedures-manual.pdf)\n- [Customs Export Procedures](https://www.revenue.ie/en/tax-professionals/tdm/customs/import-export-policy/customs-export-procedures-manual.pdf)\n\n## Tech Stack\n- **LLMops**: LanghGraph.\n- **Frontend**: ReacJS, Material.\n- **Backend**: FastAPI.\n- **Database**: Chroma.\n- **Infrastructure**: Google Cloud Platform (GCP), Terraform, Makefile, Docker, Docker Compose, CloudRun for serverless architecture, Firebase.\n- **Quality**: ESlint, pylint, pytest, pycov.\n\n## RAG agent workflow\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/darian16/rag_demo/blob/develop/backend/graph.png\" alt=\"Workflow\" width=\"auto\"\u003e\n\u003c/div\u003e\n\n## Sample of queries\n- *Please tell me how to declare the goods.*\n- *Is it possible to declare empy containers?*\n- *What are the time limits for lodging export declaration?*\n- *What is the Windsor Framework?*\n- *Give me the differences between manifests for ships departing to any country and to another EU country.*\n\n## Services topology diagram\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"topology.svg\" alt=\"Services topology diagram\" width=\"80%\"\u003e\n\u003c/div\u003e\n\n## Frontend\n\n### Frontend dependencies\n- \"@emotion/cache\": \"^11.9.3\"\n- \"@emotion/react\": \"^11.9.3\"\n- \"@emotion/styled\": \"^11.9.3\"\n- \"@mui/icons-material\": \"^5.8.4\"\n- \"@mui/lab\": \"^5.0.0-alpha.88\"\n- \"@mui/material\": \"^5.8.6\"\n- \"@mui/system\": \"^5.8.6\"\n- \"@mui/utils\": \"^5.8.6\"\n- \"@tabler/icons\": \"^1.72.0\"\n- \"axios\": \"^1.3.6\"\n- \"crypto-js\": \"^4.0.0\"\n- \"formik\": \"^2.2.9\"\n- \"framer-motion\": \"^6.3.16\"\n- \"i18next\": \"^22.4.13\"\n- \"node-polyfill-webpack-plugin\": \"^2.0.1\"\n- \"prop-types\": \"^15.8.1\"\n- \"react\": \"^18.2.0\"\n- \"react-detect-offline\": \"^2.4.5\"\n- \"react-device-detect\": \"^2.2.2\"\n- \"react-dom\": \"^18.2.0\"\n- \"react-gtm-module\": \"^2.0.11\"\n- \"react-i18next\": \"^12.2.0\"\n- \"react-loading-skeleton\": \"^3.2.1\"\n- \"react-perfect-scrollbar\": \"^1.5.8\"\n- \"react-redux\": \"^8.0.2\"\n- \"react-router\": \"6.3.0\"\n- \"react-router-dom\": \"6.3.0\"\n- \"react-scripts\": \"^5.0.1\"\n- \"react-tooltip\": \"^5.28.0\"\n- \"redux\": \"^4.2.0\"\n- \"yup\": \"^0.32.11\"\n\n### Frontend severless settings recommendations\n- Memory (Memory to allocate to each container instance): 128Mb\n- CPU (Number of vCPUs allocated to each container instance): 0.1\n- Request timeout (Time within which a response must be returned): 300 seconds\n- Maximum requests per container (The maximum number of concurrent requests that can reach each container instance): 1\n- Minimum number of instances (Autoscaling): 1\n- Maximum number of instances (Autoscaling): 5\n\n## Backend\n\n### Services\n\n### Index\n**Category:** Endpoint\u003cbr/\u003e\n**Relative URL:** /\u003cbr/\u003e\n**Description:** App description.\n\n### Chat\n**Category:** Endpoint\u003cbr/\u003e\n**Relative URL:** /chat\u003cbr/\u003e\n**Description:** In-context ChatGPT-based chat.\n\n### Backend dependencies\n- python3.11\n- python3-pip\n- python3.11-distutils\n- python3.11-dev\n- langchain==0.3.15\n- onnxruntime==1.20.1\n- chromadb==0.6.3\n- langchain-chroma==0.2.1\n- langchain_community==0.3.15\n- langgraph==0.2.67\n- pypdf==5.1.0\n- tiktoken==0.8.0\n- gpt4all==2.8.2\n- langchain-openai==0.3.5\n- pysqlite3-binary\n- fastapi[standard]\n- pylint == 3.3.4\n- pytest == 8.3.4\n- pytest-cov == 6.0.0\n\n### Backend severless settings recommendations\n- Memory (Memory to allocate to each container instance): 512Mb\n- CPU (Number of vCPUs allocated to each container instance): 1\n- Request timeout (Time within which a response must be returned): 300 seconds\n- Maximum requests per container (The maximum number of concurrent requests that can reach each container instance): 1\n- Minimum number of instances (Autoscaling): 1\n- Maximum number of instances (Autoscaling): 5\n\n[🔼 Back to top](#-rag-powered-ais-aes-analysis-tool)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarian16%2Frag-demo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdarian16%2Frag-demo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarian16%2Frag-demo/lists"}