Rookies-2025.03.13

이주원·2025년 3월 14일

sk쉴더스 루키즈

목록 보기
29/36

MaxMarginalRelevanceExampleSelector

다양성을 챙기면서 유사한 답변을 할 수 있음

오전에 한일 프롬프트엔지니어링

        example_selector = MaxMarginalRelevanceExampleSelector.from_examples(
    examples=samples,  
    embeddings=OpenAIEmbeddings(),  
    vectorstore_cls=FAISS,  
    k=3  
)
  1. GPT가 답변을 만들때 참고할 few-shot Learning 예제 3개를 선택 ,
    MMR을 적용하여 질문과 유사하지만 다양한 예제를 선택
    GPT가 답변 패턴을 학습하는 역할

  retriever = index.as_retriever(search_type="mmr", search_kwargs={"k": 3})
  query = "비밀의 방에 있는 물건은?"
  retriever_docs = retriever.retrieve(query)
  1. mmr을 적용하여 faiss 벡터 DB에서 관련 문서 3개 검색
    GPT가 답변을 생성할 때 참고할 정보를 제공

  selected_examples = example_selector.select_examples({"input": query})  
  example_text = "\n".join([f"입력: {ex['input']}\n출력: {ex['output']}" for ex in selected_examples])  

  context = "\n".join([doc.text for doc in retriever_docs])
  prompt = f"예제:\n{example_text}\n\n문맥: {context}\n\n질문: {query}\n답변:"
  1. 프롬프트 생성 Few-Shot + 검색된 문서 + 질문을 조합하여 지피티에게입력

샘플이 너무간단해서 답변이 심플함

샘플을 순차적으로 3개 답변하도록 변경

답변이 순차적으로 나오도록 성공

현재 진행상황 (LlamaIndex + FAISS + GPT) + Few-Shot + MaxMarginalRelevance

여기다가 스트리밍, 대화내용 기억 추가할 것

우선 대화내용 기억을 추가하려고하는데
1. 장기기억
2. 단기기억

장기기억을 선택하면 이전에 물어봤던 답변을 예시로 또 사용할 수 있고
단기기억을 사용하면 현재 물어본 형태를 예시로 또 사용할 수 있으므로

장기기억이 더 적합할 것 같아요

대화기록을 저장할 데이터베이스 만들기

대화 내용을 저장할 함수

과거 대화내용을 활용할 함수 (프롬프트에 추가될 내용)

대화내용 불러와서 프롬프트에 추가

생성된 답변을 저장

대화내용 저장완료

현재 진행상황 (LlamaIndex + FAISS + GPT) + Few-Shot + MaxMarginalRelevance + Long-Term Memory

이제 실시간 스트리밍 추가

profile
뭐가될지 모름

0개의 댓글