250112 TIL JSON 데이터 처리 및 임베딩 함수 작성

윤수용·2025년 1월 13일
0

TIL

목록 보기
99/113

1. 한 일

RAG 챗봇 시스템 설계

  • FAISS Vectorstore를 사용해 문서 임베딩을 저장하고 검색하는 RAG(참조 기반 생성) 시스템 설계.
  • 로컬의 JSON 데이터를 읽어 FAISS 인덱스와 메타데이터 파일로 변환하는 작업:
    • FAISS의 write_indexread_index를 활용해 벡터 인덱스를 디스크에 저장 및 로드하는 방법 학습.
    • 메타데이터 저장 방식:
      • 벡터와 메타데이터(책 제목, 목차 등)를 .pkl, .json, 데이터베이스 등으로 분리 관리하는 방법 학습.
  • OpenAI API를 이용해 책의 제목, 설명, 목차를 임베딩하고 이를 기반으로 FAISS 인덱스 생성.

JSON 데이터 처리 및 임베딩 함수 작성

  • JSON 파일을 읽어 책 정보를 로드하고, 임베딩 벡터 생성 후 저장:
    - 책 정보(제목, 설명, 카테고리, 목차)를 임베딩하여 검색 가능한 벡터 스토어 생성.
    - BeautifulSoup을 활용해 목차 HTML을 계층적 구조로 변환하는 parse_toc 함수 작성.
    - OpenAI의 text-embedding-ada-002 모델을 사용해 텍스트 임베딩 생성.




2. TroubleShooting

JSON 데이터 로드 및 처리

  • 오류: 디렉토리 내 JSON 파일이 없거나 잘못된 형식으로 저장된 경우 데이터 로드 실패.
  • 해결:
    - JSON 파일 유무를 확인하고 경고 메시지 출력.
    - 로드된 JSON 데이터가 리스트 형식인지 유효성 검사 추가.

FAISS와 메타데이터의 동기화

  • 문제: FAISS 인덱스와 메타데이터의 순서가 일치하지 않으면 검색 결과와 메타데이터 매핑 실패.
  • 해결:
    - 벡터 추가 시마다 메타데이터를 동기화하도록 설계.
    - 검색 결과 인덱스를 기반으로 메타데이터를 참조하는 구조 확립.




3. 느낀 점

FAISS와 메타데이터 관리

  • 벡터 스토어 설계의 핵심은 벡터와 메타데이터의 동기화.
  • .pkl, .json, 또는 데이터베이스를 통해 메타데이터를 관리할 때, 시스템의 확장성과 데이터 접근성을 고려해야 함.

RAG 설계의 중요성

  • RAG 시스템의 성능은 임베딩 품질벡터 검색 정확도에 크게 의존함.
  • OpenAI 임베딩 모델과 FAISS를 활용하면 빠르고 정확한 검색 시스템을 구현할 수 있음.

개발 도구와 설계의 유연성

  • JSON, FAISS, Python의 강력한 데이터 처리 도구를 활용해 유연하게 데이터를 관리할 수 있다는 점을 체감.
  • 단순한 파일 기반 저장 방식에서 데이터베이스 기반 관리로 확장성을 고려하는 방향도 중요.
profile
잘 먹고 잘 살자

0개의 댓글

관련 채용 정보