Skip to main content

mini-rag-openrouter

PyPI version Python License

RAG (Retrieval-Augmented Generation) pipeline sederhana menggunakan OpenRouter sebagai gateway model embedding & chat, dan ChromaDB sebagai vector database lokal.

Fitur

  • Ingest dokumen .txt, .pdf, .docx dari satu folder sekaligus
  • Deteksi dokumen yang sudah pernah di-ingest (skip otomatis, hemat API call)
  • Vector search lokal via ChromaDB, tidak perlu server tambahan
  • Model embedding & chat bisa dikustomisasi lewat parameter
  • Tersedia contoh integrasi REST API (FastAPI)

Instalasi

pip install mini-rag-openrouter

Untuk contoh REST API (FastAPI), install dengan extra api:

pip install "mini-rag-openrouter[api]"

Alur Kerja

Ada dua alur utama: ingest dokumen (dilakukan sekali per dokumen) dan tanya-jawab (dilakukan tiap ada pertanyaan). Keduanya berbagi vector database ChromaDB yang sama.

flowchart TD
    subgraph ingest ["📥 Ingest Dokumen (sekali per dokumen)"]
        A["Dokumen<br/>.txt / .pdf / .docx"] --> B["Chunking<br/>(potong jadi bagian kecil, lokal)"]
        B --> C["Embedding<br/>(OpenRouter API)"]
        C --> D[("ChromaDB<br/>(simpan vector)")]
    end

    subgraph query ["💬 Tanya-Jawab (tiap ada pertanyaan)"]
        E["Pertanyaan User"] --> F["Embedding<br/>(OpenRouter API)"]
        F --> G["Cari vector mirip<br/>(ChromaDB, lokal)"]
        G --> H["Generation<br/>(Model Chat via OpenRouter)"]
        H --> I["Jawaban + Sumber"]
    end

    D -.-> G

Penjelasan tiap tahap:

Tahap Dikerjakan oleh Butuh API?
Chunking Kode Python lokal Tidak
Embedding Model embedding via OpenRouter Ya
Simpan & cari vector ChromaDB (lokal, di disk) Tidak
Generation Model chat via OpenRouter Ya

Pemakaian Cepat

from mini_rag import RAGPipeline

rag = RAGPipeline(
    api_key="sk-or-xxxxxxxx",   # API key dari openrouter.ai
    chroma_path="./chroma_db",  # lokasi penyimpanan vector database
)

# Ingest dokumen dari folder (mendukung .txt, .pdf, .docx)
rag.ingest_folder("./dokumen")

# Tanya
result = rag.query("Apa itu ChromaDB?")
print(result["answer"])
print(result["sources"])

Kustomisasi Model

rag = RAGPipeline(
    api_key="sk-or-xxxxxxxx",
    embed_model="openai/text-embedding-3-small",
    chat_model="minimax/minimax-m3:free",
)

Catatan: semua dokumen dalam satu chroma_path harus pakai embed_model yang sama sejak awal. Mengganti model embedding di tengah jalan akan membuat vector lama tidak bisa dibandingkan dengan vector baru.

Struktur Project

src/mini_rag/
├── __init__.py         # entry point (RAGPipeline)
├── pipeline.py          # class RAGPipeline — orkestrasi semua langkah
├── chunking.py           # potong dokumen jadi chunk kecil
├── embeddings.py          # panggil endpoint /embeddings OpenRouter
├── vector_store.py         # wrapper ChromaDB (simpan & cari vector)
├── generation.py            # panggil endpoint /chat/completions OpenRouter
└── document_loader.py        # baca .txt / .pdf / .docx

Contoh REST API

Lihat examples/app.py untuk contoh integrasi ke FastAPI (endpoint /ingest dan /query).

cd examples
cp .env.example .env   # isi OPENROUTER_API_KEY
uvicorn app:app --reload

Endpoint yang tersedia:

Method Path Fungsi
GET /health Cek server hidup
POST /ingest Upload dokumen
POST /query Tanya, dapat jawaban + sumber

Lisensi

MIT

Metadata

Release files for mini-rag-openrouter 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mini-rag-openrouter 0.1.1
File Size Uploaded
mini_rag_openrouter-0.1.1.tar.gz 5.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mini-rag-openrouter 0.1.1
File Interpreter ABI Platform
mini_rag_openrouter-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 12.3 kB

Release files / mini_rag_openrouter-0.1.1.tar.gz

Download URL mini_rag_openrouter-0.1.1.tar.gz
Size 5.6 kB
Tags Source
SHA-256 checksum
How to use checksums
aa25d65122ace8903b30093504088354af3efe13fd8055bcd6accde1df88e2ee
BLAKE2b-256 checksum
How to use checksums
f811a37fe05c6e50d4ded17fac21145ebc43555c84f164004f3db6b4faf87d9e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / mini_rag_openrouter-0.1.1-py3-none-any.whl

Download URL mini_rag_openrouter-0.1.1-py3-none-any.whl
Size 6.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5b4f9b0cca45e5ab030330623ac3516dbfa9a78aa87dda10a42c6c343020aa5d
BLAKE2b-256 checksum
How to use checksums
f66c75abee04fa5ed4684f956a77921f27a083ac2a1b5ca35c381303e35ee09d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page