sábado, 7 de fevereiro de 2026
Show HN: I built a RAG engine to search Singaporean laws https://ift.tt/3OZtTnW
Show HN: I built a RAG engine to search Singaporean laws I built a "Triple Failover" RAG for Singapore Laws, then rewrote the logic based on your feedback. Hi everyone! I’m a student developer. Recently, I created Explore Singapore, a RAG-based search engine that scrapes about 20,000 pages of Singaporean government acts and laws. I recently posted the MVP and received some tough but essential feedback about hallucinations and query depth. I took that feedback, focused on improvements, and just released Version 2. Here is how I upgraded the system from a basic RAG to a production-grade one. The Design & UI I aimed to avoid a dull government website. Design: Heavily inspired by Apple’s minimalist style. Tech: Custom frontend interacting with a Python backend. The V2 Engineering Overhaul The community challenged me on three main points. Here’s how I addressed them: 1. The "Personality" Fix Issue: I use a "Triple Failover" system with three models as backup. When the main model failed, the backups sounded entirely different. The Solution: I added Dynamic System Instructions. Now, if the backend switches to Model B, it uses a specific prompt designed for Model B’s features, making it mimic the structure and tone of the primary model. The user never notices the change. 2. The "Deep Search" Fix Issue: A simple semantic search for "Starting a business" misses related laws like "Tax" or "Labor" acts. The Solution: I implemented Multi-Query Retrieval (MQR). An LLM now intercepts your query. It breaks it down into sub-intents (e.g., “Business Registration,” “Corporate Tax,” “Employment Rules”). It searches for all of them at the same time and combines the results. Result: Much richer, context-aware answers. 3. The "Hallucination" Fix Issue: Garbage In, Garbage Out. If FAISS retrieves a bad document, the LLM produces inaccurate information. The Solution: I added a Cross-Encoder Re-Ranking layer. Step 1: FAISS grabs the top 10 results. Step 2: A specialized Cross-Encoder model evaluates them for relevance. Step 3: Irrelevant parts are removed before they reach the Chat LLM. * The Tech Stack * Embeddings: BGE-M3 (Running locally) Vector DB: FAISS Backend: Python + Custom Triple-Model Failover Logic: Multi-Query + Re-Ranking (New in V2) Try it out I am still learning. I’d love to hear your thoughts on the new logic. Live Demo: https://adityaprasad-sudo.github.io/Explore-Singapore/ GitHub Repo: https://ift.tt/5KODhSk Feedback, especially on the failover speed, is welcome! https://ift.tt/5KODhSk February 7, 2026 at 12:58AM
Assinar:
Postar comentários (Atom)
DJ Sandro
http://sandroxbox.listen2myradio.com
Nenhum comentário:
Postar um comentário