Quivr 소개
문서를 근거로 답하는 챗봇이나 사내 지식 도우미를 만들려면 검색 증강 생성(RAG, Retrieval-Augmented Generation) 파이프라인을 직접 조립해야 합니다. 파일을 파싱해 청크로 나누고, 임베딩을 만들어 벡터 저장소에 넣고, 질문을 다시 쓰고, 관련 청크를 검색해 LLM 프롬프트에 붙이고, 대화 이력을 관리하는 단계가 모두 필요합니다. 각 단계는 라이브러리 선택과 연결 코드가 뒤따르기 때문에, 정작 만들려던 제품보다 RAG 배관 작업에 시간을 더 쓰게 되는 경우가 많습니다.
Quivr는 이 배관을 라이브러리 안으로 감춰, 개발자가 자기 제품에 집중하도록 만드는 것을 목표로 하는 파이썬 RAG 프레임워크입니다. 개발자는 "We take care of the RAG so you can focus on your product" 라는 문구로 Quivr의 지향점을 설명합니다. 저장소의 핵심 패키지인 quivr-core 는 파일을 넣고 질문을 던지는 최소 동작을 몇 줄로 끝낼 수 있게 하며, Quivr.com 서비스의 기반이 되는 엔진이기도 합니다.
Quivr는 특정 모델이나 저장소에 묶이지 않는 것을 설계 원칙으로 삼습니다. OpenAI, Anthropic, Mistral 같은 상용 API는 물론 Ollama를 통한 로컬 모델까지 붙일 수 있고, 입력 파일도 PDF, TXT, Markdown 등 형식을 가리지 않으며 직접 파서를 추가할 수도 있습니다. 검색·재순위(reranking)·LLM 호출 같은 단계는 코드가 아니라 YAML 설정 파일의 노드와 엣지로 기술하도록 되어 있어, 파이프라인 구조를 바꾸는 일이 설정값 수정에 가깝습니다.
Quivr의 핵심 기능
Quivr가 내세우는 특징은 네 가지로 정리됩니다. 각 기능은 "RAG를 대신 처리한다"는 하나의 목표를 서로 다른 축에서 뒷받침합니다.
- 의견을 담은 RAG (Opiniated RAG): 개발자는 Quivr의 RAG를 빠르고 효율적으로 동작하도록 특정 방식으로 구성했다고 설명합니다. 사용자가 처음부터 모든 선택지를 고르지 않아도 동작하는 기본 구성을 제공한다는 의미입니다.
- 모든 LLM 지원: OpenAI, Anthropic, Mistral, Gemma 등 어떤 LLM과도 함께 쓸 수 있고, Ollama를 사용하면 로컬 모델도 연결됩니다.
- 모든 파일 지원: PDF, TXT, Markdown 등 다양한 파일을 다루며, 직접 만든 파서를 추가해 형식을 확장할 수 있습니다.
- 커스터마이즈 가능: 인터넷 검색이나 도구(tool) 를 추가하는 식으로 RAG 파이프라인을 확장할 수 있습니다.
파일 수집(ingestion) 쪽에서는 같은 팀이 만든 파싱 도구인 Megaparse 와의 연동을 제공해, Megaparse로 파일을 읽어들이고 그 결과를 Quivr의 RAG에 넘기는 조합을 지원합니다.
Quivr의 RAG 워크플로우
Quivr는 질문이 답변으로 이어지는 과정을 하나의 워크플로우로 정의합니다. 아래 그림은 기본 RAG 워크플로우의 전체 흐름을 보여줍니다.
사용자 질문이 들어오면 LLM이 질문을 다시 쓰고(rephrase), 임베더(embedder) 가 질문을 벡터로 바꾼 뒤, 벡터 데이터베이스에서 관련 청크를 검색합니다. 동시에 대화 이력(conversation history) 은 필터링을 거쳐 답변 생성 단계로 전달되고, 검색된 청크와 함께 LLM이 최종 답변을 만든 다음 대화 이력을 갱신합니다.
이 흐름은 코드가 아니라 YAML 설정의 노드(node) 와 엣지(edge) 로 표현됩니다. 아래는 기본 RAG 워크플로우 설정의 노드 정의 부분입니다.
workflow_config:
name: "standard RAG"
nodes:
- name: "START"
edges: ["filter_history"]
- name: "filter_history"
edges: ["rewrite"]
- name: "rewrite"
edges: ["retrieve"]
- name: "retrieve"
edges: ["generate_rag"]
- name: "generate_rag"
edges: ["END"]
같은 설정 파일 안에서 재순위 모델과 LLM 동작도 함께 지정합니다. 예를 들어 재순위에는 Cohere의 rerank-multilingual-v3.0 모델을 쓰고 상위 5개 청크만 남기도록, LLM에는 최대 입력 토큰 4000, 온도(temperature) 0.7, 대화 이력 최대 10회를 유지하도록 값을 적습니다. 파이프라인의 구조와 하이퍼파라미터가 한 파일에 모여 있어, 서로 다른 검색 전략을 설정만 바꿔 실험할 수 있습니다.
Quivr 설치 및 사용법
Quivr의 핵심 패키지는 파이썬 3.10 이상 환경에서 pip로 설치합니다.
pip install quivr-core
가장 기본적인 사용은 파일 목록으로 Brain 을 만들고 질문을 던지는 것입니다. 저장소가 제시하는 최소 예시는 다음과 같습니다.
from quivr_core import Brain
brain = Brain.from_files(
name="my smart brain",
file_paths=["./my_first_doc.pdf", "./my_second_doc.txt"],
)
answer = brain.ask("문서에 대해 물어볼 질문")
print("answer:", answer.answer)
앞서 살펴본 YAML 워크플로우 설정을 쓰려면 RetrievalConfig.from_yaml() 로 설정을 읽어 brain.ask() 에 retrieval_config 로 넘깁니다. 이렇게 하면 재순위 모델이나 검색 전략을 코드 수정 없이 설정 파일만으로 바꿀 수 있습니다. API 키는 환경 변수로 전달하며, 예를 들어 OpenAI를 쓸 경우 OPENAI_API_KEY 를 설정합니다. 더 자세한 설정과 도구 추가 방법은 공식 문서에 정리되어 있습니다.
Quivr의 라이선스
Quivr는 Apache 2.0 라이선스로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용할 수 있습니다.
Quivr 공식 문서 사이트
Quivr 프로젝트 GitHub 저장소
더 읽어보기
-
LightRAG: 지식 그래프 기반의 이중 검색 구조로 GraphRAG보다 빠른 RAG 프레임워크 (feat. EMNLP 2025)
-
RAG-Anything: 텍스트, 이미지, 표, 수식을 아우르는 멀티모달 올인원 RAG 프레임워크 (feat. HKUDS)
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. ![]()
파이토치 한국 사용자 모임
이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일
로 보내드립니다! 텔레그램(Telegram)이나 Slack/Discord/Teams/Dooray/GoogleChat 등으로도 새 글 알림을 받으실 수 있습니다. ![]()
아래
쪽에 좋아요
를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ ![]()

