Modular RAG framework with support for FAISS, Weaviate, and Hybrid Search.
Project description
Hayagriva – Modular Retrieval-Augmented Generation Framework
सर्वविद्याप्रसूत्यर्थं हयग्रीवोऽवतारतः वेदान् संरक्ष्य जगतां हितकारी सदा भवेत्
"To restore and protect all knowledge, Hayagriva has manifested. He safeguards the Vedas for the good of the world."
Hayagriva is a lightweight, modular Retrieval-Augmented Generation (RAG) framework that connects LLMs with efficient document retrieval. It focuses on grounded answers, fast iteration, and easy integration for developers and research teams.
Key Features
Retrieval-Augmented Generation
Combine contextual retrieval with LLMs to produce grounded, source-aware answers.
Supported LLM backends today: Groq and OpenAI.
Retrieval Strategies
Hayagriva supports multiple retrieval strategies (depending on vector store):
- Vector Search: Dense semantic retrieval.
- BM25: Sparse keyword retrieval (Weaviate).
- Hybrid Search: Vector + keyword with configurable weighting (Weaviate).
Chunking Strategies
- Word (Default): Sliding window on word count.
- Recursive: Split by separators to preserve structure.
- Semantic: Embedding-aware topic shifts.
- Hierarchical: Parent/child chunking for broad + precise context.
Modular Vector Stores
- FAISS: Lightweight, in-memory vector store.
- Weaviate: Production-grade vector DB with hybrid/BM25.
- Pinecone: Managed vector DB (vector-only search in current implementation).
Flexible Document Handling
- Programmatic document ingestion.
- CLI ingestion of files and directories.
- Directory ingestion reads
.txtfiles by default.
- Directory ingestion reads
Automatic chunking and metadata assignment are built in.
Installation
Default (Lightweight)
Core libraries only:
pip install hayagriva
CPU Support (Recommended for Local Testing)
Installs sentence-transformers and faiss-cpu:
pip install "hayagriva[cpu]"
GPU Support
Installs sentence-transformers and faiss-gpu:
pip install "hayagriva[cuda]"
Python Usage
Basic Example (FAISS + Vector Search)
from hayagriva import Hayagriva, HayagrivaConfig
config = HayagrivaConfig(
backend="groq",
api_key="YOUR_GROQ_KEY",
model="llama-3.1-8b-instant",
)
rag = Hayagriva(config)
rag.add_documents(["Hayagriva restores forgotten knowledge."])
response = "".join(rag.ask("Who retrieved the lost Vedas?"))
print(response)
Structured Response (Answer + Metadata)
resp = rag.ask("Who retrieved the lost Vedas?", return_metadata=True)
print(resp["answer"])
print(resp["chunks"][0])
print(resp["retrieval"]["strategy"])
Returned metadata includes: retrieved chunk ranks/scores, chunking strategy, retrieval strategy, model backend, and vector store.
Customizing Embeddings
config = HayagrivaConfig(
backend="groq",
api_key="YOUR_KEY",
embedding_model="intfloat/multilingual-e5-large",
)
Advanced Example (Weaviate + Hybrid Search)
from hayagriva import Hayagriva, HayagrivaConfig
from hayagriva.config import WeaviateConfig, RetrievalConfig, ChunkingConfig
weaviate_config = WeaviateConfig(
url="http://localhost:8080",
index_name="HayagrivaDocs",
)
config = HayagrivaConfig(
backend="groq",
api_key="YOUR_GROQ_KEY",
vector_store="weaviate",
weaviate=weaviate_config,
retrieval=RetrievalConfig(strategy="hybrid", alpha=0.5, top_k=4),
chunking=ChunkingConfig(strategy="recursive", chunk_size=500, overlap=50),
)
rag = Hayagriva(config)
rag.add_documents(["Hayagriva is an avatar of Vishnu."])
for token in rag.ask("Who is Hayagriva?"):
print(token, end="", flush=True)
CLI Usage
Ingest Files
hayagriva ingest ./docs
Query
hayagriva query "What is RAG?"
Requirements
- Python 3.10+
- API key for Groq or OpenAI
Optional (only if you use local embeddings or FAISS):
- sentence-transformers
- faiss-cpu or faiss-gpu
If using external vector databases:
- weaviate-client
- pinecone-client
Roadmap
Expanded LLM Provider Support
- Anthropic Claude
- Google Gemini
- DeepSeek
- Local GGUF models and llama.cpp
Additional Vector Database Integration
- ChromaDB
- Additional pluggable backends
Memory-Augmented Chat
- Multi-turn memory
- Embedding-based long-term memory
- Summarization-based memory compression
Use Cases
- Retrieval-augmented assistants
- Knowledge-base and enterprise search
- Research and benchmarking of RAG pipelines
- Lightweight production deployments
- Internal document Q&A systems
Contributing
Contributions to model integrations, retrieval modules, and documentation are welcome. Submit issues or pull requests.
Support
For questions, bugs, or feature requests, open an issue on the project repository.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hayagriva-0.2.4.tar.gz.
File metadata
- Download URL: hayagriva-0.2.4.tar.gz
- Upload date:
- Size: 19.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b243013c81b8febdf36ca693f11c83cdfa9e58aafd033d91ea0caec1476170ef
|
|
| MD5 |
a078b63c6f582fbfb114ccb10db15d15
|
|
| BLAKE2b-256 |
cc70694500313030d84dfefcf64a424a065c9ef2b383904b17c47c6bd4e3f2b4
|
File details
Details for the file hayagriva-0.2.4-py3-none-any.whl.
File metadata
- Download URL: hayagriva-0.2.4-py3-none-any.whl
- Upload date:
- Size: 24.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f3fe708f640f6b9d73c5bc7f6503dd59c59cc913b720b38abea8150944f2643
|
|
| MD5 |
69849b6015b00ef2ad73f1f2dd763847
|
|
| BLAKE2b-256 |
d3e8e176e7410f6bf1139f5ab908370426fae5c74108e6b62da741d8927b4e77
|