Aquila Solutions Group Back to case studies

Interactive Demo | RAG Systems

RAG Knowledge Base With Evidence Review

Search a sample operations knowledge base, inspect retrieved chunks, and see how a grounded answer is assembled with citations, metadata, and quality checks.

Try The Retrieval Flow

Ask the knowledge base a business question.

Grounded Answer

Vendor invoice exception path

Evidence Review

Retrieved chunks and metadata.

Clients can see which source records shaped the answer. In production, these cards would map back to Postgres metadata and Pinecone vector IDs.

System Architecture

What the demo is proving.

The page is static for portability, but the architecture mirrors the production pattern clients ask for: ingest documents, store metadata, embed chunks, retrieve, rerank, answer, and evaluate.

01

Knowledge Sources

SOPs, policies, runbooks, product docs, support playbooks, and uploaded client documents.

02

Chunk + Metadata

Split documents by section, preserve source IDs, owners, update dates, access level, and source type.

03

Embed + Index

Generate embeddings, write vectors to Pinecone or pgvector, and keep Postgres as the source-of-truth metadata layer.

04

Retrieve + Rerank

Use semantic search, metadata filters, hybrid lexical ranking, and reranking before sending context to the model.

05

Generate + Cite

Ask the LLM to answer only from retrieved chunks and attach citations to every material claim.

06

Evaluate + Review

Check confidence, groundedness, source coverage, and unsupported claims before showing output to the client.

Implementation Pattern

Code-level signals.

The demo keeps the implementation readable so a client can see what the engineering layer would look like underneath the interface.

Chunk payload

{
  "chunk_id": "FIN-002.2",
  "source_type": "SOP",
  "metadata": {
    "owner": "Finance Ops",
    "updated_at": "2026-06-14",
    "access_level": "internal"
  },
  "text": "Invoices missing a purchase order route..."
}

Retrieval pattern

matches = vector_db.query(
    embedding=query_embedding,
    top_k=6,
    filter={"source_type": {"$in": allowed_types}}
)

context = rerank(query, matches)
answer = llm.generate(schema=GroundedAnswer, context=context)