요약 계획 변경

parkjunhyeok_·2025년 8월 15일

LLM, RAG 프로젝트

목록 보기
4/6

계획 변경

처음에는 본문을 LLM으로 교정한 뒤, 가공본을 벡터 DB에 저장하려고했다.
근데 LLM으로 교정하고 요약본을 뽑아내는 과정은 시간이 너무 오래걸렸다.
품질도 중요하지만, 들어가는 시간과 비용에 비해 효율이 떨어졌기때문에 일단 가공하지 않고 진행하기로 했다.

UX를 중심으로...

먼저 짧은 요약을 통해 전체 요약이 나오기 전에 사용자가 읽을거리를 제공하고자 했다.

def summarize_sub(video_id):
  text = get_transcript(video_id)
  client = OpenAI()
  prompt = f"""
  [Identity]
  당신은 요약 전문가입니다.

  [Task]
  1. 주제를 관통하는 질문을 만들고 해당되는 답변을 작성해주세요.

  [Text]
  {text}
	"""
  response = client.responses.parse(
    model = 'gpt-4o-mini',
    input = prompt,
    text_format = FormatSub,
    temperature = 0.0,
  )
  return response.output_parsed

메인이 되는 본문 요약은 짧은 요약과 함께 비동기처리하여 사용자가 1번을 읽는 동안 진행되도록 할 것이다. 스트리밍으로 뿌려준다면 ux가 좋아질 것으로 예상된다.

def summarize_main(video_id):
  text = get_transcript(video_id) # 텍스트는 main에서 처리하기
  client = OpenAI()
  prompt = f"""
  [Identity]
  당신은 요약 전문가입니다.

  [Task]
  최대한 자세히 계층(최대 3계층까지)을 나눠서 요약해주세요. 순서는 [Text] 안에 있는 순서대로 작성해주세요.
  모든 내용을 반영해주세요.

  [Text]
  {text}
  """
  response = client.responses.parse(
    model = 'gpt-4o-mini',
    input = prompt,
    text_format = FormatMain,
    temperature = 0.0,
  )
  return response.output_parsed

일단 짧은 요약은 '4o-mini'로 할건데 메인 요약같은 경우는 '4o-mini'로 테스트해보다가 아쉬울 때 모델을 바꾸든지 할 예정이다.

구현 포인트

  • 비동기 실행: 짧은 요약과 메인 요약을 동시에 진행하여 ux 향상
  • 유연한 모델 사용: 현재는 둘다 4o-mini 사용 예정이나, main 요약은 품질 봐서 교체 예정

마무리,,

스크립트를 가공하지 않으므로 챗봇을 구현할 때 생길 품질 문제가 생길 수 있지만, 토큰 비용과 api 시간 문제가 더 크다고 느껴져서 계획을 수정하게 되었다. 나중에 품질이 떨어지는 느낌을 받는다면 비동기적으로 가공한 스크립트를 벡터 디비에 저장하는 방법이 있을 것 같다.

0개의 댓글