해당 포스트는 인프런에서 "AI 에이전트로 구현하는 RAG 시스템(w. LangGraph)" 강의를 듣고 정리한 내용입니다. LLM 을 이용한 생성형 AI 가 만들어지고 나서 어느 순간 AI Agent 라는 키워드가 자주 들리기 시작했다.그래서 AI Agent 와 관련된 강의를 들으면서 AI Agent 가 무엇인지 알아보면서 정리해보려고 한다. 에이전트(Agent) 가 무엇인가에이전트는 특정 목표를 달성하기 위해서 자율적으로 행동하고 결정을 내리는 AI 시스템이라고 한다.여기서 중요한 점은 자율적으로 행동한다는 부분에 초점을 맞추어서 이해하면 된다. AutoGen, Crew AI, LangGraph 와 같은 새롭게 등장한 프레임워크들은 멀티 에이전트 문제 해결 방식을 구축하는 다양하고 풍부한 방법을 제공..
LLM 모델을 사용해보고 싶은데 대부분 유료 서비스로 비용을 지불하고 사용해야만 한다.만약 직접 서버를 구축해서 모델을 사용하려고 하더라도 최소 사양의 서버를 구축하는데 상당한 비용이 들기 때문에 쉽지 않다. 직접 구축해서 사용해보고 싶어도 서버 비용이 많이 들게 되고 그렇지 않다면 어느 정도 비용을 지불하고 사용해야 하는데 테스트만 해야하는 입장에서는 상당히 부담스러운 부분이 될 수도 있다. 어떤 모델을 사용해야하고 성능이 얼마나 되는지 가볍게 사용해보고 싶은데 무료로 사용해볼 수 있는 곳은 없을까? 라는 생각에 찾아보다가 OpenRouter 라는 플랫폼을 찾게 되었다. OpenRouter 에 대해서 자세하게 아는 것은 아니지만 내가 직접 사용해본 OpenRouter 에 대해서 정리해보려고 한다. Op..
vector store 에 검색을 통해서 데이터를 가져오려고 하는데 score 를 통해 유사한 문서를 가져오게 되고 이 score 라는 건 무조건 1에 가까운 줄 알았다. 하지만 검색을 해보니 score 의 의미가 각 라이브러리마다 다르다는 것을 알게 되었다. 먼저 유사도 계산을 통해 score 를 계산하는 경우 score 점수가 높을수록 비슷한다고 이해할 수 있고거리 계산을 통해 score 를 계산하는 경우 score 점수가 낮을수록 더 가까운 데이터라고 이해할 수 있다. 유사도와 거리 관점에서 score 를 이해해야한다는 것을 모르고 진행했던 것 같다. 기본적으로 Langchain 을 사용하면서 FAISS 를 사용하게 될 경우에는 FAISS 는 L2 거리 계산을 사용하기 때문에 거리가 가까울수록 유사..
RAG 를 사용하는 과정에서 벡터 스토어에 저장된 임베딩 데이터들을 검색하는 과정에서 검색 알고리즘을 통해 유사한 데이터를 가져오게 되는데 이때 벡터 스토어에 검색하는 과정에서 코사인 유사도를 계산해서 유사한 문서를 가져온다거나 MMR 검색 알고리즘을 사용해서 유사하지만 서로 다른 문서를 가져온다는 등 여러 방법을 통해서 데이터를 검색해서 가져오는 것으로 알고 있다. RAG 에 대해서 하나씩 알아가는 과정에서 retriever 를 통해 검색을 할 때 어떠한 방식으로 가져오는지 retriever 에서 사용하는 검색 알고리즘에 대해서 알아보고 간단하게 정리해보려고 한다. 먼저, 각 검색 방법에 대해서 알아보자. 검색 방법similarity기본값으로 사용되는 검색 방식이다.입력한 값과 벡터 스토어에 저장된 값..