Skip to main content
RagPack
Open-source · Self-hosted RAG

RAG infrastructure built for performance and low cost.

A single Go binary with embedded storage: LanceDB for vectors, SQLite for metadata. Add a RAG pipeline to your existing project in minutes.

Get started

See it in action

Ingest a document, query it, and get a grounded answer in under two minutes.

Why RagPack

A RAG solution shouldn't cost a fortune.

Most stacks reach for LangChain and Pinecone. They're fast to get a demo running, but the catch shows up later: what they cost to run and maintain as you grow.

The default stack
LangChain + Pinecone

Managed vector DB billed per pod/index. Extra services to run and keep patched. Costs scale with data long before usage justifies it.

RagPack
One Go binary

Storage is embedded directly in the process: LanceDB for vectors, SQLite for metadata. Nothing else to run, and it's comfortable on a $5 VPS or an EC2 t3.micro.

Features

Everything you need to ship RAG.

Semantic search

RAG endpoints with prompts baked in, so there's no prompt engineering needed to get started.

Hybrid retrieval

BM25 keyword search + vector search, merged with Reciprocal Rank Fusion using customizable weights.

Bring your own model

Ollama or TEI for fully local inference, or any OpenAI-compatible provider.

Flexible ingestion

Ingest documents from URLs, file uploads, or S3.

Client SDKs

JS/TS SDKs for dropping into an existing app.

Mongo-style filters

Filter on custom document properties.

{"$and": [
  {"category": {"$in": ["research","legal"]}},
  {"score": {"$gt": 0.8}}
]}

Smart refresh

Runs on a timer, only re-embeds and re-inserts chunks that actually changed.

Admin dashboard

Manage collections, documents, and queries in one place.

Built-in analytics

Embedding/LLM costs, usage metrics, and query evaluations.

Chunking strategies

Picked per file type.

Auto mode picks the right strategy based on the file's mime type, or you can set one yourself.

Context aware

Preserves headers as breadcrumbs.

Paragraph

Splits on paragraph boundaries.

Sliding window

Fixed 2000-char windows, 200-char overlap.

Row group

Row headers stay attached, for CSV/XLS.

Auto

Picks the right strategy from mime type.

RAGAS evaluations

Measured, not marketed.

Scored against SQuAD 2.0 (30 real questions, not RagPack's own docs) through the actual /rag endpoint, judged by gpt-4o-mini.

0.94
Faithfulness
0.81
Answer relevancy
0.97
Context precision
1.00
Context recall

Retrieval quality is also checked separately against BEIR's SciFact benchmark:

0.87
nDCG@10
1.00
Recall@100
reproduce it yourself:
$ python3 eval/run_eval.py --api-key <key> --model gpt-4o-mini
Supported formats
.txt
.md
.html
.pdf
.docx
.pptx
.xlsx
.csv
.json
.xml
Step 1

Start the service

Install the Ragpack CLI and start the full stack with one command. Ollama is included, so no API keys are needed to get started.

$ npx ragpack init
✔ Created .env.ragpack
 
$ npx ragpack start --profile ollama
✔ Pulling nomic-embed-text...
✔ API on :9000 · Admin UI on :3000
Step 2

Integrate with your app

Install the Ragpack TypeScript SDK and start querying. Works in Node.js and the browser.

import { RagPack } from "ragpack-js";
const client = new RagPack({
baseUrl: "http://localhost:9000",
apiKey: "rp_...",
});
// Get an LLM answer grounded in your docs
const { answer } = await client
.collection("my-docs")
.rag({ query: "how does auth work?" });
console.log(answer);

What can you build?

Docs chatbot

Let users ask questions about your documentation and get answers grounded in your content.

"How do I reset my password?"

Knowledge base search

Make internal wikis, SOPs, and runbooks searchable with natural language, not just keywords.

"What's our refund policy for enterprise customers?"

AI customer support

Ground your support chatbot in your own product docs so it only answers from what you've written.

"Why is my invoice showing the wrong amount?"

Code search

Ingest your codebase and let developers find relevant files, functions, or patterns semantically.

"Where do we handle Stripe webhook retries?"

FAQ

Do I need a GPU?

No. Ollama can run small embedding models on CPU, and HuggingFace TEI or any OpenAI-compatible provider are supported if you'd rather not run inference yourself.

Where does my data live?

Inside your own Docker volume: vectors in an embedded LanceDB, metadata in SQLite. Nothing leaves your infrastructure unless you choose a cloud embedding or LLM provider.

What file types can I ingest?

.txt, .md, .html, .pdf, .docx, .pptx, .xlsx, .csv, .json, .xml, via URL, S3, or direct file upload.

Can I use OpenAI instead of running models locally?

Yes. Embeddings support Ollama, HuggingFace TEI, or any OpenAI-compatible provider. The RAG answer step supports OpenAI, Ollama, or Anthropic.

Is there a hosted version?

Not currently. RagPack is self-hosted by design, via Docker Compose or npx ragpack, so it runs entirely on your own infrastructure.

Run your own RAG stack today.

Add a RAG pipeline to your existing project in minutes, no cloud bill required.

View on GitHub