LlamaIndex를 사용하여 LLM 기반 애플리케이션 빌드

이 페이지에서는 PostgreSQL용 Cloud SQL과 통합된 LlamaIndex를 사용하여 LLM 지원 애플리케이션을 빌드하는 몇 가지 사용 사례를 설명합니다. GitHub의 메모장 링크는 접근 방식을 살펴보거나 애플리케이션을 개발하는 데 도움이 되도록 제공됩니다.

LlamaIndex는 데이터 소스를 대규모 언어 모델 (LLM)과 연결하고 통합할 수 있는 생성형 AI 오케스트레이션 프레임워크입니다. LlamaIndex를 사용하여 자연어 쿼리를 사용하여 비공개 또는 도메인별 데이터의 정보에 액세스하고 쿼리하는 애플리케이션을 빌드할 수 있습니다.

LlamaIndex는 맞춤 데이터와 LLM 간의 가교 역할을 하여 검색 증강 생성 (RAG) 기능이 있는 지식 어시스턴트 애플리케이션의 개발을 용이하게 합니다.

LlamaIndex는 색인 생성 및 검색을 간소화하는 구조화된 문서 관리를 강조하므로 문서 중심 애플리케이션에 적합합니다. 이 프레임워크는 정보 액세스의 속도와 관련성을 개선하는 최적화된 쿼리 메커니즘과 세부적인 필터링을 위한 강력한 메타데이터 처리 기능을 제공합니다.

LlamaIndex 프레임워크에 대한 자세한 내용은 LlamaIndex 제품 문서를 참고하세요.

LlamaIndex 구성요소

PostgreSQL용 Cloud SQL은 다음과 같은 LlamaIndex 인터페이스를 제공합니다.

  • Vector Store
  • 문서 저장소
  • 색인 저장소
  • Chat 스토어
  • 문서 리더

PostgreSQL용 Cloud SQL 빠른 시작에서 LlamaIndex를 사용하는 방법을 알아보세요.

Vector Store

이 LlamaIndex 통합을 사용하면 PostgreSQL용 Cloud SQL의 강력하고 확장 가능한 특성을 활용하여 LlamaIndex 데이터를 저장하고 관리할 수 있습니다. LlamaIndex의 색인 생성 및 쿼리 기능을 PostgreSQL용 Cloud SQL의 우수한 성능 및 안정성과 결합하면 더 효율적이고 확장 가능한 LLM 기반 애플리케이션을 빌드할 수 있습니다.

LlamaIndex는 문서(doc, 텍스트, PDF)를 노드라는 문서 구성요소로 분류합니다. VectorStore에는 처리된 노드 콘텐츠의 임베딩 벡터와 노드의 텍스트만 포함할 수 있습니다. 최상위 개념인 노드에는 텍스트 콘텐츠, 벡터 임베딩, 메타데이터가 포함됩니다. 이러한 메타데이터 필드에 필터를 적용하여 지정된 메타데이터 기준과 일치하는 노드로 노드 검색을 제한할 수 있습니다.

PostgreSQL용 Cloud SQL에서 벡터 저장소로 작업하려면 PostgresVectorStore 클래스를 사용합니다. 자세한 내용은 LlamaIndex 벡터 저장소를 참고하세요.

PostgresVectorStore 클래스로 벡터 임베딩 저장

벡터 저장소용 PostgreSQL용 Cloud SQL에서는 다음을 수행하는 방법을 보여줍니다.

  • 벡터 임베딩을 저장할 테이블 초기화
  • Llama 색인 임베딩 모델을 사용하여 임베딩 클래스 인스턴스를 만듭니다.
  • 기본 PostgresVectorStore 벡터 저장소를 초기화합니다.
  • VectorStoreIndex를 사용하여 벡터 저장소에서 색인을 만들고 쿼리합니다.
  • 맞춤 벡터 저장소를 만들어 메타데이터를 효과적으로 저장하고 필터링합니다.
  • ANN 색인을 추가하여 검색 지연 시간을 개선합니다.

문서 및 색인 저장소

LlamaIndex 문서 저장소 통합은 구조화된 문서 저장소 및 검색을 관리하여 LlamaIndex 문서 중심 기능에 최적화합니다. 문서 저장소는 벡터 저장소에 벡터와 관련된 콘텐츠를 저장합니다.

자세한 내용은 LlamaIndex 문서 저장소 제품 문서를 참고하세요.

