- 오픈소스 모델과 도구(Milvus, LangChain 등)를 활용해 Deep Research 형태의 리서치 에이전트를 구현
- 웹·문서 검색을 통해 주제나 질문에 대해 자동으로 심층 리서치를 수행하고, 중간 단계마다 행동(검색, 정리 등)을 선택하는 에이전트 구조를 구현하는 사례가 늘어났음
- 본문에서는 이러한 아이디어를 확장한 DeepSearcher 오픈소스 프로젝트를 소개. 쿼리 라우팅, 조건부 실행 흐름, 웹 크롤링 도구 사용 등을 소개
- DeepSearcher는 파이썬 라이브러리·CLI 형태로 제공되어, 여러 소스 문서를 입력받고 임베딩 모델 및 벡터 DB 설정을 파일로 간단히 조정할 수 있음
- 간단하지만 에이전트 기반 RAG를 시연하는 사례로, 실제 AI 애플리케이션 개발로 이어지는 발판 역할을 할 수 있음
- 특히 추론 모델의 속도와 효율성 문제가 강조되는데, 질의와 검색 과정에서 많은 토큰 생성이 필요해 추론 리소스가 병목이 됨
- SambaNova의 맞춤형 하드웨어로 돌아가는 DeepSeek-R1 reasoning model을 사용하면 초당 토큰 생성 속도가 경쟁 서비스보다 빠르게 나옴
- 이러한 클라우드 추론 서비스를 통해 Llama 3.x, Qwen2.5, QwQ 등 다양한 모델에 대해서도 효율적인 추론이 가능해짐
질문 정의 및 세분화
- 초기 사용자 질의를 세부 하위 질의로 분해함
- 이전 글과 유사하게, "How has The Simpsons changed over time?" 같은 질의가 아래와 같이 여러 하위 질의로 나누어짐
- 예: 작품의 문화·사회적 영향, 시즌별 캐릭터·유머·서사 방식 변화, 애니메이션·제작 기술 변화, 시청자 반응 변화 등
- 이후 단계에서 필요하다면 추가적으로 질문을 재정의하거나 확장하기도 함
리서치 및 분석
- 하위 질의를 토대로 쿼리 라우팅, 벡터 검색, 반성(reflection), 그리고 조건부 반복 단계를 거침
-
쿼리 라우팅
- 여러 데이터베이스 컬렉션 중 어떤 것을 사용할지 LLM이 결정하도록 프롬프트를 구성함
- JSON 형태 응답을 받아, 컬렉션별로 검색 질의를 생성하도록 함
-
벡터 검색
-
Milvus에 저장된 임베딩을 활용해 유사도 검색을 실행함
- 이전 글과 유사하게, 소스 데이터를 미리 분할하고 벡터화해둠
-
반성(reflection)
- LLM이 이전 단계에서 나온 질의·답변을 바탕으로 추가 정보가 필요한지 확인함
- 부족한 부분이 있으면 새로운 하위 질의를 생성해 재검색을 시도함
-
조건부 반복
- 반성 결과 추가 질의가 필요하면 위 과정을 반복함
- 더 이상 정보를 수집할 필요가 없다고 판단하면 최종 보고서를 생성하는 단계로 넘어감
최종 보고서 생성
- 모든 하위 질의와 검색 결과를 종합해 하나의 프롬프트로 보고서를 생성함
- 이전 시연보다 일관성과 응집력을 높인 형태의 보고서를 얻게 됨
- 예를 들어, “How has The Simpsons changed over time?”에 대한 최종 보고서는 아래와 같은 구조로 상세 내용을 제공함
-
- 문화적 영향과 사회적 관련성
-
- 캐릭터·유머·스토리라인 진화
-
- 애니메이션·기술적 변화
-
- 시청자 층, 반응, 시청률 변화
- 결론: 작품이 초기의 반항적 풍자에서 대중적 아이콘으로 변모한 과정 등
-
DeepSeek-R1 모델을 사용한 버전과 GPT-4o mini 모델로 생성한 버전 보고서를 비교할 수 있음
향후 방향
- DeepSearcher는 아직 간단한 수준이나, 추가적 에이전트 구성, 보고서 구조화, 조건부 반복 확장 등으로 더 발전시킬 수 있음
- 대규모 추론 모델은 매우 무거운 연산을 수반하므로, 추론 속도와 비용이 서비스의 핵심 이슈가 됨
- SambaNova의 DeepSeek-R1 모델을 이용해 65회 추론 호출, 약 25k 입력 토큰과 22k 출력 토큰을 사용했으며, 약 0.30달러 비용으로 충분히 빠른 응답을 얻었다고 함
-
DeepSearcher 저장소에서 프로젝트를 직접 체험 가능하며, 앞으로도 추가 기능과 사례를 지속적으로 공유할 계획임