Skip to main content

ragking

LlamaIndex 기반 한국어(법령·규정) RAG 라이브러리. 파일을 계층적으로 청킹·임베딩해 저장하고, auto-merging 검색 + 리랭크 + LLM으로 답한다.

앱이 아니라 라이브러리다 — 서버 진입점이 없고, 호스트 앱(FastAPI 등)에 임포트해서 쓴다.

인제스트:  File ──▶ Converter ──▶ Processor ──▶ connector.upload ──▶ (벡터 스토어 + docstore)
                  bytes→markdown    청킹(parent/leaf)   Small-to-Big 저장

조회:      RAGRetriever ──▶ AutoMergingRetriever ──▶ (리랭커) ──▶ LLM
                            leaf 검색→부모로 병합

특징

  • 한국어 법령 문서용 파서 — 장/절/조/부칙 헤더 트리를 세워 조문 단위로 청킹하고 section_path·page_start/page_end를 메타데이터로 남긴다(인용 앵커).
  • Small-to-Big 저장 — leaf만 임베딩해 벡터 스토어에, 부모는 docstore에. 검색은 좁은 leaf로 하고 답변 컨텍스트는 부모로 넓힌다.
  • 레지스트리 한 번 초기화 — rag_registry.initialize(config) 이후 컴포넌트 배선이 없다.
  • 내부망 전제 — 임베딩·LLM 모두 OpenAI 호환 엔드포인트(vLLM, TEI 등)를 가리키고, PDF 변환은 내부 Marker API에 위임한다.
  • 하이브리드 검색(opt-in) — dense + BM25 sparse로 조문 번호·법령명 정확 매칭을 살린다.
  • FastAPI/Celery 연동 제공 — lifespan, 요청 의존성, /health 라우터, 인제스트 태스크.

설치

pip install ragking
# 또는 저장소에서 직접
pip install git+https://github.com/JunseoKR/ragking.git

Python 3.10+ (CI는 3.10/3.11/3.12). 설치 한 번으로 전부 들어온다 — celery(비동기 인제스트), redis docstore, pymupdf(2-up PDF 분리)까지 기본 의존성이며 기능별 extra는 없다. 하이브리드 검색(fastembed)만 예외로 별도 설치가 필요하다. 폐쇄망 설치는 offline-install 참고.

필요한 외부 서비스: 임베딩 서버·LLM 서버(OpenAI 호환)·Qdrant는 필수, MinIO·Marker API· 리랭크 서버는 용도에 따라 선택이다. 자세한 표는 getting-started 참고.

30초 사용법

from ragking.fastapi.registry import rag_registry
from ragking.tasks import run_ingest
from ragking.retrievers.retriever import RAGRetriever

rag_registry.initialize()                                             # env/.env → 설정 로드
run_ingest(bucket="docs", object_name="법령.pdf", file_type="legal")   # 인제스트
print(RAGRetriever().query("제12조의 내용은?"))                        # 조회

FastAPI 호스트 앱에 붙일 때:

from fastapi import FastAPI, Depends
from ragking.fastapi import ragking_lifespan, get_retriever, health_router

app = FastAPI(lifespan=ragking_lifespan(settings))
app.include_router(health_router)


@app.post("/query")
async def query(q: str, retriever=Depends(get_retriever)):
    return {"answer": await retriever.aquery(q)}

문서

전체 문서는 docs/에 있다.

문서 내용
getting-started 설치, 최소 설정, 인제스트/조회 quickstart, FastAPI·Celery 연동
architecture 설계 — 4계층 분리, Small-to-Big, 레지스트리, 문서 아이덴티티
configuration RagConfig 전 필드, 설정 주입 3가지 방법
connectors MinIO 로드, Qdrant 저장·검색·삭제, docstore 샤딩, 하이브리드
converters bytes→markdown, PDF→Marker API, 포맷 추가
parsers Processor(file_type 라우팅, run/arun) + parent/leaf 트리, HierarchicalParser·LegalParser
retrievers auto-merging, 리랭크, 필터, 프롬프트, 스트리밍
api-reference 공개 심볼 시그니처 목록
troubleshooting 증상별 원인·확인·조치

개발

python3 -m venv .venv && . .venv/bin/activate
pip install -e '.[dev]'
pytest tests/unit      # 단위 테스트(외부 서비스 불필요)
ruff check .

tests/integration/은 벡터 스토어 등 외부 서비스를 전제한다. 기여 규약과 저장소 관례는 AGENTS.md와 .agents/ 참고.

라이선스

MIT

Metadata

Release files for ragking 2.2.0

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

Source distribution (sdist)

Source distribution for ragking 2.2.0
File Size Uploaded
ragking-2.2.0.tar.gz 570.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ragking 2.2.0
File Interpreter ABI Platform
ragking-2.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.0 MB

Release files / ragking-2.2.0.tar.gz

Download URL ragking-2.2.0.tar.gz
Size 570.9 kB
Tags Source
SHA-256 checksum
How to use checksums
9952ff58a7174710cc7d671117364543756021e260a3ba3772e27ce43de24bc4
BLAKE2b-256 checksum
How to use checksums
072cdc2cb024663197558788e8f26947ce52b3069192d32690732df617ae3777
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / ragking-2.2.0-py3-none-any.whl

Download URL ragking-2.2.0-py3-none-any.whl
Size 449.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fcdfee97e36219210c9897566be761bbcad66cbe28f886b0fbcd84e1e35af9f7
BLAKE2b-256 checksum
How to use checksums
5beb878265369961505bf04ec0bc0c1ae0541688ee493c8379856fb6e37a1dc2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

2.2.0 This release

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