콘텐츠로 이동

하이브리드 검색

memtomem의 하이브리드 검색은 키워드 검색과 시맨틱 검색을 결합하여, 정확한 용어 매칭과 의미 기반 유사도를 동시에 활용합니다.

하이브리드 검색은 세 가지 검색 엔진을 병렬로 실행합니다:

검색 엔진기반강점
BM25SQLite FTS5정확한 키워드/용어 매칭. “FastAPI”, “mem_search” 같은 고유 명칭에 강함
벡터 검색sqlite-vec + ONNX/Ollama/OpenAI 임베딩의미적 유사도. “배포 방법” → “deployment checklist” 매칭 가능
RRF 융합Reciprocal Rank Fusion두 검색 결과의 순위를 결합하여 최종 랭킹 산출

인덱싱 시 문서를 의미 단위로 분할합니다. 단순 토큰 수 기반이 아닌, 구조를 인식하는 6종 청킹 전략:

전략대상동작
Markdown.md 파일헤딩 레벨 기준 분할, 계층 구조 보존
Python AST.py 파일함수/클래스 단위 분할, docstring 포함
JS/TS AST.js, .ts 파일tree-sitter 기반 함수/모듈 분할
JSON.json 파일구조 인식 분할
YAML/TOML.yaml, .toml키-값 블록 단위 분할
일반 텍스트기타 파일문단/줄바꿈 기반 분할

전체 재인덱싱 대신, 변경된 부분만 갱신합니다:

  1. 각 청크의 SHA-256 해시를 저장
  2. 재인덱싱 시 해시 비교로 변경분만 탐지
  3. 변경된 청크만 재임베딩하여 인덱스 업데이트

대규모 문서셋에서도 인덱싱 비용을 최소화합니다.

기억을 스코프별로 구분하여 관리합니다:

  • 폴더 이름에서 네임스페이스 자동 유도
  • 검색 시 특정 네임스페이스 필터링 가능
  • 멀티 에이전트 환경에서 에이전트별 격리와 공유 지원
  • 유사 중복 탐지 — 내용이 거의 같은 기억 자동 식별
  • 시간 기반 감쇠 — 오래된 기억의 검색 가중치 점진적 감소
  • TTL 만료 — 설정된 기간이 지난 기억 자동 삭제
  • 자동 태깅 — 콘텐츠 분석을 통한 태그 자동 부여