옵시디언 시맨틱 검색: 벡터 데이터베이스 없이 로컬 벡터 인덱스가 작동하는 방식
OpenAI
Ollama
OpenRouter
이 기사는 옵시디언 플러그인 볼트 오디트 AI에서 시맨틱 검색 구현에 대해 설명합니다. 저자는 마크다운 노트가 어떻게 벡터로 변환되는지, 시스템이 별도의 벡터 데이터베이스를 피하는 이유, 그리고 증분 인덱싱이 변경 사항을 효율적으로 처리하는 방법을 설명합니다.
Vault Audit AI의 저자는 Obsidian 커뮤니티 플러그인으로, 메모 작성에서 전체 텍스트 검색의 한계를 해결하기 위해 의미론적 검색을 추가했습니다. 이 플러그인을 사용하면 사용자는 정확한 단어 일치뿐만 아니라 의미로 메모를 검색할 수 있습니다. 인덱스는 외부 벡터 데이터베이스나 서버 없이 Obsidian 볼트 내부에 저장됩니다. 시스템은 Markdown 메모를 조각으로 청크하고, 각 청크를 모델로 임베딩하며, 벡터를 사용자 정의 LocalVectorStore에 저장하는 방식으로 작동합니다. 청크러는 제목과 목록 같은 자연스러운 문서 경계를 존중하고, 제목 경로, 콘텐츠 해시, 소스 오프셋과 같은 메타데이터를 유지합니다. 임베딩 제공자는 OpenRouter, OpenAI 호환 API 및 Ollama를 포함하며, 모두 공통 인터페이스 뒤에 있습니다. LocalVectorStore는 매니페스트와 벡터용 바이너리 파일을 사용하며, 원자적 쓰기로 일관성을 보장합니다. 증분 인덱싱은 메타데이터와 콘텐츠 해시를 비교하여 변경되지 않은 청크에 대한 임베딩 재계산을 피합니다. 저자는 구성 요소를 분리하는 것의 중요성을 강조하고, 테스트를 통과했음에도 불구하고 잡힌 비동기 레이스와 관련된 문제를 언급합니다.
출처: Habr — хаб ИИ —
원문
