DEV Community

Eber Cruz
Eber Cruz

Posted on

Weaviate for RAG: When It Shines (and When It Doesn’t)

A hands-on review after building an enterprise-grade PoC — not just another “Hello World”

As a Technical Lead & AI Architect (Hands-On) with a focus on RAG Systems and experience building solutions for organizations like HSBC, Scotiabank, and CFE, I'm always evaluating cutting-edge technologies. Recently, at AI Research Lab in Mexico City (Feb 2025 – Jun 2025), I spearheaded the architecture for a comprehensive Retrieval Augmented Generation (RAG) solution for an internal Business Intelligence Engine PoC. This was not a client-facing product, but a technical deep-dive to validate architecture, latency, and security patterns for future enterprise deployment. The PoC was designed to rigorously test RAG architectures for real-world readiness, incorporating:

  • Full enterprise patterns (auth, error handling, observability)
  • Local LLMs (DeepSeek-R1 via Ollama)
  • 100% data sovereignty
  • Benchmarks on real hardware (GCP n2-standard-8)

My contributions included designing a multi-layered RAG architecture with reactive streaming patterns (Spring WebFlux, Project Reactor), architecting Weaviate v4 integration with optimized Sentence-BERT embeddings for financial document processing, and directing the local LLM integration strategy — leveraging my background as a Google Certified GenAI Leader.


🔗 Full architecture details: ebercruz.com/technical
💻 Code (MIT, non-commercial): github.com/ebercruzf/enterprise-intelligence-engine


✅ Where Weaviate Delivers Value — in practice

1. Hybrid Search: nearText + where = Fewer False Positives

In real use, users don’t ask clean questions like “summarize Q3 earnings”. They often phrase queries like:

“What did the compliance team say about loan approvals last quarter?”

Most vector DBs force a choice between semantic or keyword search. Weaviate's ability to combine both significantly reduces false positives:


graphql
{
  Get {
    FinancialDocument(
      nearText: {concepts: ["loan approval"]}
      where: {
        path: ["department"]
        operator: Equal
        valueString: "compliance"
      }
    ) {
      title
      snippet
      _additional { distance }
    }
  }
}

Enter fullscreen mode Exit fullscreen mode

Top comments (0)