freshcrate
Home > Databases > OneRAG

OneRAG

Production-ready RAG Framework (Python/FastAPI). 1-line config swaps: 6 Vector DBs (Weaviate, Pinecone, Qdrant, ChromaDB, pgvector, MongoDB), 5 LLMs (Gemini, OpenAI, Claude, Ollama, OpenRouter). OpenA

Description

Production-ready RAG Framework (Python/FastAPI). 1-line config swaps: 6 Vector DBs (Weaviate, Pinecone, Qdrant, ChromaDB, pgvector, MongoDB), 5 LLMs (Gemini, OpenAI, Claude, Ollama, OpenRouter). OpenAI-compatible API. 2100+ tests.

README

OneRAG Logo

5๋ถ„ ์•ˆ์— ์‹œ์ž‘ํ•˜๊ณ , ์„ค์ • 1์ค„๋กœ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ต์ฒดํ•˜๋Š” Production-ready RAG ๋ฐฑ์—”๋“œ

CI License: MIT Python 3.11+ Live Demo GitHub Stars ํ•œ๊ตญ์–ด | English

๋ผ์ด๋ธŒ ๋ฐ๋ชจ ์ฒดํ—˜ํ•˜๊ธฐ ยท ์ ‘๊ทผ์ฝ”๋“œ: 1127


TL;DR

git clone https://github.com/youngouk/OneRAG.git && cd OneRAG && uv sync
# ๐Ÿณ Docker ์žˆ์œผ๋ฉด โ†’ Full API ์„œ๋ฒ„ (Weaviate + FastAPI + Swagger UI)
cp quickstart/.env.quickstart .env   # GOOGLE_API_KEY๋งŒ ์„ค์ •
make start                            # โ†’ http://localhost:8000/docs

# ๐Ÿ’ป Docker ์—†์œผ๋ฉด โ†’ ๋กœ์ปฌ CLI ์ฑ—๋ด‡ (์„ค์น˜๋งŒ์œผ๋กœ ๋ฐ”๋กœ ์‹คํ–‰)
make easy-start                       # โ†’ ํ„ฐ๋ฏธ๋„์—์„œ ๋ฐ”๋กœ ๋Œ€ํ™”

# ๐Ÿ”’ API ํ‚ค ์—†์ด โ†’ Ollama ๋กœ์ปฌ LLM์œผ๋กœ ์™„์ „ ์˜คํ”„๋ผ์ธ ๋™์ž‘
ollama pull llama3.2 && make easy-start

๋ฐ๋ชจ

OneRAG CLI Demo


์™œ OneRAG์ธ๊ฐ€?

ํ•˜๋‚˜์˜ ์ฝ”๋“œ๋ฒ ์ด์Šค๋กœ ๋ชจ๋“  RAG ์ปดํฌ๋„ŒํŠธ๋ฅผ ์กฐ๋ฆฝํ•ฉ๋‹ˆ๋‹ค.

  • ์„ค์ •๋งŒ ๋ฐ”๊พธ๋ฉด ๋ โ€” Vector DB(6์ข…), LLM(5์ข…), Reranker(6์ข…), Cache(3์ข…) ๋ชจ๋‘ .env ๋˜๋Š” YAML๋กœ ๊ต์ฒด
  • API ํ‚ค ์—†์ด ์‹œ์ž‘ โ€” Ollama ๋กœ์ปฌ LLM์œผ๋กœ ์ธํ„ฐ๋„ท ์—†์ด๋„ ์™„์ „ ๋™์ž‘
  • OpenAI SDK ํ˜ธํ™˜ โ€” ๊ธฐ์กด OpenAI ์ฝ”๋“œ ๊ทธ๋Œ€๋กœ OneRAG์— ์—ฐ๊ฒฐ (/v1/chat/completions)
  • 2,200+ ํ…Œ์ŠคํŠธ โ€” ํ”„๋กœ๋•์…˜ ๊ฒ€์ฆ๋œ ์•ˆ์ •์„ฑ, CI/CD ์™„๋น„
  • PoC์—์„œ ํ”„๋กœ๋•์…˜๊นŒ์ง€ โ€” ๋™์ผํ•œ ์ฝ”๋“œ๋ฒ ์ด์Šค๋กœ ํ™•์žฅ, ์žฌ๊ตฌ์ถ• ๋ถˆํ•„์š”

