GN⁺: DeepSearcher - 로컬 오픈소스 Deep Research
(milvus.io)- 오픈소스 모델과 도구(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 저장소에서 프로젝트를 직접 체험 가능하며, 앞으로도 추가 기능과 사례를 지속적으로 공유할 계획임
Hacker News 의견
-
이 시스템은 로컬 LLM을 사용하지 않아서 진정한 로컬 시스템이 아님
- Ollama와 LM Studio가 호스팅하는 로컬 LLM을 사용할 수 있는 깊은 검색기가 있는지 궁금함
-
HuggingFace의 오픈소스 버전과 비교가 궁금함
- HF 버전은 웹을 탐색하고 결과를 수집한 후 평가하여 최종 결과를 합성하는 추론 LLM을 사용함
- 이 버전은 웹 크롤링에서 생성된 문서의 벡터 저장소를 보여주는 것 같음
-
Grok의 구현의 마법은 대부분의 웹사이트를 캐시하고 있어서 매우 빠르게 느껴짐
- Bing/Brave 검색은 그 기능을 제공하지 않는 것 같음
- 이런 서비스가 존재하는지 궁금함
-
Deep Research에 대한 다양한 접근을 좋아함
- Flow를 사용하여 새로운 워크플로우를 시도 중임
-
관련된 두 개의 블로그 게시물이 있음
- 오픈소스를 사용하여 Deep Research를 구축한 경험을 공유함
-
주요 AI 회사들이 동일한 Deep Research 제품을 만들었으므로, 공유 오픈소스 플랫폼에 집중하는 것이 합리적일 것임
-
웹 크롤링 통합의 실질적인 의미가 궁금함
- 이론적으로 Sci-Hub에서 논문을 읽고 유효한 대학원 수준의 연구를 생성하는 데 사용될 수 있을지 궁금함
- DeepSeek R1과 GPT-4o 및 다른 대형 모델을 사용하여 작성된 보고서를 비교하는 데 유용할 수 있음
- 오픈소스 코드가 다양한 LLM의 한계를 더 빨리 드러내고 특정 필요에 맞는 더 나은 추론 루프 개발에 도움을 줄 수 있음
-
개인 노트(Obsidian)와 웹에 연결할 수 있는 Deep Research 도구를 찾고 있었음
- 이 도구가 그 기능을 가지고 있는 것 같음
- 이제 남은 것은 Deep Research 결과를 Obsidian으로 내보내는 방법을 찾는 것임
-
실제로 사용해 보았고 몇 가지 문제에 직면하여 openAI 텍스트 임베딩을 MilvusEmbedding으로 교체해야 했음
- QuickStart의 반응이 좋았음
-
진정한 마법의 총알은 lib-gen과 sci-hub를 검색하는 것임