[{"data":1,"prerenderedAt":250},["ShallowReactive",2],{"navigation":3,"\u002Fblog\u002Fdeveloping-a-graphrag-research-chatbot-with-neo4j":71,"\u002Fblog\u002Fdeveloping-a-graphrag-research-chatbot-with-neo4j-surround":245},[4,58],{"title":5,"path":6,"stem":7,"children":8,"page":57},"Blog","\u002Fblog","blog",[9,13,17,21,25,29,33,37,41,45,49,53],{"title":10,"path":11,"stem":12},"Decoding Sentiment: Analysis of 4 Million Amazon Reviews","\u002Fblog\u002Famazon-review-sentiment-capstone","blog\u002Famazon-review-sentiment-capstone",{"title":14,"path":15,"stem":16},"Analyzing a Healthcare Knowledge Graph with Cypher and Graph Data Science","\u002Fblog\u002Fanalyzing-a-healthcare-knowledge-graph-with-cypher-and-gds","blog\u002Fanalyzing-a-healthcare-knowledge-graph-with-cypher-and-gds",{"title":18,"path":19,"stem":20},"Navigating the Web: Prioritizing Supply Chain Risk with Neo4j","\u002Fblog\u002Fautomotive-supply-chain-neo4j-capstone","blog\u002Fautomotive-supply-chain-neo4j-capstone",{"title":22,"path":23,"stem":24},"My First AWS Adventure: Building a Sentiment Analysis System on a Budget","\u002Fblog\u002Faws-sentiment-analysis-journey","blog\u002Faws-sentiment-analysis-journey",{"title":26,"path":27,"stem":28},"Building a Hybrid Movie Recommender with Neo4j and Graph Data Science","\u002Fblog\u002Fbuilding-a-hybrid-movie-recommender-with-neo4j-and-gds","blog\u002Fbuilding-a-hybrid-movie-recommender-with-neo4j-and-gds",{"title":30,"path":31,"stem":32},"Designing and Building a Neo4j Knowledge Graph from Relational Data","\u002Fblog\u002Fdesigning-and-building-a-neo4j-knowledge-graph-from-relational-data","blog\u002Fdesigning-and-building-a-neo4j-knowledge-graph-from-relational-data",{"title":34,"path":35,"stem":36},"Developing a GraphRAG Research Chatbot with Neo4j","\u002Fblog\u002Fdeveloping-a-graphrag-research-chatbot-with-neo4j","blog\u002Fdeveloping-a-graphrag-research-chatbot-with-neo4j",{"title":38,"path":39,"stem":40},"From Code to Insights: My Journey from Software Development to Data Analytics","\u002Fblog\u002Ffrom-code-to-insights-journey","blog\u002Ffrom-code-to-insights-journey",{"title":42,"path":43,"stem":44},"Predicting Hospital Readmissions: A Machine Learning Journey","\u002Fblog\u002Fhospital-readmissions","blog\u002Fhospital-readmissions",{"title":46,"path":47,"stem":48},"My First Steps into Graph Databases: Learning Neo4j Fundamentals","\u002Fblog\u002Fneo4j-graph-databases-fundamentals","blog\u002Fneo4j-graph-databases-fundamentals",{"title":50,"path":51,"stem":52},"Building a Serverless ETL Pipeline on AWS: From Raw Data to Interactive Dashboards","\u002Fblog\u002Fserverless-etl-pipeline-aws","blog\u002Fserverless-etl-pipeline-aws",{"title":54,"path":55,"stem":56},"From Traffic Violations to Safety Culture: My Data Analytics Framework","\u002Fblog\u002Ftraffic-violation-analytics-framework","blog\u002Ftraffic-violation-analytics-framework",false,{"title":59,"path":60,"stem":61,"children":62,"page":57},"Publications","\u002Fpublications","publications",[63,67],{"title":64,"path":65,"stem":66},"PCT-led early warning vital sign escalation","\u002Fpublications\u002Fpct-led-early-warning-escalation","publications\u002Fpct-led-early-warning-escalation",{"title":68,"path":69,"stem":70},"Reducing Phlebotomy Redraws Through Pre-Analytic SOPs: Training, Fidelity, and Outcome Metrics from a Community Hospital","\u002Fpublications\u002Freducing-phlebotomy-redraws-pre-analytic-sops","publications\u002Freducing-phlebotomy-redraws-pre-analytic-sops",{"id":72,"title":34,"author":73,"body":77,"date":230,"description":231,"extension":232,"image":233,"meta":234,"minRead":241,"navigation":242,"path":35,"seo":243,"stem":36,"__hash__":244},"blog\u002Fblog\u002Fdeveloping-a-graphrag-research-chatbot-with-neo4j.md",{"name":74,"avatar":75},"Peter Mangoro",{"src":76,"alt":74},"\u002Fprofile.jpg",{"type":78,"value":79,"toc":220},"minimark",[80,84,89,92,110,114,117,131,135,138,155,158,162,189,193,196,199,203],[81,82,83],"p",{},"This project started with a simple question: how do we make an LLM answer from a research corpus without hallucinating? The answer was to combine graph structure, semantic retrieval, and strict evidence grounding.",[85,86,88],"h2",{"id":87},"team-context","Team Context",[81,90,91],{},"This work was built collaboratively. Team members included:",[93,94,95,98,101,104,107],"ul",{},[96,97,74],"li",{},[96,99,100],{},"Bekithemba Nkomo",[96,102,103],{},"Masheia Dzimba",[96,105,106],{},"Tafadzwa",[96,108,109],{},"Sharman",[85,111,113],{"id":112},"project-focus","Project Focus",[81,115,116],{},"The chatbot is designed for Q&A over a PDF corpus using a GraphRAG pattern:",[93,118,119,122,125,128],{},[96,120,121],{},"papers and chunks are stored in Neo4j",[96,123,124],{},"chunks are embedded for vector retrieval",[96,126,127],{},"graph relationships support structured filtering (gene, author, topic paths)",[96,129,130],{},"LLM answers are generated from retrieved evidence with citations",[85,132,134],{"id":133},"what-i-built","What I Built",[81,136,137],{},"I implemented and documented an end-to-end workflow across ingestion and serving:",[93,139,140,143,146,149,152],{},[96,141,142],{},"extraction pipeline (PDF -> structured JSON)",[96,144,145],{},"graph schema and ingestion into Neo4j",[96,147,148],{},"embedding generation and vector indexing",[96,150,151],{},"retrieval routing (semantic, gene-focused, author-focused, aggregates)",[96,153,154],{},"streaming chat outputs with trace\u002Fprogress support in UI",[81,156,157],{},"I also maintained architecture and operations guides to make the system reproducible for others.",[85,159,161],{"id":160},"key-findings","Key Findings",[93,163,164,171,177,183],{},[96,165,166,170],{},[167,168,169],"strong",{},"Graph + vector hybrid retrieval"," is much stronger than either strategy alone for research Q&A.",[96,172,173,176],{},[167,174,175],{},"Routing matters",": classifying query intent before retrieval avoids noisy context.",[96,178,179,182],{},[167,180,181],{},"Grounded citations"," significantly improve trust in responses.",[96,184,185,188],{},[167,186,187],{},"Operational clarity"," (envs, run order, schema contracts) is as important as model quality for team maintainability.",[85,190,192],{"id":191},"lessons-learned","Lessons Learned",[81,194,195],{},"The biggest lesson was that building a useful chatbot is mostly systems engineering, not just prompt writing. Data contracts, ingestion repeatability, retrieval quality, and traceability determine whether answers stay reliable over time.",[81,197,198],{},"I also learned the value of documenting architecture in plain language so both technical and non-technical collaborators can contribute effectively.",[85,200,202],{"id":201},"skills-i-gained","Skills I Gained",[93,204,205,208,211,214,217],{},[96,206,207],{},"GraphRAG architecture design",[96,209,210],{},"Neo4j schema design and graph ingestion pipelines",[96,212,213],{},"Retrieval orchestration (route-based + tool-based patterns)",[96,215,216],{},"Streaming response UX with retrieval traceability",[96,218,219],{},"Technical documentation for long-lived project maintenance",{"title":221,"searchDepth":222,"depth":222,"links":223},"",2,[224,225,226,227,228,229],{"id":87,"depth":222,"text":88},{"id":112,"depth":222,"text":113},{"id":133,"depth":222,"text":134},{"id":160,"depth":222,"text":161},{"id":191,"depth":222,"text":192},{"id":201,"depth":222,"text":202},"2026-04-10","How I built a GraphRAG-style research assistant that combines Neo4j graph retrieval, vector search, and grounded LLM answers with citations.","md","\u002Fblog\u002FgraphDatabase\u002Fnode-properties.svg",{"tags":235},[236,237,238,239,240],"Neo4j","GraphRAG","LLM","Vector Search","Knowledge Graph",10,true,{"title":34,"description":231},"Ani_TNF3fWx035ifoWp7LMKRls3G2kPh5f1_0B7jWnw",[246,248],{"title":30,"path":31,"stem":32,"description":247,"children":-1},"How I modeled a Chinook-style music dataset as a property graph, loaded it in the right dependency order, and validated it with Cypher queries.",{"title":38,"path":39,"stem":40,"description":249,"children":-1},"How my background in software development shaped my approach to data analytics, the projects that defined my transition, and the lessons learned along the way.",1780158383442]