본문 바로가기
인공지능 (AI : Artificial intelligence)

Private_GPT를 활용해보세요! (KnowledgeGPT) - PDF

by debugglinglife 2024. 2. 27.
728x90

AI와 ChatGPT라는 용어는 많이 들어 보았지만 실생활에서 어떻게 사용해야 할지, 또는 회사의 기밀문서를 사용하는데 보안 문제로 인해 포기한 적이 있을 수 있습니다. 이러한 문제를 해결하기 위해, 개인 자료를 안전하게 활용하여 나만의 지식 기반에서 답변을 얻는 방법을 공유하려 합니다.


[AI를 활용하기 어려운 이유]

  1. 기술적 이해도 부족: AI 기술에 대한 이해가 부족하여 활용이 어려운 경우.
  2. 데이터 보안 우려: 개인 또는 기업 데이터의 보안 문제로 인해 AI 활용을 꺼리는 경우.
  3. 결과의 불확실성: AI의 결과가 항상 정확하지 않아 신뢰가 떨어지는 경우.

❑ 사용할 기술 및 이해도

  • 파이썬 ⭐⭐ : 파이썬(Python ≥3.10)을 설치할 수 있어야 하고 간단한 pip 설치가 가능
  • Streamlit ⭐⭐ : Streamlit이 무엇이고 어떻게 활용하면 되는지에 대한 이해
  • OpenAI API key ⭐⭐ : ChatGPT OpenAI API 발급 방법을 아는 정도

 설치 방법

: Terminal or Visual Studio (Ctrl + Shift + ~)에서 설치 및 실행 가능

  1. 리포지토리를 복사합니다.
git clone https://github.com/mmz-001/knowledge_gpt
cd knowledge_gpt
  1. Poetry 설치하고, 가상 환경을 활성화합니다.

** Poetry는 파이썬 가상환경 및 의존성 관리 소프트웨어입니다. 프로젝트가 의존하고 있는 라이브러리들을 관리(설치, 업데이트 등)해주는 툴입니다

poetry install
poetry shell
  1. (선택사항) 서버를 실행할 때마다 OpenAI API를 추가하는 것을 피하기 위해 환경 변수에 추가합니다.
    • *.env.example의 복사본을 .env라는 이름으로 만듭니다.*
    • *.env 파일에 API 키를 추가합니다.*
  2. Streamlit 서버를 실행합니다.
cd knowledge_gpt
streamlit run main.py

** Streamlit 실행 종료 : Ctrl + C


 사용방법

  1. 왼쪽 OpenAI API Key 입력
  2. 파일(형식 PDF, TXT, DOCX)을 업로드 후 기다리기
  3. 모델(Model)은 gpt-3.5-turbo와 gpt-4가 있는데 요금이 차이가 있으니 확인 후 사용


 세부 설정 변경

  • 작동 원리 : 사용자가 문서를 업로드하면, 이 문서는 여러 작은 부분으로 나눠져서 '벡터 인덱스'라는 독특한 형태의 데이터베이스에 저장되는데요, 이 벡터 인덱스는 의미적 검색과 검색이 가능하게 해 줍니다.

그리고 사용자가 질문을 제출하면, 이제 KnowledgeGPT가 벡터 인덱스를 활용해 문서 조각들 중에서 가장 관련성이 높은 부분들을 찾아냅니다. 그다음 단계에서는 GPT3가 등장해서, 최종적인 답변을 생성해 줍니다.


main.py
파일을 실행 후 아래와 같이 Chunk_size를 300→ 500으로 변경하고 overlap도 0→ 100 정도로 늘려줬습니다. 또한 Temperature 가 0으로 설정되어 있었는데 이를 0.2 정도로 늘려줬습니다.

무엇이 정답이라고 하기는 어렵고 상황에 맞춰서 변경을 하면 좋을 것 같습니다.

 

 결과 및 결론

: 답변을 확인하면 PDF 내용을 바탕으로 대답을 잘했다는 것을 알 수 있습니다. 그러나, PDF 내용이 빈약하거나 전문적인 문서의 경우 정확한 답변을 하지 못했습니다. 아쉽게도, 한글의 정확도는 영문에 비해 많이 떨어졌습니다. 아직은 100% 대체하기는 어렵지만 실생활에 잘 활용하면 좋은 도구가 될 것 같네요.

 

 

참고 링크

GitHub - mmz-001/knowledge_gpt: Accurate answers and instant citations for your documents.

728x90