RAG Pipeline¶
Vector store, embedding providers, and graph-expanded semantic search.
RAG (Retrieval-Augmented Generation) subsystem for code-aware context (M6-deferred).
Provides vector store abstraction, embedding providers, and a search pipeline that expands results using the project’s existing GraphStore.
Decision: D-017
Abstract vector store interface with Chroma backend.
chromadb is a core dependency. Chroma operates in two modes: - Embedded PersistentClient: no server needed, local persistence - HttpClient: connects to the Chroma Docker service (docker compose up -d)
Follows the D-014 pattern (abstract base + factory function). Decision: D-017
- class curate_ipsum.rag.vector_store.VectorDocument(id, text, embedding=None, metadata=<factory>)[source]¶
Bases:
objectA document stored in the vector store.
- class curate_ipsum.rag.vector_store.VectorSearchResult(id, text, score, metadata=<factory>)[source]¶
Bases:
objectA single search result from the vector store.
- class curate_ipsum.rag.vector_store.VectorStore[source]¶
Bases:
ABCAbstract interface for vector storage and similarity search.
Implementations persist document embeddings and support approximate nearest-neighbor queries.
- abstractmethod add(documents)[source]¶
Add documents to the store. Upserts on matching IDs.
- Parameters:
documents (list[VectorDocument])
- Return type:
None
- abstractmethod search(query_embedding, top_k=10, filter_metadata=None)[source]¶
Search for similar documents by embedding vector.
- class curate_ipsum.rag.vector_store.ChromaVectorStore(collection_name='code_nodes', persist_directory=None, chroma_host=None, chroma_port=8000)[source]¶
Bases:
VectorStoreChroma-based vector store (core dependency).
Operates in two modes: - Embedded (PersistentClient): no server, local persistence - Client/server (HttpClient): connects to docker compose chroma service
Set CHROMA_HOST env var to connect to a remote Chroma instance, otherwise defaults to embedded mode.
Decision: D-017
- Parameters:
- add(documents)[source]¶
Add documents to the store. Upserts on matching IDs.
- Parameters:
documents (list[VectorDocument])
- Return type:
None
- curate_ipsum.rag.vector_store.build_vector_store(backend='chroma', **kwargs)[source]¶
Factory: create a VectorStore of the requested type.
- Parameters:
- Returns:
VectorStore instance
- Raises:
ValueError – Unknown backend
- Return type:
Embedding provider abstraction with local sentence-transformers backend.
sentence-transformers and all-MiniLM-L6-v2 are core dependencies (not optional). Alternative/larger models can be installed via [embeddings-gpu] or [embeddings-large].
Decision: D-017
- class curate_ipsum.rag.embedding_provider.EmbeddingProvider[source]¶
Bases:
ABCAbstract interface for text → embedding vector conversion.
- class curate_ipsum.rag.embedding_provider.LocalEmbeddingProvider(model_name='all-MiniLM-L6-v2')[source]¶
Bases:
EmbeddingProviderLocal embedding via sentence-transformers.
Default model: all-MiniLM-L6-v2 (384 dimensions, fast, good for code). Install [embeddings-gpu] for GPU acceleration or [embeddings-large] for InstructorEmbedding support.
- Parameters:
model_name (str)
- class curate_ipsum.rag.embedding_provider.MockEmbeddingProvider(dim=384)[source]¶
Bases:
EmbeddingProviderMock embedding provider for testing. Returns fixed-length zero vectors.
- Parameters:
dim (int)
RAG search pipeline with graph-expanded retrieval.
Vector top-k → graph expansion (callers/callees via GraphStore) → rerank by combined score → pack into LLM context.
Decision: D-017
- class curate_ipsum.rag.search.RAGConfig(vector_top_k=20, expansion_hops=1, caller_decay=0.7, callee_decay=0.8, max_context_tokens=4000, project_id='default')[source]¶
Bases:
objectConfiguration for the RAG search pipeline.
- Parameters:
- class curate_ipsum.rag.search.RAGResult(node_id, text, score, source='vector', metadata=<factory>)[source]¶
Bases:
objectA single result from the RAG pipeline.
- class curate_ipsum.rag.search.RAGPipeline(vector_store, embedding_provider, graph_store=None, config=None)[source]¶
Bases:
objectCode-aware retrieval pipeline.
Combines vector similarity search with graph-based expansion using the project’s existing GraphStore (D-014) for caller/callee relationships.
Usage:
pipeline = RAGPipeline( vector_store=chroma_store, embedding_provider=local_embedder, graph_store=sqlite_graph_store, # optional ) results = pipeline.search("function that validates input")
- Parameters:
vector_store (VectorStore)
embedding_provider (EmbeddingProvider)
graph_store ('GraphStore' | None)
config (RAGConfig | None)