2024/10 7

[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

[AI] LLM 의 발현 능력 (Emergent Ability of LLMs)

Emergent Ability:작은 언어 모델에는 존재하지 않지만 큰 모델에서 발생하는 능력으로, 이전 Pretrained LM 들과 구분되는 LLM 만의 두드러지는 특징1. Emergent Abilities일반적으로 머신러닝 기반의 학습 모델은 특정한 작업을 수행하도록 명시적으로 훈련된다. 그러나, LLM에서는 크기나 학습 데이터의 양이 일정 수준을 넘어서면 명시적으로 학습되지 않은 작업을 수행할 수 있는 능력이 갑자기 생겨난다. 지금에서야 LLM에 few-shots 형태로 원하는 task instruction을 주입하는 것이 일반화되었으나, 당시에는 이러한 발현 능력 (창발 현상) 이 매우 특별한 LLM 만의 특징이었다.1.1 왜 발생하는가?모델 파라미터의 수가 증가할수록 더 복잡한 패턴과 관계를 학..

AI 2024.10.02

[AI] BM25 분석하기

본 글에서는 LLM 등장 이후 RAG 시스템에서의 BM25 관점에서 기술하였습니다.1. Search의 종류1.1. BM25 란 무엇인가?BM25는 NLP 분야 중 정보 검색(IR, Information Retrieval) 분야에서 문서와 쿼리 간 관련성을 계산하는 랭킹 알고리즘이다. 검색 엔진에서 자주 사용되며, 유명한 TF-IDF(Term Frequency-Inverse Document Frequency)를 확장한 형태이다. TF-IDF와 마찬가지로 BM25 또한 term 기반의 검색 방식이라고 볼 수 있고, 단어의 빈도와 중요도를 고려하여 문서와 쿼리의 유사도를 계산하는 방식이다.1.2. Vector SearchVector Search(Dense Retrieval, Semantic Search) 는 ..

AI 2024.10.02