GN⁺: HN 공개: 로컬에서 실행되는 'Perplexity' 클론을 제작하다
(github.com/nilsherzig)LLocalSearch란 무엇인가
- 완전히 로컬에서 운영되는 검색 엔진으로, LLM 에이전트를 사용함.
- 사용자가 질문을 하면 시스템이 LLM 체인을 사용해 답을 찾음.
- 사용자는 에이전트의 진행 상황과 최종 답변을 볼 수 있음.
- OpenAI나 Google API 키가 필요하지 않음.
- 이제 후속 질문 기능이 추가됨: demo.mp4
특징
- 🕵️ 완전히 로컬에서 작동하므로 API 키가 필요 없음.
- 💸 "저사양" LLM 하드웨어에서 작동(데모 비디오는 7b 모델 사용).
- 🤓 검색 과정을 더 잘 이해할 수 있도록 진행 로그 제공.
- 🤔 후속 질문 가능.
- 📱 모바일 친화적 인터페이스.
- 🚀 Docker Compose를 사용하여 배포가 빠르고 쉬움.
- 🌐 어떤 기기에서나 쉽게 접근할 수 있는 웹 인터페이스.
- 💮 밝고 어두운 모드를 지원하는 수제 UI.
상태
- 이 프로젝트는 아직 초기 단계임. 일부 버그가 있을 수 있음.
작동 원리
- 가장 최신의 정보를 얻기 위해서는 infra 문서를 참조.
자체 호스팅 & 개발
요구 사항
- 컨테이너에서 접근할 수 있는 실행 중인 Ollama 서버.
- GPU는 필수는 아니지만 권장됨.
- Docker Compose
최신 릴리스 실행
- 이 프로젝트 개발 의도가 없다면 권장됨.
git clone https://github.com/nilsherzig/LLocalSearch.git cd ./LLocalSearch # 🔴 compose 파일 내의 환경 변수를 확인하고 ollama 서버의 host:port를 추가 docker-compose up 🎉
- 이제 기본적으로 http://localhost:3000에서 웹 인터페이스를 열 수 있음.
- 기본적으로 다른 것은 노출되지 않음.
현재 git 버전 실행
- 더 새로운 기능을 사용할 수 있지만, 안정성은 덜할 수 있음.
git clone https://github.com/nilsherzig/LLocalsearch.git # 1. `docker-compose.dev.yaml` 내의 환경 변수를 반드시 확인. # 2. 일반 compose 파일이 아닌 dev compose 파일을 확인했는지 확인. # 3. 컨테이너를 빌드하고 서비스를 시작 make dev
-
make
가 설치되어 있지 않다면 Makefile 내의 명령어를 수동으로 실행할 수 있음. - 이제 http://localhost:3000에서 프론트엔드에 접근할 수 있음.
GN⁺의 의견
- LLocalSearch는 사용자의 개인 정보 보호를 중시하는 현대적인 검색 엔진의 대안으로서 주목할 만함. 사용자 데이터를 외부 서버에 전송하지 않고도 검색 기능을 제공함으로써, 개인 정보 보호에 대한 우려를 해소할 수 있음.
- 이 프로젝트는 오픈소스 커뮤니티에서 개발자들에게 매력적인 기회를 제공함. 개발자들은 이 프로젝트에 기여함으로써 검색 엔진 기술에 대한 이해를 높이고, 자신의 포트폴리오를 강화할 수 있음.
- 하지만 초기 단계의 프로젝트이므로 버그와 안정성 문제가 있을 수 있음. 이는 실제 사용 환경에서의 적용을 고려할 때 신중을 기해야 함을 의미함.
- LLocalSearch가 성공적으로 발전한다면, 기존의 대형 검색 엔진에 대한 의존도를 줄이고, 검색 엔진 시장에 다양성을 더하는 계기가 될 수 있음.
- 기술적인 측면에서 볼 때, LLM 에이전트를 사용한 검색은 매우 혁신적이지만, 이를 효과적으로 활용하기 위해서는 충분한 컴퓨팅 자원과 기술적 지식이 필요함.
Hacker News 의견
-
해커뉴스 댓글 모음 요약:
-
🤖 LLMs와 검색 엔진의 결합: LLMs가 검색 엔진에 접근하여 벡터 데이터베이스를 쿼리할 수 있는 시스템에 대한 설명. LLM이 초기화한 검색 쿼리에서 상위 n개 결과를 스크랩하여 벡터 데이터베이스에 작은 청크로 저장하고, LLM은 이 데이터베이스를 쿼리하여 관련 청크를 얻을 수 있음. 128k 컨텍스트 LLM이 모든 것을 요약하는 것만큼 포괄적이지는 않지만, 로컬 하드웨어에서는 훨씬 빠르고 자원을 적게 사용함. GitHub에서의 데모는 일반 소비자 GPU(amd rx 6700xt)에서 실행됨.
-
👍 아키텍처에 대한 칭찬: 기존 LLMs와 함께 사용할 계획이며, 로컬에서도 작동하는 것을 보게 되어 기쁨. 공유에 감사함을 표하며 아키텍처를 좋아함.
-
❓ Perplexity와의 관련성 질문: 이 시스템이 Perplexity와 무슨 관련이 있는지, 대신 사용된 기본 모델에 대한 참조가 필요함을 지적함.
-
🌟 로컬 모델의 특별한 기능: 로컬 모델이 특수 모듈을 호출하는 것을 본 적이 없으며, 개인적으로 사용하는 로컬 7b open-hermes가 매우 좋다고 평가함.
-
🚀 기업용 내부 검색 엔진과의 연동 가능성: 아직 실행하지 않았지만 매우 유망해 보이며, 내부 기업 검색 엔진과 연결하여 사용하는 데 매우 유용할 것으로 생각함. 로컬 LLMs에 연결된 비 API 키 제품이 더 많이 만들어지는 것을 보게 되어 기쁨.
-
🛠️ 인프라 내 결정 과정에 대한 질문: '도구 사용 필요'와 '답을 찾음' 블록이 인프라 내에서 어떻게 결정되는지, 데모를 보면 결과 반환에 시간이 걸리는데, 검색, 벡터 저장소, 벡터 데이터베이스 검색 중 어느 단계에서 가장 많은 시간이 소요되는지에 대한 질문.
-
🕵️ 로컬 검색 엔진의 작동 원리: '로컬에서 실행되는 검색 엔진'이라고 하지만, 어떻게 사이트와 페이지를 찾아 인덱싱하는지에 대한 의문 제기.
-
🤫 Perplexity에 대한 비밀: Perplexity가 기성 모델을 사용하는 것 외에는 많은 것을 하지 않았다는 의견.
-
🏭 Perplexity의 챗봇 경쟁자: Perplexity가 챗봇 경쟁자로 보임.
-
✨ Plandex와의 통합 제안: 오늘 공유된 Plandex와 연결하여 컴퓨터를 떠나지 않는 코드로 AI와 협업할 수 있는 도구를 만들면 놀라울 것이라는 제안.
-
배경 지식: LLMs(Large Language Models)는 대규모 언어 모델로, 자연어 처리에 사용되며, 벡터 데이터베이스는 데이터를 벡터 형태로 저장하여 빠른 검색을 가능하게 하는 데이터베이스임. Perplexity는 자연어 처리 분야에서 모델의 성능을 평가하는 지표이기도 하지만, 여기서는 특정 제품이나 서비스를 지칭하는 것으로 보임.