{"id":49681474,"url":"https://github.com/ontos-ai/knowhere","last_synced_at":"2026-05-15T06:14:33.562Z","repository":{"id":355980813,"uuid":"1225188401","full_name":"Ontos-AI/knowhere","owner":"Ontos-AI","description":"Knowhere automates the complex pipeline of extracting, parsing, and transforming messy documents into structured, high-quality data optimized for AI Agents, Agentic RAG, and traditional vector-based RAG workflows.","archived":false,"fork":false,"pushed_at":"2026-05-06T04:51:25.000Z","size":122753,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-06T06:28:28.020Z","etag":null,"topics":["agent","ai-agents","chromadb","claude","claude-code","cursor","elasticsearch","gemini","gpt","langchain","milvus","qdrant","rag","rag-pipeline","skills"],"latest_commit_sha":null,"homepage":"https://knowhereto.ai","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ontos-AI.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-30T03:13:10.000Z","updated_at":"2026-05-06T04:47:20.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Ontos-AI/knowhere","commit_stats":null,"previous_names":["ontos-ai/knowhere"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/Ontos-AI/knowhere","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ontos-AI%2Fknowhere","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ontos-AI%2Fknowhere/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ontos-AI%2Fknowhere/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ontos-AI%2Fknowhere/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ontos-AI","download_url":"https://codeload.github.com/Ontos-AI/knowhere/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ontos-AI%2Fknowhere/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32726691,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-07T02:14:30.463Z","status":"ssl_error","status_checked_at":"2026-05-07T02:14:29.405Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent","ai-agents","chromadb","claude","claude-code","cursor","elasticsearch","gemini","gpt","langchain","milvus","qdrant","rag","rag-pipeline","skills"],"created_at":"2026-05-07T07:05:48.219Z","updated_at":"2026-05-15T06:14:33.540Z","avatar_url":"https://github.com/Ontos-AI.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg width=\"1000\" height=\"233\" alt=\"20260506-102713\" src=\"https://github.com/user-attachments/assets/896e64d2-e50e-4158-b71c-bc69e11c7c65\" /\u003e\n\n\u003ch1 align=\"center\"\u003eBuild AI Agent Memory from Real-World Documents\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.python.org/downloads/\"\u003e\n    \u003cimg alt=\"Python Version\" src=\"https://img.shields.io/badge/Python-%3E%3D%203.11-3776AB.svg?style=for-the-badge\u0026logo=python\u0026logoColor=white\u0026labelColor=000000\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/Ontos-AI/knowhere/stargazers\"\u003e\n    \u003cimg alt=\"GitHub stars\" src=\"https://img.shields.io/github/stars/ontos-ai/knowhere?style=for-the-badge\u0026logo=github\u0026labelColor=000000\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/Ontos-AI/knowhere/actions\"\u003e\n    \u003cimg alt=\"Build Status\" src=\"https://img.shields.io/github/actions/workflow/status/Ontos-AI/knowhere/pr-ci.yml?style=for-the-badge\u0026labelColor=000000\"\u003e\n  \u003c/a\u003e\n  \u003cbr\u003e\n  \u003ca href=\"https://github.com/Ontos-AI/knowhere/discussions\"\u003e\n    \u003cimg alt=\"Join the community on GitHub\" src=\"https://img.shields.io/badge/Join%20the%20community-blueviolet.svg?style=for-the-badge\u0026logo=GitHub\u0026labelColor=000000\u0026logoWidth=20\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://ghcr.io/ontos-ai/knowhere\"\u003e\n    \u003cimg alt=\"Container Images\" src=\"https://img.shields.io/badge/CONTAINER%20IMAGES-2496ED.svg?style=for-the-badge\u0026logo=docker\u0026logoColor=white\u0026labelColor=000000\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/Ontos-AI/knowhere/blob/main/LICENSE\"\u003e\n    \u003cimg alt=\"License: Apache 2.0\" src=\"https://img.shields.io/badge/APACHE%202.0-D97706.svg?style=for-the-badge\u0026label=LICENSE\u0026labelColor=000000\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  🔗 \u003ca href=\"https://knowhereto.ai\"\u003eWebsite\u003c/a\u003e |\n  📄 \u003ca href=\"https://docs.knowhereto.ai/\"\u003eDocs\u003c/a\u003e |\n  🏠 \u003ca href=\"https://github.com/Ontos-AI/knowhere-self-hosted\"\u003eSelf-Host\u003c/a\u003e |\n  🖥️ \u003ca href=\"https://github.com/Ontos-AI/knowhere-dashboard\"\u003eDashboard\u003c/a\u003e\n\u003c/p\u003e\n\n## What We Are\n\n**We're not developing the next MinerU, instead, we're building document memory infrastructure that agents can effectively consume.**\n\nKnowhere turns unstructured documents into persistent, navigable memory for AI agents. It handles parsing, hierarchy extraction, multi-modal structuring, and graph construction, giving your agents structured, high-quality context for *Agentic RAG*, *traditional RAG*, or any LLM workflow.\n\n\u003e [!TIP]\n\u003e Knowhere stands on the shoulders of giants like MinerU and Pymupdf. We take their output, optimize it, and then build **hierarchical structure** and **multi-modal cross-document graphs** on top. The result is a persistent, citable memory layer purpose-built for agent consumption.\n\n\u003e [!NOTE]\n\u003e **Get started in seconds with Knowhere Cloud.**\n\u003e Avoid the complexity of self-deployment. Use our managed API at [knowhereto.ai](https://knowhereto.ai) and enjoy **$5 in free credits** upon registration.\n\n## 📢 News\n\n- **May 7, 2026**: 🚀 **Knowhere is now Open Source!** We have open-sourced our entire stack for document ingestion, parsing, and agentic RAG. You can now self-host the full platform using [knowhere-self-hosted](https://github.com/Ontos-AI/knowhere-self-hosted). Check out our [Contribution Guide](CONTRIBUTING.md) to get involved!\n- **Apr 30, 2026**: 📦 **Version [2026.04.30.1](https://github.com/Ontos-AI/knowhere/releases/tag/2026.04.30.1) has been released.** This update includes several stability improvements and initial support for the agentic RAG layer. See the [full changelog](https://github.com/Ontos-AI/knowhere/commits/2026.04.30.1) for details.\n\n## How it Works\n\nKnowhere turns raw documents into a structured memory store that AI agents can navigate and cite. The process follows two steps:\n\n### Step 1: Parse and Build Memory\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Step 1: Parse and Build Memory\" src=\"docs/assets/step-1-parse-build-memory.png\" width=\"900\"\u003e\n\u003c/p\u003e\n\nParsing, chunking, hierarchy extraction, and graph construction are unified into one outcome: a navigable memory layer for AI agents.\n\n- **Parse**: Route PDFs, Office files, images, tables, Markdown, and text to specialized parsers.\n- **Structure**: Preserve headings, section paths, multi-modal assets, and chunk relationships.\n- **Build Memory**: Store chunks, navigation trees, summaries, and graph links as agent-ready context.\n\n### Step 2: Agentic Retrieval\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Step 2: Agentic Retrieval\" src=\"docs/assets/step-2-agentic-retrieval.png\" width=\"900\"\u003e\n\u003c/p\u003e\n\nAgents retrieve by navigating memory instead of depending on a single flat vector lookup.\n\n- **Discover**: Fuse keyword, path, content, and semantic signals for broad first-pass coverage.\n- **Navigate**: Walk section trees and graph links to drill into the most relevant document regions.\n- **Cite Evidence**: Return traceable results with source document, section, chunk, and linked image or table assets.\n\n## Performance Benchmark\n\nKnowhere enhances the accuracy of AI agents when performing tasks (e.g., searching, modifying, and answering) in real-world data. Compared to providing raw documents directly to agents or .md/.json files produced by other parsers, Knowhere achieves higher success rates with fewer resources.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Benchmark Performance: Agent + Knowhere vs Others\" src=\"docs/assets/benchmark.png\" width=\"900\"\u003e\n\u003c/p\u003e\n\n### Key Advantages\n\n- **Superior Accuracy**: Knowhere drastically improves both **First-time Accuracy** (+36% over raw docs) and **Recall** (+10%), ensuring agents find the right evidence faster.\n- **Enhanced Reliability**: With user feedback, agents using Knowhere hit **79% accuracy**—a significant jump compared to the ~53% ceiling of raw documents.\n- **Higher Efficiency**: Agents require **fewer loops**, consume **fewer tokens**, and spend **less time** searching. By navigating a structured memory graph instead of reading monolithic texts, the token overhead drops while precision increases.\n\n*(Data generated from internal evaluation across identical agentic RAG tasks.)*\n\n\u003e [!NOTE]\n\u003e **📊 Benchmarks are actively expanding.** The comparison above currently covers MinerU as the baseline parser. We are continuously adding more parsing tools and retrieval baselines — stay tuned for updated results.\n\n## Ecosystem\n\n| Repository | Description |\n|---|---|\n| [knowhere](https://github.com/Ontos-AI/knowhere) | **This repo.** Backend API and worker — document ingestion, parsing, graph construction, and retrieval. |\n| 🖥️ [knowhere-dashboard](https://github.com/Ontos-AI/knowhere-dashboard) | The web UI. Connects to the API for the full product experience. |\n| 🐳 [knowhere-self-hosted](https://github.com/Ontos-AI/knowhere-self-hosted) | Docker Compose stack for self-hosted deployments. Packages the API, worker, and dashboard together. |\n| 🐍 [knowhere-python-sdk](https://github.com/Ontos-AI/knowhere-python-sdk) | Official Python SDK for the Knowhere Cloud API. |\n| 🦕 [knowhere-node-sdk](https://github.com/Ontos-AI/knowhere-node-sdk) | Official Node.js SDK for the Knowhere Cloud API. |\n\n## Features\n\n- **Multi-modal Parsing**: High-fidelity extraction from PDF, Office, and images, preserving headings, tables, and hierarchical paths.\n- **Lightweight Memory Graph**: Context-aware organization that links documents and chunks for better relationship understanding.\n- **Agentic RAG**: A hybrid retrieval engine combining traditional search (RRF) with autonomous agent navigation.\n- **Evidence-based Citations**: Every result is backed by traceable source paths, ensuring reliability for AI Agent decision-making.\n\n## Frequently Asked Questions (FAQ)\n\n**Q: Is MinerU strictly required for Knowhere to work?**\nA: No. While MinerU is currently our default choice for parsing PDFs and PPT, because it performs the best in our experiments, any tool that can convert documents to Markdown works. Knowhere's real value lies in what happens *alongside and after* the initial conversion: memory-oriented parsing optimizations (fixing real-world parser deficiencies), reconstructing the hierarchical structure, normalizing multi-modal assets, and building the cross-document navigation graph.\n\n**Q: What are the LLM / VLM dependencies?**\nA: Knowhere requires standard language models to structure the document memory. By default, it uses DeepSeek (`deepseek-chat`) for text/table summarization and hierarchy generation, and Qwen-VL (`qwen3.5-flash`) for image OCR and visual descriptions. However, it is entirely model-agnostic—you can easily configure it to use OpenAI, DashScope (Ali), Zhipu (GLM), or Volcengine (ARK) via environment variables.\n\n**Q: How does Agentic Retrieval differ from traditional RAG?**\nA: Traditional RAG relies on flat vector similarity, which often retrieves isolated, out-of-context text snippets. Knowhere's Agentic Retrieval instead uses a multi-agent workflow to actively navigate the hierarchical section tree and cross-document graph. Agents read the document structure like a human would, drilling down into relevant sections to find precise, well-contextualized evidence.\n\n**Q: Can it handle multi-modal data like images and tables?**\nA: Yes. Knowhere extracts inline images and tables, passes them through Vision-Language Models (VLMs) for summarization and feature extraction, and explicitly links them back to their original text chunks. This ensures that agents can retrieve and cite multi-modal assets accurately during inference.\n\n## Supported Formats\n\n**✅ Supported**\n\n- [x] `.pdf` `.docx` `.pptx` `.xlsx` `.csv`\n- [x] `.jpg` `.png`\n- [x] `.md` `.txt` `.json`\n\n**⏳ Coming Soon**\n\n- [ ] `.epub` `.html` `.xml`\n- [ ] `.mp4` `.mp3`\n- [ ] `.skills.md`\n\nWant to see a new format supported? Adding a parser is a great first contribution. Check out [CONTRIBUTING.md](CONTRIBUTING.md) to get started.\n\n## Prerequisites\n\n- Python 3.11+\n- `uv`\n- Docker with `docker compose`\n\n## Quick Start\n\n1. Sync the workspace dependencies:\n\n```bash\nuv sync --all-packages\n```\n\n2. Copy the environment examples:\n\n```bash\ncp apps/api/.env.example apps/api/.env\ncp apps/worker/.env.example apps/worker/.env\n```\n\n3. Update the copied `.env` files with the values you need for local work:\n\n- database and Redis connection settings\n- S3-compatible storage credentials\n- at least one LLM provider key: `DS_KEY`, `ALI_API_KEYS`, `GPT_API_KEY`, or `GLM_API_KEY`\n- `MINERU_API_KEYS` if you need PDF parsing\n- a vision-capable model provider if you need image summaries, OCR, atlas classification, or image-aware retrieval\n- any optional billing or webhook providers you want to enable\n\nMost parser and retrieval tuning values have code defaults. Start with the\nrequired external services first, then override model names, provider URLs,\nbudgets, or concurrency limits only when your deployment needs different\nbehavior. See [docs/external-services.md](docs/external-services.md) for the\nfull dependency matrix.\n\n4. Start the local infrastructure stack:\n\n```bash\n./deploy/local-dev/start-dev.sh\n```\n\n5. Start the API and worker in separate terminals:\n\n```bash\ncd apps/api \u0026\u0026 uv run main.py\ncd apps/worker \u0026\u0026 uv run worker.py\n```\n\nThe API runs migrations during startup.\n\nFor API-only development without the dashboard, create an API-only user/key\nafter the API service starts:\n\n```bash\ncd apps/api\nuv run scripts/init_user.py --email you@example.com\n```\n\nIf you plan to use the dashboard, register through the dashboard instead of\nusing `scripts/init_user.py`.\n\nThe API is now running at `http://localhost:5005`. If you want the full product experience with a UI, run the [knowhere-dashboard](https://github.com/Ontos-AI/knowhere-dashboard) alongside it — it connects to this API out of the box.\n\n## Quality Checks\n\nRun lint checks from the repository root:\n\n```bash\nmake lint\n```\n\nApply safe Ruff fixes:\n\n```bash\nmake lint-fix\n```\n\nRun type checks across the API, worker, and shared source code:\n\n```bash\nmake typecheck\n```\n\nRun both lint and type checks:\n\n```bash\nmake check\n```\n\n## Local Endpoints\n\n- API: `http://localhost:5005`\n- OpenAPI docs: `http://localhost:5005/docs`\n- LocalStack: `http://localhost:4566`\n- PostgreSQL: `localhost:5432`\n- Redis: `localhost:6379`\n\n## Additional Guides\n\n- External dependency guide:\n  [docs/external-services.md](docs/external-services.md)\n\n## Citation\n\nIf you use Knowhere in your research, please cite it as:\n\n```bibtex\n@software{knowhere2026,\n  author       = {Ontos AI},\n  title        = {Knowhere: Build AI Agent Memory from Real-World Documents},\n  year         = {2026},\n  publisher    = {GitHub},\n  url          = {https://github.com/Ontos-AI/knowhere},\n  version      = {2026.04.30.1},\n  license      = {Apache-2.0}\n}\n```\n\n## Communication\n\n- [GitHub Discussions](https://github.com/Ontos-AI/knowhere/discussions) for questions, ideas, and general conversation.\n- [GitHub Issues](https://github.com/Ontos-AI/knowhere/issues) for bug reports and feature requests.\n\n## Contribution\n\nAny contributions to Knowhere are more than welcome!\n\nIf you are new to the project, check out the [good first issues](https://github.com/Ontos-AI/knowhere/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22). They are well-defined, relatively simple, and a great way to get familiar with the codebase and the contribution workflow.\n\nFor general guidelines on branching, commit conventions, and the review process, take a look at [CONTRIBUTING.md](CONTRIBUTING.md).\n\nOther useful references:\n\n- [SECURITY.md](SECURITY.md) — how to report vulnerabilities responsibly.\n- [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) — community behavior expectations.\n- [LICENSE](LICENSE) and [NOTICE](NOTICE) — Apache 2.0.\n\n## 👋 We're Hiring!\n\nWe're building the knowledge layer for the Agent era. If that sounds like work you want to do, reach out — decode the address below and drop us a line:\n\n```bash\necho 'dGVhbUBrbm93aGVyZXRvLmFp' | base64 --decode\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fontos-ai%2Fknowhere","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fontos-ai%2Fknowhere","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fontos-ai%2Fknowhere/lists"}