R2R: 최신 오픈소스 RAG 답변 엔진 소개

in #blog3 days ago

목차

  1. R2R이란?
  2. 주요 특징
  3. 설치 방법
  4. 기본 사용 방법
  5. 고급 사용 예시
  6. 추가 기능 및 리소스
  7. 커뮤니티 및 지원

R2R이란?

R2R(Retrieval-to-Response)은 최신 AI 기술을 활용한 오픈소스 검색 및 답변 시스템입니다. RAG(Retrieval-Augmented Generation) 기술을 기반으로 하여, 로컬 환경에서의 실험부터 실제 프로덕션 환경에서의 사용까지 폭넓게 활용할 수 있는 종합적인 솔루션을 제공합니다.

주요 특징

  1. 다양한 파일 형식 지원: .txt, .pdf, .json부터 .png, .mp3 등 다양한 형식의 파일 처리
  2. 하이브리드 검색: 의미 기반 검색과 키워드 검색을 결합한 정확한 결과 제공
  3. 그래프 RAG: 자동 관계 추출 및 지식 그래프 구축
  4. 앱 관리: 효율적인 문서 및 사용자 관리, 상세한 모니터링과 분석 기능
  5. RESTful API 지원: 클라이언트-서버 모델 기본 지원
  6. 구성 가능성: 직관적인 설정 파일을 통한 쉬운 애플리케이션 구성
  7. 확장성: 빌더 및 팩토리 패턴을 사용한 쉬운 확장
  8. 대시보드: R2R Dashboard를 통한 사용자 친화적 인터페이스 제공

설치 방법

pip를 이용한 설치

pip install r2r

# 환경 변수 설정
export OPENAI_API_KEY=sk-...
export POSTGRES_USER=YOUR_POSTGRES_USER
export POSTGRES_PASSWORD=YOUR_POSTGRES_PASSWORD
export POSTGRES_HOST=YOUR_POSTGRES_HOST
export POSTGRES_PORT=YOUR_POSTGRES_PORT
export POSTGRES_DBNAME=YOUR_POSTGRES_DBNAME
export POSTGRES_VECS_COLLECTION=demo_vecs

Docker를 이용한 설치

pip install r2r

docker run -d \
   --name r2r \
   -p 8000:8000 \
   -e POSTGRES_USER=$POSTGRES_USER \
   -e POSTGRES_PASSWORD=$POSTGRES_PASSWORD \
   -e POSTGRES_HOST=$POSTGRES_HOST \
   -e POSTGRES_PORT=$POSTGRES_PORT \
   -e POSTGRES_DBNAME=$POSTGRES_DBNAME \
   -e OPENAI_API_KEY=$OPENAI_API_KEY \
   emrgntcmplxty/r2r:main

기본 사용 방법

  1. R2R 서버 시작하기:

    python -m r2r.examples.quickstart serve --port=8000
    
  2. 파일 입력하기:

    python -m r2r.examples.quickstart ingest --client-server-mode
    
  3. 검색하기:

    python -m r2r.examples.quickstart search --query="your question here" --client-server-mode
    
  4. RAG 수행하기:

    python -m r2r.examples.quickstart rag --query="your question here" --client-server-mode
    
  5. 스트리밍 RAG 응답 받기:

    python -m r2r.examples.quickstart rag --query="your question here" --client-server-mode --stream
    

고급 사용 예시

from r2r import Document, GenerationConfig, R2R

app = R2R()

app.ingest_documents(
    [
        Document(
            type="txt",
            data="John is a person that works at Google.",
            metadata={},
        )
    ]
)

rag_results = app.rag(
    "Who is john", GenerationConfig(model="gpt-3.5-turbo", temperature=0.0)
)
print(f"Search Results:\n{rag_results.search_results}")
print(f"Completion:\n{rag_results.completion}")

추가 기능 및 리소스

R2R은 다음과 같은 고급 기능들을 제공합니다:

  • 여러 LLM 사용하기
  • 하이브리드 검색
  • 멀티모달 RAG
  • 지식 그래프 생성
  • 로컬 RAG 실행

이러한 기능들에 대한 자세한 가이드는 R2R 공식 문서의 쿡북 섹션에서 확인할 수 있습니다.

또한, R2R Dashboard를 사용하면 그래픽 인터페이스를 통해 R2R의 기능을 더 쉽게 사용할 수 있습니다.

커뮤니티 및 지원

  • Discord: 실시간으로 개발자 및 커뮤니티 멤버들과 대화
  • GitHub Issues: 버그 리포트 및 기능 요청

R2R은 오픈소스 프로젝트로, 여러분의 기여를 환영합니다. 새로운 기능을 제안하거나, 버그를 리포트하거나, 직접 코드를 개선해 프로젝트에 기여할 수 있습니다.

R2R을 통해 최신 AI 기반 검색 및 응답 시스템을 직접 구축하고 실험해보세요. AI와 검색 기술의 최신 트렌드를 반영한 R2R은 이 분야에 관심 있는 모든 분들에게 훌륭한 학습 도구가 될 것입니다.

즐거운 R2R 사용 되세요!


이 글은 R2R 레포지토리의 README.md를 참고하여 작성되었습니다.

Posted through the ECblog app (https://blog.etain.club)

Sort:  

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Congratulations, your post has been upvoted by @upex with a 0.22% upvote. We invite you to continue producing quality content and join our Discord community here. Keep up the good work! #upex