RAG를 처음부터 구축하기

RAG를 처음부터 구축하기 (Building RAG from Scratch, 저수준)

포장된 고수준 추상화 대신 LLM, 프롬프트, 임베딩 모델 같은 저수준 구성 요소만으로 RAG와 에이전트 앱을 만드는 방법을 배워요. 내부 동작 원리를 이해하면 나만의 커스텀 워크플로를 만들 수 있습니다.

출처: 문서

본문

이 문서는 포장된 "박스형" 추상화를 사용하지 않고 저수준 추상화(예: LLM, 프롬프트, 임베딩 모델)만으로 RAG와 에이전트 기반 앱을 어떻게 구축하는지 보여주는 허브입니다.

박스형 추상화에는 다음이 포함됩니다.

  • 고수준 수집 코드, 예: VectorStoreIndex.from_documents
  • 고수준 쿼리/리트리버 코드, 예: VectorStoreIndex.as_retriever()와 VectorStoreIndex.as_query_engine()
  • 고수준 에이전트 추상화, 예: FunctionAgent, ReActAgent, CodeActAgent

이것들을 사용하는 대신, 여기서의 목표는 사용자에게 내부에서 무슨 일이 일어나는지 교육하는 것입니다. RAG와 에이전트 워크플로를 구성하는 기저 알고리즘을 보여줌으로써, 의미 있는 세분화 수준에서 LlamaIndex 추상화를 여전히 사용하면서도 자신만의 커스텀 LLM 워크플로를 만들 수 있게 됩니다.

앱을 처음부터 구성 요소별로 구축하는 방법을 보여드립니다. 집중을 위해 각 튜토리얼은 다른 구성 요소에는 박스형 추상화를 사용하면서 특정 구성 요소 하나를 처음부터 구축하는 방법을 보여줍니다. 참고: 이 문서는 작업 중(WIP)이며, 계속 다듬고 있는 중입니다!

수집(Ingestion)을 처음부터 구축하기

이 튜토리얼은 벡터 저장소로 향하는 수집 파이프라인을 정의하는 방법을 보여줍니다.

벡터 검색을 처음부터 구축하기

이 튜토리얼은 벡터 저장소를 쿼리하는 리트리버를 구축하는 방법을 보여줍니다.

수집/검색을 처음부터 구축하기 (오픈소스/로컬 구성 요소)

이 튜토리얼은 오픈소스 구성 요소만으로 수집/검색 파이프라인을 구축하는 방법을 보여줍니다.

(아주 간단한) 벡터 저장소를 처음부터 구축하기

벡터 저장소가 어떻게 동작하는지 더 배우고 싶다면, 밀집 검색 + 메타데이터 필터링이 가능한 아주 간단한 벡터 저장소를 구축하는 튜토리얼이 있습니다.

물론 프로덕션 데이터베이스의 대체재는 아닙니다.

응답 합성을 처음부터 구축하기

이 튜토리얼은 검색된 컨텍스트 집합이 주어졌을 때 LLM을 사용해 결과를 합성하는 방법을 보여줍니다. 컨텍스트 오버플로, 비동기 호출, 출처 인용을 다룹니다.

평가를 처음부터 구축하기

LLM과 프롬프트 모듈을 사용해 흔한 LLM 기반 평가 모듈(정확성, 충실성)을 구축하는 방법을 배워보세요. 이를 통해 나만의 커스텀 평가를 정의할 수 있습니다.

고급 RAG를 처음부터 구축하기

이 튜토리얼들은 기본 RAG 워크플로를 넘어서는 고급 기능을 구축하는 방법을 보여줍니다. 커스텀 워크플로/프로덕션 요구사항이 있는 고급 사용자에게 특히 유용합니다.

하이브리드 검색을 처음부터 구축하기

하이브리드 검색은 많은 벡터 데이터베이스가 지원하는 고급 검색 기능입니다. 키워드가 일치하는 희소(sparse) 검색과 밀집(dense) 검색을 결합할 수 있게 해줍니다.

라우터를 처음부터 구축하기

표준 RAG 워크플로를 넘어서, 라우터 모듈을 처음부터 구축하는 방법을 보여줌으로써 LLM을 이용한 자동화된 의사결정으로 한 걸음 나아갑니다.

RAG Fusion 리트리버를 처음부터 구축하기

여기서는 쿼리 재작성, 앙상블링, 동적 검색이 가능한 고급 리트리버를 구축하는 방법을 보여드립니다.

구조화 데이터에 대한 QA를 처음부터 구축하기

프레임워크로서의 RAG는 주로 비구조화 데이터에 초점을 둡니다. LlamaIndex는 구조화 데이터와 반구조화 데이터도 박스형으로 지원합니다.

(Workflows 라이브러리로) text-to-SQL을 처음부터 구축하는 방법을 보려면 아래 가이드를 확인하세요.

더 알아보기 (Learn more)