Automatic RAG Pattern Optimization Engine
Project description
ragit
RAG toolkit for Python. Document loading, chunking, vector search, LLM integration.
Installation
pip install ragit
Quick Start
You must provide an embedding source: custom function, Ollama, or any provider.
Custom Embedding Function
from ragit import RAGAssistant
def my_embed(text: str) -> list[float]:
# Use any embedding API: OpenAI, Cohere, HuggingFace, etc.
return embedding_vector
assistant = RAGAssistant("docs/", embed_fn=my_embed)
results = assistant.retrieve("search query")
With LLM for Q&A
def my_embed(text: str) -> list[float]:
return embedding_vector
def my_generate(prompt: str, system_prompt: str = "") -> str:
return llm_response
assistant = RAGAssistant("docs/", embed_fn=my_embed, generate_fn=my_generate)
answer = assistant.ask("How does authentication work?")
With Ollama (nomic-embed-text)
from ragit import RAGAssistant
from ragit.providers import OllamaProvider
# Uses nomic-embed-text for embeddings (768d)
assistant = RAGAssistant("docs/", provider=OllamaProvider())
results = assistant.retrieve("search query")
Core API
assistant = RAGAssistant(
documents, # Path, list of Documents, or list of Chunks
embed_fn=..., # Embedding function: (str) -> list[float]
generate_fn=..., # LLM function: (prompt, system_prompt) -> str
provider=..., # Or use a provider instead of functions
chunk_size=512,
chunk_overlap=50
)
results = assistant.retrieve(query, top_k=3) # [(Chunk, score), ...]
context = assistant.get_context(query, top_k=3) # Formatted string
answer = assistant.ask(question, top_k=3) # Requires generate_fn/LLM
code = assistant.generate_code(request) # Requires generate_fn/LLM
Document Loading
from ragit import load_text, load_directory, chunk_text
doc = load_text("file.md")
docs = load_directory("docs/", "*.md")
chunks = chunk_text(text, chunk_size=512, chunk_overlap=50, doc_id="id")
Hyperparameter Optimization
from ragit import RagitExperiment, Document, BenchmarkQuestion
def my_embed(text: str) -> list[float]:
return embedding_vector
def my_generate(prompt: str, system_prompt: str = "") -> str:
return llm_response
docs = [Document(id="1", content="...")]
benchmark = [BenchmarkQuestion(question="...", ground_truth="...")]
experiment = RagitExperiment(
docs, benchmark,
embed_fn=my_embed,
generate_fn=my_generate
)
results = experiment.run(max_configs=20)
print(results[0]) # Best config
License
Apache-2.0 - RODMENA LIMITED
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
ragit-0.10.1.tar.gz
(39.8 kB
view details)
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
ragit-0.10.1-py3-none-any.whl
(45.5 kB
view details)
File details
Details for the file ragit-0.10.1.tar.gz.
File metadata
- Download URL: ragit-0.10.1.tar.gz
- Upload date:
- Size: 39.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
23fc190658b5a998841f5c933933c049e4957e37a414f1dd25676425cb321f5d
|
|
| MD5 |
1972706fdf56f6fba1354d3ccdd1f314
|
|
| BLAKE2b-256 |
0a84a5958742c8d92c266d537150338b16524f6d8484368fd0237ed473fab1d9
|
File details
Details for the file ragit-0.10.1-py3-none-any.whl.
File metadata
- Download URL: ragit-0.10.1-py3-none-any.whl
- Upload date:
- Size: 45.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2cf70e9bdafb81bffa91ca4fcd1492902203ce7a6e42dda07a706bddbadd3388
|
|
| MD5 |
d83fe82ca5a517f53702b1b66853c273
|
|
| BLAKE2b-256 |
f199f4bcf52c118e18ee3c974f96ed8275b798ddd10f15b530f8a0f4a126e420
|