반응형
LlamaIndex를 활용한 텍스트 파일 데이터 검색 시스템 구축
LlamaIndex는 다양한 데이터 소스를 인덱싱하고 검색할 수 있는 강력한 도구입니다. 이 글에서는 텍스트 파일 데이터를 인덱싱하고 검색 기능을 구현하는 실습을 통해 LlamaIndex의 활용 방법을 소개합니다.
1. 프로젝트 개요
목표
- 텍스트 파일 데이터를 읽어와 LlamaIndex로 인덱싱합니다.
- 사용자가 자연어로 입력한 질의(Query)에 대해 관련 정보를 검색합니다.
주요 기능
- 텍스트 파일에서 데이터 추출
- 인덱싱 및 검색 기능 구현
- 자연어 기반 질의 처리
2. 개발 환경 준비
2.1 필수 라이브러리 설치
pip install llama-index openai
참고: OpenAI GPT 모델과 연동하기 위해 API 키가 필요합니다. API 키 생성을 참고하세요.
2.2 기본 설정
Python 3.8 이상의 환경을 권장합니다. 가상 환경(venv, Conda 등)을 활용해 프로젝트 환경을 설정하세요.
3. 텍스트 파일 검색 시스템 구현
3.1 데이터 준비
프로젝트 디렉터리에 검색할 텍스트 파일을 준비합니다. 예를 들어, data
폴더에 다음과 같은 파일이 있다고 가정합니다:
data/file1.txt
data/file2.txt
각 파일에는 아래와 같은 내용이 포함되어 있습니다.
file1.txt:
LlamaIndex는 대규모 언어 모델과 데이터를 연결하는 라이브러리입니다.
file2.txt:
LlamaIndex는 텍스트, PDF, 데이터베이스와 같은 다양한 데이터 소스를 지원합니다.
3.2 Python 코드
다음은 LlamaIndex를 활용해 텍스트 파일을 검색하는 예제 코드입니다.
import os
from llama_index import GPTSimpleVectorIndex, Document
# 1. OpenAI API 키 설정
os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY"
# 2. 텍스트 파일 읽기 및 Document 생성
def load_documents(directory):
documents = []
for filename in os.listdir(directory):
if filename.endswith(".txt"):
filepath = os.path.join(directory, filename)
with open(filepath, "r", encoding="utf-8") as file:
text = file.read()
documents.append(Document(text))
return documents
# 3. 텍스트 파일 데이터 인덱싱
data_directory = "data" # 텍스트 파일이 저장된 디렉터리
print("텍스트 파일을 인덱싱합니다...")
documents = load_documents(data_directory)
index = GPTSimpleVectorIndex.from_documents(documents)
print("인덱싱 완료!")
# 4. 검색 질의 처리
query = "LlamaIndex는 무엇을 지원하나요?"
response = index.query(query)
print(f"질의: {query}")
print(f"응답: {response}")
3.3 코드 설명
- 텍스트 파일 읽기:
load_documents
함수는 지정된 디렉터리에서.txt
파일을 읽어와 LlamaIndex의Document
객체로 변환합니다. - 인덱싱:
GPTSimpleVectorIndex.from_documents
메서드를 사용해 문서 데이터를 인덱싱합니다. - 질의 처리:
index.query(query)
를 사용해 자연어 질의(Query)에 대한 응답을 생성합니다.
4. 실행 결과
입력 데이터
file1.txt:
LlamaIndex는 대규모 언어 모델과 데이터를 연결하는 라이브러리입니다.
file2.txt:
LlamaIndex는 텍스트, PDF, 데이터베이스와 같은 다양한 데이터 소스를 지원합니다.
질의 예시 및 응답
질의: LlamaIndex는 무엇을 지원하나요?
응답: LlamaIndex는 텍스트, PDF, 데이터베이스와 같은 다양한 데이터 소스를 지원합니다.
5. 확장 가능성
5.1 대규모 데이터 처리
- 다량의 텍스트 파일, PDF, JSON 데이터를 처리하려면 LlamaIndex의 확장 가능한 인덱싱 기능을 활용할 수 있습니다.
- 데이터를 처리하기 전에 전처리(cleaning) 단계를 추가하면 검색 정확도를 향상시킬 수 있습니다.
5.2 웹 애플리케이션과 통합
- Flask, FastAPI를 사용해 RESTful API로 배포할 수 있습니다.
- 사용자 인터페이스를 제공하여 실시간 검색 애플리케이션을 개발할 수 있습니다.
5.3 고급 검색 기능 추가
- 특정 키워드 필터링, 유사도 점수 기반 검색 등 고급 검색 기능을 구현할 수 있습니다.
- 다양한 인덱스 타입(TreeIndex, ListIndex 등)을 사용해 검색 성능을 최적화하세요.
참고 자료
반응형
'LlamaIndex' 카테고리의 다른 글
LlamaIndex를 사용한 JSON 데이터 인덱싱 (0) | 2025.01.22 |
---|---|
LlamaIndex와 SQLite를 이용한 데이터베이스 검색 최적화 (0) | 2025.01.22 |
LlamaIndex로 개인 비서 만들기 (0) | 2025.01.22 |
LlamaIndex로 PDF 문서 검색 (0) | 2025.01.22 |
LlamaIndex Python 데이터 인덱싱 (0) | 2025.01.22 |