0.프로젝트 정의 및 개발 환경
- 프로젝트 정의 : 1900년대 문서들부터 최신 문서까지 약 1,000건의 문서를 기반으로한 RAG 구축
- 개발 환경 : Ubuntu
- 활용 프레임워크 : Langchain
- 활용 LLM : OpenAI API
- Vector Store : MILVUS(chromadb, pinecone)
- 데이터 형태 : Source로 사용될 문서는 1건의 csv 문서, 1건의 excel문서와 PDF 문서들
1. 1차 프롬프트 업데이트
- RAG 관련 프롬프팅을 많이 찾아봤지만 일반적인 것들만 나오고 타겟 서비스에 적합한 것들은 직접 구축해야하는 것으로 확인
- 요구사항
- 문서 내에 있는 결과만 활용하여 응답할 것
- 출처에 대한 표기가 명확할 것
- 문서를 찾지 못한 경우 찾지 못 했다고 응답할 것
- 기본적인 옵션들과 요구사항에 얼추 맞게 작성
1 2 3 4 5 6 7 8 9
prompt = """{아래 주어진 말들을 잘 따라라} {챗봇의 이름, 역할 등등 명확하게} {신신당부해야할 규칙들 ex)결과만 활용해라, 출처를 표기해라, 모르면 모른다 해라 등등 } -------------------- response tempalet {원하는 형테의 응답 템플릿} -------------------- {입력된 문서에 기반하여 응답은 response template을 따라서 해라} """
2. 1차 프롬프트 테스트 결과
- 기존의 자유로운 응답보다 입력한 템플릿에 맞는 통일된 형태의 응답하게 됨
- 종종 유사하지도 않은 문서들을 가져오는 경우 발생
- 날짜에 대한 입력을 정상적으로 처리하지 못함(ex. 오늘 며칠이야?)
- 일반적인 인사에 대해서도 대응하지 못함 -> 유사한 문서를 기반으로 응답함
3. 2차 프롬프트 업데이트
1
2
3
4
5
6
7
8
9
10
11
prompt = """{아래 주어진 말들을 잘 따라라}
{챗봇의 이름, 역할 등등 명확하게 정의}
{신신당부해야할 규칙들 ex)결과만 활용해라, 출처를 표기해라, 모르면 모른다 해라 등등 }
{인사가 들어오면 인사해라}
{오늘의 YYYY년 MM월 DD일이다}
--------------------
response tempalet
{원하는 형테의 응답 템플릿}
--------------------
{입력된 문서에 기반하여 응답은 response template을 따라서 해라}
"""
4. 2차 프롬프트 테스트 결과
- 인사, 날짜 부분은 해결
- 과거 데이터를 기반으로 한 답변이 생성되거나 날자에 대한 기준을 명확하게 이해하지 못함
- 프롬프팅으로 처리할 수 있는 부분은 어느정도 해결된것으로 보이며 문서를 더 잘 찾을 수 있도록 해주는 부분이 필요할 것으로 판단
- 우선 문서 검색을 해결하고 추후에 프롬프트를 업데이트 진행
5. 추가 고도화 방향
1) 프롬프트 업데이트 2) 데이터 구조 업데이트 3) 리트리버 업데이트