본문 바로가기
기타

[We-Co] RAG - LangChain , return_source_documents

by 위기의코딩맨 2025. 7. 16.
반응형

안녕하세요. 위기의 코딩맨입니다.

이번에 RAG를 구성하는데 문제가 발생했습니다.

 

참조할 PDF파일이 2개가 있었는데

2개의 파일을 비교하면 비교가 되지않고,

1개의 파일씩 검색하면 검색이 되는 문제였습니다.

[ 문제 ]

예를 들어보겠습니다.

  • 24년도 OOO 정보와 25년도 OOO 정보를 비교해서 알려줘

이렇게 질문을 하면.. 답변을..

죄송하지만, 2024년도 OOO 정보는 제공되지 않았습니다. 2025년도 OOO 내역만 확인할 수 있습니다. 2025년도 OOO 정보는 ~입니다. 2024년도에 대한 정보는 알 수 없습니다.

 

그래서 24년도와 25년도 따로 검색을 진행해봤습니다.

  • 24년도 OOO 정보를 알려줘
  • 25년도 OOO 정보를 알려줘
24년도 OOO정보는 ~입니다. 25년도 OOO정보는 ~입니다.

 

해당 방식으로 검색은 잘되는 것을 확인했습니다.

왜지..! 도대체!!! 왜 검색을 잘 못하는것이야~!

이런 저런 많은 방식을 시도해봤습니다.

  • Chunk 조절
  • Retriever 조절
  • Memory 조절

해당 방식들도 조절해보고 해봤지만 답이 아니었습니다...으악

뭐가 문제지.. PDF 파일도 바꿔보고 했지만 답이 안나왔습니다.

문제를 찾다보니 해당 답변에 대한 참조한 문서를 확인할 수 있다는 것을 확인했습니다.

qa_chain = ConversationalRetrievalChain.from_llm(
    llm=ChatOpenAI(openai_api_key=API_KEY, model_name="gpt-4o-mini", temperature=0),
    retriever=retriever,
    memory=None,                     # 메모리 비활성화
    return_source_documents=True     # 참조 문서 반환
)

 

 

chain을 구성할 때,

문서만 참조하도록 Memory는 비활성화 설정,

return_source_documents 항목을 True로 설정하여

참조문서를 확인 가능하도록 했습니다.

그리고 질문을 하게되면 아래 형태로 검색이 진행되는 것을 확인할 수 있습니다.

Document(id='file_id', metadata={'creationdate': '시간', 'source': '25년도_결과보고.pdf', 'creator': 'PyPDF', 'total_pages': 1, 'page': 0, 'page_label': '1', 'producer': 'cairo 1.15'}, page_content='내용')

 

확인해보니 24년도 PDF파일을 참조하지 않고 있는 것을 확인했습니다.

근데 왜 참조를 안하지..? 나는 다 저장했는데??

찾아보니 이전 색인 결과가 save_sotre에 남아있어 참조를 하지않다는 것입니다.. 

save_sotre를 삭제하고 다시 구성하고 검색해보니..

 

드디어 문제가 해결되었습니다..!!

공부도하면서 문제도 해결하고.. 아주좋군...

반응형