LlamaIndex

Python으로 LlamaIndex 기반 AI 챗봇 개발

Pro.Dev 2025. 1. 22. 17:28
반응형

Python으로 LlamaIndex 기반 AI 챗봇 개발

LlamaIndex를 활용하면 데이터 인덱싱 및 검색 기능을 통해 사용자 질문에 적절한 답변을 제공하는 AI 챗봇을 쉽게 개발할 수 있습니다. 이번 글에서는 한글 데이터를 사용하여 LlamaIndex 기반 AI 챗봇을 구현하는 방법을 단계별로 설명합니다.


1. 프로젝트 개요

목표

  • LlamaIndex를 활용하여 한글 데이터를 인덱싱합니다.
  • 사용자 질문에 대해 적절한 답변을 생성하는 AI 챗봇을 개발합니다.

주요 기능

  • 한글 데이터를 효율적으로 인덱싱
  • 자연어 기반 질의 응답
  • 사용자 입력에 실시간으로 반응하는 인터페이스

2. 개발 환경 준비

2.1 필수 라이브러리 설치

다음 명령어를 실행하여 필요한 라이브러리를 설치합니다:

pip install llama-index openai

참고: OpenAI API를 사용하려면 API 키가 필요합니다.

2.2 기본 설정

Python 3.8 이상의 환경에서 개발을 권장합니다. 가상 환경(venv, Conda)을 사용하여 의존성 관리를 간편하게 할 수 있습니다.


3. AI 챗봇 구현

3.1 샘플 한글 데이터 준비

다음은 data.json 파일에 저장된 샘플 한글 데이터입니다:

data.json:

[
    {"id": 1, "질문": "LlamaIndex는 무엇인가요?", "답변": "LlamaIndex는 데이터를 효율적으로 인덱싱하고 검색할 수 있도록 돕는 라이브러리입니다."},
    {"id": 2, "질문": "Python이란?", "답변": "Python은 다양한 응용 프로그램을 개발할 수 있는 프로그래밍 언어입니다."},
    {"id": 3, "질문": "AI의 주요 응용 분야는?", "답변": "AI는 자연어 처리, 이미지 인식, 자율 주행 등 다양한 분야에서 사용됩니다."}
]

3.2 LlamaIndex로 데이터 인덱싱

샘플 데이터를 LlamaIndex에 인덱싱하여 검색 가능한 형태로 변환합니다.

import os
import json
from llama_index import GPTSimpleVectorIndex, Document

# OpenAI API 키 설정
os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY"

# 데이터 로드 및 인덱스 생성
def load_data_and_create_index(file_path):
    with open(file_path, "r", encoding="utf-8") as file:
        data = json.load(file)
    documents = [Document(f"질문: {item['질문']}\n답변: {item['답변']}") for item in data]
    index = GPTSimpleVectorIndex.from_documents(documents)
    return index

index = load_data_and_create_index("data.json")
print("데이터 인덱싱 완료!")

3.3 AI 챗봇 인터페이스

사용자가 질문을 입력하면 LlamaIndex를 통해 답변을 검색하는 간단한 챗봇 인터페이스를 구현합니다.

# 챗봇 대화 루프
print("AI 챗봇을 시작합니다. 종료하려면 'exit'를 입력하세요.")
while True:
    query = input("질문: ")
    if query.lower() == "exit":
        print("챗봇을 종료합니다.")
        break
    response = index.query(query)
    print(f"답변: {response}")

4. 실행 결과

데이터 예시

ID 질문 답변
1 LlamaIndex는 무엇인가요? LlamaIndex는 데이터를 효율적으로 인덱싱하고 검색할 수 있도록 돕는 라이브러리입니다.
2 Python이란? Python은 다양한 응용 프로그램을 개발할 수 있는 프로그래밍 언어입니다.
3 AI의 주요 응용 분야는? AI는 자연어 처리, 이미지 인식, 자율 주행 등 다양한 분야에서 사용됩니다.

실행 예시

AI 챗봇을 시작합니다. 종료하려면 'exit'를 입력하세요.
질문: LlamaIndex는 무엇인가요?
답변: LlamaIndex는 데이터를 효율적으로 인덱싱하고 검색할 수 있도록 돕는 라이브러리입니다.

질문: AI의 주요 응용 분야는?
답변: AI는 자연어 처리, 이미지 인식, 자율 주행 등 다양한 분야에서 사용됩니다.

질문: exit
챗봇을 종료합니다.

5. 확장 가능성

5.1 데이터 확장

  • JSON 파일 외에도 데이터베이스, CSV 파일, 또는 실시간 API 데이터를 인덱싱할 수 있습니다.

5.2 웹 인터페이스 추가

  • Streamlit, Flask 또는 FastAPI를 사용해 웹 기반 챗봇 인터페이스를 제공할 수 있습니다.

5.3 고급 검색 기능

  • 키워드 필터링, 결과 요약, 또는 사용자 정의 응답 템플릿을 추가하여 검색 기능을 향상시킬 수 있습니다.

참고 자료

반응형