우리는 종종 ChatGPT에게 질문을 하지만, 때로는 ChatGPT가 알지 못하는 정보에 대해 물어봐야 할 때가 있습니다. 이런 경우에 OpenAI Embeddings를 활용하면 비공개 자료에 대해서도 ChatGPT에게 물어볼 수 있습니다.
특히 참고자료의 양이 너무 커서 ChatGPT에 입력할 수가 없을 때 유용하게 사용될 수 있습니다. 이 글에서는 로컬 디스크에 저장된 프로젝트 폴더의 소스 파일을 이용해서 이 과정을 설명하겠습니다. 자동차를 운전하기 위해 엔진의 원리를 자세히 알 필요가 없듯이, 복잡한 기술적 세부사항 없이 이 방법을 실제로 적용하는 방법에 집중하겠습니다.
먼저, 필요한 도구들을 준비해봅시다.
pip install requests numpy nltk
우리는 GitHub에서 필요한 코드를 가져와 사용할 것입니다.
https://github.com/ryujt/openai-embeddings에서 코드를 다운로드 받으세요.
다운로드 받은 폴더에는 아래와 같은 파이썬 파일이 있습니다:
먼저 emb_save.py 파일을 열어 몇 가지 설정을 변경해야 합니다.
설정을 마쳤다면, 명령 프롬프트에서 다음 명령어를 실행하세요.
python emb_save.py
이 과정이 끝나면 embeddings.jsonl이라는 파일이 생성됩니다.
이 파일에는 우리의 소스 코드가 ChatGPT가 이해할 수 있는 형태로 변환되어 저장되어 있습니다.
이제 emb_ask.py 파일을 열어서
그리고 다음 명령어를 실행합니다.
python emb_ask.py
질문에 대한 답변은 response.md 파일에 저장됩니다.
이 파일을 열어 ChatGPT의 답변을 확인할 수 있습니다.
다음 이미지는 결과 내용의 일부를 스크립샷으로 캡쳐한 것입니다.
상당히 자세한 리포트가 마크다운 형태로 저장되어 있는 것을 확인할 수 있습니다.
이 시스템의 작동 원리를 간단히 설명하면 다음과 같습니다:
이 과정을 통해, GPT는 원래 학습하지 않은 특정 정보에 대해서도 맥락을 이해하고 답변할 수 있게 됩니다. 이는 마치 GPT에게 관련 문서를 제공하고 그 내용을 바탕으로 질문에 답하도록 하는 것과 유사합니다.
다이어그램의 위쪽 화살표처럼 바로 질문하지 않고, 아랫쪽 화살표와 같이 참고가 될만한 정보가 자동으로 전송된다고 생각하시면 됩니다. 이 방식의 장점은 다음과 같습니다:
다만, 이 방식은 텍스트 임베딩의 품질과 유사성 검색의 정확도에 크게 의존하므로, 사용되는 임베딩 모델과 유사성 측정 방법의 선택이 중요합니다.
이 방법을 사용하면 ChatGPT가 원래 알지 못하는 우리의 특정 프로젝트나 문서에 대해서도 질문할 수 있습니다. 이는 팀 내 문서 검색, 코드 분석, 프로젝트 이해 등 다양한 분야에서 활용될 수 있습니다.
ChatGPT의 강력한 언어 이해 능력과 우리의 특정 데이터를 결합함으로써, 우리는 더욱 효율적이고 정확한 정보를 얻을 수 있게 됩니다.