Solution Topology
How the .NET solution separates orchestration, API, worker, core services, and tests.
The project map from the tutorial
RAG.AppHost Aspire orchestration
RAG.Api ASP.NET Core API + static UI
RAG.Worker background ingestion loop
RAG.Core shared domain, providers, storage, vector, EF Core
RAG.Tests focused unit testsHow the .NET solution separates orchestration, API, worker, core services, and tests.
RAG.AppHost Aspire orchestration
RAG.Api ASP.NET Core API + static UI
RAG.Worker background ingestion loop
RAG.Core shared domain, providers, storage, vector, EF Core
RAG.Tests focused unit tests
This shape is useful because each project has a clear job:
RAG.Apiaccepts user input and returns results.RAG.Workerperforms slow ingestion work outside the request path.RAG.Coreholds reusable logic and contracts.RAG.AppHostwires local infrastructure together.
The user uploads a document to the API, but the API does not process the book immediately. It stores the file, creates a metadata record, and returns quickly. The worker later picks up pending documents and runs extraction, enrichment, chunking, embedding, and vector indexing.
That asynchronous workflow matters because embedding a large PDF may take minutes. Blocking the upload request until all vectors are created would produce timeouts and a poor user experience.