Building Multi-Agent Collaborative RAG Systems with Spring AI Alibaba

System Architecture

Three-Layer Collaboration Model

1. RAG Execution Unit (Sequential Collaboration)

Query Rewriting → Multi-path Retrieval → Answer Generation
Executes a complete RAG workflow independently

2. Checker Agent (Cyclic Collaboration)

  • Multi-dimensional scoring (relevance, accuracy, completeness, timeliness)
  • Provides improvement suggestions when scores are insufficient
  • Supports up to 3 retry attempts

3. Supervissor Agent (Supervisor Collaboration)

  • Task decomposition: Breaks complex problems into sub-queries
  • Parallel execution: Multiple RAG units process simultaneously
  • Result aggregation: Combines sub-answers in to final response
  • Quality monitoring: Checks and optimizes final results

Technology Stack

  • Java 17+
  • Spring Boot 3.4.4
  • Spring AI Alibaba 1.1.2.0
  • DashScope (Qwen LLM)
  • Chroma (Vector Database)

Quick Start

1. Environment Configuration

Set DashScope API Key:

export DASHSCOPE_API_KEY=your-api-key

2. Start Vector Database (Optional)

docker run -d --name chroma -p 8000:8000 chromadb/chroma

3. Run Project

mvn spring-boot:run

API Endpoints

Simple RAG Mode

curl -X POST http://localhost:8081/api/rag/simple \
  -H "Content-Type: application/json" \
  -d '{"question": "What is Spring AI?"}'

Checker RAG Mode

curl -X POST http://localhost:8081/api/rag/checker \
  -H "Content-Type: application/json" \
  -d '{"question": "Compare Spring AI and LangChain"}'

Supervisor RAG Mode

curl -X POST http://localhost:8081/api/rag/supervisor \
  -H "Content-Type: application/json" \
  -d '{"question": "Analyze pros and cons of Spring AI vs LangChain4j"}'

Project Structure

src/main/java/com/example/agenticrag/
├── AgenticRagApplication.java        # Main application
├── config/
│   └── GraphConfig.java              # Graph configuration
├── controller/
│   └── AgenticRagController.java     # API controller
├── service/
│   └── AgenticRagService.java        # Business service
└── graph/
    ├── RagGraph.java                 # RAG execution graph
    ├── CheckerGraph.java             # Checker graph
    ├── SupervisorGraph.java          # Supervisor graph
    ├── state/
    │   └── RagState.java             # State object
    └── node/
        ├── QueryRewriterNode.java    # Query rewriting node
        ├── MultiRetrievalNode.java   # Multi-path retrieval node
        ├── AnswerGeneratorNode.java  # Answer generation node
        ├── ScoringNode.java          # Scoring node
        ├── TaskSplitterNode.java     # Task decomposition node
        └── ResultMergerNode.java     # Result aggregation node

Configuration Details

agentic-rag:
  checker:
    minimum-score: 80      # Minimum passing score
    max-attempts: 3        # Maximum retry attempts

Extension Guide

Adding New Node Types

  1. Create new node class in graph/node package
  2. Implement process(RagState state) method
  3. Add node to graph definition

Adding New Scoring Dimensions

Modify ScoringNode class to include additional scoring criteria

Integrating Other Vector Databases

Update MultiRetrievalNode class to support alternative retrieval methods

Tags: Spring-AI-Alibaba RAG Multi-Agent Vector-Database DashScope

Posted on Sun, 10 May 2026 00:16:04 +0000 by meshi