색인 저장소는 색인 관리를 용이하게 하여 요약, 키워드, 트리 색인과 같은 빠른 쿼리 및 데이터 검색을 지원합니다. LlamaIndex의 Index는 노드 메타데이터 전용의 경량 스토리지입니다. 노드 메타데이터를 업데이트할 때는 전체 노드 또는 문서의 모든 노드의 색인을 다시 생성 (삽입 생성 읽기)할 필요가 없습니다.

자세한 내용은 LlamaIndex 색인 저장소를 참고하세요.

문서 및 색인 저장

문서 저장소용 PostgreSQL용 Cloud SQL 노트북에서는 PostgreSQL용 Cloud SQL을 사용하여 PostgresDocumentStorePostgresIndexStore 클래스를 사용하여 문서와 색인을 저장하는 방법을 보여줍니다. 다음 작업을 수행하는 방법을 알아봅니다.

  • PostgresEngine.from_instance()를 사용하여 PostgresEngine를 만듭니다.
  • DocumentStore 및 IndexStore의 테이블을 만듭니다.
  • 기본 PostgresDocumentStore를 초기화합니다.
  • Postgres를 설정합니다IndexStore.
  • Docstore에 문서를 추가합니다.
  • 여러 색인이 있는 문서 저장소를 사용합니다.
  • 기존 색인을 로드합니다.

Chat 스토어

Chat 스토어는 채팅 기반 애플리케이션의 대화 기록과 컨텍스트를 유지하여 맞춤설정된 상호작용을 지원합니다. 채팅 저장소는 대화 내에서 채팅 메시지를 저장하고 검색하는 중앙 저장소를 제공하므로 LLM이 컨텍스트를 유지하고 진행 중인 대화를 기반으로 더 관련성 높은 응답을 제공할 수 있습니다.

대규모 언어 모델은 기본적으로 스테이트리스입니다. 즉, 매번 입력이 명시적으로 제공되지 않는 한 이전 입력이 유지되지 않습니다. 채팅 저장소를 사용하면 대화의 맥락을 보존할 수 있으므로 모델이 시간이 지남에 따라 더 관련성 높고 일관된 대답을 생성할 수 있습니다.

LlamaIndex의 메모리 모듈은 대화 컨텍스트를 효율적으로 저장하고 검색할 수 있도록 지원하므로 채팅 애플리케이션에서 더 맞춤설정되고 컨텍스트를 인식하는 상호작용이 가능합니다. LlamaIndex의 메모리 모듈을 ChatStoreChatMemoryBuffer와 통합할 수 있습니다.
자세한 내용은 LlamaIndex Chat 스토어를 참고하세요.

채팅 기록 저장

채팅 저장소용 PostgreSQL용 Cloud SQL 노트북에서는 PostgreSQL용 Cloud SQL을 사용하여 PostgresChatStore 클래스를 통해 채팅 기록을 저장하는 방법을 보여줍니다. 다음 작업을 수행하는 방법을 알아봅니다.

  • PostgresEngine.from_instance()를 사용하여 PostgresEngine를 만듭니다.
  • 기본 PostgresChatStore. 초기화
  • ChatMemoryBuffer를 만듭니다.
  • LLM 클래스 인스턴스를 만듭니다.
  • 스토리지 컨텍스트 없이 PostgresChatStore를 사용합니다.
  • 저장소 컨텍스트와 함께 PostgresChatStore를 사용합니다.
  • Chat Engine을 만들고 사용합니다.

문서 리더

Document Reader는 PostgreSQL용 Cloud SQL에서 데이터를 효율적으로 검색하고 색인을 생성하기 위해 LlamaIndex 호환 형식으로 변환합니다. Document Reader 인터페이스는 소스에서 데이터를 Documents로 로드하는 메서드를 제공합니다. Document는 텍스트와 관련 메타데이터를 저장하는 클래스입니다. Document Reader를 사용하여 Document Store에 저장하거나 색인을 만드는 데 사용할 문서를 로드할 수 있습니다.

자세한 내용은 LlamaIndex 문서 리더를 참고하세요.

데이터를 문서로 검색

Document Reader용 PostgreSQL용 Cloud SQL 노트북에서는 PostgreSQL용 Cloud SQL을 사용하여 PostgresReader 클래스를 사용하여 데이터를 문서로 검색하는 방법을 보여줍니다. 다음 작업을 수행하는 방법을 알아봅니다.

  • PostgresEngine.from_instance()를 사용하여 PostgresEngine를 만듭니다.
  • PostgresReader를 만듭니다.
  • table_name 인수를 사용하여 문서를 로드합니다.
  • SQL 쿼리를 사용하여 문서를 로드합니다.
  • 페이지 콘텐츠 형식을 설정합니다.
  • 문서를 로드합니다.

다음 단계