๋ผ์ด๋ธŒ ๋ฐ๋ชจ์—์„œ ๋ฐ”๋กœ ์ฒดํ—˜ํ•ด๋ณด์„ธ์š” (์ ‘๊ทผ์ฝ”๋“œ: 1127)

์•„ํ‚คํ…์ฒ˜ ํ•œ๋ˆˆ์— ๋ณด๊ธฐ

OneRAG Architecture


์‹œ์ž‘ํ•˜๊ธฐ

Full API ์„œ๋ฒ„ (make start) CLI ์ฑ—๋ด‡ (make easy-start)
Docker ํ•„์š” ๋ถˆํ•„์š”
Vector DB Weaviate (ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰) ChromaDB (๋กœ์ปฌ ํŒŒ์ผ)
์ธํ„ฐํŽ˜์ด์Šค REST API + Swagger UI ํ„ฐ๋ฏธ๋„ CLI
LLM 5์ข… (Gemini, OpenAI, Claude, OpenRouter, Ollama) Gemini / OpenRouter / Ollama
์šฉ๋„ ํ”„๋กœ๋•์…˜, API ํ†ตํ•ฉ, ํŒ€ ๊ฐœ๋ฐœ ํ•™์Šต, ์ฒดํ—˜, ๋น ๋ฅธ PoC

๋ฐฉ๋ฒ• A: Full API ์„œ๋ฒ„ (Docker)

git clone https://github.com/youngouk/OneRAG.git
cd OneRAG && uv sync

cp quickstart/.env.quickstart .env
# .env ํŒŒ์ผ์—์„œ GOOGLE_API_KEY ์„ค์ •
# (๋ฌด๋ฃŒ: https://aistudio.google.com/apikey)

make start

๋! http://localhost:8000/docs์—์„œ ๋ฐ”๋กœ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

make start-down  # ์ข…๋ฃŒ

๋ฐฉ๋ฒ• B: ๋กœ์ปฌ CLI ์ฑ—๋ด‡ (Docker ๋ถˆํ•„์š”)

Docker ์„ค์น˜ ์—†์ด ํ„ฐ๋ฏธ๋„์—์„œ ๋ฐ”๋กœ RAG ๊ฒ€์ƒ‰ + AI ๋‹ต๋ณ€์„ ์ฒดํ—˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

git clone https://github.com/youngouk/OneRAG.git
cd OneRAG && uv sync

make easy-start

์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ 25๊ฐœ๊ฐ€ ์ž๋™ ์ ์žฌ๋˜๊ณ , ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰(Dense + BM25)์ด ๋ฐ”๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. AI ๋‹ต๋ณ€ ์ƒ์„ฑ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด API ํ‚ค๋ฅผ ํ•˜๋‚˜ ์„ค์ •ํ•˜์„ธ์š”:

# ์…‹ ์ค‘ ํ•˜๋‚˜๋งŒ ์„ค์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค
export GOOGLE_API_KEY="๋ฐœ๊ธ‰๋ฐ›์€ํ‚ค"       # ๋ฌด๋ฃŒ: https://aistudio.google.com/apikey
export OPENROUTER_API_KEY="๋ฐœ๊ธ‰๋ฐ›์€ํ‚ค"   # https://openrouter.ai/keys
ollama pull llama3.2                     # API ํ‚ค ์—†์ด ๋กœ์ปฌ LLM ์‚ฌ์šฉ

OneRAG๊ฐ€ ์ฒ˜์Œ์ด๋ผ๋ฉด? make easy-start๋กœ ์‹œ์ž‘ํ•ด์„œ ์ฑ—๋ด‡์—๊ฒŒ ์ง์ ‘ ๋ฌผ์–ด๋ณด์„ธ์š”. "ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰์ด ๋ญ์•ผ?", "RAG ํŒŒ์ดํ”„๋ผ์ธ์ด ์–ด๋–ป๊ฒŒ ๋ผ?" โ€” ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ์— ๋‹ต์ด ์žˆ์Šต๋‹ˆ๋‹ค.


OpenAI ํ˜ธํ™˜ API

๊ธฐ์กด OpenAI SDK ์ฝ”๋“œ๋ฅผ ์ˆ˜์ • ์—†์ด OneRAG์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

from openai import OpenAI

