AI VIDEO BRIEFING

로컬 AI 에이전트 구축: Ollama·LangChain·ChromaDB로 RAG 구현하기

OpenAI 계정 없이 내 컴퓨터에서 완전히 로컬로 동작하는 AI 에이전트를 Ollama, LangChain, ChromaDB로 만드는 과정을 RAG 검색 흐름과 함께 정리했다.

내 컴퓨터에서 돌아가는 AI 에이전트 만들기: Ollama·LangChain·RAG로 로컬 구축 영상 대표 이미지

핵심 메시지

  • Ollama로 모델을 내려받으면 OpenAI나 Claude 계정 없이 로컬 하드웨어만으로 LLM을 구동할 수 있다.
  • RAG는 CSV·PDF 같은 외부 문서에서 관련 정보를 찾아 모델에 함께 넘겨 답변의 근거를 보강한다.
  • ChromaDB 벡터 저장소에 문서를 임베딩해 두면 질문과 유사한 문서를 빠르게 검색할 수 있다.
  • LangChain의 체인 구조로 프롬프트 템플릿과 모델을 연결해 검색-생성 흐름을 간결하게 묶는다.

쉽게 이해하기

이 영상은 파이썬으로 로컬 AI 에이전트를 만드는 과정을 보여준다. 핵심 도구는 모델을 로컬에서 구동하는 Ollama, LLM 작업을 단순화하는 LangChain, 그리고 벡터 검색 데이터베이스 역할을 하는 ChromaDB다. 모두 무료이며 OpenAI 계정 없이 자기 컴퓨터에서 동작한다.

예제는 피자 가게의 가짜 리뷰가 담긴 CSV 파일을 다룬다. 사용자가 '피자 품질이 어때?'나 '비건 옵션이 있어?' 같은 질문을 하면, 에이전트가 문서에서 관련 리뷰를 찾아 분석한 뒤 결론을 내놓는다. 즉, 리뷰 더미에서 내 질문에 맞는 답을 골라주는 셈이다.

구축은 가상환경 생성과 의존성 설치로 시작한다. langchain, langchain-ollama, langchain-chroma를 설치하고, Ollama를 내려받아 응답 생성용 llama 3.2 모델과 문서 임베딩용 mxbai-embed-large 모델을 pull한다. 하드웨어에 따라 구동 가능한 모델 크기가 달라지며, GPU가 없어도 작은 모델은 사용할 수 있다.

RAG의 벡터 검색 부분이 핵심이다. CSV의 각 행을 제목과 리뷰 본문을 합친 document로 만들고, 평점·날짜는 메타데이터로 붙인다. 이 문서들을 임베딩 모델로 벡터화해 ChromaDB에 영구 저장하고, 한 번 만든 데이터베이스는 재생성하지 않도록 존재 여부를 검사한다.

마지막으로 벡터 저장소에서 retriever를 만들어 질문과 유사한 리뷰 다섯 개를 가져오게 한다. 메인 코드에서는 사용자 질문을 retriever로 임베딩해 유사도 검색으로 관련 리뷰를 뽑고, 이를 프롬프트의 reviews 변수로 넘겨 모델이 근거에 기반한 답을 생성한다. 검색 결과 개수는 K 값으로 조절할 수 있다.

주요 인사이트

  • Ollama는 백그라운드에서 HTTP REST API 서버를 띄워 모델을 노출하므로, 코드에서 마치 원격 API처럼 호출하지만 실제 연산은 전부 로컬에서 일어난다.
  • 리뷰 없이 질문하면 모델이 그럴듯하지만 근거 없는 답(환각)을 만들어낸다. RAG로 실제 리뷰를 함께 넘기면 답변이 문서에 기반하게 되고, 어떤 문서에서 가져왔는지도 확인할 수 있다.
  • page_content에는 검색 기준이 될 핵심 정보를 넣고, 검색에 쓰이지 않는 부가 정보는 metadata로 분리하는 설계가 중요하다.
  • 데이터 콜레이터로 배치 안에서 가장 긴 시퀀스에 맞춰 동적으로 패딩하면, 전체 데이터를 일괄 패딩하는 것보다 연산이 효율적이다.

자주 묻는 질문

왜 로컬에서 실행하면 OpenAI 계정이 필요 없나?

Ollama가 모델을 내 컴퓨터 하드웨어로 직접 구동하기 때문이다. Ollama는 로컬에 모델 서버를 띄우고, 코드는 그 서버와 통신해 응답을 받으므로 외부 API 키 없이 전부 로컬에서 처리된다.

RAG는 이 예제에서 어떤 역할을 하나?

CSV에 담긴 피자 가게 리뷰를 벡터로 변환해 ChromaDB에 저장해 두고, 사용자가 질문하면 유사도 검색으로 관련 리뷰 다섯 개를 찾아 모델 프롬프트에 함께 넣는다. 덕분에 모델이 실제 리뷰에 근거해 답할 수 있다.

두 개의 모델이 필요한 이유는?

llama 3.2는 사용자 질문에 답변을 생성하는 데 쓰이고, mxbai-embed-large는 문서와 질문을 벡터로 변환하는 임베딩에 쓰인다. 검색과 생성이 서로 다른 작업이라 역할이 나뉜다.

원문과 출처

이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.

YouTube 원본 영상 보기 ↗

관련 AI 소식