전체 글 99

json 평활화 작업을 통한, 멀티스레드 속도 비교(ThreadPoolExecutor)

배경다층구조 json 데이터를 3가지 테이블로, 분리하는 작업 필요.예전 프로젝트 당시 glue를 통한 분산처리를 했었음.그게 최선이었냐는 질문을 받음.로컬에서 빠르게 할 수 있는 방법을 찾아서, 멀티스레드를 적용하기로함.해결과정ThreadPoolExecutor를 적용해 코드 작성for문을 10000번 실행 하는데, 한번에 배치실행수(스레드수)를 조절하며 비교오히려 스레드 수가 작을때, 빠른 현상... 왜지..스레드 수총 소요 시간총 함수 호출 수wait 호출 수acquire 호출 수as_completed 호출 누적 시간113.69 초3,79621513.54 초215.50 초5,207102815.35 초515.23 초7,494106715.07 초1016.33 초11,3342013216.18 초2016.1..

리랭커(Reranker) 사용시 여러 문서 한번에 재정렬 시키기

배경한가지 질문에 여러 문서에서 자료를 검색기로 가져오고그 자료들을 한번에 리랭커 하고 싶다.그런데 ContextualCompressionRetriever를 사용하려면 기본 검색기(base_retriever) 값을 꼭 넣어줘야한다.ContextualCompressionRetriever를 사용 목적에 맞게 수정해, 문제를 해결하고자 한다.해결과정여러 책을 돌리면서, 검색기로 찾은 문서들이 점점 dense_docs, sparse_docs에 쌓이게 만듦base_retriever에 값이 없어도 되게(Obtional) 기존 모듈 커스터 마이징(바꿈)외부 코드 for book_name in book_names: # 검색기 설정 (리랭커 호출 없이 검색만 수행) retriever = v..

invoke와 get_relevant_documents의 차이

query='블로그 주인장은 차은우와 비슷하게 생겼는가?'retriever.get_relevant_documents(query)retriever.invoke(query)배경뭔가 어느순간 최종단계에서 get_relevant_documents을 쓰고 있었다. 아마도 GPT 때문에 invoke로 쓰던게 대체된것 같다.둘다 비슷한 기능으로 동작하는거 같은데 무슨 차이가 있는지 알고 싶었다.해결과정get_relevant_documents의 코드확인 @deprecated(since="0.1.46", alternative="invoke", removal="0.3.0") def get_relevant_documents( self, query: str, *, ..

langchain 공부 2024.10.16