client = OpenAI(base_url="http://localhost:8000/v1", api_key="not-needed")

# RAG ๊ฒ€์ƒ‰ + AI ๋‹ต๋ณ€ ์ƒ์„ฑ
response = client.chat.completions.create(
    model="gemini",  # ๋˜๋Š” ollama/llama3.2, openrouter/google/gemini-2.0-flash
    messages=[{"role": "user", "content": "RAG๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?"}],
)
print(response.choices[0].message.content)

์ง€์› ์—”๋“œํฌ์ธํŠธ:

  • POST /v1/chat/completions โ€” ์ฑ„ํŒ… ์™„๋ฃŒ (์ŠคํŠธ๋ฆฌ๋ฐ ์ง€์›)
  • GET /v1/models โ€” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋ธ ๋ชฉ๋ก

๋ชจ๋ธ ์„ ํƒ:

ํ˜•์‹ ์˜ˆ์‹œ ์„ค๋ช…
provider gemini, ollama, claude ๊ธฐ๋ณธ ๋ชจ๋ธ ์‚ฌ์šฉ
provider/model ollama/qwen2.5:3b ํŠน์ • ๋ชจ๋ธ ์ง€์ •
openrouter/vendor/model openrouter/google/gemini-2.0-flash OpenRouter ๊ฒฝ์œ 

LangChain, Cursor, Open WebUI ๋“ฑ OpenAI SDK๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ๋„๊ตฌ์™€ ๋ฐ”๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.


์ปดํฌ๋„ŒํŠธ ๊ต์ฒดํ•˜๊ธฐ

.env ๋˜๋Š” YAML ์„ค์ •๋งŒ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# Vector DB ๊ต์ฒด
VECTOR_DB_PROVIDER=weaviate  # ๋˜๋Š” chroma, pinecone, qdrant, pgvector, mongodb

# LLM ๊ต์ฒด
LLM_PROVIDER=google          # ๋˜๋Š” openai, anthropic, openrouter, ollama
# ๋ฆฌ๋žญ์ปค ์ถ”๊ฐ€ (app/config/features/reranking.yaml)
reranking:
  approach: "cross-encoder"  # ๋˜๋Š” late-interaction, llm, local
  provider: "jina"           # ๋˜๋Š” cohere, google, openai, openrouter, sentence-transformers

# ๊ธฐ๋Šฅ On/Off
cache:     { enabled: true, type: "redis" }    # ๋˜๋Š” memory, semantic
graph_rag: { enabled: true }                    # ์ง€์‹ ๊ทธ๋ž˜ํ”„ ๊ด€๊ณ„ ์ถ”๋ก 
pii:       { enabled: true }                    # ๊ฐœ์ธ์ •๋ณด ๋งˆ์Šคํ‚น

์กฐ๋ฆฝ ๊ฐ€๋Šฅํ•œ ๋ธ”๋ก๋“ค

์นดํ…Œ๊ณ ๋ฆฌ ์„ ํƒ์ง€ ๋ณ€๊ฒฝ ๋ฐฉ๋ฒ•
Vector DB Weaviate, Chroma, Pinecone, Qdrant, pgvector, MongoDB ํ™˜๊ฒฝ๋ณ€์ˆ˜ 1์ค„
LLM Google Gemini, OpenAI, Anthropic Claude, OpenRouter, Ollama ํ™˜๊ฒฝ๋ณ€์ˆ˜ 1์ค„
๋ฆฌ๋žญ์ปค Jina, Cohere, Google, OpenAI, OpenRouter, Local YAML 2์ค„
์บ์‹œ Memory, Redis, Semantic YAML 1์ค„
์ฟผ๋ฆฌ ๋ผ์šฐํŒ… LLM ๊ธฐ๋ฐ˜, Rule ๊ธฐ๋ฐ˜ YAML 1์ค„
ํ•œ๊ตญ์–ด ๊ฒ€์ƒ‰ ๋™์˜์–ด, ๋ถˆ์šฉ์–ด, ์‚ฌ์šฉ์ž์‚ฌ์ „ YAML ์„ค์ •
๋ณด์•ˆ PII ํƒ์ง€, ๋งˆ์Šคํ‚น, ๊ฐ์‚ฌ ๋กœ๊น… YAML ์„ค์ •
GraphRAG ์ง€์‹ ๊ทธ๋ž˜ํ”„ ๊ธฐ๋ฐ˜ ๊ด€๊ณ„ ์ถ”๋ก  YAML 1์ค„
Agent ๋„๊ตฌ ์‹คํ–‰, MCP ํ”„๋กœํ† ์ฝœ YAML ์„ค์ •

