[바미] RAG도 쓸수록 좋아질 수 있을까?
·
AI
들어가기 전에지금까지 RAG 파이프라인의 여러 구성 요소를 다뤘습니다. 어떻게 청킹할지, 어떻게 검색할지, 답변의 신뢰성을 어떻게 높일지 말이죠. 그런데 이 모든 과정을 거쳐 시스템을 배포했다고 끝이 아닙니다. 실제 사용자가 시스템을 쓰기 시작하면 그때부터 가장 귀한 데이터가 쌓이기 시작합니다. 어떤 질문에 좋은 답변이 나왔고, 어떤 검색 결과가 클릭되었고, 어떤 답변이 도움이 되지 않았는지. 이 데이터를 그냥 버리면 아깝습니다. 배포 전에 아무리 좋은 벤치마크 데이터로 평가해도 실제 사용자의 질문 패턴을 완전히 예측하기는 어렵습니다. 사용자들이 예상치 못한 방식으로 질문하고, 도메인 특화 용어를 쓰고, 범용 임베딩 모델이 제대로 이해하지 못하는 표현을 사용하기도 합니다. 이런 문제들은 실제로 시스템을 ..
[바미] 텍스트가 아닌 정보를 RAG는 어떻게 읽을까?
·
AI
들어가기 전에..지금까지 다룬 RAG 파이프라인은 대부분 텍스트를 전제로 했습니다. 하지만 실무에서 다루는 문서는 텍스트만으로 이루어지지 않죠. 예를 들어 재무 보고서에는 수십 개의 표가 있고, 기술 매뉴얼에는 다이어그램이 가득하고, 제품 문서에는 스크린샷이 첨부됩니다. 이런 문서를 그냥 텍스트로 변환해서 청킹하면 어떻게 될까요? 표의 행과 열 관계가 무너지고, 이미지 속 정보는 통째로 사라집니다. 이번 글에서는 테이블과 이미지를 RAG에서 제대로 다루는 방법을 정리해보겠습니다. 테이블은 왜 그냥 텍스트로 변환하면 안 될까?텍스트는 선형으로 읽힙니다. 앞에서 뒤로 순서대로 이해하면 되죠. 하지만 테이블은 다릅니다. 2차원 구조이고, 행과 열의 교차점에서 의미가 생깁니다. '3분기 매출이 얼마야?'라는 질..
[바미] AI가 거짓말을 하는지 어떻게 알 수 있을까? - LLM이 그 답변 봐봐! 혹시 사쿠라야?
·
AI
들어가기전에.. 타짜에 이런 명대사가 있습니다."구라를 치려고 마음을 먹었을 땐 상대방 눈을 쳐다보지마라" 우리가 즐겨쓰는 LLM은 이 말을 모르는 것 같습니다. 틀린 말을 할 때도 눈 하나 깜짝하지 않거든요. 지금까지 RAG 시스템을 구성하는 여러 요소를 다뤘습니다. 문서를 어떻게 청킹할지, 데이터를 어떻게 정제할지, 검색을 어떻게 개선할지, 등등을 말이죠. 그럼에도 불구하고 이 모든 노력을 기울여도 결국 남는 질문이 있습니다.'LLM이 생성한 답변을 얼마나 믿을 수 있을까?' LLM은 그럴듯하게 들리지만 틀린 내용을 자신 있게 말하는 경향이 있습니다. 이것이 그 유명한 Hallucination(환각)입니다. RAG가 이 문제를 완화해주지만 완전히 해결하지는 못합니다. 검색된 문서가 있어도 LLM이 ..
[바미] 구글도 키워드 검색을 버리지 않은 이유 (하이브리드 검색과 RAG-Fusion)
·
AI
들어가기 전에RAG 논문을 처음 공부할 때, 검색 방식은 대부분 벡터 검색(dense retrieval)을 전제로 합니다. 질문을 임베딩 벡터로 변환하고, 코사인 유사도로 가장 가까운 문서를 찾는 방식이죠. 그런데 실무에서 RAG 시스템을 만들어보면 벡터 검색만으로는 놓치는 케이스가 생각보다 많습니다. 이번 글에서는 키워드 기반 검색의 대표 알고리즘인 BM25, 두 검색 결과를 합치는 방법인 RRF(Reciprocal Rank Fusion), 그리고 이를 RAG에 적용한 RAG-Fusion 논문을 정리해보았습니다. 왜 벡터 검색만으로는 부족할까?벡터 검색은 의미적으로 유사한 문서를 잘 찾습니다. '자동차 사고'를 검색해도 '차량 충돌'이 담긴 문서를 찾아낼 수 있습니다. 하지만 약점이 있습니다. 정확한 ..
[바미] 내가 크롤링한 결과물이 쓰레기가 되는 이유
·
AI
들어가기 전에...이 글은 RAG 시스템을 구축하면서 웹 데이터를 활용하려는 분들을 위한 글입니다. 앞서 RAG 논문 리뷰와 Chunking 전략을 다뤘는데 사실 그 전에 먼저 짚고 넘어갔어야 할 주제가 있습니다. 바로 데이터 정제입니다. 아무리 좋은 청킹 전략을 써도 인덱싱하는 데이터 자체가 오염되어 있으면 의미가 없습니다. 이번 글에서는 웹 크롤링 데이터를 RAG에 쓸 수 있는 형태로 만드는 방법을 jusText, Trafilatura, newspaper3k 세 가지 도구를 중심으로 정리 해보았습니다. 데이터 정제가 왜 필요할까?열심히 크롤링해서 수천 개의 페이지를 긁어왔는데 막상 RAG 시스템에 넣어보면 이상한 답변이 나오는 경험 해보셨죠? 그런 문제는 크롤링 코드보다 크롤링한 HTML을 그대로 ..
[바미] 어떻게 자르느냐가 검색 품질을 결정한다.
·
AI
Chunking이란 무엇이고 왜 중요한가?RAG 시스템을 구축할 때 가장 먼저 맞닥뜨리는 고민은 문서를 어떻게 잘라서 인덱싱 해야 하는가?에 대한 부분입니다. 우리가 앞서 살펴봤던 RAG의 기본 흐름을 떠올려 볼까요? 먼저 외부 문서를 벡터로 변환해 인덱스에 저장하고, 질문이 들어오면 유사한 벡터를 검색해 LLM에 전달합니다. 그런데 문서 전체를 통째로 하나의 벡터로 만들면 어떻게 될까요? 100페이지짜리 기술 매뉴얼을 벡터 하나로 압축하면, 그 안에 담긴 수백 가지 정보가 뭉개져버립니다. 만약 '3번 포트 설정 방법'을 물어봤을 때 매뉴얼 전체가 검색되면 LLM은 어디서부터 답해야 할지 알 수 없습니다. 그래서 문서를 적당한 크기의 조각으로 나누는 과정인 Chunking이 필요합니다. RAG 시스템에..
[바미] AI도 구글 검색을 한다면 어떨까요?
·
AI
논문 : Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks저자: Patrick Lewis et al. (Facebook AI Research, UCL, NYU)arXiv: 2005.11401| 2020년 발표 LLM은 왜 어제 일을 모를까?GPT나 BART 같은 대형 언어 모델(LLM)은 인상적인 성능을 보여주지만 실무에서 쓰다 보면 아래에 보이는 불편한 진실과 마주치게 됩니다.모델이 학습 당시에 없던 정보는 모릅니다. 아니 더 정확히 말해보자면 LLM은 파라미터 안에 지식을 녹여 넣는 방식으로 학습합니다. 즉 모든 지식이 파라미터에 암묵적으로 압축되어 있습니다. 이 구조에서 오는 한계는 세 가지입니다지식 업데이트 불가 - 세상이 바뀌어도..
[바미] 지식 증류(Knowledge Distillation)로 성능은 챙기고, 모델은 줄이기
·
AI
들어가기전에실서비스에 모델을 붙이려면, 성능만큼 중요한 게 무게(추론 비용)입니다. 모델이 무거우면 바로 병목이 되버리죠. 큰 모델(Teacher)은 정확하지만 느리고 비싸고, 작은 모델(Student)은 빠르고 싸지만 성능이 아쉬운 경우가 많은데 이 둘 사이를 이어주는 대표적인 방법이 Knowledge Distillation(지식 증류)입니다. 이를 한 문장으로 정리하면 다음과 같이 표현해 볼 수 있어요.큰 모델(Teacher)의 예측 지식을 작은 모델(Student)이 따라 배우도록 학습시키는 방법. 그럼 왜 굳이 증류가 필요할까요?서비스 관점에서 모델이 좋다는 것은 단순히 정확도만 의미하지 않습니다.모바일/엣지 환경에서 돌아가야 함응답 속도가 중요함(지연 시간, latency)비용이 중요함(GPU/..
[바미] 코사인 유사도 한 번에 정리해보기
·
AI
들어가기전에.. [바미] 단어를 벡터로 바꾸는 Word2Vec에 대해 알아봅시다.들어가기전에..자연어 처리(NLP)를 공부하다 보면 Word2Vec이라는 이름을 정말 자주 보게 됩니다.Word2Vec은 한 문장으로 말하면 아래와 같습니다. 단어를 숫자 벡터(임베딩)로 바꿔서, 의미가 비슷한codesk.tistory.com이전 글에서 Word2Vec을 통해 단어를 벡터(임베딩)로 바꾸면 의미가 비슷한 단어끼리 벡터 공간에서 가까워진다고 정리했습니다.그렇다면 ‘가깝다’는 걸 우리는 어떤 기준으로 계산할까요? 궁금하지 않으신가요? 임베딩에서 가장 자주 쓰이는 기준이 바로 코사인 유사도(Cosine Similarity)입니다. 코사인 유사도는 한 문장으로 요약하면 다음과 같습니다.두 벡터가 얼마나 ‘같은 방향’..
Bami
'AI' 카테고리의 글 목록