전체 글 12

[AI] 문서 변환, 구조화에 유용한 Docling 살펴보기

RAG 시스템을 구축하는 경우에 전체 문서를 LLM에 넣을 수는 없으니 일반적으로 원문을 전처리하여 chunking 하여 관련 문서(조각)를 검색해오게 된다. 하지만 많은 경우에 원문이 PDF 문서나 구조화 된 형태(이미지, 테이블 등)이고, 이를 단순 텍스트 추출하여 처리하거나 구조를 무시하게 된다면 답변 시 잘못된 정보를 제공하는 경우가 빈번하게 발생한다. 예를 들어, 테이블을 텍스트 그대로 추출하였을 때 헤더와 값들이 제대로 매핑되지 못하고 밀리게 된다면 관련 문서를 잘 가져왔다 하더라도 잘못된 답변을 제공하게 된다.PDF 파서나 OCR 같은 유용한 도구들을 활용하여 이를 보완할 수 있지만, PDF는 우리가 생각하는 것 보다 훨씬 복잡한 형태가 많고 이를 완벽하게 추출해내는 것은 아직도 매우 어렵다..

AI 2024.12.10

[AI] RAGAS 공식 문서(docs) 파악하기

이전 포스트에서 RAGAS 논문에 대해 분석하였는데, 논문 이후에 수정된 내용은 주로 공식 문서에서 확인할 수 있기 때문에 추가적으로 어떤 것이 변경되었나 확인해보려고 한다. 문서에는 Evaluation, Metrics 이외에도 Test Data Generation, Knowledge Graph Building, Scenario Generation 등의 과정이 자세히 설명되어 있었으나, 주로 Metrics 부분에 대해 파악해보고 논문과 어떻게 달라졌는지 비교할 예정이다.공식 문서(docs): https://docs.ragas.io/en/stable/github: https://github.com/explodinggradients/ragasPaper-Review: RAGAS: Automated Evalua..

AI 2024.11.10

제텔카스텐 (Zettelkasten) 에 대한 간단 정리

이전에 제텔카스텐 및 Second Brain 에 대한 관심이 있었었다. 결국 나와는 맞지 않는 방법론임을 느껴 더 이상 살펴보고 있지는 않은데, 문득 생각나서 과거에 정리했던 내용을 기록해두려고 한다. 내가 생각하기에 제텔카스텐 및 Second Brain 방법론은 기본적으로 자신의 생각을 빠르게 글로 남길 수 있는 사람, 그리고 부지런한 사람에게 적합한 방법이라고 생각한다. (물론 잘 지켜졌을 때 생각 노드를 연결하는 매우 강력한 방법인 듯 하다.)1. 제텔카스텐이란?제텔카스텐을 살펴보기 전에 메모상자 방식이 무엇인 지 확인해보면 좋을 것 같다. 관련 내용은 나무위키에도 설명되어 있다. 우리는 보통 온라인 메모 혹은 기록을 남길 때 카테고리를 나누어서 어느 카테고리에 해당되는 지를 먼저 파악한 후 글을 ..

그 외 2024.11.04

[Paper Review] RAGAS: Automated Evaluation of Retrieval Augmented Generation

RAG 자동 평가 중 잘 알려진 RAGAS 에 대하여 논문과 공식문서를 읽고 정리한 바를 기록해두려고 한다. 우선 첫 번째로 23년 9월에 아카이브에 올라온 RAGAS 논문에 대해 파악한 후, 최근까지 업데이트 되고 있는 공식문서 및 코드 기반으로 한번 더 파악해 볼 예정이다. 이 포스팅은 23년 논문에 대한 내용을 정리하는 것을 목적으로 하며, 이후 업데이트 된 최근 공식문서에서의 내용과 일부 다를 수 있다.논문 링크: https://arxiv.org/abs/2309.15217공식 문서(docs) 정리: RAGAS 공식 문서(docs) 파악하기 [AI] RAGAS 공식 문서(docs) 파악하기이전 포스트에서 RAGAS 논문에 대해 분석하였는데, 논문 이후에 수정된 내용은 주로 공식 문서에서 확인할 수 ..

Paper Review 2024.11.02

[AI] Mixed Precision Training 이란?

Mixed Precision 이란?처리속도를 높이기 위한 FP16 과, 정확도 유지를 위한 FP32 를 섞어서 학습하는 방법1. Intro대부분의 LLM 학습 시 기본으로 사용되고 있는 테크닉으로, FP32(Single Precision) 과 FP16(Half Precision) 을 함께 사용하게 될 때 발생하는 오버플로우 혹은 언더플로우 현상을 해결하기 위한 방법이다.2. Floating Point기본적으로 우리가 실수를 표현하는 데 사용하는 방식은 FP32 방식이다. 그 중 제일 많이 쓰는 방식은 1(부호) + 8(지수 - exponent) + 23(가수 - fraction) 의 형태로 총 32bit 를 사용하여 실수를 표현한다. 하지만 메모리 및 계산량을 줄이기 위해서 FP16 을 사용하는 방향을 ..

