semantic-memory — PGlite と pgvector を使ったローカル意味記憶
概要
semantic-memory は「外部のベクターデータベースを立てずに、ローカルで意味検索(semantic search)を実現する」ことを目的とした軽量ライブラリです。PGlite(Postgres を WASM にしたもの)をプロセス内で動かし、pgvector の HNSW インデックスを利用して高速な近傍探索を行います。Bun 上で動作する TypeScript 実装で、コレクション単位の整理や小規模エージェント向けの低コスト運用を想定しています。
リポジトリの統計情報
- スター数: 9
- フォーク数: 0
- ウォッチャー数: 9
- コミット数: 7
- ファイル数: 6
- メインの言語: TypeScript
主な特徴
- PGlite を使った「ゼロインフラ」構成 — Postgres をプロセス内で動作させる
- pgvector の HNSW インデックスを活用したリアルなベクトル検索
- コレクション単位でのデータ分離(用途別メモリ管理)
- Bun / TypeScript 環境に最適化、軽量で組み込みやすい
技術的なポイント
semantic-memory の肝は「PGlite + pgvector」によるローカル実行モデルです。PGlite は Postgres の機能を WASM にコンパイルしてプロセス内で動かせるため、外部DBを立ち上げる必要がなく、ローカル開発やエッジ環境での運用が容易です。pgvector を組み合わせることで、単純なコサイン類似度ループではなく、HNSW(Hierarchical Navigable Small World)といった近似最近傍探索アルゴリズムを用いた実用的なベクトル検索が可能になります。
TypeScript 実装は Bun ランタイムを想定しており、依存関係やバイナリを最小化した設計です。データは「コレクション」という概念で分離できるため、コードベースやドメインごとに意味記憶を分けられます。これによりエージェントが文脈ごとの履歴や知識を持つといった運用がしやすくなります。
制約としてはスケール面(巨大データセットや分散クエリ)や永続性、耐障害性の点で外部マネージドベクタDBに劣る点です。PGlite のストレージやメモリ制限、WASM 実行環境の特性を踏まえた利用が必要です。実運用では埋め込み生成(OpenAI など外部サービス)やデータのバッチ投入、インデックス再構築の戦略を設計することが望ましいでしょう。総じて、低コストで手軽に意味検索を試したい開発者や、ローカル環境での AI エージェント実験に向くアプローチです。(約700字相当)
プロジェクトの構成
主要なファイルとディレクトリ:
- .gitignore: file
- README.md: file
- bun.lock: file
- package.json: file
- src: dir
…他 1 ファイル
まとめ
外部DBなしで実用的なベクトル検索を試せる、軽量で実用的なローカル意味記憶ライブラリ。
リポジトリ情報:
- 名前: semantic-memory
- 説明: 🧠 Local semantic memory with PGlite + pgvector - budget Qdrant for AI agents
- スター数: 9
- 言語: TypeScript
- URL: https://github.com/joelhooks/semantic-memory
- オーナー: joelhooks
- アバター: https://avatars.githubusercontent.com/u/86834?v=4
READMEの抜粋:
semantic-memory
Local semantic memory with PGlite + pgvector. Budget Qdrant that runs anywhere Bun runs.
Why
You want semantic search for your AI agents but don’t want to run a vector database server. This gives you:
- Zero infrastructure - PGlite is Postgres compiled to WASM, runs in-process
- Real vector search - pgvector with HNSW indexes, not some janky cosine similarity loop
- Collection-based organization - Different collections for different contexts (codebase, resear…