베하~ 안녕하세요! BTC_현상수배범 입니다.
오늘은 Llama index에 대해서 알아보도록 하겠습니다.
1. LlamaIndex란?
LlamaIndex는 이전 포스팅에서 배웠던 "LLM"을 활용한 애플리케이션을 구축하기 위한 데이터 프레임워크입니다. LLM 애플리케이션을 구축하기 위해서 데이터 커넥터, 인덱스, 쿼리 인터페이스 등 다양한 도구들을 제공하며 외부 애플리케이션 프레임워크와의 편리한 통합을 지원합니다.
1.1 데이터 커넥터
기존 데이터 소스 및 데이터 형식(API, PDF, 문서, SQL 등)을 수집할 때 사용합니다. 데이터 커넥터는 Llama Hub에서 제공되며, Llama Hub는 LlamaIndex 애플리케이션에 쉽게 연결하여 재생할 수 있는 데이터 로더가 포함된 오픈 소스 리포지토리입니다. 일반적인 웹 페이지는 물론이고, 노션, 구글 Docs, Discord에서도 데이터를 로드할 수 있습니다! 데이터 커넥터 모듈과 간단한 사용 예시는 링크에서 확인할 수 있습니다.
1.2 인덱스
인덱스는 사용자 쿼리에 대한 관련 컨텍스트를 빠르게 검색할 수 있는 데이터 구조입니다. LlamaIndex의 경우, RAG(retrieval-augmented generation) 사용 사례의 핵심 기반입니다. 인덱스는 <document>에서 빌드되며, 질문 및 답변과 데이터 채팅을 가능하게 하는 쿼리 및 채팅 엔진을 구축하는 데 사용됩니다. 라마 인덱스의 인덱스 종류는 총 8개가 존재합니다.
1. Vector Store Index: 벡터 저장소 인덱스는 문서나 문장들의 임베딩 벡터를 저장하고, 유사도 기반 검색을 수행하는 데 사용됩니다. 벡터 공간에서의 거리 측정을 통해 유사한 벡터를 검색할 수 있습니다.
2. List Index: 리스트 인덱스는 데이터를 순차적으로 저장하는 데 사용됩니다. 순차적인 접근이 필요한 작업에 유용합니다. 예를 들어, 문서의 순서를 유지하면서 특정 조건을 충족하는 문서를 검색할 수 있습니다.
3. Tree Index: 트리 인덱스는 데이터를 계층 구조로 저장하는 데 사용됩니다. 효율적인 검색 및 탐색 작업을 위해 사용됩니다. 예를 들어, 카테고리 또는 태그로 문서를 분류하고 검색할 수 있습니다.
4. Keyword Table Index: 키워드 테이블 인덱스는 키워드와 관련된 문서를 검색하는 데 사용됩니다. 주어진 키워드에 대한 연관 문서를 찾는 데 효과적입니다. 키워드에 대한 인덱스를 생성하여 빠른 검색이 가능합니다.
5. Knowledge Graph Index: 지식 그래프 인덱스는 개체(Entity)와 개체 간의 관계를 저장하고 검색하는 데 사용됩니다. 복잡한 지식 구조를 저장하고 쿼리를 실행하여 지식 그래프의 연결된 정보를 탐색할 수 있습니다.
6. Pandas Index: 판다스 인덱스는 데이터프레임의 행을 식별하고 조회하는 데 사용됩니다. 데이터프레임의 행 순서를 정렬하고, 특정 조건을 충족하는 행을 선택하는 등의 작업에 활용됩니다.
7. SQL Index: SQL 인덱스는 데이터베이스에서 효율적인 데이터 검색을 위해 사용됩니다. 특정 열에 대한 인덱스를 생성하여 데이터베이스에서 빠른 검색과 정렬을 지원합니다.
8. Document Summary Index: 문서 요약 인덱스는 문서의 중요한 특징이나 핵심 내용을 요약하여 저장하는 데 사용됩니다. 요약된 내용을 검색하고 문서를 선택하는 데 활용됩니다.
각 모듈들에 대한 상세한 내용은 관련 자료를 확인해 주세요.
1.3 쿼리 인터페이스
쿼리 엔진은 데이터에 대해 질문할 수 있는 일반 인터페이스입니다. 쿼리 엔진은 자연어 쿼리를 받아 풍부한 응답을 반환합니다. 대부분의 경우, 리트리버를 통해 하나 이상의 인덱스에 구축됩니다. 고급 기능을 구현하기 위해 여러 쿼리 엔진을 구성할 수 있습니다. 제공하는 모듈들은 링크에서 확인해 보실 수 있습니다.
2. 라마 인덱스 설치 및 사전 준비
제가 실습한 환경은 아래와 같습니다.(갤럭시 북 2 Pro)
CPU: Intel Core i7-1260P 프로세서 (4P SMT + 8E, 최대 4.7GHz)
GPU(내장그래픽): Intel Iris Xe Graphics (80EU / 96EU)
RAM: 16GB LPDDR5 SDRAM
OS: Microsoft Windows 11 Pro
Python 버전: 3.10.9
IDE: Visual Studio Code
2.1 LlamaIndex 설치
라마 인덱스를 실행하기 위해서는 아래 명령어를 입력하면 됩니다.
%pip install llama-index
2.2 OpenAI API 키 발급
다음 포스팅에서 Llama-Index를 활용해 직접 문서를 인덱싱하고, 쿼리 인덱스를 통해 QA 태스크를 진행할 예정입니다. 해당 과정 중에 OpenAI의 OpenAI GPT-3(text-davinci-003)모델을 사용하는데, 이를 사용하기 위해서는 OpenAI에서 API키를 발급받아야 합니다. (발급은 비용이 발생하지 않으나, 해당 API 키를 통해 LLM 모델을 호출하게 되면 비용이 청구될 수 있으니, 주의하시기 바랍니다.) OpenAI에서 키를 발급받는 방법은 다음과 같습니다.
2.2.1 아래 링크로 접속, 회원가입을 완료합니다.
https://platform.openai.com/account/api-keys
저는 가입이 되어 있어서 Log in을 통해 로그인을 진행하였습니다. 계정이 없으신 분들은 Sign up 버튼을 눌러 회원가입을 진행하시면 되겠습니다.
2.2.2 새 키 생성하기
Create new secret key 버튼을 클릭하면 새로운 키를 생성할 수 있습니다.
My Test Key 부분에 키 이름을 입력하고, Create secret key를 클릭하면 새로운 키가 생성됩니다!
이후에는 화면에 secret key가 출력되는데, 창을 닫으면 두 번 다시는 전체 내용을 확인할 수 없기 때문에 복사해서 잘 숨겨(?) 둡니다. 저는 스티커 메모에다가 따로 기록을 해뒀습니다. secret key가 절대 유출되지 않도록 주의를 부탁드립니다.
Done 버튼을 클릭하면 OpenAI API 키 발급이 완료됩니다. 다시 한번 말씀드리지만, 발급받은 키가 유출되지 않도록(깃허브 공개 레포지토리 등) 각별히 주의하시기 바랍니다.
2.2.3 API Key 관리
키 관리는 링크에서 가능하며, 키를 삭제하고 싶으면 키 우측의 쓰레기통 버튼을 클릭하시면 됩니다. LAST USED에서 마지막 키 사용일자를 확인할 수 있으니, 사용하지 않았는데 일자가 찍혀있다면 유출되었을 가능성이 있습니다. 이 경우, 해당 키를 삭제하고 새로운 키를 발급받으시기를 권장드립니다.
2.2.4 비용 확인
페이지 우측 상단의 계정을 클릭 -> Manage account로 접속하시면 계정에 대한 설정을 진행하거나 사용량 등을 확인할 수 있습니다. 비용 확인을 위해서 좌측의 Usage 탭을 클릭합니다.
Usage 탭에서는 위처럼 일별 사용량(비용)을 확인할 수 있습니다. Billing 탭의 Usage limits 페이지에서 Hard limit값을 설정하면, 설정한 값($ 기준 가격)을 초과하는 순간 API 요청들이 거절되며 비용이 청구되지 않으니, 적절한 값으로 설정하시면 되겠습니다.
여기까지 LlamaIndex의 기본적인 개념과 설치 방법, OpenAI API 키 발급 방법에 대해서 알아보았습니다. 다음 포스팅에서는 예제 문서를 임베딩하고, 해당 문서에 대해 QA 태스크를 진행하는 내용을 작성하도록 하겠습니다.
'IT KNOWLEDGE' 카테고리의 다른 글
Rancher로 Kubernetes 환경 구축하기 - 설치 및 개요 (0) | 2023.07.06 |
---|---|
Kafka (0) | 2023.06.27 |
메모리 구조 (0) | 2023.06.22 |
Kubeflow 개요 및 특징 (0) | 2023.06.19 |
LLM (0) | 2023.06.09 |
댓글