3P by neo 2달전 | favorite | 댓글 1개
  • sgrep은 단어 임베딩을 사용하여 텍스트 입력에 대한 시맨틱 검색을 수행하는 명령줄 도구
    • 단순한 문자열 매칭을 넘어 쿼리에 대해 시맨틱적으로 유사한 일치를 찾음
    • grep과 유사한 경험을 제공하도록 설계됨
  • 기능
    • Word2Vec 임베딩을 사용한 시맨틱 검색
    • 유사성 임계값 설정 가능
    • 일치하는 줄 전후의 문맥 표시
    • 일치하는 단어와 줄 번호에 대한 색상 코드 출력
    • 파일 또는 표준 입력에서 읽기 지원
    • JSON 파일 및 명령줄 인수를 통한 구성 가능
  • 사용 예제
    • 헤밍웨이의 "노인과 바다"에서 "death"와 유사한 단어를 문맥과 줄 번호와 함께 검색:
      curl -s 'https://gutenberg.ca/ebooks/hemingwaye-oldmanandthesea/…' \  
      | sgrep -C 2 -n -threshold 0.55 death  
      
    • 이 명령어는 다음을 수행함:
      • "노인과 바다" 텍스트를 Project Gutenberg Canada에서 가져옴
      • 텍스트를 sgrep에 파이프함
      • "death"와 시맨틱적으로 유사한 단어를 검색함
      • 유사성 임계값을 0.55로 설정함 (-threshold 0.55)
      • 각 일치 항목 전후로 2줄의 문맥을 표시함 (-C 2)
      • 줄 번호를 표시함 (-n)
    • 출력은 유사성 점수, 강조된 단어, 문맥 및 줄 번호를 보여줌
  • Word2Vec 모델
  • sgrep은 이진 형식의 Word2Vec 모델이 필요함. Google의 Word2Vec 모델과 같은 사전 학습된 모델을 사용하거나 gensim과 같은 도구를 사용하여 직접 학습할 수 있음
  • .bin 파일을 로컬에 다운로드하고 config.json을 업데이트함
  • download-model.sh는 eyaler가 호스팅하는 작은 word2vec 모델을 models/googlenews-slim/ 디렉토리에 저장하는 간단한 도우미 스크립트임

GN⁺의 정리

  • sgrep은 단어 임베딩을 사용하여 텍스트에서 시맨틱적으로 유사한 단어를 검색하는 도구임
  • grep과 유사한 사용 경험을 제공하면서도 단순한 문자열 매칭을 넘어서는 기능을 제공함
  • Word2Vec 모델을 사용하여 유사성을 판단하며, 다양한 설정 옵션을 통해 유연하게 사용할 수 있음
  • 텍스트 분석 및 자연어 처리 작업에서 유용하게 사용될 수 있으며, 특히 문맥 기반 검색이 필요한 경우에 강력한 도구임
Hacker News 의견
  • 코드를 읽으면서 몇 가지 작은 팁을 공유함

    • 벡터를 한 번에 읽을 수 있음
    • BLAS를 사용하여 유사성을 더 빠르게 계산할 수 있음
    • 벡터를 로드할 때 정규화하면 코사인 유사도는 벡터의 내적이 됨
    • 여러 CPU를 지원할 수 있는지 궁금함
    • word2vec 저장소가 데이터 할당량을 초과했음
    • 대체 소스로 Stack Overflow와 Hugging Face를 제안함
  • 이 아이디어가 매우 유용하고 왜 생각하지 못했는지 궁금해짐

  • 이미 semgrep이라는 도구와 회사가 존재함

  • 이 도구가 설명적 문구나 복합 문구를 처리할 수 있다면 매우 유용할 것임

    • 현재 검색 엔진의 가장 큰 단점은 단일 히트 검색임
  • 매우 멋진 도구임

    • 각 줄을 단어로 나누고 각 단어의 임베딩을 사용하는 것 같음
    • 긴 텍스트 시퀀스를 의미적으로 검색할 수 있는지 궁금함
    • Transformer 모델을 사용하는 것보다 단어 벡터를 사용하는 것이 더 빠르고 가벼울 것임
    • 잘 분리되지 않은 단어를 감지하고 서브스트링으로 나타나는 모든 단어를 찾는 방법도 고려할 수 있음
  • 이 도구가 매우 멋지며 꼭 사용해보고 싶음

    • 텍스트 전반에 걸친 의미적 검색이 많은 응용 프로그램에서 더 나은 사용자 경험을 제공할 것임
  • 비슷한 도구로 fltr를 제안함

    • 자연어 질문을 위한 grep과 유사함
  • 매우 멋지며, 파일 이름도 검색할 수 있는지 궁금함

  • 매우 멋진 도구를 발견하게 됨

    • semgrep이 이미 사용 중이므로 다른 이름을 고려해야 함