RAG ํŒŒ์ดํ”„๋ผ์ธ

Query โ†’ Router โ†’ Expansion โ†’ Retriever โ†’ Cache โ†’ Reranker โ†’ Generator โ†’ PII Masking โ†’ Response
๋‹จ๊ณ„ ๊ธฐ๋Šฅ ๊ต์ฒด ๊ฐ€๋Šฅ
์ฟผ๋ฆฌ ๋ผ์šฐํŒ… ์ฟผ๋ฆฌ ์œ ํ˜• ๋ถ„๋ฅ˜ LLM/Rule ์„ ํƒ
์ฟผ๋ฆฌ ํ™•์žฅ ๋™์˜์–ด, ๋ถˆ์šฉ์–ด ์ฒ˜๋ฆฌ ์‚ฌ์ „ ์ปค์Šคํ…€
๊ฒ€์ƒ‰ ๋ฒกํ„ฐ/ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰ 6์ข… DB
์บ์‹ฑ ์‘๋‹ต ์บ์‹œ 3์ข… ์บ์‹œ
์žฌ์ •๋ ฌ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์ •๋ ฌ 6์ข… ๋ฆฌ๋žญ์ปค
๋‹ต๋ณ€ ์ƒ์„ฑ LLM ์‘๋‹ต ์ƒ์„ฑ 5์ข… LLM
ํ›„์ฒ˜๋ฆฌ ๊ฐœ์ธ์ •๋ณด ๋งˆ์Šคํ‚น ์ •์ฑ… ์ปค์Šคํ…€

๋‹จ๊ณ„๋ณ„ ๊ตฌ์„ฑ ๊ฐ€์ด๋“œ

๋‹จ๊ณ„ ๊ตฌ์„ฑ ์šฉ๋„
Basic ๋ฒกํ„ฐ ๊ฒ€์ƒ‰ + LLM ๊ฐ„๋‹จํ•œ ๋ฌธ์„œ Q&A
Standard + ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰ + Reranker ๊ฒ€์ƒ‰ ํ’ˆ์งˆ์ด ์ค‘์š”ํ•œ ์„œ๋น„์Šค (๊ถŒ์žฅ)
Advanced + GraphRAG + Agent ๋ณต์žกํ•œ ๊ด€๊ณ„ ์ถ”๋ก , ๋„๊ตฌ ์‹คํ–‰

Basic์œผ๋กœ ์‹œ์ž‘ํ•ด์„œ, ํ•„์š”ํ•  ๋•Œ ๋ธ”๋ก์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.


ํ”„๋ก ํŠธ์—”๋“œ UI

๋ณ„๋„์˜ React ๊ธฐ๋ฐ˜ ์›น UI๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. **๋ผ์ด๋ธŒ ๋ฐ๋ชจ**์—์„œ ๋ฐ”๋กœ ์ฒดํ—˜ํ•˜๊ฑฐ๋‚˜, ๋กœ์ปฌ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

OneRAG Chat - Dark Mode OneRAG Document Management

์ฑ—๋ด‡ ์ธํ„ฐํŽ˜์ด์Šค (๋‹คํฌ ๋ชจ๋“œ) ยท ๋ฌธ์„œ ๊ด€๋ฆฌ

์ฃผ์š” ๊ธฐ๋Šฅ:

  • WebSocket ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ ์ฑ„ํŒ… (RAG ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ + AI ๋‹ต๋ณ€)
  • ๋“œ๋ž˜๊ทธ์•ค๋“œ๋กญ ๋ฌธ์„œ ์—…๋กœ๋“œ (PDF, Word, Excel, Markdown ๋“ฑ)
  • ๋ฌธ์„œ ๊ด€๋ฆฌ โ€” ๊ฒ€์ƒ‰, ์ •๋ ฌ, ์ผ๊ด„ ์‚ญ์ œ, ์ƒ์„ธ ์ •๋ณด ์กฐํšŒ
  • ๋‹คํฌ ๋ชจ๋“œ, ๋ชจ๋ฐ”์ผ ๋ฐ˜์‘ํ˜• ๋ ˆ์ด์•„์›ƒ
  • Feature Flag ๊ธฐ๋ฐ˜ ๋ชจ๋“ˆ ํ™œ์„ฑํ™”/๋น„ํ™œ์„ฑํ™”
  • ๊ด€๋ฆฌ์ž ๋Œ€์‹œ๋ณด๋“œ โ€” ์„ธ์…˜, ์„ฑ๋Šฅ, ํ”„๋กฌํ”„ํŠธ ํ†ตํ•ฉ ๊ด€์ œ
