HTTP API 및 Python SDK 레퍼런스.
Engine 클래스는 모든 QuantumRAG 기능의 단일 진입점입니다.
from quantumrag import EngineEngine(
config: str | Path | QuantumRAGConfig | None = None,
*,
document_store: Any | None = None, # 커스텀 스토어 주입
vector_store: Any | None = None, # 커스텀 스토어 주입
bm25_store: Any | None = None, # 커스텀 스토어 주입
embedding_model: str | None = None, # 빠른 오버라이드
generation_model: str | None = None, # 빠른 오버라이드
data_dir: str | None = None, # 빠른 오버라이드
)ingest(path, *, chunking_strategy=None, metadata=None, recursive=True, enable_hype=True) → IngestResult
파일 또는 디렉토리에서 문서를 인제스트합니다.
result = engine.ingest("./docs", recursive=True)
print(result.documents) # 처리된 문서 수
print(result.chunks) # 생성된 청크 수
print(result.elapsed_seconds) # 소요 시간
print(result.errors) # 에러 메시지 목록매개변수:
path— 파일 또는 디렉토리 경로chunking_strategy— 오버라이드:"auto","structural","semantic","fixed"metadata— 모든 문서에 첨부할 커스텀 메타데이터 딕셔너리recursive— 하위 디렉토리 재귀 탐색 (기본값:True)enable_hype— HyPE 임베딩 생성 (기본값:True)
query(query, *, filters=None, top_k=None, rerank=None, conversation_history=None) → QueryResult
인덱싱된 문서에 질의합니다.
result = engine.query("적응형 쿼리 라우팅은 어떻게 동작하나요?")
print(result.answer) # 인라인 인용이 포함된 답변
print(result.confidence) # 신뢰도 열거형
print(result.sources) # List[Source] 발췌문 포함
print(result.trace) # List[TraceStep] 파이프라인 추적
print(result.metadata) # tokens_used, cost, latency_ms 등매개변수:
query— 자연어 질문filters— 메타데이터 필터 (dict)top_k— 검색 수 오버라이드rerank— 리랭킹 오버라이드 (bool)conversation_history— 멀티턴용ConversationTurn목록
query_stream(query, *, filters=None, top_k=None) → AsyncIterator[str]
답변 토큰을 스트리밍합니다.
async for token in engine.query_stream("지원되는 리랭킹 프로바이더는 무엇인가요?"):
print(token, end="", flush=True)evaluate(**kwargs) → EvalResult
평가 파이프라인을 실행합니다.
result = engine.evaluate()
print(result.summary)
for metric in result.metrics:
print(f"{metric.name}: {metric.score:.2f}")
for suggestion in result.suggestions:
print(f"- {suggestion}")status() → dict
엔진 상태를 조회합니다.
status = engine.status()
# {'documents': 15, 'chunks': 234, 'config': {...}, 'data_dir': '...'}QueryResult
@dataclass
class QueryResult:
answer: str # 인용 포함 생성 답변
sources: list[Source] # 출처 참조
confidence: Confidence # STRONGLY_SUPPORTED | PARTIALLY_SUPPORTED | INSUFFICIENT_EVIDENCE
trace: list[TraceStep] # 파이프라인 실행 추적
metadata: dict[str, Any] # tokens_used, cost, latency_ms, path 등Source
@dataclass
class Source:
chunk_id: str
document_title: str
page: int | None
section: str | None
excerpt: str # 관련 텍스트 발췌
relevance_score: floatConfidence
class Confidence(Enum):
STRONGLY_SUPPORTED = "STRONGLY_SUPPORTED" # 강력히 뒷받침됨
PARTIALLY_SUPPORTED = "PARTIALLY_SUPPORTED" # 부분적으로 뒷받침됨
INSUFFICIENT_EVIDENCE = "INSUFFICIENT_EVIDENCE" # 근거 불충분TraceStep
@dataclass
class TraceStep:
step: str # "rewrite", "classify", "retrieve", "generate" 등
result: str # 단계 출력 요약
latency_ms: float
details: dict # 단계별 상세 정보IngestResult
@dataclass
class IngestResult:
documents: int
chunks: int
elapsed_seconds: float
errors: list[str]서버 시작:
quantumrag serve --host 0.0.0.0 --port 8000인터랙티브 문서: http://localhost:8000/docs (Swagger UI)
QUANTUMRAG_API_KEY가 설정된 경우, 모든 /v1/* 엔드포인트에 헤더 필요:
Authorization: Bearer <api-key>
헬스체크 (인증 불필요).
{
"status": "ok",
"version": "0.1.0",
"uptime_seconds": 123.4
}파일 시스템 경로에서 문서 인제스트.
요청:
{
"path": "./docs",
"chunking_strategy": "auto",
"metadata": {"project": "alpha"},
"recursive": true,
"enable_hype": true
}응답:
{
"documents": 15,
"chunks": 234,
"elapsed_seconds": 45.2,
"errors": []
}파일 업로드 인제스트 (멀티파트 폼 데이터).
curl -X POST http://localhost:8000/v1/ingest/upload \
-H "Authorization: Bearer $API_KEY" \
-F "files=@report.pdf" \
-F "files=@data.xlsx"원시 텍스트 직접 인제스트.
요청:
{
"text": "QuantumRAG는 auto, structural, semantic, fixed 네 가지 청킹 전략을 지원합니다...",
"title": "청킹 가이드",
"metadata": {"type": "documentation"}
}동기 질의.
요청:
{
"query": "지원되는 리랭킹 프로바이더는 무엇인가요?",
"filters": null,
"top_k": 7,
"rerank": true,
"conversation_history": []
}응답:
{
"answer": "QuantumRAG는 FlashRank(기본, CPU 기반)와 Cohere 리랭킹 프로바이더를 지원합니다 [1].",
"sources": [
{
"chunk_id": "abc123",
"document_title": "설정 가이드",
"page": null,
"section": "리랭킹",
"excerpt": "FlashRank는 무료 CPU 기반 리랭킹을 제공합니다...",
"relevance_score": 0.92
}
],
"confidence": "STRONGLY_SUPPORTED",
"trace": [...],
"metadata": {
"tokens_used": 1250,
"estimated_cost": 0.003,
"latency_ms": 1450,
"path": "MEDIUM"
}
}SSE 스트리밍 질의.
요청:
{
"query": "주요 발견 사항을 요약해주세요",
"top_k": 7
}응답: Server-Sent Events 스트림:
data: 주요
data: 발견
data: 사항은
data: ...
data: [DONE]
인덱싱된 문서 목록 조회.
쿼리 파라미터:
limit(기본값: 50)offset(기본값: 0)
응답:
{
"documents": [
{
"id": "doc-uuid",
"title": "Q3 보고서",
"source_type": "FILE",
"chunks": 15,
"created_at": "2025-01-15T10:30:00Z"
}
],
"total": 15
}문서 및 관련 청크 삭제.
엔진 상태 조회.
{
"documents": 15,
"chunks": 234,
"config": {
"language": "ko",
"domain": "general"
}
}평가 메트릭 실행.
요청:
{
"benchmark_file": null,
"sample_count": 20
}응답:
{
"metrics": [
{"name": "retrieval_recall", "score": 0.92},
{"name": "faithfulness", "score": 0.95},
{"name": "answer_relevancy", "score": 0.88}
],
"summary": "전체 품질: 양호",
"suggestions": ["복잡한 쿼리에 대해 top_k 증가를 권장합니다"]
}쿼리 결과에 대한 사용자 피드백 제출.
요청:
{
"query": "지원되는 리랭킹 프로바이더는 무엇인가요?",
"answer": "QuantumRAG는 FlashRank와 Cohere 리랭킹을 지원합니다 [1].",
"rating": 5,
"comment": "정확하고 인용이 잘 되어 있습니다"
}quantumrag [OPTIONS] COMMAND [ARGS]| 옵션 | 설명 |
|---|---|
--verbose, -v |
디버그 로깅 활성화 |
--json-log |
JSON 형식 로그 출력 |
--version |
버전 표시 후 종료 |
init — 기본 설정 파일 생성
quantumrag init [--config quantumrag.yaml]ingest — 문서 인제스트
quantumrag ingest <PATH> [OPTIONS]| 옵션 | 설명 | 기본값 |
|---|---|---|
--config, -c |
설정 파일 경로 | quantumrag.yaml |
--strategy, -s |
청킹 전략 | auto |
--metadata, -m |
Key=value 쌍 | (없음) |
--watch, -w |
파일 변경 감시 | false |
--recursive / --no-recursive |
하위 디렉토리 재귀 | true |
query — 질문하기
quantumrag query "지원되는 리랭킹 프로바이더는 무엇인가요?" [OPTIONS]| 옵션 | 설명 | 기본값 |
|---|---|---|
--config, -c |
설정 파일 경로 | quantumrag.yaml |
--top-k |
검색 청크 수 | 설정값 |
serve — HTTP API 서버 시작
quantumrag serve [OPTIONS]| 옵션 | 설명 | 기본값 |
|---|---|---|
--config, -c |
설정 파일 경로 | quantumrag.yaml |
--host |
바인드 주소 | 127.0.0.1 |
--port |
바인드 포트 | 8000 |
status — 엔진 상태 표시
quantumrag status [--config quantumrag.yaml]evaluate — 평가 실행
quantumrag evaluate [--benchmark benchmark.json]