안녕하세요.
Python에서 chatbot을 만들 때 매우 유용하게 활용 가능한
라마 인덱스 라이브러리에 대하여 기본적인 사용 예제와
대략적인 장점에 대하여 정리해보도록 하겠습니다.
라이브러리 설치 및 API Key 세팅
우선, Llama Index를 설치해주어야 하는데요. 다음 명령어로 쉽게 설치가 가능합니다.
!pip install llama-index
라마 인덱스 사용을 위해서는 OpenAI에서 발급받은 API 키가 필요합니다.
다음과 같이 OPENAI_API_KEY 환경 변수로 지정해줍니다.
import os
os.environ["OPENAI_API_KEY"] = "sk-xxx"
문서 가져오기
다음은 문서를 가져오는 단계인데요.
라마 인덱스에서는 txt, pdf, csv, docx, hwp 등 매우 다양한 종류의 문서를 지원합니다.
이 문서들을 가져와서 데이터 풀로 사용하는 코드는 아래와 같습니다.
from llama_index.core import SimpleDirectoryReader
# data 디렉토리 내에 있는 모든 문서를 인식해서 가져옴
documents = SimpleDirectoryReader("data").load_data()
인덱스 생성하기
문서를 가져왔다면 이를 질문과 관련있는 부분만 골라낼 수 있도록
인덱스로 만드는 과정이 필요합니다.
인덱스 벡터 스토어를 생성하는 기본적인 예시 코드는 다음과 같습니다.
from llama_index.core import VectorStoreIndex
index = VectorStoreIndex.from_documents(documents)
질문 하기
이제 벡터 스토어까지 생성되었다면 질문에 대답할 기본적인 준비는 완료된 것입니다.
다음과 같은 코드로 문서에 포함된 내용에 관한 질문을 진행해봅시다.
query_engine = index.as_query_engine()
response = query_engine.query("문서에 포함된 내용에 대한 질문")
print(response)
Llama Index 장점
라마 인덱스는 다양한 장점과 유연성을 제공하여 RAG를 원하는 방식으로 커스텀하고
높은 답변 성능을 만드는 과정에 큰 기여를 할 수 있습니다.
대표적인 장점들을 몇 가지 나열해보면 다음과 같습니다.
- TreeIndex, GraphIndex 등 다양한 인덱스 타입을 지원합니다.
- 텍스트 뿐만 아니라 이미지 등 데이터를 활용한 multi-modal RAG도 지원합니다.
- 다양한 GPT 모델과 호환이 잘되며, 다른 종류의 LLM 모델도 확장이 가능합니다.
- Pinecone 등 다양한 벡터 스토어도 활용 가능하며, 임베딩 모델 선택도 유연합니다.
- 원활한 문서 검색을 위하여 Query를 Transformation하는 기능도 지원합니다.
- 원활한 문서 검색을 위하여 문서 전처리 기능을 직접 도와줍니다.
- 문서화가 매우 잘되있으며, 업데이트도 활발하여 최신 트렌드 RAG 개발에 큰 도움을 줍니다.
Llama Index의 다양한 기능은 공식 문서에 상당히 잘 정리가 되어있기에
이를 참고해보시면 좋습니다. 링크는 다음과 같습니다.
이번 글에서는 라마 인덱스에 대한 개략적인 내용을 정리해 보았습니다.
이 글이 RAG 기술을 활용한 챗봇 개발 과정에 도움이 되시기를 기원하겠습니다.
잘 봐주셔서 감사합니다.
'Python > NLP Code' 카테고리의 다른 글
ChatGPT 모델 fine-tuning 진행하는 방법 파이썬 코드 예제 (2) | 2024.11.10 |
---|---|
OpenAI GPT API에서 structured output 구조로 대답을 받도록 설정하는 방법 정리(pydantic 기능 활용) (2) | 2024.11.05 |
파이썬 OPENAI 텍스트 임베딩 모델 사용 및 유사도 구하기 예제 (2) | 2024.02.14 |