AI 서재
책으로 읽는 AI서재
한 권을 고르고, 목차에서 차례대로 읽을 수 있게 정리했습니다.
PDF 다운로드 책
다국어로 읽는 대학생 교양 인공지능
한국어 원문과 외국어 번역을 함께 실은 유학생용 교재입니다. 각 책 소개 페이지에서 PDF를 받을 수 있습니다.
[AI서재] 11장 검색 결합 생성과 의미 저장소: 긴 기억 만들기
클로드 코드 완전정복
11장 검색 결합 생성과 의미 저장소: 긴 기억 만들기
김경진 변호사
도입
68페이지짜리 청소기 매뉴얼 PDF를 클로드 코드에게 던져 주고, "필터 청소하는 법 알려줘"라고 물었습니다. 에이전트는 잠시 검색을 수행한 뒤, 단계별 설명을 텍스트로 보여 주었습니다. 그 아래에는 매뉴얼 속 분해 도면 이미지가 함께 표시되었습니다. 물리적 장치를 다룰 때는 글보다 그림이 훨씬 명확할 수 있다는 판단을 에이전트가 스스로 내린 것입니다.
68페이지 분량의 문서가 에이전트의 한 번에 읽는 범위에 통째로 들어갈 수 없었는데, 어떻게 정확한 페이지에서 정확한 정보를 찾아낸 걸까요? 그 비밀이 검색 결합 생성(Retrieval-Augmented Generation, 검색 증강 생성)입니다.
검색 증강 생성이란 무엇인가
AI 에이전트에게는 태생적 한계가 있습니다. 학습 데이터에 포함되지 않은 정보는 알지 못합니다. 자사의 내부 매뉴얼, 지난주에 작성된 회의록, 오늘 아침에 촬영한 현장 사진 — 이런 데이터는 모델의 훈련 과정에 존재하지 않습니다. 한 번에 읽는 범위에 모든 문서를 넣어 주는 방법도 있지만, 수십 페이지를 넘어서면 모델이 세는 글 조각 한도에 걸립니다.
검색 결합 생성는 이 문제를 우회하는 구조입니다. 세 단계로 이루어져 있습니다.
검색(Retrieval) — 사용자의 질문과 관련된 정보를 외부 데이터 저장소에서 찾아옵니다. 전체 문서를 읽는 것이 아니라, 질문에 해당하는 조각만 골라냅니다.
증강(Augmentation) — 검색된 조각을 에이전트의 프롬프트에 덧붙입니다. 에이전트는 이제 원래 알지 못했던 정보를 "방금 읽은 것처럼" 활용할 수 있습니다.
생성(Generation) — 증강된 컨텍스트를 바탕으로 답변을 생성합니다. 에이전트의 추론 능력과 외부 데이터가 결합되어, 단독으로는 불가능했던 수준의 응답이 나옵니다.
[그림 11-1] 검색 결합 생성의 세 단계: 검색 → 증강 → 생성 흐름도]
비유하자면, 오픈북 시험과 같습니다. 학생(에이전트)이 모든 교과서를 암기하고 있을 필요는 없습니다. 시험 중에 필요한 페이지를 펼쳐 볼 수 있으면 됩니다. 다만 어떤 페이지를 펼쳐야 하는지를 빠르게 판단하는 능력, 그리고 그 페이지의 정보를 자신의 지식과 결합하여 답안을 구성하는 능력은 학생의 몫입니다.
검색 결합 생성에서 "어떤 페이지를 펼칠 것인가"를 결정하는 기술이 바로 임베딩(Embedding)입니다.
임베딩의 개념
임베딩은 텍스트를 숫자 벡터(Vector)로 변환하는 과정입니다. "벡터"라는 단어가 수학적으로 느껴질 수 있지만, 핵심은 간단합니다. 문장의 의미를 숫자 목록으로 표현하는 것입니다.
"커피 한 잔 마시고 싶다"라는 문장과 "카페라테를 주문하고 싶다"라는 문장은 단어가 다릅니다. 그러나 의미는 비슷합니다. 임베딩 모델(Embedding Model)은 이 두 문장을 비슷한 숫자 벡터로 변환합니다. 반면 "오늘 주식 시장이 하락했다"는 전혀 다른 벡터로 변환됩니다. 의미가 다르기 때문입니다.
이 벡터들을 다차원 공간에 배치하면, 의미가 비슷한 문장끼리 가까이 모이고 의미가 다른 문장끼리 멀리 떨어집니다. 이것이 의미적 유사도(Semantic Similarity) 기반 검색의 원리입니다. 사용자가 "필터 청소 방법"이라고 질문하면, 이 질문을 벡터로 변환한 뒤, 미리 저장해 둔 문서 조각 벡터들 중에서 가장 가까운 것을 찾습니다.
키워드가 정확히 일치하지 않아도 의미가 통하면 검색됩니다. "먼지받이 세척 절차"라고 쓰여 있어도 "필터 청소 방법"에 대한 답으로 끌어올 수 있습니다.
[그림 11-2] 임베딩 공간에서 유사한 문장끼리 클러스터를 이루는 시각화]
검색 결합 생성에서 임베딩이 담당하는 역할을 다시 정리하면 이렇습니다. 문서를 작은 조각(청크, Chunk)으로 나눕니다. 각 조각을 임베딩 모델에 통과시켜 벡터로 변환합니다. 변환된 벡터를 데이터베이스에 저장합니다. 질문이 들어오면 질문도 벡터로 변환합니다. 저장된 벡터 중에서 질문 벡터와 가장 가까운 것들을 찾아 에이전트에게 전달합니다.
Google Gemini 멀티모달 임베딩 활용
여기까지는 텍스트에 대한 이야기였습니다. 그런데 현실의 데이터는 텍스트만이 아닙니다. 매뉴얼에는 분해 도면이 있고, 현장 보고서에는 사진이 첨부되고, 교육 자료에는 영상이 포함됩니다.
Google이 출시한 Gemini 임베딩 2(Gemini Embedding 2)는 텍스트, 이미지, 영상, 오디오를 모두 같은 벡터 공간에 배치할 수 있는 멀티모달 임베딩 모델(Multimodal Embedding Model)입니다.
이 모델이 가져오는 변화를 구체적인 사례로 살펴봅니다.
청소기 매뉴얼 사례 — 68페이지 PDF를 통째로 임베딩합니다. 텍스트 조각뿐 아니라 다이어그램 이미지도 벡터로 변환됩니다. "필터 청소 방법"을 질문하면 텍스트 설명과 함께 해당 다이어그램 이미지가 반환됩니다. 텍스트만으로는 파악하기 어려운 부품 위치를 이미지로 확인할 수 있습니다.
지붕 수리 업체 사례 — 과거 시공 사진 13장을 임베딩합니다. 각 사진에는 비용, 소요 기간, 투입 인원 같은 메타데이터(Metadata)가 연결되어 있습니다. 새로운 지붕 사진을 업로드하면, 유사한 과거 시공 사례 다섯 건이 유사도 점수와 함께 반환됩니다. 견적 산출의 참고 자료로 쓸 수 있습니다.
[그림 11-3] 멀티모달 임베딩 공간: 텍스트, 이미지, 영상이 의미 기반으로 배치된 2D 시각화]
멀티모달 임베딩의 진가는 서로 다른 유형의 데이터가 같은 공간에 공존한다는 점입니다. 스마일리 감자튀김 사진은 "음식" 범주에, 기타 치는 강아지 영상은 "엔터테인먼트" 범주에, 클로드 코드 사용 영상은 "기술" 범주에 각각 배치됩니다. 데이터 유형이 달라도, AI가 의미를 파악하여 올바른 위치에 놓습니다. 모든 데이터가 지붕 사진이라면, 수해 피해·노후화·구조적 결함 같은 세부 범주로 자동 분류됩니다.
현재 기준으로 영상은 120초 이내의 MP4 또는 MOV 파일을 지원하며, 이미지는 요청당 최대 6장의 PNG 또는 JPEG를 처리할 수 있습니다. 오디오도 지원되며, 오디오의 경우 정확한 설명 메타데이터를 함께 제공하면 검색 정확도가 높아집니다.
Pinecone 의미 기반 데이터 저장소 연동 실습
임베딩된 벡터를 어딘가에 저장하고 검색할 수 있어야 합니다. 그 저장소가 의미 기반 데이터 저장소(Vector Database)이며, Pinecone은 가장 널리 쓰이는 의미 기반 데이터 저장소 서비스 중 하나입니다.
실습의 전체 흐름은 다음과 같습니다.
1단계: 환경 준비
VS Code에서 새 폴더를 만들고 클로드 코드를 엽니다. 계획 모드(Plan Mode)로 전환한 뒤, 에이전트에게 이렇게 지시합니다.
"Google Gemini의 새 임베딩 2 모델을 사용하여 Pinecone 의미 기반 데이터 저장소에 텍스트, 이미지, 영상을 저장하고 검색하는 시스템을 만들어 줘. .env 파일에 Pinecone API 키, Gemini API 키, OpenRouter API 키 자리를 만들어 줘."
에이전트는 프로젝트 구조를 설계하고, 의존성 목록을 정리하고, 단계별 계획을 제시합니다.
세 개의 API 키가 필요합니다. Pinecone은 벡터 저장소 접근을 위해, Gemini는 임베딩 모델 호출을 위해, OpenRouter는 채팅 모델(답변 생성용)을 위해 사용됩니다. Pinecone은 무료 스타터 플랜으로 시작할 수 있고, Gemini API 키는 Google AI Studio에서 발급받으며, OpenRouter는 여러 모델을 하나의 API로 접근할 수 있게 해 주는 서비스입니다.
2단계: 데이터 임베딩
.env 파일에 세 개의 키를 입력하고 저장합니다. data 폴더에 임베딩할 파일들을 넣습니다. 텍스트 파일, 이미지, 영상을 섞어 넣어도 됩니다. 에이전트에게 "데이터가 준비됐으니 Pinecone에 넣어 줘"라고 말하면, 에이전트가 Pinecone에 인덱스를 생성하고 각 파일을 임베딩하여 저장합니다.
이 과정에서 에이전트가 하는 일은, 각 파일의 유형을 자동 인식하고 적절한 임베딩 방식을 적용하는 것입니다. 텍스트는 청크로 나누어 임베딩하고, 이미지는 시각적 의미를 벡터로 변환하며, 영상은 프레임과 오디오를 분석하여 벡터로 변환합니다.
[그림 11-4] 실습 파이프라인: 원본 파일 → 임베딩 모델 → Pinecone 인덱스]
3단계: 채팅 인터페이스 구축
에이전트에게 "내 컴퓨터에서 검증할 수 있는 채팅 웹 앱을 만들어 줘"라고 요청합니다. 에이전트는 웹 애플리케이션을 구축하고 내 컴퓨터호스트(localhost)에서 실행합니다. 브라우저에서 질문을 입력하면 Pinecone에서 관련 벡터를 검색하고, 검색 결과를 바탕으로 답변을 생성합니다.
실제 검증에서 "워크플로우 클라이언트를 어떻게 확보해야 할까?"라고 물으면, 텍스트 파일에서 관련 내용을 찾아 답변합니다. "기타 치는 골든 리트리버 영상 보여줘"라고 요청하면, 해당 영상의 메타데이터를 찾아 인라인으로 영상을 재생합니다.
4단계: 반복 개선
첫 번째 결과가 완벽하지 않을 수 있습니다. 이미지가 반환되지 않거나, 영상 설명이 부족할 수 있습니다. 이때 에이전트에게 문제를 설명하면, 메타데이터를 보강하거나 앱을 수정합니다. "영상에 더 나은 설명을 달아서 다시 임베딩해 줘"라고 요청하면, 기존 벡터를 삭제하고 개선된 메타데이터와 함께 새로 저장합니다.
이 전체 과정이 30분 안에 이루어집니다. n8n 같은 코드 없이 쓰는 도구에서 동일한 멀티모달 벡터 저장소를 구축하려면 수 시간에서 수 일이 걸리는 작업입니다. 청킹(Chunking) 전략 설계, 이미지 캡처와 저장 방식 설정, 검색 결과 포맷팅을 모두 수동으로 구성해야 하기 때문입니다. 클로드 코드는 이 모든 과정을 자연어 지시만으로 처리합니다.
검색 결합 생성가 에이전트 작업 흐름에 가져오는 변화
검색 결합 생성가 없는 에이전트는 자신이 학습한 범위 안에서만 답합니다. 한 번에 읽는 범위에 들어오는 정보만 참고합니다. 그 바깥의 세계는 존재하지 않는 것과 같습니다.
검색 결합 생성를 장착한 에이전트는 다릅니다. 회사의 68페이지 매뉴얼을 읽을 수 있습니다. 수백 장의 시공 사진 아카이브를 검색할 수 있습니다. 지난 분기의 회의록에서 특정 결정의 맥락을 찾아낼 수 있습니다. 에이전트의 지식 범위가 학습 데이터의 경계를 넘어, 조직이 보유한 모든 데이터로 확장됩니다.
에이전트 작업 흐름에서 검색 결합 생성는 여러 시나리오로 활용됩니다.
고객 지원 자동화 — 제품 매뉴얼과 FAQ를 임베딩하여, 고객 질문에 대해 정확한 페이지와 이미지를 참조한 답변을 생성합니다. "이전에 비슷한 문의가 있었나요?"라는 질문에 과거 티켓 기록을 검색하여 답할 수도 있습니다.
내부 지식 관리 — 팀의 프로젝트 문서, 의사결정 로그, 브랜드 가이드라인을 임베딩합니다. 신규 팀원이 "우리 회사의 로고 사용 규칙이 뭐야?"라고 물으면, 브랜드 가이드라인에서 해당 섹션을 찾아 답변합니다.
연구 보조 — 논문, 보고서, 시장 조사 자료를 임베딩합니다. "이 분야의 최근 동향이 뭐야?"라고 물으면, 관련 자료를 검색하여 요약본을 생성합니다. 원본 출처와 신뢰도 점수를 함께 제공하므로, 사실 확인이 가능합니다.
[그림 11-5] 검색 결합 생성 적용 전후 에이전트 지식 범위 비교 다이어그램]
여기서 중요한 것은 주제 전문성(Subject Matter Expertise)의 역할입니다. 검색 결합 생성 파이프라인을 구축하는 기술적 능력보다, 어떤 데이터를 어떻게 설명하느냐가 결과 품질을 좌우합니다. 지붕 수리 사례에서 보았듯이, 사진에 달리는 메타데이터가 빈약하면 검색 결과도 빈약합니다.
"이 사진은 10년 된 아스팔트 싱글 지붕의 우박 피해 사례이며, 수리 비용은 450만 원, 소요 기간은 3일이었다"라는 설명이 달린 사진과, "지붕 사진"이라고만 태그된 사진의 검색 유용성은 차원이 다릅니다.
기술 구현 역량의 가치는 줄어들고 있습니다. n8n에서 수 일 걸리던 파이프라인을 클로드 코드가 30분에 구축하는 것을 보았습니다. JSON 본문을 구성하고 HTTP 요청을 설정하는 기술적 세부사항은 에이전트가 처리합니다. 반면 프로세스를 명확하게 설명하는 능력, 데이터의 의미를 정확하게 기술하는 능력, 빈틈을 발견하고 명시적으로 지적하는 능력은 여전히 사람의 영역입니다.
에이전트에게 장기 기억을 부여하는 것은 데이터베이스를 연결하는 일이었습니다. 그렇다면 에이전트에게 반복적으로 수행할 수 있는 숙련된 기술을 부여하는 방법을 살펴보겠습니다. 한 번 가르쳐 놓으면 언제든 동일한 품질로 실행할 수 있는, 재사용 가능한 행동 양식 말입니다.
이 책이 잠시라도 당신 곁에 머물렀다면, 다음 이야기가 세상에 나올 수 있도록 후원해 주세요.
(자발적 후원 부탁 구좌 : 농협 302-1096-0948-81 예금주 : 김경진)









