본문 바로가기

공부방/Upstage AI Lab 4기

패스트캠퍼스 Upstage AI Lab 부트캠프 4기, IR 경진대회(feat. RAG) 2024년 막바지를 향해 달리는 중,짧고 굵게 후다다닥 지나갔지만 동시에 배운 것도 정말 많은 IR 경진대회에 대해 리뷰한다. 기간은 단 4일! 월요일에 서버 만들고 데이터 다운로드해서 베이스라인 땅! 시작하고,수요일에 멘토링을 한 번 받은 뒤에, 목요일까지 결과를 제출하고, 금요일에 발표 및 랩업 세미나로 정리하는 타이트하고 빡센 일정이였다.  - "질문"이 들어오면, 질문과 연관된 "적절한 문서"를 찾고, 그 문서를 참조해서 적절한 답변을 생성한다.- 대회에서는 답변을 확인하지 않고, 답변을 위해 참조한 문서 3개(top k)를 뽑아서, 이 3개 문서가 잘 추출됐는지로 평가한다. - 임베딩 생성 모델, 검색 엔진, LLM을 활용할 수 있다. - 학습 데이터로 주어지는 문서와 쿼리 모두 jsonl 형태.. 더보기
[IR] RAG 대회 정리 월요일에 시작해서 목요일까지 우다다다 달려왔던 IR 대회. 짧고 굵게 끝나고 짧은 시간 탓에 블로그에 제대로 정리할 시간이 없었다. 어떤 시도들을 했고, 어떤 아이디어를 가지고 진행했는지 흐름을 되짚어보려고 한다.  1. 대회 소개- "질문"이 들어오면, 질문과 연관된 "적절한 문서"를 찾고, 그 문서를 참조해서 적절한 답변을 생성한다.- 대회에서는 답변을 확인하지 않고, 답변을 위해 참조한 문서 3개(top k)를 뽑아서, 이 3개 문서가 잘 추출됐는지로 평가한다. - 임베딩 생성 모델, 검색 엔진, LLM을 활용할 수 있다. - 학습 데이터로 주어지는 문서와 쿼리 모두 jsonl 형태.  2. 베이스라인 익히기 - 베이스라인을 보면 한국어 임베딩 모델로 "snunlp/KR-SBERT-V40K-klue.. 더보기
[IR] 벡터 유사도를 계산하는 다양한 방법들 내가 사용했던 엘라스틱서치의 KNN 검색 과정:주어진 쿼리 벡터와 모든 문서 벡터 간의 L2 거리를 계산num_candidates 개수만큼의 후보를 먼저 선정 (코드에서는 100개)이는 성능과 정확도의 트레이드오프를 위한 것후보군이 많을수록 정확도는 높아지지만 검색 속도는 느려짐후보군 중에서 거리가 가장 가까운 k개(코드에서는 size 파라미터)를 최종 선택거리가 가까운 순서대로 정렬하여 결과 반환예를 들어, 768차원의 임베딩 벡터가 있다면:쿼리: [0.1, 0.2, ..., 0.7]문서1: [0.2, 0.3, ..., 0.6]문서2: [0.8, 0.7, ..., 0.1] 이런 식으로 각 차원의 차이를 계산하여 전체 거리를 구합니다. mappings = { "properties": { .. 더보기
[IR] 클로드로 프로젝트 관련 질문 싹다 몰아넣기 클로드에 프로젝트를 하나 설정해두고 쓰니 진짜 편하다. 지금까지는 이 기능을 몰라서 계속 새로운 쿼리를 만들어가면서 쿼리가 엄청나게 길어지고, 너무 길어지면 또 속도가 느려져서 새로운 쿼리를 또 만들고.. 만들 때마다 배경 설명을 다시하고 이걸 반복했는데. 그럴 필요가 전혀 없다! 프로젝트 이름을 넣고 Project Knowledge라는 곳에 미리 베이스라인 코드도 넣어둘 수 있다. 더보기
[IR] 지금까지 했던 것, 그리고 하고 있는 것들 1. 베이스라인 코드 보면서 내용 익히기베이스라인으로 나온 결과 리더보드에 올렸을 때: 0.42(sparse) 2. 프롬프트 바꿔주기프롬프트를 구체적으로 입력하고, 동일한 프롬프트에서 sparse_retrieve와 dense_retrieve를 각각 넣어서 결과를 확인해봄sparse_retrieve에서 0.57 -> 프롬프트 중 function calling의 description을 영어에서 한글로 바꿔보니 0.52로 떨어짐dense_retrieve에서 0.37 3. sparse와 dense를 합쳐서 사용하는 hybrid_retrieve 사용sparse로 초기 후보 문서 10개 가져오고, 10개에 대해서 dense 검색으로 리랭킹하여 상위 3개 문서만 추출결과는 0.45 -> dense가 0.37로 낮은 .. 더보기
학습일지 | Data Centric AI Data Centric AI:데이터를 중심으로 결과/성능을 향상시키는 접근 방식몇 번의 프로젝트 때마다 항상 강조됐던 것인데 이렇게 따로 모아서 강의를 들어보는 것도 좋았다.데이터 수집부터 전처리, 라벨링, 스플릿하는 법, 데이터 분석 등 데이터 기반으로 살펴봐야 할 것들을 전부 다 다룬다.  1. 데이터 수집물론 직접 데이터셋을 구축하는 법도 있지만(직접 한땀한땀 만든다거나 크롤링을 한다거나), 오픈소스로 공개된 데이터셋을 가져오는 방법, 그리고 기존에 가지고 있는 데이터를 어그멘테이션으로 늘리는 방법도 있다. 예전에는 라벨러들을 고용해서 데이터 라벨링을 하는 알바도 있었는데. 그것도 하나의 데이터셋 구축이라고 할 수 있다. 2. 데이터 전처리 이건 너무 다양해서 케바케3. 데이터 라벨링라벨링 규칙이나.. 더보기
[LLM] LLM 학습일지 LLM(Large Language Model) 기반 데이터 중심 NLP 연구LLM 학습 데이터는 사전 학습 데이터와 미세 조정 데이터로 크게 구분된다. 사전 학습 데이터는 웹 데이터, 뉴스, 리뷰 등 다양한 소스에서 수집되며, 데이터의 품질과 다양성이 모델의 성능에 결정적인 영향을 미친다. GPT-3의 경우 Common Crawl, WebText2, Books1, Books2, Wikipedia 등에서 총 3천억 개의 토큰을 사용했으며, LLaMA는 Common Crawl, C4, Github, Wikipedia, Books, ArXiv, StackExchange 등에서 1.4조 개의 토큰을 활용했다.데이터 전처리는 LLM의 성능 향상을 위한 핵심 요소이다. GPT-3와 LLaMA 등 주요 모델들은 데이.. 더보기
[논문 리뷰] 팩트체크 시스템의 기초를 마련한 FEVER 데이터셋 FEVER: a large-scale dataset for Fact Extraction and VERification (논문 링크) 논문 이름은 a large-scale dataset for Fact Extraction and VERification. 사실 추출과 검증을 위한 대규모 데이터셋으로, 줄여서 FEVER라고 부릅니다. 이 논문은 2018년에 발표됐고, 셰필드 대학교와 아마존 리서치 연구자들이 함께 쓴 논문이라는 점이 인상적입니다. 이런 데이터셋을 만든 이유?먼저 논문 서론에서 이 데이터셋을 만든 이유에 대해서 3가지 이유를 소개하고 있습니다. 첫 번째는 검증에 대한 수요가 늘어나는 것인데요. 저널리즘 관점에서 가짜 뉴스를 판별하는 문제는 과거부터 뜨거운 문제였죠. 이 외에도 논문을 쓸 때나 제.. 더보기