Skip to main content

Multi-modal knowledge library with vector and full-text search for text, code, images, and PDFs

Project description

Librarian

A personal knowledge library for AI agents, built on Arcade for the Model Context Protocol (MCP).

Overview

Librarian provides AI agents with persistent storage for text, documents, and knowledge. Agents can store information and retrieve it later through semantic and keyword search, maintaining context across conversations.

graph LR
    A[Agent Stores Info] --> B[Parser]
    B --> C[Chunker]
    C --> D[Embedder]
    D --> E[(SQLite + vec)]
    F[Agent Queries] --> G[Hybrid Search]
    E --> G
    G --> H[Relevant Context]

Features

  • Persistent knowledge storage for AI agents
  • SQLite storage with sqlite-vec for vector search
  • Full-text search using FTS5 with BM25 ranking
  • Hybrid search combining semantic and keyword matching
  • Max Marginal Relevance (MMR) for diverse results
  • Configurable embedding models (local or OpenAI-compatible API)
  • Header-aware text chunking with overlap
  • Time-bounded search filters
  • CLI and MCP server interfaces

Multi-Modal Support

Librarian supports indexing and searching across multiple file types:

Asset Type File Extensions Features
Text .md, .txt Frontmatter extraction, header-aware chunking
Code .py, .js, .ts, .go, .rs, .java, .cpp, and more Symbol extraction (classes, functions, methods)
PDF .pdf Page-based text extraction
Image .png, .jpg, .jpeg, .gif, .webp Metadata and EXIF extraction, optional OCR

Installation

git clone https://github.com/ArcadeAI/librarian.git
cd librarian
./setup.sh

Or install manually:

uv pip install -e ".[dev]"

Optional multi-modal dependencies:

uv pip install -e ".[pdf]"      # PDF support (pypdf)
uv pip install -e ".[vision]"   # Image support (Pillow)
uv pip install -e ".[all]"      # All optional features

CLI Usage

# Add files to the library
libr add ~/notes

# Search the library
libr search "machine learning concepts"

# List sources
libr list

# View library statistics
libr index

# Rebuild the index
libr index build

MCP Server

Start the server for AI assistant integration:

# stdio transport (Claude Desktop, CLI)
libr serve stdio

# HTTP transport (Cursor, VS Code)
libr serve http --port 8000

See the Arcade MCP documentation for integration details.

Available Tools

Core Tools (always enabled):

Tool Description
Librarian_SearchLibrary Unified search with mode selection (hybrid/semantic/keyword), asset type filtering, and timeframe support
Librarian_AddToLibrary Store new content in the library
Librarian_UpdateLibraryDoc Update existing content
Librarian_ReadFromLibrary Read full document content
Librarian_RemoveFromLibrary Remove content from the library
Librarian_ListLibraryContents List all stored content
Librarian_IndexDirectoryToLibrary Bulk import files from a directory

Optional Tools (enable with LIBRARIAN_ENABLE_OPTIONAL_TOOLS=true):

Tool Description
Librarian_GetLibrarySources List sources with document/chunk counts
Librarian_GetLibraryStats Overall library statistics
Librarian_GetLibraryStructure Filesystem structure of library sources
Librarian_GetLibrarySections Simplified view of available storage locations
Librarian_SuggestLibraryLocation AI-powered suggestions for where to store content

Configuration

Set via environment variables:

Variable Default Description
DOCUMENTS_PATH ./documents Root directory for files
DATABASE_PATH ~/.librarian/index.db SQLite database location
EMBEDDING_PROVIDER openai local or openai
EMBEDDING_MODEL all-MiniLM-L6-v2 Local model name
OPENAI_API_BASE http://localhost:7171/v1 OpenAI-compatible API URL
OPENAI_EMBEDDING_MODEL qwen3-embedding-06b API model name
CHUNK_SIZE 512 Max characters per chunk
CHUNK_OVERLAP 50 Overlap between chunks
SEARCH_LIMIT 10 Default results limit
MMR_LAMBDA 0.5 MMR diversity (0=diverse, 1=relevant)
HYBRID_ALPHA 0.7 Vector vs keyword weight (1=vector only)

Project Structure

librarian/
├── cli.py           # Command-line interface
├── server.py        # MCP server and tool definitions
├── config.py        # Configuration management
├── indexing.py      # Document indexing service
├── types.py         # Shared type definitions
├── storage/
│   ├── database.py  # SQLite operations
│   ├── vector_store.py  # sqlite-vec search
│   └── fts_store.py     # FTS5 search
├── processing/
│   ├── embed/       # Embedding providers
│   ├── parsers/     # Document parsers (md, code, pdf, image)
│   └── transform/   # Text chunking
├── retrieval/
│   └── search.py    # Hybrid search + MMR
└── utils/
    └── timeframe.py # Time filter utilities

Development

make install    # Install dependencies
make test       # Run tests
make lint       # Run linter
make format     # Format code
make typecheck  # Type checking
make check      # All checks
make evals      # Run evaluations

Resources

License

MIT License - see LICENSE for details.

Contact

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agent_library-0.12.0.tar.gz (147.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agent_library-0.12.0-py3-none-any.whl (103.0 kB view details)

Uploaded Python 3

File details

Details for the file agent_library-0.12.0.tar.gz.

File metadata

  • Download URL: agent_library-0.12.0.tar.gz
  • Upload date:
  • Size: 147.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for agent_library-0.12.0.tar.gz
Algorithm Hash digest
SHA256 d17dba1ab58e03369f26ba8e4c0b201db41f4cabe57625b43555bc4a2a34b479
MD5 299439c221f6c839ff1463276f3ed963
BLAKE2b-256 db05000b3dc3d6645874ddd06a2247be0072076d6a30f889342ba70b6f99fbff

See more details on using hashes here.

Provenance

The following attestation bundles were made for agent_library-0.12.0.tar.gz:

Publisher: release.yml on arcadeai-labs/librarian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file agent_library-0.12.0-py3-none-any.whl.

File metadata

  • Download URL: agent_library-0.12.0-py3-none-any.whl
  • Upload date:
  • Size: 103.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for agent_library-0.12.0-py3-none-any.whl
Algorithm Hash digest
SHA256 aa9322651be435e9015b9b043bcd207eee8bd26b586a127452f8e97afb3d4626
MD5 024e39a156c72d7be19a11336a19b526
BLAKE2b-256 f9a082c4c9f8742ff332588dcd6727ddf085e796220be6d2da9ee21508ec9366

See more details on using hashes here.

Provenance

The following attestation bundles were made for agent_library-0.12.0-py3-none-any.whl:

Publisher: release.yml on arcadeai-labs/librarian

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page