Knowledge-and-Memory-Management v0.0.2: 휴대 가능한 지식 수집 및 메모리 관리
요약
Knowledge-and-Memory-Management v0.0.2는 웹, 비디오, 기사로부터 지식을 수집하고 관리하는 휴대 가능한 시스템을 제공합니다. 환경 변수 기반의 경로 설정을 통해 컨테이너 배포를 용이하게 하며, 통합된 인제스션 파이프라인을 지원합니다.
핵심 포인트
- 웹, 비디오, 기사 대상의 다각화된 지식 수집 파이프라인 제공
- Chroma와 DuckDB를 활용한 이중 계층 메모리 관리 시스템
- MaintenanceAgent를 통한 자동 데이터 정제 및 인덱스 재구축
- $AGENT_HOME 환경 변수를 활용한 컨테이너 배포 최적화
Knowledge-and-Memory-Management v0.0.2는 하드코딩된 개인 디렉터리를 대신하여 $AGENT_HOME을 통한 휴대 가능한 경로를 제공하는 깔끔한 릴리스를 전달합니다. 이번 버전은 웹, 비디오, 기사로부터의 지식 수집(Knowledge Collection)과 간소화된 메모리 관리(Memory Management) 시스템에 초점을 맞추고 있습니다. 지속 가능한 지식 베이스를 구축하는 개발자들에게 이번 업데이트는 환경 특화적인 마찰을 제거하고 통합된 인제스션 파이프라인(Ingestion pipelines)을 도입합니다.
지식 수집 (Knowledge Collection)
수집기(Collector) 모듈은 이제 별도로 구성 가능한 파이프라인을 가진 세 가지 콘텐츠 채널을 대상으로 합니다.
-
웹 (Web): 헤드리스 브라우저 (playwright)가 동적 콘텐츠를 처리합니다. 사용자는 대상 요소를 위해 CSS 선택자(CSS selectors) 또는 XPath를 지정하며, 시스템은 렌더링된 텍스트를 추출하고 내비게이션과 광고를 폐기한 후 깨끗한 마크업(Markup)을 반환합니다. 페이지 타임아웃이나 네트워크 실패로 인한 오류는 재시도를 위해 별도의 오류 저장소에 기록됩니다.
-
비디오 (Video): yt-dlp와의 통합을 통해 지원되는 플랫폼에서 오디오 스트림을 다운로드합니다. 로컬 ASR (whisper.cpp)이 오디오를 타임스탬프와 함께 텍스트로 전사(Transcribe)합니다. 각 클립은 나중에 관리 가능한 임베딩 (Embedding)을 위해 문장 경계에 따라 청크(Chunk) 단위로 나뉩니다.
-
기사 (Articles): 표준 HTML 페이지의 경우, 수집기는 가독성 알고리즘(Readability algorithm)을 사용하여 주요 콘텐츠를 분리합니다. 메타데이터(저자, 발행일, RSS 태그)는 JSON-LD 또는 Open Graph 헤더에서 파싱됩니다. 폴백(Fallback) 추출에는 boilerpipe 패턴이 사용됩니다.
수집된 모든 데이터는 KnowledgeChunk 스키마로 정규화됩니다: 본문 텍스트, 소스 URI, 콘텐츠 유형, 그리고 중복 제거를 위한 SHA256 해시. collector.cache_enabled가 활성화되지 않는 한, 청크는 중간 파일 없이 메모리 저장소(Memory store)로 직접 스트리밍됩니다.
메모리 관리 (Memory Management)
메모리 모듈은 이중 계층 저장소(dual-layer store)를 사용합니다. 벡터 임베딩(vector embeddings)을 위해서는 all-MiniLM-L6-v2를 사용하는 Chroma를, 구조화된 메타데이터(structured metadata)를 위해서는 DuckDB를 사용합니다. 쓰기 작업 시, 각 KnowledgeChunk는 임베딩 및 인덱싱되며, 동일한 해시(hash)를 사용하여 중복 컬럼을 방지합니다. 검색(Retrieval)은 semantic_search(embedding, k)와 filter_search(metadata_query)를 모두 지원합니다. 엔티티(Entities)는 spaCy NER을 통해 추출되며, 토픽 클러스터링(topic clustering)을 위해 공기(co-occurrence)를 기반으로 한 작은 그래프가 구축됩니다.
더 이상 수동 정리가 필요하지 않습니다. MaintenanceAgent가 정해진 일정에 따라 실행되어, 설정 가능한 TTL(Time-To-Live, 기본값 30일)보다 오래된 오래된 청크(stale chunks)를 제거하고 인덱스를 재구축합니다. 이렇게 정제된 릴리스를 통해 $AGENT_HOME/data가 프로비저닝(provision)해야 할 유일한 런타임 디렉토리가 됩니다.
휴대 가능한 경로 및 초기화 (Portable Paths and Initialization)
절대 경로에서 환경 변수 기반 경로로의 전환은 컨테이너 배포를 단순화합니다. 수집기 상태(collector state), 모델 캐시(model cache), 데이터베이스 WAL(database wal)을 포함한 모든 내부 경로는 $AGENT_HOME에서 파생됩니다. 간단한 초기화 예시는 다음과 같습니다:
from km_admin import KnowledgeManager
km = KnowledgeManager(
...
런타임 시, base_path는 환경 변수로 확장됩니다. 설정되지 않은 경우, 매니저는 ./local_data를 기본값으로 사용합니다. 이 변경 사항은 또한 버전별 설정 파일을 제거합니다. 모든 설정은 생성자 인자(constructor arguments) 또는 dotenv 재정의(overrides)를 통해 전달됩니다.
이것이 중요한 이유 (Why This Matters)
하드코딩된 홈 디렉토리는 컨테이너, CI 러너(CI runners), 또는 팀 간에 설정을 공유할 때 문제를 일으킵니다. $AGENT_HOME은 XDG_CONFIG_HOME 패턴과 일치하며, 애플리케이션 관점에서 시스템을 상태 비저장(stateless) 상태로 유지합니다. 여러 에이전트를 오케스트레이션(orchestrating)하는 개발자에게 이는 하나의 환경 변수가 모든 스토리지를 제어함을 의미합니다.
수집 파이프라인(collection pipelines)은 이제 메모리 저장소와 독립적입니다. 데이터베이스가 실행 중이지 않아도 collect를 실행할 수 있으며, 내부 버퍼는 JSONL 형식으로 디스크에 기록됩니다. MemoryManager는 나중에 이러한 버퍼를 오프라인으로 가져옵니다(ingests). 이러한 디커플링(decoupling)은 리소스가 제한된 환경을 위해 의도된 설계입니다.
v0.0.2의 “S”를 살펴보기
릴리스 노트(release notes)에 남겨진 미완성된 “S”는 다음 마일스톤인 요약(summarization)을 암시합니다. 현재의 KnowledgeChunk 스키마(schema)에는 이미 summary 필드가 포함되어 있지만, 파이프라인(pipeline)이 아직 연결되지는 않았습니다. v0.0.3에서는 중복 제거(dedup)를 거친 수집된 청크(chunks)에 대해 로컬 seq2seq 모델(예: bart-large-cnn)을 연결할 계획입니다. 그러면 메모리 저장소(memory store)가 청크에 요약을 태깅(tagging)하게 되어, 전체 텍스트를 로드하지 않고도 빠르게 브라우징(browsing)할 수 있게 됩니다.
결론 (Conclusion)
v0.0.2는 기반을 다지는 릴리스(foundation release)입니다. 휴대 가능한 경로(portable path) 정리 작업을 통해 설정 시간을 거의 제로(zero)에 가깝게 줄였으며, 모듈형 수집기(modular collectors)를 통해 새로운 소스(sources)를 추가하는 과정이 간편해졌습니다. 이전 버전에서 업그레이드하는 개발자는 $AGENT_HOME을 설정하고 코드 내의 기존 personal_path 재정의(overrides)를 이름을 변경해야 합니다. 그 외의 모든 것은 자동으로 마이그레이션(migrate)됩니다. 핵심 루프(core loop: 수집(collect) → 임베딩(embed) → 저장(store) → 검색(retrieve))는 안정적이며, 지난 패치에서 이루어진 메모리 관리(memory management) 수정 사항은 청크의 동시 삽입(concurrent chunk insertion)과 같은 예외 케이스(edge cases)를 처리합니다. 현재는 깔끔한 인제스션(ingestion)에 중점을 두고 있으며, 실시간 요약(real-time summarization) 및 소스 간 중복 제거(cross-source dedup)는 다음 마이너 버전(minor version)에서 시작됩니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기