Perplexity.AI와 유사한 검색엔진 구현 프로젝트(4)

2024. 9. 22. 18:00AI

이전까지 우리는 AI가 원하는 답변을 만들어 낼 수 있도록 여러 작업을 진행하였다.

  1. VectorDB 활용: 사업정보 -> 임베딩 -> 유사 서비스/기업 조회
  2. 문서 데이터: 세금 처리, 제도, 지원 사업관련 문서 -> 임베딩 -> 사업 정보 기반 사업 운영에 필요한 정보 조회
  3. 최신정보: 시장규모, 경쟁분석, 보도, 흐름 등 최신정보 -> Web Search API 요청
  4. 사용자 질문 의도 분석: 사용자 질문 -> 의도 분석 -> 키워드 생성
  5. 기댓값에 도달할 수 있는 검색 쿼리생성: 의도 분석 내용 기반 쿼리 생성 -> 3-5개

정보를 LLM에 전달하고 답변을 생성하는 과정에서 Prompting에서 신경 쓴 부분

  • 페르소나 부여: "당신은 창업 컨설턴트 입니다. $@#!%!#"
  • 주관적이지 않고 객관적인 정보 제공
  • LLM이 가지고 있는 정보(학습정보)가 아닌 제공 받은 정보만을 사용하도록 유도

전반적인 Chat-bot의 기능을 구현하기 위해 Langchain의 ConversationChain과 ConversationBufferWindowMemory를 사용하였다.

기본적으로 대화내용을 기억하고 이를 사용자의 요청에 활용하는 것에 목적을 두고 있는 듯하여 적용하였다.

그러나 OpenAI API를 사용하는 경우 기억할 수 있는 대화의 갯수를 적절히 조절해주어야한다. 이를 완벽하진 않더라도 개선할 수 있는 방법은 크게 두가지가 있었다.

  1. 기억할 대화량 조절
  2. 기억한 대화 요약

간단하게 기억할 대화량을 조절하는 경우는 큐의 형태로 오래된 기억부터 잃는 방식이라고 생각하면된다.

또는 대화 내용을 요약하게 되면 어느정도 맥락은 유지할 수 있지만 상세내용을 기억할 수 없는 단점이 있으므로 서비스의 형태에 따라 적절한 형태로 사용하는 게 맞는 것 같았다.