강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

rarexband님의 프로필 이미지
rarexband

작성한 질문수

RAG를 활용한 LLM Application 개발 (feat. LangChain)

챗봇 답변 일관성 및 RAG 검색 우선순위 설정 관련

작성

·

31

·

수정됨

0

안녕하세요, 질문드립니다.
사내 업무 챗봇을 만드는 과정에서 질문 드립니다.

  1. 답변의 일관성 관련


    현재 챗봇 테스트 중인데, 동일한 질문임에도 답변이 조금씩 달라집니다. 서비스 운영 시에도 직원들이 한 질문에 대해 일관된 답변을 받아야 문제점을 정확히 파악할 수 있을 것 같아, 같은 질문에는 동일한(유사한) 답변이 나오도록 설정하고 싶습니다. 다만 현재 history_aware_retriever를 사용하고 있어서, 이전 대화 맥락이 다르면 동일한 질문이라도 검색되는 문서와 답변이 달라질 수 있다는 점을 확인했습니다.

    • 이때 이전 대화 맥락이 있더라도 질문이 동일하면 동일한(비슷한) 문서가 검색되도록 하거나

       

    • 답변의 편차를 최소화하는 방법이 있을지 궁금합니다.

  2. RAG 검색 우선순위 관련
    현재 2개 문서(A, B)에 대해서 RAG를 적용하고 있습니다. 이때 A문서에서 가장 유사한 chunk를 먼저 검색하고, 유사한 chunk가 없는 경우 B문서에서 chunk를 찾도록 하고 싶습니다. 제가 생각한 방법은 2개인데, 어떤 접근이 더 좋을지 또는 더 나은 방법 있을지 문의드립니다.
    1안) 단일검색 + A문서 우선랭킹
    A와 B를 동시에 검색한 후, 뽑힌 문서 중 A결과를 먼저 선택하는 방법 (k=2 예정)
    후보: [A1, B1, B2, A2] → 최종: [A1, A2]
    후보: [A1, B1, B2, B3] → 최종: [A1, B1]
    2안) 계단식 검색
    1차로 A만 검색 후 임계치 미달 시 B문서 검색하는 방식입니다. 다만 임계치를 결정하는 것이 어려울 것 같고, langchain 만으로 구현이 가능할지 모르겠습니다. langgraph를 사용하면 쉽게 할 수 있는 방법이 있을까요?

감사합니다!

답변 2

0

강병진님의 프로필 이미지
강병진
지식공유자

안녕하세요! 좋은 질문 감사합니다.

  1. temperature=0으로 세팅하는 방법이 있는데, 이것도 "항상" 같은 답변을 줄거라는 보장은 어렵습니다. 생성형 AI 특성이라고 보시는게 더 좋을 것 같습니다.

    1. 이전 대화 맥락이 다르면 동일한 질문이라도 검색되는 문서와 답변이 달라질 수 있다는 점 또한 대화 이력을 활용하는 특성상, 이전 대화 맥락이 다르다는 것은 결국 프롬프트가 변경되는 것이기 때문에 답변이 다르게 나온다고 보시면 됩니다.

    2. 이전 대화 맥락이 있더라도 질문이 동일하면 동일한(비슷한) 문서가 검색되도록 하려면 해당 작업을 처리하는 단계를 추가해주시는 편이 좋습니다. 예를들면 문서 검색 전 질문을 수정해서 같은 내용으로 vector store를 검색하게 하는 방식입니다.

  2. 1안과 2안 모두 조건부 검색을 하는거라서, LangChain을 활용하시면 if 문을 활용해서 처리가 가능할 것 같고, LangGraph를 활용한다면 conditional_edge로 처리가 가능할 것 같습니다

0

안녕하세요, 인프런 AI 인턴입니다. rarexband님.

질문을 남겨주셔서 감사합니다. 주신 질문에 대해 아래와 같이 답변드리겠습니다.

1. 답변의 일관성 관련

  • temperature 값: 챗봇의 응답 일관성을 높이기 위해서는 temperature값을 0으로 설정하는 것이 주로 사용됩니다. temperature가 낮을수록 모델이 더 결정적(deterministic)으로 작동하며, 동일한 입력에 대해 일관된 출력을 제공하도록 합니다. 하지만 유의하셔야 할 점은 이 방법이 응답을 지나치게 단조롭고 예상 가능하게 만들 수 있다는 것입니다. 또한, 모델의 출력을 제어하기 위한 다른 매개변수인 top-p(음수)와 top-k(정수)도 적절하게 조절하여 최선의 결과를 얻으실 수 있습니다.

  • 추가 고려사항: 동일한 입력에 대해 항상 같은 답을 제공하기 위해 모델의 버전이 고정되어 있는지 확인하는 것도 중요합니다. 특정 모델의 업데이트나 변경 사항이 응답에 영향을 미칠 수 있기 때문입니다.

2. RAG 검색 우선순위 관련

  • 유사도 점수(threshold) 설정: 유사도 점수를 사용하여 retriever가 chunk를 선택하는 기준을 명확하게 설정할 수 있습니다. 첫 번째 문서에 대한 유사도를 우선적으로 평가하고 조건을 충족하지 못하면 두 번째 문서로 넘어가는 방식으로 설정할 수 있습니다.

  • Langchain vs Langgraph: 일반적으로 RAG 구조는 Langchain을 사용하는 것이 일반적입니다. 그러나 langgraph는 더 복합적인 그래프 탐색을 위한 도구이므로, 단순히 검색 우선순위를 조정하는 경우라면 Langchain에서 retriever의 설정만으로도 충분할 수 있습니다. 필요에 따라 langgraph를 활용하여 보다 정교한 로직을 추가할 수도 있습니다.

관련 질문 답변으로는 다음을 참고하실 수 있습니다:
- 개인정보의 처리: RAG 구현 시 보안 및 처리 방법에 대한 질문과 답변
- R.A.G를 통한 구현의 Scope 문의: RAG 활용 방법 및 데이터 전처리에 대한 질문과 답변

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

rarexband님의 프로필 이미지
rarexband

작성한 질문수

질문하기