How praveenks30/spring-ai works
This repository is a set of independent Spring AI demos, not one application. The clearest fully evidenced workflow is RAG: an HTTP request triggers document loading and vector indexing, then retrieval-augmented chat returns an answer. Other demos cover vector search, Ollama chat, Azure Entra ID configuration, function-calling weather, file reading, and structured output. Several of those branches are represented from the tree only; their connections are left unverified rather than inferred.
Main entry points: AIController.java RAG endpoint · AIService.java Document indexing · WeatherService.java Weather function · WeatherServieBuilder.java Weather API client
Components 32
RAG Chat
- RAG endpoint
springai_chat_client_rag/src/main/java/com/course/springai_chat_client_rag/controller/AIController.java - Document indexing
springai_chat_client_rag/src/main/java/com/course/springai_chat_client_rag/service/AIService.java - Sample text
springai_chat_client_rag/src/main/resources/data/sample.txt - Vector store
- Chat client
Vector Search
- Search endpoint
springai-vectorsearch-demo/src/main/java/com/example/springaivectorsearchdemo/controller/VectorController.java - Vector search
springai-vectorsearch-demo/src/main/java/com/example/springaivectorsearchdemo/services/VectorServices.java - Store configuration
springai-vectorsearch-demo/src/main/java/com/example/springaivectorsearchdemo/config/VectorStoreConfig.java - JSON query endpoint
springai-vectorsearch-queryjson/src/main/java/com/example/springaivectorsearchqueryjson/controller/VectorController.java - JSON query search
springai-vectorsearch-queryjson/src/main/java/com/example/springaivectorsearchqueryjson/services/VectorService.java - Query store config
springai-vectorsearch-queryjson/src/main/java/com/example/springaivectorsearchqueryjson/config/VectorStoreConfig.java - Bike records
springai-vectorsearch-queryjson/src/main/resources/data/bikes.json
Chat Integrations
- Ollama chat endpoint
springai_ollama_chat/src/main/java/com/course/springai_ollama_chat/controller/AIController.java - Ollama chat service
springai_ollama_chat/src/main/java/com/course/springai_ollama_chat/service/AIService.java - GPT-4o endpoint
springai-gpt-4o-demo/src/main/java/com/example/springaigpt4odemo/controller/chatController.java - GPT-4o chat service
springai-gpt-4o-demo/src/main/java/com/example/springaigpt4odemo/service/ChatService.java - Entra AI endpoint
springai_openai_entraID/src/main/java/com/course/springai_openai_entraID/controller/AIController.java - Entra configuration
springai_openai_entraID/src/main/java/com/course/springai_openai_entraID/config/Config.java
Weather Functions
- Weather query endpoint
springai_openai_function_calling/src/main/java/com/course/springai_openai_function_calling/controller/AIController.java - Function-enabled chat
springai_openai_function_calling/src/main/java/com/course/springai_openai_function_calling/service/AIService.java - Function registration
springai_openai_function_calling/src/main/java/com/course/springai_openai_function_calling/config/Config.java - Weather function
springai_openai_function_calling/src/main/java/com/course/springai_openai_function_calling/service/WeatherService.java - Weather API client
springai_openai_function_calling/src/main/java/com/course/springai_openai_function_calling/service/WeatherServieBuilder.java - Weather data types
springai_openai_function_calling/src/main/java/com/course/springai_openai_function_calling/dto/Weather.java
File And Structured Output
- File reader endpoint
springai_files_textreader/src/main/java/com/course/springai_files_textreader/controller/AIController.java - Text reader service
springai_files_textreader/src/main/java/com/course/springai_files_textreader/service/AIService.java - File vector config
springai_files_textreader/src/main/java/com/course/springai_files_textreader/config/VectorStoreConfig.java - Story text
springai_files_textreader/src/main/resources/data/story.txt - Structured chat endpoint
springai_structured_output_chat_client/src/main/java/com/course/springai_structured_output_chat_client/controller/AIChatController.java - Book response model
springai_structured_output_chat_client/src/main/java/com/course/springai_structured_output_chat_client/dto/BooksInfo.java
Other components
- HTTP user
- Weather API
Connections 34
- HTTP user → RAG endpoint: sends request
springai_chat_client_rag/src/main/java/com/course/springai_chat_client_rag/controller/AIController.java - RAG endpoint → Document indexing: loads documents
springai_chat_client_rag/src/main/java/com/course/springai_chat_client_rag/controller/AIController.java - Document indexing → Sample text: reads
springai_chat_client_rag/src/main/java/com/course/springai_chat_client_rag/service/AIService.java - Document indexing → Vector store: adds chunks
springai_chat_client_rag/src/main/java/com/course/springai_chat_client_rag/service/AIService.java - RAG endpoint → Vector store: retrieves context
springai_chat_client_rag/src/main/java/com/course/springai_chat_client_rag/controller/AIController.java - RAG endpoint → Chat client: requests answer
springai_chat_client_rag/src/main/java/com/course/springai_chat_client_rag/controller/AIController.java - RAG endpoint → HTTP user: returns answer
springai_chat_client_rag/src/main/java/com/course/springai_chat_client_rag/controller/AIController.java - HTTP user → Search endpoint: queries
- Search endpoint → Vector search: delegates search
- Store configuration → Vector search: configures store
- HTTP user → JSON query endpoint: queries JSON
- JSON query endpoint → JSON query search: delegates search
- Query store config → JSON query search: configures store
- Bike records → JSON query search: provides records
- HTTP user → Ollama chat endpoint: sends request
springai_ollama_chat/src/main/java/com/course/springai_ollama_chat/controller/AIController.java - Ollama chat endpoint → Ollama chat service: delegates chat
springai_ollama_chat/src/main/java/com/course/springai_ollama_chat/controller/AIController.java - HTTP user → GPT-4o endpoint: sends request
- GPT-4o endpoint → GPT-4o chat service: delegates chat
- HTTP user → Entra AI endpoint: sends request
- Entra configuration → Entra AI endpoint: configures AI
- HTTP user → Weather query endpoint: submits query
springai_openai_function_calling/src/main/java/com/course/springai_openai_function_calling/controller/AIController.java - Weather query endpoint → Function-enabled chat: requests weather
springai_openai_function_calling/src/main/java/com/course/springai_openai_function_calling/controller/AIController.java - Function registration → Weather function: registers function
springai_openai_function_calling/src/main/java/com/course/springai_openai_function_calling/config/Config.java - Weather function → Weather API client: gets weather
springai_openai_function_calling/src/main/java/com/course/springai_openai_function_calling/service/WeatherService.java - Weather API client → Weather API: calls API
springai_openai_function_calling/src/main/java/com/course/springai_openai_function_calling/service/WeatherServieBuilder.java - Weather function → Weather data types: uses types
springai_openai_function_calling/src/main/java/com/course/springai_openai_function_calling/service/WeatherService.java - Weather API client → Weather data types: maps response
springai_openai_function_calling/src/main/java/com/course/springai_openai_function_calling/service/WeatherServieBuilder.java - Function-enabled chat → Function registration: invokes function
- HTTP user → File reader endpoint: sends request
- File reader endpoint → Text reader service: delegates reading
- File vector config → Text reader service: configures store
- Text reader service → Story text: reads text
- HTTP user → Structured chat endpoint: sends request
- Structured chat endpoint → Book response model: uses response type