If you've ever built a RAG (Retrieval-Augmented Generation) system, you know the pain: every new project means rewriting the same boilerplate — vector store setup, embeddings, chunking, LLM wiring. I got tired of it, so I packaged it up.
pyragcore is a modular RAG library built on FAISS and Ollama. The idea is simple: give you a solid foundation so you can focus on your actual use case instead of reinventing the plumbing every time.
What I'm most proud of is that it runs entirely locally — no external APIs, no data leaving your machine. Just Ollama for the LLM and SentenceTransformers for embeddings.
What's inside
- FAISS vector store with persistence, deduplication, and metadata filtering
- Semantic search with MMR support
- Local LLM inference via Ollama
- Modular installs — grab only what you need
- Abstract base classes so you can extend it your way
How to install it:
pip install pyragcore[all]
from pyragcore import BasePipeline
class MyPipeline(BasePipeline):
def ingest(self, source: str) -> str:
# your ingestion logic here
...
pipeline = MyPipeline(persist_dir="./memory", output_folder="./output")
source_id = pipeline.ingest("./my_document.pdf")
answer = pipeline.ask("What is this document about?", source_id=source_id)
print(answer)
It's still early days (v0.1.11) and I'm actively working on it, but it's already powering a couple of projects I built — a document chat bot.
Would love any feedback, ideas, or contributions. If you build something with it, let me know!
Top comments (0)