
논문 100개 구현의 1탄을 장식한다.최근 어떤 부트캠프 홈페이지에서 논문을 50~100개 구현할 수 있으면 전문가 수준이 된다고 해서 직접 해보려고 한다.4~6개월에 1천만원이라면 비싼 돈 들일 필요 없이 직접 하면 돈이 아껴지지 않겠는가.어떻게 보면 의지로 돈을 사는 셈이다. 고로 오늘 해볼 논문은 공모전에서도 활용해볼 겸 U-Net의 논문이다.https://arxiv.org/abs/1505.04597 논문 구현에 앞서 확인해야 할 포인트 Read1. 논문 제목(title)과 초록(abstract), 도표(figures) 읽기2. 도입(introduction), 결론(conclusion), 도표(figures)를 읽고 필요없는 부분 생략3. 수식은 처음 읽을 때는 과감하게 생략4. 이해가 안되는 부분..

https://www.arxiv.org/abs/2407.16833 RAG vs LC의 결과를 보여주는 논문이다. LC는 확실히 성능면에서는 뛰어나지만, Token 값이 비싸고, RAG는 LC에 비해 한참 성능이 떨어진다. 그래서 해당 논문은 둘을 합친 Self-Route라는 기법을 제시했다. 개념은 간단하다. RAG가 retriever를 통해 unaswerable이라는 결론을 내놓으면, LC로 가고, 아니면 그냥 End로 끝낸다.이걸 어떻게 구현하냐면, LangGraph로 구현하면 가능하다. 코드를 보기에 앞서서 그래프로 간략하게 구현해보면 다음과 같다.요지는 retriever를 다르게 쓰는 것이다. llm_answer로 바로 줄 수도 있지만, 그렇게 되면 Unanswerable이 지속적으로 나올 수 있..

지난 시간엔 LagnChain의 LangGraph를 만들어보았다. 이번에는 LangChain에서 Agent를 만들어보자. 예제 코드는 여기에서 볼 수 있다.Agent는 간단하다. 지난 시간에 배운 LangGraph에서 분기 노드를 자동으로 결정해주는 녀석이라고 보면 된다. Tool이라고 하는 각각의 함수들이 존재하고, 해당 Tool을 사용하면서 사용자의 답을 해결할 때까지 지속적으로 돌아간다.Web상의 정보도 찾을 수 있고, PDF에서의 정보도 찾을 수 있다. 다만 이 Tool을 질문 Query에 따라 자동으로 Agent가 결정하는 형식이다. Tools 정의하기from langchain_community.document_loaders import WebBaseLoaderfrom langchain_comm..

지난 포스팅에서 배웠던 LangGraph를 활용하여 기본적인 워크플로우를 제작한다. 이론은 간단하기에, 재정정보 AI 검색 알고리즘 경진대회에서 썼던 코드를 리팩토링하여 사용하였다. 자세한 코드는 이곳에서 볼 수 있다. DB 만들기일단 예제와 다르게 retriever와 DB가 들어 있는 FAISS를 만든다.왜냐하면 LangGraph의 시작은 결국 Retriever 부터 시작하기 때문에 그렇다. 그렇기에 DB는 일단 만들어져 있어야 한다. 대략적으로 요약하자면, pdf를 가져와서 청킹하고 임베딩 한다고 생각하면 된다.def process_pdfs_from_dataframe(df, base_directory): """딕셔너리에 pdf명을 키로해서 DB, retriever 저장""" pdf_data..
노드, 엣지, 상태관리를 통해 Agentic Work Flow를 가진다. 노드 = 각각의 상태. 실행하고자 하는 하나의 함수라고 보면 된다.엣지 = 어디서부터 어디로 보낼 것인가?두 개 이상의 엣지 구현 가능상태 = 현재의 상태 값을 저장 및 전달하는 데 활용 순환 연산 기능으로 쉽게 흐름을 제어 Conditional Edge : 조건부 흐름 제어를 할 수 있게 해주는 엣지. 분기 처리가 가능하다.Human-in-the-loop : 사람이 직접 개입해서 정하게 하는 것도 가능하다. 상태(State)TypeDict : 일반 파이썬 dict에 타입헌팅을 추가. 쉽게 말하면 dictionary모든 값을 다 채우지 않아도 된다.새로운 노드에서 값을 덮어쓰기(Overwrite) 방식으로 채운다. 어떤 식으로 업데..
Dense Passage Retrieval (DPR):쿼리와 문서를 고차원 벡터 공간에 임베딩하는 신경망 기반의 방법입니다.의미적 유사성을 잘 포착하여 전통적인 키워드 기반 방법보다 우수한 성능을 보입니다.Contrastive Learning-based Retriever:대조 학습을 사용하여 관련 문서와 비관련 문서를 더 잘 구분하도록 학습합니다.SimCSE나 ConDE와 같은 방법들이 이 범주에 속합니다.Hybrid Retriever:스파스 검색(예: BM25)과 덴스 검색(예: DPR)을 결합한 방법입니다.두 방식의 장점을 결합하여 더 robust한 검색 성능을 제공합니다.ColBERT:쿼리와 문서의 토큰 수준 상호작용을 모델링합니다.세밀한 매칭을 통해 높은 정확도를 제공하면서도 효율적인 검색이 가능..