AI 2024.11.01

[Paper Review] StructRAG: Boosting Knowledge Intensive Reasoning of LLMs via Inference-time Hybrid Information Structurization

정보의 최신성을 반영하기 어려운 LLM 의 문제점을 해결하기 위한 방안으로 RAG 시스템이 많은 주목을 받고 있다. 그러나 기본적인 형태의 RAG 시스템은 Knowledge Intensive Reasoning Tasks 에서 한계를 보이는데, 필요한 정보가 분산되어 있거나 chunk 로 나누는 과정에서 생기는 문제(노이즈) 등의 이유로 복잡한 추론 작업에서는 성능이 떨어진다. 그래서 현재는 Naive RAG 형태에서 Advanced RAG, Modular RAG 를 거쳐 최근에는 Graph 기반의 RAG 까지 다양한 방법론이 등장하고 있다. 얼마 전에 공개된 이 논문에서 제안하는 StructRAG 방식은 이전 RAG 시스템과 다르게 추론 과정에서 추가적인 Hybrid Structure Router 를 두..

Paper Review 2024.10.31

[AI] SwiGLU는 어떤 함수일까?

Transformers 아키텍처에서 자주 사용되는 SwiGLU activation function 은 어떤 함수일까? 이를 이해하기 위해 Swish, GLU, SwiGLU 를 차례대로 이해할 필요가 있다. 결론만 먼저 얘기하면 아래와 같다.📌 SummarySwish: $\beta$ 값에 따라 다른 특성을 가질 수 있는 activation function 의 한 종류이다.GLU: Component-wise product of two linear transformations of inputSwiGLU: Swish 를 non-linear function 으로 사용하고, GLU 를 적용한 activation function 이다.1. Swish1.1 Swish 의 특징Searching for Activatio..

AI 2024.10.09

[AI] Anthropic의 Contextual Retrieval

Langchain, LlamaIndex 와 같이 잘 만들어진 LLM applications 프레임워크 덕분에 주어진 데이터에 대하여 RAG(Retrieval Augmented Generation) 시스템을 구축하는 것은 굉장히 쉬워졌다. 그러나 쉬워진 구축 난이도에 비해 RAG 성능을 상용화 가능한 수준까지 끌어올리는 것은 아직도 갈 길이 멀다. 가지고 있는 데이터의 특성에 따라 적합한 RAG 기법 및 파라미터도 달라지고, 도메인의 특성에 따라 쿼리로부터 SQL을 얼마나 잘 다루는지, 테이블로 주로 구성된 데이터를 어떻게 전처리 할 것인지 등 고려해야 할 요소가 많다. 케이스별로 달라지는 경우가 많고, 여러 시행착오가 필요한 기술이기 때문에 다른 기업들의 시행착오 및 실험 시 유용했던 방법론들을 참고하는..

AI 2024.10.05

[Python] FastAPI 성능 최적화

1. FastAPI 란?FastAPI는 Python을 기반으로 한 웹 프레임워크로, 성능, 사용성 그리고 Python 기능을 활용할 수 있다는 측면에서 장점이 있다. 특히, Python 기반의 웹 프레임워크라는 것은 Python 이 친숙한 AI 개발자가 모델 서빙 시 사용할 백엔드 프레임워크로 사용하기 매우 적합하다. 실제로 모델 개발 후 마이크로 서비스 형태로 서빙 시 FastAPI 를 매우 자주 사용하고 있으며, 아래와 같은 여러가지 장점 때문에 pydantic 과 함께 점점 더 사용 빈도가 증가하고 있다.1.1. 장점은?성능: FastAPI 는 starlette 과 pydantic 을 기반으로 구축되어 좋은 성능을 낼 수 있는데, 기본적으로 async 를 지원한다. 동시 요청을 효율적으로 처리할 수..

개발 2024.10.05

[Python] cache 데코레이터

python 3.9 버전부터 functools 모듈에서 제공하는 @cache 데코레이터는 개발 시 자주 사용되는 데코레이터 중 하나이며, 나 역시 자주 사용하고 있다. 쓰다 보니 정확하게 이해하지 못하고 쓰는 경우도 있는 것 같아 정리하려고 한다.1. @cache 데코레이터@cache 데코레이터는 기본적으로 함수의 인자를 가지고 메모이제이션(Memoization) 기법을 사용하여 캐싱하는 방식이다. 즉, 함수의 인자가 이전에 입력으로 들어온 적이 없으면 계산하고, 한 번 계산된 후에는 그 결과를 저장해 두어 동일한 입력이 들어왔을 때 캐시된 결과를 반환한다. 데코레이터이기 때문에 함수 위에 붙여서 간단하게 적용할 수 있다.1.1. 구현 시 주의할 점Hashable: @cache 데코레이터는 함수의 인자를..

개발 2024.10.03