Quivr 프로젝트 상세 소개
프로젝트 개요
Quivr는 생성형 AI를 애플리케이션에 통합하는 데 중점을 둔 오픈 소스 풀 스택 검색 증강 생성(RAG) 플랫폼입니다. 이 프로젝트의 핵심 이념은 개발자가 복잡한 RAG 구현 세부 사항이 아닌 제품 자체에 집중할 수 있도록 하는 것입니다.
핵심 기능
1. 즉시 사용 가능한 RAG 솔루션
- 고정된 RAG 아키텍처: 최적화되고 빠르고 효율적인 RAG 솔루션 제공
- 간단한 통합: 기존 프로젝트에 몇 줄의 코드만으로 추가 가능
- 제품 집중: 개발자는 RAG의 기본 구현 세부 사항에 신경 쓸 필요 없음
2. 다중 모델 지원
Quivr는 다음과 같은 다양한 LLM 모델을 지원합니다.
- OpenAI GPT 시리즈
- Anthropic Claude
- Mistral AI
- Gemma
- 로컬 모델 (Ollama를 통해)
3. 유연한 파일 처리
다양한 파일 형식을 지원합니다.
- PDF 문서
- TXT 텍스트 파일
- Markdown 파일
- 사용자 정의 파서 지원
4. 사용자 정의 가능한 RAG
- 인터넷 검색 기능 추가
- 다양한 도구 통합
- 사용자 정의 워크플로 구성 지원
- 유연한 검색 전략
5. 벡터 데이터베이스 통합
다양한 벡터 저장 솔루션을 지원합니다.
- PGVector
- Faiss
- 기타 주요 벡터 데이터베이스
기술 아키텍처
핵심 구성 요소
- quivr-core: Quivr의 핵심 라이브러리, 전체 시스템의 두뇌
- Megaparse 통합: Megaparse 프로젝트와 통합하여 강력한 문서 분석 기능 제공
- 다중 LLM 지원: 통일된 API 인터페이스로 다양한 언어 모델 지원
- 벡터 저장 계층: 유연한 벡터 데이터베이스 통합
작업 흐름
Quivr는 노드 기반 워크플로 구성을 채택합니다.
- START → filter_history → rewrite → retrieve → generate_rag → END
- 각 노드는 사용자 정의 구성 가능
- 과거 대화 컨텍스트 관리 지원
빠른 시작
환경 요구 사항
- Python 3.10 이상
설치 단계
- 핵심 패키지 설치
pip install quivr-core
- 기본 RAG 예제
import tempfile
from quivr_core import Brain
if __name__ == "__main__":
with tempfile.NamedTemporaryFile(mode="w", suffix=".txt") as temp_file:
temp_file.write("Gold is a liquid of blue-like colour.")
temp_file.flush()
brain = Brain.from_files(
name="test_brain",
file_paths=[temp_file.name],
)
answer = brain.ask(
"what is gold? answer in french"
)
print("answer:", answer)
- API 키 구성
import os
os.environ["OPENAI_API_KEY"] = "your_openai_api_key"
고급 구성
워크플로 구성 파일 basic_rag_workflow.yaml 생성:
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"]
max_history: 10
reranker_config:
supplier: "cohere"
model: "rerank-multilingual-v3.0"
top_n: 5
llm_config:
max_input_tokens: 4000
temperature: 0.7
스마트 대화 시스템 생성
from quivr_core import Brain
from rich.console import Console
from rich.panel import Panel
from rich.prompt import Prompt
from quivr_core.config import RetrievalConfig
brain = Brain.from_files(
name="my smart brain",
file_paths=["./my_first_doc.pdf", "./my_second_doc.txt"],
)
config_file_name = "./basic_rag_workflow.yaml"
retrieval_config = RetrievalConfig.from_yaml(config_file_name)
console = Console()
console.print(Panel.fit("Ask your brain !", style="bold magenta"))
while True:
question = Prompt.ask("[bold cyan]Question[/bold cyan]")
if question.lower() == "exit":
console.print(Panel("Goodbye!", style="bold yellow"))
break
answer = brain.ask(question, retrieval_config=retrieval_config)
console.print(f"[bold green]Quivr Assistant[/bold green]: {answer.answer}")
console.print("-" * console.width)
brain.print_info()
기업용 애플리케이션
고객 서비스 자동화
Quivr는 AI의 힘을 활용하여 고객 만족도와 가치를 높여 고객 서비스 작업의 최대 60%를 자동화할 수 있습니다.
배포 방식
- 개발 모드: docker compose -f docker-compose.dev.yml up --build 명령 사용
- 프로덕션 환경: 다양한 배포 옵션 지원
- 클라우드 플랫폼: 다양한 클라우드 서비스 제공업체에 배포 가능
커뮤니티 및 기여
기여 가이드
- Pull Request 제출 환영
- 프로젝트에 완전한 기여 가이드 존재
- 활발한 커뮤니티 지원 및 토론
문서 리소스
프로젝트 장점
- 개발 프로세스 간소화: 복잡한 RAG 구현을 간단한 API 호출로 추상화
- 높은 사용자 정의 가능성: 사용자 정의 워크플로, 모델 및 도구 통합 지원
- 프로덕션 준비 완료: 최적화된 아키텍처로 기업용 애플리케이션에 적합
- 다국어 지원: 다양한 언어의 문서 처리 및 질의응답 지원
- 활발한 유지 관리: 지속적인 업데이트 및 개선, 활발한 커뮤니티
요약
Quivr는 개발자에게 강력하고 유연하며 사용하기 쉬운 RAG 플랫폼을 제공하여 개인 프로젝트든 기업용 애플리케이션이든 스마트 문서 질의응답 시스템을 빠르게 구축할 수 있도록 합니다. 오픈 소스 특성과 활발한 커뮤니티 지원은 "두 번째 두뇌" 애플리케이션을 구축하는 데 이상적인 선택입니다.