From Software Engineer to AI Engineer - Part 4: RAG-ing the facts
개요
RAG(Retrieval-Augmented Generation)는 LLM이 특정 상황이나 회사 데이터에 대한 지식을 활용할 수 있도록 하는 기술로, 문서 컬렉션에서 관련 정보를 검색하여 모델의 컨텍스트에 제공한다.
주요 내용
- RAG의 필요성: LLM은 대규모 데이터로 학습되지만, 특정 시점의 최신 정보나 개인화된 데이터를 알지 못하므로, 외부 지식 검색 도구가 필요하다.
- RAG의 작동 방식:
- 도구(Tools): 모델이 호출을 요청할 수 있는 함수로, 검색 엔진 도구를 통해 문서 컬렉션에서 정보를 찾는다.
- 임베딩(Embeddings): 텍스트의 의미를 벡터로 변환하여, 단어가 다르더라도 의미가 유사하면 벡터 유사도가 높게 나온다. 이는 텍스트 자체 비교보다 빠르고 정확하다.
- 청크(Chunks): 문서를 작은 단위로 분할하여, 문서 전체가 아닌 관련 부분만 검색하고 컨텍스트에 포함시켜 효율성을 높인다.
- 구체적인 예시:
payment_ops_notes.md문서를 MarkdownHeaderTextSplitter를 사용하여 청크로 분할한다.all-MiniLM-L6-v2임베딩 모델을 사용하여 각 청크를 벡터로 변환하고, 벡터 데이터베이스에 저장한다.- 사용자의 질문("What are the card processing fees?")을 임베딩하여 가장 유사한 청크를 검색하고, 해당 정보를 모델에게 제공하여 답변을 생성한다.
- Langchain 라이브러리를 사용하여 RAG 도구를 구현하고, LLM(Claude Sonnet)과 연동하여 실제 질문에 대한 답변을 생성하는 과정을 보여준다.
- Agentic RAG: 모델이 스스로 어떤 정보를 검색해야 할지 결정하는 RAG의 변형으로, 본 기사에서 다룬다.
시사점
RAG는 LLM이 최신 정보와 특정 도메인 지식을 효과적으로 활용하게 함으로써, 실제 서비스 환경에서의 AI 활용 범위를 크게 확장할 수 있는 핵심 기술이다.
원문을 불러오는 중...
댓글
GitHub Discussions