Architecture advice needed: Hybrid RAG for EV Consultation Chatbot (Static Specs + Dynamic API/SQL Data)

Hi everyone!

I’m building a custom RAG-based chatbot designed for Electric Vehicle (EV) consultation, and I would love to get your advice on best practices for data collection, structuring, and ingestion for my initial architecture setup.

Project Overview & Data Breakdown

The goal is to create an intelligent EV advisor. My dataset consists of two main types of data:

  1. Unstructured / Semi-structured Text Data (Static):

    • EV model specifications, feature breakdowns, and comparisons.

    • Policy documents, buying guides, warranty info, charging instructions, etc.

  2. Dynamic / Structured Data (Frequently changing):

    • Real-time pricing, temporary promotional offers, inventory status.

    • Plan: Retrieve these dynamically via API calls or SQL queries rather than embedding them into vector stores.

Questions I’d Love Your Advice On:

  1. Data Collection & Organization:

    • How should I structure and tag my unstructured text (e.g., car specs vs. policies) prior to ingestion for optimal retrieval precision?

    • Is heavy metadata tagging (e.g., model, category, document_type, year) strictly necessary, or should I rely mostly on semantic search?

  2. Chunking & Ingestion Strategy:

    • What chunking strategies (e.g., Markdown/Header-based, Parent-Document Retriever, Semantic Chunking) work best for technical specs and long policy documents?

    • How do you best handle tabular spec data within documents so the LLM doesn’t lose context?

  3. Hybrid Architecture (RAG + SQL/API Routing):

    • What is the cleanest pattern to seamlessly handle queries that need both semantic context and dynamic data (e.g., “What is the battery range of Model X and its current promotional price this month?”)?

    • Would an Agentic router / Function Calling approach be the recommended starting point here?

  4. Common V1 Pitfalls:

    • For a first version (MVP), what are the most common data ingestion mistakes I should avoid to ensure scalability later?

I’d appreciate any recommended frameworks (e.g., LlamaIndex vs. LangChain vs. custom flow), vector DB suggestions, or general architectural advice!

Thanks in advance!