# ๋ฐฑ์—”๋“œ ์‹คํ–‰ ์ค‘์ธ ์ƒํƒœ์—์„œ
make frontend-dev    # โ†’ http://localhost:5173

ํ”„๋ก ํŠธ์—”๋“œ + ๋ฐฑ์—”๋“œ + Weaviate ๋™์‹œ ์‹คํ–‰: make start-full


๋‹ค๊ตญ์–ด ์ง€์›

easy-start CLI ์ฑ—๋ด‡์€ 4๊ฐœ ์–ธ์–ด๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

make easy-start LANG=en    # English
make easy-start LANG=ja    # ๆ—ฅๆœฌ่ชž
make easy-start LANG=zh    # ไธญๆ–‡
make easy-start            # ํ•œ๊ตญ์–ด (๊ธฐ๋ณธ)

๊ฐ ์–ธ์–ด๋ณ„๋กœ UI ํ…์ŠคํŠธ, ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ, ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ํ˜„์ง€ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.


๊ฐœ๋ฐœ

make dev-reload   # ๊ฐœ๋ฐœ ์„œ๋ฒ„ (์ž๋™ ๋ฆฌ๋กœ๋“œ)
make test         # ํ…Œ์ŠคํŠธ ์‹คํ–‰ (2,200+)
make lint         # ๋ฆฐํŠธ ๊ฒ€์‚ฌ
make type-check   # ํƒ€์ž… ์ฒดํฌ

๋ฌธ์„œ


๋ผ์ด์„ ์Šค

MIT License


์ด ํ”„๋กœ์ ํŠธ๋Š” RAG Chat Service PM์ด ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๊ตฌํ˜„ํ•ด๋ณด๊ณ  ์‹ถ์—ˆ๋˜ ๊ธฐ๋Šฅ๋“ค์„ ๋ชจ์•„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
RAG๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜๋Š” ๋ถ„๋“ค์ด ์‰ฝ๊ฒŒ PoC๋ฅผ ์ง„ํ–‰ํ•˜๊ณ , ํ”„๋กœ๋•์…˜๊นŒ์ง€ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.

Report Bug ยท Request Feature ยท Discussions

Release History

VersionChangesUrgencyDate
v1.0.7## Highlights ### OpenAI Compatible API (`/v1/chat/completions`) - Connect existing OpenAI SDK code directly to OneRAG โ€” no code changes needed - Works with LangChain, Cursor, Open WebUI, and any OpenAI-compatible tool - Streaming (SSE) support with `"stream": true` - Model selection via `model` field: `gemini`, `ollama/qwen2.5:3b`, `openrouter/google/gemini-2.0-flash` ### Ollama Local LLM Integration - Run completely offline with local LLM โ€” no API key required - Auto-detection: if Ollama is Low3/7/2026

Dependencies & License Audit

Loading dependencies...

Similar Packages

rag-chatbotRAG (Retrieval-augmented generation) ChatBot that provides answers based on contextual information extracted from a collection of Markdown files.main@2026-04-14
ai-real-estate-assistantAdvanced AI Real Estate Assistant using RAG, LLMs, and Python. Features market analysis, property valuation, and intelligent search.dev@2026-04-13
neuraldocsDemo RAG API (FastAPI, OpenAI, ChromaDB, Docker) automatically generated using the OpenAI Codex CLI tool. Highlights Codex's capability for rapid, complex application development.3.2.2
local-rag-system๐Ÿค– Build your own local Retrieval-Augmented Generation system for private, offline AI memory without ongoing costs or data privacy concerns.main@2026-04-21
OllamaRAG๐Ÿค– Build a smart AI assistant that learns from any website using a Retrieval-Augmented Generation framework with local models powered by Ollama.main@2026-04-21