What I am building

I develop LocalAI-RAG to ask questions about large codebases without reducing them to anonymous text chunks. I combine structured output from RoslynIndexer, relationships between code symbols and SQL objects, and retrieval in Weaviate. The pipeline does not stop at the first search results: it can assemble context, follow relationships, and manage token budgets.

Why retrieval alone is not enough

In a conventional RAG system, even a relevant method body may be useless without its callers, database access, or subsequent processing. That is why I use a dependency graph: retrieval finds a starting point, then subsequent actions collect related fragments. The resulting evidence follows program structure rather than vector similarity alone.

A pipeline as a contract, not a hard-coded script

I describe analysis flows in YAML: retrieval selection, node-text fetching, context budgeting, model invocation, sufficiency checking, and optional iterations. Pipelines can inherit settings, while lockfiles freeze behavior versions and resolved defaults. Engine changes should not silently alter an existing workflow.

Security belongs inside retrieval

I separate permission to run a pipeline from permission to retrieve particular documents. Data can carry ACL and classification metadata, and policies govern local versus external model use. An important limitation is explicit: snapshot labels do not automatically change when source permissions change.

Project scope

  • Weaviate BYOV: semantic, BM25, and hybrid search; separately generated embeddings
  • Dependency graphs spanning C#, SQL, and EF relationships
  • YAML pipelines: actions, routing, inheritance, validation, and lockfiles
  • Snapshots and SnapshotSets as explicit versioned analysis contexts
  • ACL, data classification, pipeline authorization, and LLM usage policies
  • Tracing, context budgeting, diagnostics, and contract tests