웨비나 요약: LLM 애플리케이션에 가장 관련성 높은 컨텍스트에 접근하기 위한 검색 기법
대규모 언어 모델(LLM)을 외부 데이터 소스와 연결하는 것은 많은 AI 애플리케이션의 성능을 향상시키는 데 매우 중요합니다. 이러한 연결에는 기존 데이터 컬렉션과의 연동, 사용자 대화 기억, 또는 성찰을 통한 "새로운 기억" 생성이 포함됩니다. 검색은 연결된 외부 소스에서 관련 정보를 추출하고 이를 쿼리에 통합하여 맥락을 제공하는 것입니다.
최근 웨비나에서 LangChain의 공동 창립자 겸 CEO인 Harrison Chase와 Zilliz의 소프트웨어 엔지니어인 Filip Haltmayer는 LangChain 및 벡터 데이터베이스를 활용한 검색, 시맨틱 검색, 그리고 그 엣지 케이스에 대해 논의했습니다. 이 게시물에서는 웨비나의 핵심 내용을 살펴보고 청중의 미답변 질문 중 일부를 다루겠습니다.
검색이란 무엇이며, 왜 중요한가요?
일반적으로 검색은 메모리나 기타 저장 장치에서 정보에 접근하는 것을 의미합니다. 웨비나에서 Harrison은 Milvus와 같은 벡터 데이터베이스와 LangChain과 같은 AI 에이전트를 사용하여 검색 기술을 활용해 외부 지식을 LLM에 가져올 수 있는 방법을 설명했습니다.
LLM은 매우 강력하지만, 업데이트가 필요할 수 있는 사전 학습된 정보만 알고 있기 때문에 한계가 있습니다. 예를 들어 ChatGPT의 데이터는 2021년까지만 포함하므로, 그 이후에 발생한 일은 알지 못합니다. 또한 LLM은 도메인별 정보나 독점 정보, 그리고 귀사의 비즈니스와 프로젝트에 관한 데이터가 부족합니다. 더불어 정보가 LLM 내부에 존재하더라도 이를 인식하는 것이 어려울 수 있습니다. 이러한 경우 검색은 LLM에 더 정확한 답변을 위한 더 많은 맥락을 제공하거나, 이미 LLM 안에 있는 대상 정보를 전면에 드러내는 훌륭한 보완 수단이 될 수 있습니다.
시맨틱 검색 개요
시맨틱 검색을 통한 검색은 가장 중요한 사용 사례 중 하나입니다. 최근 웨비나에서 Harrison은 일반적인 CVP 아키텍처(ChatGPT+Vector store+Prompt as code) 내에서 시맨틱 검색이 어떻게 작동하는지 개요를 제공했습니다.
다음 다이어그램은 CVP 스택에서 시맨틱 검색이 어떻게 작동하는지 설명합니다. 사용자가 LLM이 답할 수 있는 일반적인 질문을 하면 LLM은 질문에 직접 응답합니다. 그러나 질문이 도메인 특화된 것이라면, 질문은 벡터로 변환되어 이미 관련 문서를 포함하고 있는 Milvus와 같은 벡터 데이터베이스로 전송됩니다. 벡터 데이터베이스는 사전 저장된 레코드를 청크와 임베딩으로 분해하고, 시맨틱 검색을 수행하여 사용자의 쿼리에 가장 관련성이 높은 top-k 결과를 찾은 다음, 이러한 결과를 사용자의 쿼리와 함께 LangChain과 같은 AI 에이전트로 보냅니다. LangChain은 결과를 사용자의 질문과 결합하여 LLM으로 전송합니다. 그런 다음 LLM은 만족스러운 응답을 제공합니다.
일반적인 CVP 스택에서 시맨틱 검색이 작동하는 방식
시맨틱 검색의 엣지 케이스
시맨틱 검색은 한동안 사용되어 왔으며 많은 과제를 해결하는 데 도움이 되는 것으로 입증되었습니다. Harrison은 웨비나에서 시맨틱 검색의 다섯 가지 엣지 케이스를 시연하고 각 사례를 철저히 분석했습니다.
반복되는 정보
수많은 유사하거나 복사된 문서를 다룰 때 관련 정보를 검색하는 것은 어려울 수 있습니다. 이러한 유형의 콘텐츠는 LLM에 적합하지 않으며 불필요한 맥락을 만들 수 있습니다. Harrison은 이 문제를 극복하기 위한 세 가지 해결책을 제안했습니다:
LLM에 보내기 전에 의미론적 검색을 통해 유사한 문서를 걸러냅니다. 예를 들어, LangChain이 ChatGPT에 프롬프트를 보내기 전에 20~30개의 문서를 검색하고 임베딩을 통해 유사한 문서를 제거하거나 LLM으로 보내지 않고 우회합니다.
다양성을 최적화하기 위해 최대 한계 관련성을 활용합니다. 이 검색은 다른 검색된 벡터와의 유사성과 다양성에 중점을 둡니다.
벡터 데이터베이스에 저장하기 전에 문서를 중복 제거합니다. 하지만 이 접근 방식은 중복에 해당하는 유사도 점수를 결정하는 데 많은 작업이 필요하므로 어려울 수 있습니다. 하나의 벡터 요소가 크게 달라질 수 있으며, 그 결과 상당한 차이가 발생할 수 있습니다.
상충되는 정보
상충되는 정보는 여러 출처가 하나의 질문에 대해 서로 다른 답변을 제공할 때 발생하며, 모든 데이터를 LLM에 제시하면 매우 혼란스러울 수 있습니다. 예를 들어, 회사의 휴가 정책에 대해 문의하면 HR 문서와 임의의 회의록 같은 출처에서 서로 다른 응답을 받을 수 있습니다.
Harrison은 이 문제에 대해 두 가지 해결책을 제안했습니다:
출처의 우선순위를 정하고 해당 순위를 검색에 반영합니다.
생성 단계에 출처 정보를 전달하여 LLM이 어떤 출처가 더 신뢰할 수 있는지 판단할 수 있게 합니다.
시간성
정보가 시간이 지남에 따라 변경되는 것을 시간성이라고 합니다. 예를 들어, 회사의 휴가 정책은 가끔 변경될 수 있습니다.
이 문제를 해결하기 위해 Harrison은 세 가지 해결책을 제안합니다:
검색에서 최신성 가중치 적용: 오래된 정보를 완전히 걸러냅니다.
정보를 생성할 때 타임스탬프 포함: LLM이 더 최신 정보에 의존하도록 요청합니다.
성찰: 시간이 지남에 따라 주제에 대한 이해를 수정합니다.
메타데이터 쿼리
때때로 사용자는 내용보다 메타데이터에 더 관련된 질문을 합니다. 예를 들어, 사용자가 1980년에 외계인이 등장하는 영화를 쿼리할 수 있습니다. "외계인에 관한 영화"는 의미론적으로 검색할 수 있지만, 1980은 정확히 일치해야 하는 조건에 가깝습니다.
그렇다면 이 문제를 어떻게 해결할 수 있을까요? Harrison은 의미론적 검색 검색을 수행하기 전에 메타데이터 필터를 생성할 것을 제안합니다. 이 접근 방식은 질문을 두 부분으로 나누는 것을 포함합니다: 메타데이터 필터(예: "연도는 1980과 같음"과 같은 정확한 일치)와 쿼리(이 경우 "외계인 또는 그와 관련된 것" 같은 내용).
하지만 메타데이터 필터를 어떻게 적용할까요? 많은 벡터 저장소는 쿼리에 메타데이터 필터를 직접 포함할 수 있도록 허용합니다. 그것이 불가능하더라도 검색 후 결과를 필터링하는 것은 여전히 가능합니다.
다중 홉 질문
때때로 사용자는 한 번에 여러 질문을 할 수 있으며, 이로 인해 의미론적 검색이 원래 질문에서 필요한 모든 정보를 검색하기 어려워집니다.
Harrison은 이 과제를 해결하기 위해 LangChain과 같은 AI 에이전트를 사용할 것을 제안했습니다. LangChain은 질문을 여러 단계로 분해하고 언어 모델을 추론 엔진으로 사용하여 필요한 정보를 검색할 수 있습니다. 그러나 이 매력적인 접근 방식은 많은 LLM 호출을 생성할 수 있어 비용이 증가할 수 있습니다.
Filip은 GPTCache와 LangChain 통합을 권장했습니다. GPTCache는 LLM이 생성한 질문과 답변을 저장할 수 있기 때문입니다. 사용자가 다음에 유사한 쿼리를 하면, GPTCache는 의미론적 검색을 수행하고 LLM에 쿼리하기 전에 응답을 제공하여 사용자의 LLM 호출 비용을 절감합니다.
Q&A
웨비나 동안 청중으로부터 많은 질문을 받았으며, 참여에 감사드립니다. Harrison과 Filip은 Q&A 세션에서 일부 질문에 답변했지만, 시간 제약으로 인해 일부는 답변하지 못했습니다. 아래에 질문과 답변 목록을 정리했습니다.
Q: 외부 지식 소스를 사용해 프롬프트를 생성하는 것에 대해 더 자세히 설명해 주실 수 있나요? 사용해 본 예시나 요령에는 어떤 것이 있나요? LangChain은 최적화된 프롬프트를 생성하는 기능을 추가할 계획인가요?
프롬프팅의 핵심은 원하는 바를 명확히 하는 것입니다. 모든 의도와 관련 정보를 명확하게 표현하지 않으면, 사람이 무엇을 해야 할지 모르는 것처럼 LLM도 무엇을 해야 할지 알 수 없습니다. 네, 프롬프트 최적화와 관련된 몇 가지 기능을 추가할 예정입니다.
Q: 현재 검색 증강 생성의 현황을 어떻게 보시나요? Langchain, Llama Index, Vectara 등 많은 솔루션이 있습니다. 라우터 쿼리 엔진 등을 포함해 검색 단계를 미세 조정하는 데 가장 좋은 솔루션은 무엇인가요? 검색이 문서의 중요도를 구분할 수 있다고 언급하셨는데, 이것이 이미 LangChain을 통해 가능한가요?
이 전체 분야는 아직 초기 단계이며 매우 빠르게 움직이고 있습니다. 저는 검색 단계와 생성 단계를 구분하겠습니다. 검색에 관해서라면, LangChain이 벡터 기반 검색 시스템을 커스터마이징하는 데 가장 큰 유연성과 모듈성을 제공한다고 주장하겠습니다. Vectara는 검색을 위한 훌륭한 엔드투엔드 완전 관리형 솔루션으로, 많은 세부 사항을 추상화합니다. LlamaIndex는 실험해 볼 수 있는 트리와 같은 좀 더 흥미로운 데이터 구조를 제공합니다. 어떤 검색 단계를 선택하든, 모두 생성 단계에서는 LangChain을 사용하고 있습니다 — 우리는 세 가지 모두와 통합되어 있습니다. 커스터마이즈된 프롬프트로 그 구분을 달성할 수 있습니다.
Q: LLM 컨텍스트 한도가 시간이 지남에 따라 증가함에 따라 검색의 사용 사례와 관련 트레이드오프가 어떻게 영향을 받을 것으로 예상하시나요?
Anthropic의 100k 컨텍스트 길이 LLM과 같은 확장 컨텍스트 트랜스포머에도 벡터 데이터베이스가 여전히 필요한 이유는 무엇일까요? 벡터 데이터베이스가 훨씬 더 비용 효율적인 솔루션을 제공하기 때문입니다. 이러한 LLM의 경우, 무거운 계산 작업은 모두 LLM이 수행하는 반면, 벡터 데이터베이스는 저장을 담당합니다. 계산 비용은 빠르게 증가할 수 있다는 점을 유의하세요. 따라서 LLM에 더 많은 컨텍스트를 밀어 넣고 싶다면, 증가한 비용을 감당해야 합니다. 바로 이 지점에서 벡터 데이터베이스의 장점이 드러납니다. 대부분의 비용은 계산과 관련되어 있고, 계산은 항상 100배 더 비싸기 때문에 벡터 데이터베이스는 비용 효율적인 대안입니다.
장거리 의존성 — LLM은 트랜스포머 아키텍처를 사용하더라도 대화의 "초반"에 나온 내용을 여전히 잊을 수 있습니다.
Q: 사전 벡터화된 콘텐츠를 공개하는 오픈 소스 프로젝트에 대해 어떻게 생각하시나요? Cohere는 Wikipedia를 공개했고, 또 다른 프로젝트는 arXiv 초록을 공개했습니다. 오픈 소스 벡터 콘텐츠를 공개하는 데 가장 좋은 모델은 무엇인가요?
시맨틱 검색을 배우고 벡터 생성에 드는 추가 시간과 비용을 피할 수 있다는 점에서 훌륭한 아이디어입니다. 이 외에는, 벡터가 사전 계산되어 있으면 무엇을 어떻게 임베딩할지 수정할 수 없기 때문에 심각한 제약이 생깁니다. 가장 좋은 모델에 관해서는, 사용 중인 데이터에 대해 최상의 결과를 제공하는 단 하나의 모델은 없습니다—사용하는 모델이 더 인기 있을수록, 데이터셋이 사용될 가능성이 더 높아집니다.
Q: LangChain에서 memory 하위 패키지는 어떻게 작동하나요? 왜 채팅 메시지 기록이 memory와 분리되어 있나요? 왜 이렇게 설계하셨나요?
우리는 이를 더 명확하게 만들기 위해 memory 개편 작업을 진행하고 있습니다.
전체 웨비나 녹화본을 시청하세요!
LangChain에 대한 더 많은 정보와 Filip과 Harrison의 토론을 보려면 웨비나 녹화본을 시청하세요.
계속 읽기

Zilliz Cloud Now Available in AWS Europe (Ireland)
Zilliz Cloud launches in AWS eu-west-1 (Ireland) — bringing low-latency vector search, EU data residency, and full GDPR-ready infrastructure to European AI teams. Now live across 30 regions on five cloud providers.

Zilliz Cloud BYOC Now Available Across AWS, GCP, and Azure
Zilliz Cloud BYOC is now generally available on all three major clouds. Deploy fully managed vector search in your own AWS, GCP, or Azure account — your data never leaves your VPC.

What Exactly Are AI Agents? Why OpenAI and LangChain Are Fighting Over Their Definition?
AI agents are software programs powered by AI that can perceive their environment, make decisions, and take actions to achieve a goal—often autonomously.



