Knowhere
github.com/ontos-ai/knowhere- Category
- Developer Tools
- Rank
- No. 920Tools index
- Pricing
- Open Source
- Type
- TOOL
- Use case
- Data, Retrieval & Knowledge · Data Processing
- GitHub
- 3.9k stars
- Latest release
- v1.2.40
- Date
About
Knowhere is a document parsing and retrieval system that converts messy, unstructured files into persistent, navigable memory for AI agents, using hierarchy reconstruction, multi-modal structuring, and graph construction instead of flat chunking. It targets local and offline document collections where standard chunking discards document structure that agents need for accurate retrieval.
What it does
Knowhere is the backend server behind a hosted service of the same name: you upload PDFs, slide decks, spreadsheets and other files, and it turns each one into a tree of sections with linked images, tables and page citations. PDFs and PowerPoint files go through a vision model that reads each page whole; other formats keep their extracted text. An AI agent then queries the result through an HTTP interface or an MCP (Model Context Protocol) endpoint, choosing for itself whether to browse an outline, run exact or fuzzy search, or read a full section.
Why it's ranked here
The case rests on the whole stack being open under Apache 2.0, not just a client. The server, the background worker and a self-hosting Docker Compose bundle are all public, and the agent endpoint ships in the same process as the HTTP API. The engineering notes show unusual care about correctness: an index is published in the same database transaction as the document, and concurrent writes must converge without losing a committed document. The headline claim, 36 percent better first-try accuracy, comes from the vendor's own internal evaluation with no published method in the fetched text.
What's good
Retrieval scoping is precise and documented: an empty include list returns nothing rather than falling back to everything, and IDs from another user or namespace grant no access. A partially built search index is never exposed; failure rolls the whole publication back and retries. Worker timing is checked at startup, so a misconfigured task limit that would cause stale jobs refuses to boot. Telemetry rules spell out what may leave the machine, and filenames, prompts, emails, IPs and document content are explicitly excluded.
Tradeoffs
Self-hosting is a real deployment, not a library import: it needs Postgres, Redis, a Celery worker queue and a vision-capable model provider. Anonymous usage telemetry to the vendor is on by default and must be switched off with an environment variable. Rate limit rules load only at startup, so changing them means restarting the service. The workspace manifest declares version 0.1.0. The benchmark figures are self-reported internal numbers. The README leads with the paid cloud service and its free credits.
How to use it well
Fit it where an agent has to answer questions over a large set of complex PDFs or slide decks and cite the page it used. Run it with the self-hosted Compose bundle, set the telemetry flag off if you need nothing leaving the network, and point an MCP client at the agent endpoint. Use the include and exclude document lists to fence each query. It is not a lightweight converter for one-off file conversion, and it does not replace a general vector database.
Technical notes+
apps/api/main.py builds a FastAPI app with root_path /api, mounts a FastMCP streamable HTTP route at /mcp from create_retrieval_mcp_server, loads rate-limit rules from the database in the lifespan hook, and logs an error if the default harness is cursor_sdk without CURSOR_API_KEY. pyproject.toml is a uv workspace of apps/api, apps/worker and packages/shared-python, requires Python 3.11, with ruff and pyright in basic mode. packages/shared-python/shared/core/config/app.py merges pydantic settings classes and enforces TASK_TIME_LIMIT_SECONDS < BROKER_VISIBILITY_TIMEOUT_SECONDS < JOB_PROCESSING_EXPIRE_SECONDS. docs/adr/0006-atomically-publish-retrieval-serving-index.md writes the completeness marker last. docs/adr/0004-anonymous-self-hosted-telemetry.md sets TELEMETRY_ENABLED=false as the opt-out.
Observed
- License
- Apache 2.0 (LICENSE)
- Language
- Python, requires 3.11 or newer (pyproject.toml)
- Packaging
- uv workspace with API, worker and shared packages; container images on GHCR
- Interfaces
- HTTP API (FastAPI) plus MCP streamable HTTP endpoint at /mcp (apps/api/main.py)
- Infrastructure
- Postgres, Redis and Celery workers required (CONTEXT.md, packages/shared-python/shared/core/config/app.py)
- Telemetry
- Anonymous PostHog telemetry on by default, opt out with TELEMETRY_ENABLED=false
- Declared version
- 0.1.0 in pyproject.toml
- Model dependency
- External LLM / vision model provider; README suggests deepseek-flash, model-agnostic
Read from README.md, pyproject.toml, LICENSE, CONTEXT.md, apps/api/main.py, docs/adr/README.md, docs/retrieval-document-scope.md, docs/adr/0004-anonymous-self-hosted-telemetry.md, docs/adr/0006-atomically-publish-retrieval-serving-index.md, deploy/README.md, packages/shared-python/shared/core/config/app.py, SECURITY.md.
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.