vector-graph-rag 0.2.1__tar.gz → 0.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/.env.example +8 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/PKG-INFO +88 -13
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/README.md +68 -11
- {vector_graph_rag-0.2.1/docs → vector_graph_rag-0.3.0/docs/architecture}/design-philosophy.md +3 -1
- {vector_graph_rag-0.2.1/docs → vector_graph_rag-0.3.0/docs/architecture}/how-it-works.md +2 -0
- vector_graph_rag-0.3.0/docs/assets/evaluation/api-cost-latency.png +0 -0
- vector_graph_rag-0.3.0/docs/assets/evaluation/api-cost-latency.svg +537 -0
- vector_graph_rag-0.3.0/docs/assets/evaluation/quality-latency.png +0 -0
- vector_graph_rag-0.3.0/docs/assets/evaluation/quality-latency.svg +390 -0
- vector_graph_rag-0.3.0/docs/assets/evaluation/retrieval-comparison.png +0 -0
- vector_graph_rag-0.3.0/docs/assets/evaluation/retrieval-comparison.svg +689 -0
- vector_graph_rag-0.3.0/docs/evaluation.md +121 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/docs/faq.md +1 -1
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/docs/getting-started.md +54 -8
- vector_graph_rag-0.3.0/docs/guides/document-import.md +112 -0
- vector_graph_rag-0.3.0/docs/guides/embedding-providers.md +79 -0
- vector_graph_rag-0.3.0/docs/guides/incremental-updates.md +245 -0
- vector_graph_rag-0.3.0/docs/guides/index.md +18 -0
- vector_graph_rag-0.3.0/docs/guides/multi-tenancy.md +94 -0
- vector_graph_rag-0.3.0/docs/guides/observability.md +174 -0
- vector_graph_rag-0.3.0/docs/guides/reranking.md +107 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/docs/index.md +22 -7
- {vector_graph_rag-0.2.1/docs → vector_graph_rag-0.3.0/docs/reference}/python-api.md +147 -3
- {vector_graph_rag-0.2.1/docs → vector_graph_rag-0.3.0/docs/reference}/rest-api.md +1 -1
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/evaluation/README.md +4 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/evaluation/evaluate.py +59 -7
- vector_graph_rag-0.3.0/evaluation/jev/README.md +21 -0
- vector_graph_rag-0.3.0/evaluation/jev/api-cost-latency-data.json +77 -0
- vector_graph_rag-0.3.0/evaluation/jev/api-cost-latency.md +42 -0
- vector_graph_rag-0.3.0/evaluation/jev/comparison-chart-data.json +126 -0
- vector_graph_rag-0.3.0/evaluation/jev/historical-500.md +99 -0
- vector_graph_rag-0.3.0/evaluation/jev/manifest.json +6009 -0
- vector_graph_rag-0.3.0/evaluation/jev/plot_api_comparison.py +184 -0
- vector_graph_rag-0.3.0/evaluation/jev/plot_retrieval.py +157 -0
- vector_graph_rag-0.3.0/evaluation/jev/results.json +4002 -0
- vector_graph_rag-0.3.0/evaluation/jev/summarize.py +86 -0
- vector_graph_rag-0.3.0/evaluation/jev/summary.json +226 -0
- vector_graph_rag-0.3.0/evaluation/jev/two-stage/README.md +82 -0
- vector_graph_rag-0.3.0/evaluation/jev/two-stage/manifest.json +10020 -0
- vector_graph_rag-0.3.0/evaluation/jev/two-stage/plot-data.json +62 -0
- vector_graph_rag-0.3.0/evaluation/jev/two-stage/plot.py +164 -0
- vector_graph_rag-0.3.0/evaluation/jev/two-stage/results.json.gz +0 -0
- vector_graph_rag-0.3.0/evaluation/jev/two-stage/summarize.py +38 -0
- vector_graph_rag-0.3.0/evaluation/jev/two-stage/summary.json +56 -0
- vector_graph_rag-0.3.0/evaluation/jev/two-stage/validation.json +18 -0
- vector_graph_rag-0.3.0/evaluation/jev/validation.json +14 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/mkdocs.yml +13 -5
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/pyproject.toml +25 -2
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/__init__.py +6 -2
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/api/app.py +44 -3
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/config.py +114 -3
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/graph/knowledge_graph.py +55 -23
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/graph/retriever.py +199 -139
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/llm/extractor.py +86 -51
- vector_graph_rag-0.3.0/src/vector_graph_rag/llm/jev.py +247 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/llm/reranker.py +72 -44
- vector_graph_rag-0.3.0/src/vector_graph_rag/loaders/__init__.py +217 -0
- vector_graph_rag-0.3.0/src/vector_graph_rag/loaders/converter.py +125 -0
- vector_graph_rag-0.3.0/src/vector_graph_rag/loaders/docling.py +150 -0
- vector_graph_rag-0.3.0/src/vector_graph_rag/loaders/mineru.py +284 -0
- vector_graph_rag-0.3.0/src/vector_graph_rag/loaders/url_fetcher.py +179 -0
- vector_graph_rag-0.3.0/src/vector_graph_rag/observability.py +134 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/rag.py +557 -372
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/storage/embeddings.py +30 -8
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/storage/milvus.py +413 -178
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/tests/conftest.py +17 -4
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/tests/test_api.py +71 -3
- vector_graph_rag-0.3.0/tests/test_api_settings.py +28 -0
- vector_graph_rag-0.3.0/tests/test_evaluation_manifest.py +82 -0
- vector_graph_rag-0.3.0/tests/test_jev_reranker.py +204 -0
- vector_graph_rag-0.3.0/tests/test_jev_two_stage.py +66 -0
- vector_graph_rag-0.3.0/tests/test_loaders.py +430 -0
- vector_graph_rag-0.3.0/tests/test_observability.py +254 -0
- vector_graph_rag-0.3.0/tests/test_rag_passage_order.py +29 -0
- vector_graph_rag-0.3.0/tests/test_task_models.py +149 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/uv.lock +2339 -14
- vector_graph_rag-0.2.1/docs/evaluation.md +0 -91
- vector_graph_rag-0.2.1/src/vector_graph_rag/loaders/__init__.py +0 -167
- vector_graph_rag-0.2.1/src/vector_graph_rag/loaders/converter.py +0 -99
- vector_graph_rag-0.2.1/src/vector_graph_rag/loaders/url_fetcher.py +0 -153
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/.dockerignore +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/.github/workflows/docs.yml +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/.github/workflows/release.yml +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/.gitignore +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/AGENTS.md +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/CLAUDE.md +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/Dockerfile +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/LICENSE +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/api/__init__.py +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/api/main.py +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/api/schemas.py +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/docs/assets/logo.png +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/docs/assets/logo.svg +0 -0
- {vector_graph_rag-0.2.1/docs → vector_graph_rag-0.3.0/docs/guides}/frontend.md +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/docs/stylesheets/custom.css +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/docs/use-cases.md +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/evaluation/data/2wikimultihopqa.json +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/evaluation/data/2wikimultihopqa_corpus.json +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/evaluation/data/hotpotqa.json +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/evaluation/data/hotpotqa_corpus.json +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/evaluation/data/musique.json +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/evaluation/data/musique_corpus.json +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/evaluation/data/ner_cache/2wikimultihopqa_queries.named_entity_output.tsv +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/evaluation/data/ner_cache/hotpotqa_queries.named_entity_output.tsv +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/evaluation/data/ner_cache/hotpotqa_train_queries.named_entity_output.tsv +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/evaluation/data/ner_cache/musique_queries.named_entity_output.tsv +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/evaluation/data/ner_cache/sample_queries.named_entity_output.tsv +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/evaluation/data/openie_2wikimultihopqa_results_ner_gpt-3.5-turbo-1106_6119.json +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/evaluation/data/openie_hotpotqa_results_ner_gpt-3.5-turbo-1106_9221.json +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/evaluation/data/openie_musique_results_ner_gpt-3.5-turbo-1106_11656.json +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/evaluation/data/openie_test_sample_results_ner_gpt-3.5-turbo-1106_20.json +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/evaluation/data/test_sample.json +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/evaluation/data/test_sample_corpus.json +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/.gitignore +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/README.md +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/eslint.config.js +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/index.html +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/package-lock.json +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/package.json +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/public/vite.svg +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/App.css +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/App.tsx +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/api/client.ts +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/api/queries.ts +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/assets/react.svg +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/components/graph/EntityNode.tsx +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/components/graph/GraphCanvas.tsx +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/components/graph/GraphLegend.tsx +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/components/graph/RelationEdge.tsx +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/components/graph/index.ts +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/components/import/CreateGraphDialog.tsx +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/components/import/FileUploader.tsx +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/components/import/GraphSelector.tsx +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/components/import/GraphStatsPreview.tsx +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/components/import/ImportDialog.tsx +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/components/import/ImportProgress.tsx +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/components/import/ImportSettings.tsx +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/components/import/UrlInput.tsx +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/components/panels/AnswerPanel.tsx +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/components/panels/NodeDetailPanel.tsx +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/components/panels/index.ts +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/components/search/SearchInput.tsx +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/components/search/index.ts +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/components/settings/SettingsDialog.tsx +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/components/timeline/ProcessTimeline.tsx +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/components/timeline/index.ts +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/components/ui/Header.tsx +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/components/ui/button.tsx +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/components/ui/dialog.tsx +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/components/ui/input.tsx +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/components/ui/label.tsx +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/components/ui/progress.tsx +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/components/ui/switch.tsx +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/components/ui/tabs.tsx +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/hooks/use-toast.ts +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/index.css +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/main.tsx +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/stores/datasetStore.ts +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/stores/graphStore.ts +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/stores/searchStore.ts +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/types/api.ts +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/utils/cn.ts +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/src/utils/graphLayout.ts +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/tsconfig.app.json +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/tsconfig.json +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/tsconfig.node.json +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/frontend/vite.config.ts +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/api/__init__.py +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/graph/__init__.py +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/graph/builder.py +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/graph/graph.py +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/llm/__init__.py +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/llm/cache.py +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/loaders/chunker.py +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/models.py +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/storage/__init__.py +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/storage/embedding_providers/__init__.py +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/storage/embedding_providers/google.py +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/storage/embedding_providers/huggingface.py +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/storage/embedding_providers/jina.py +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/storage/embedding_providers/local.py +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/storage/embedding_providers/mistral.py +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/storage/embedding_providers/ollama.py +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/storage/embedding_providers/onnx.py +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/storage/embedding_providers/openai.py +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/storage/embedding_providers/utils.py +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/src/vector_graph_rag/storage/embedding_providers/voyage.py +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/tests/__init__.py +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/tests/test_embedding_providers.py +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/tests/test_graph.py +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/tests/test_milvus_store.py +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/tests/test_rag_incremental.py +0 -0
- {vector_graph_rag-0.2.1 → vector_graph_rag-0.3.0}/tests/test_rag_metadata_filter.py +0 -0
|
@@ -99,3 +99,11 @@ MILVUS_URI=./vector_graph_rag.db
|
|
|
99
99
|
# VGRAG_ENTITY_COLLECTION=vgrag_entities
|
|
100
100
|
# VGRAG_RELATION_COLLECTION=vgrag_relations
|
|
101
101
|
# VGRAG_PASSAGE_COLLECTION=vgrag_passages
|
|
102
|
+
|
|
103
|
+
# Task-specific models override the shared VGRAG_LLM_MODEL.
|
|
104
|
+
# VGRAG_EXTRACTOR_MODEL=gpt-5-mini
|
|
105
|
+
# VGRAG_RERANKER_MODEL=jev
|
|
106
|
+
# VGRAG_ANSWER_MODEL=gpt-4o-mini
|
|
107
|
+
# TYPESAFE_API_KEY=your-key
|
|
108
|
+
|
|
109
|
+
# VGRAG_JEV_MAX_CONCURRENCY=3
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: vector-graph-rag
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: A Graph RAG implementation using pure vector search with Milvus
|
|
5
5
|
Project-URL: Homepage, https://github.com/zilliztech/vector-graph-rag
|
|
6
6
|
Project-URL: Documentation, https://zilliztech.github.io/vector-graph-rag/
|
|
@@ -19,6 +19,7 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.12
|
|
20
20
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
21
21
|
Requires-Python: >=3.10
|
|
22
|
+
Requires-Dist: httpx>=0.27
|
|
22
23
|
Requires-Dist: langchain-core>=0.3.0
|
|
23
24
|
Requires-Dist: milvus-lite>=2.4.0
|
|
24
25
|
Requires-Dist: numpy>=1.24.0
|
|
@@ -42,6 +43,8 @@ Requires-Dist: mistralai>=1.0; extra == 'all'
|
|
|
42
43
|
Requires-Dist: ollama>=0.4; extra == 'all'
|
|
43
44
|
Requires-Dist: onnxruntime<1.24,>=1.17; (python_version == '3.10') and extra == 'all'
|
|
44
45
|
Requires-Dist: onnxruntime>=1.17; (python_version >= '3.11') and extra == 'all'
|
|
46
|
+
Requires-Dist: opentelemetry-api>=1.0; extra == 'all'
|
|
47
|
+
Requires-Dist: opentelemetry-sdk>=1.0; extra == 'all'
|
|
45
48
|
Requires-Dist: pytest-asyncio>=0.21.0; extra == 'all'
|
|
46
49
|
Requires-Dist: pytest>=7.0.0; extra == 'all'
|
|
47
50
|
Requires-Dist: ruff>=0.1.0; extra == 'all'
|
|
@@ -55,16 +58,24 @@ Provides-Extra: api
|
|
|
55
58
|
Requires-Dist: fastapi>=0.109.0; extra == 'api'
|
|
56
59
|
Requires-Dist: uvicorn[standard]>=0.27.0; extra == 'api'
|
|
57
60
|
Provides-Extra: dev
|
|
61
|
+
Requires-Dist: opentelemetry-sdk>=1.0; extra == 'dev'
|
|
58
62
|
Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
|
|
59
63
|
Requires-Dist: pytest>=7.0.0; extra == 'dev'
|
|
60
64
|
Requires-Dist: ruff>=0.1.0; extra == 'dev'
|
|
65
|
+
Provides-Extra: docling
|
|
66
|
+
Requires-Dist: docling>=2.0.0; extra == 'docling'
|
|
67
|
+
Requires-Dist: lxml-html-clean; extra == 'docling'
|
|
68
|
+
Requires-Dist: trafilatura>=2.0.0; extra == 'docling'
|
|
61
69
|
Provides-Extra: docs
|
|
62
70
|
Requires-Dist: mkdocs-material>=9.0.0; extra == 'docs'
|
|
71
|
+
Provides-Extra: evaluation
|
|
72
|
+
Requires-Dist: matplotlib>=3.9; extra == 'evaluation'
|
|
63
73
|
Provides-Extra: google
|
|
64
74
|
Requires-Dist: google-genai>=1.0; extra == 'google'
|
|
65
75
|
Provides-Extra: hf
|
|
66
76
|
Requires-Dist: torch>=2.0.0; extra == 'hf'
|
|
67
77
|
Requires-Dist: transformers>=4.30.0; extra == 'hf'
|
|
78
|
+
Provides-Extra: jev
|
|
68
79
|
Provides-Extra: jina
|
|
69
80
|
Requires-Dist: httpx>=0.27; extra == 'jina'
|
|
70
81
|
Provides-Extra: loaders
|
|
@@ -75,8 +86,15 @@ Provides-Extra: local
|
|
|
75
86
|
Requires-Dist: einops>=0.8.2; extra == 'local'
|
|
76
87
|
Requires-Dist: sentence-transformers>=3.0; extra == 'local'
|
|
77
88
|
Requires-Dist: torch>=2.0.0; extra == 'local'
|
|
89
|
+
Provides-Extra: mineru
|
|
90
|
+
Requires-Dist: lxml-html-clean; extra == 'mineru'
|
|
91
|
+
Requires-Dist: markitdown[docx,pdf]>=0.1.4; extra == 'mineru'
|
|
92
|
+
Requires-Dist: mineru[pipeline]>=3.0.0; extra == 'mineru'
|
|
93
|
+
Requires-Dist: trafilatura>=2.0.0; extra == 'mineru'
|
|
78
94
|
Provides-Extra: mistral
|
|
79
95
|
Requires-Dist: mistralai>=1.0; extra == 'mistral'
|
|
96
|
+
Provides-Extra: observability
|
|
97
|
+
Requires-Dist: opentelemetry-api>=1.0; extra == 'observability'
|
|
80
98
|
Provides-Extra: ollama
|
|
81
99
|
Requires-Dist: ollama>=0.4; extra == 'ollama'
|
|
82
100
|
Provides-Extra: onnx
|
|
@@ -107,20 +125,24 @@ Description-Content-Type: text/markdown
|
|
|
107
125
|
<a href="https://discord.com/invite/FG6hMJStWu"><img src="https://img.shields.io/badge/Discord-chat-7289da?style=flat-square&logo=discord&logoColor=white" alt="Discord"></a>
|
|
108
126
|
</p>
|
|
109
127
|
|
|
110
|
-
> 💡 Encode entities and relations as vectors in [Milvus](https://milvus.io/),
|
|
128
|
+
> 💡 Encode entities and relations as vectors in [Milvus](https://milvus.io/), retrieve multi-hop evidence with single-pass generative reranking or two-stage Jev scoring, without an iterative search loop.
|
|
111
129
|
|
|
112
130
|
<p align="center">
|
|
113
131
|
<img src="https://github.com/user-attachments/assets/1185b651-ed72-4408-9dcd-25a74b12835b" alt="Vector Graph RAG Demo" width="800">
|
|
114
132
|
</p>
|
|
115
133
|
|
|
134
|
+
## What’s New
|
|
135
|
+
|
|
136
|
+
- **Two-stage Jev retrieval reaches the quality–latency Pareto frontier.** See the [evaluation results](evaluation/jev/README.md).
|
|
137
|
+
|
|
116
138
|
## ✨ Features
|
|
117
139
|
|
|
118
140
|
- **No Graph Database Required** — Pure vector search with Milvus, no Neo4j or other graph databases needed
|
|
119
|
-
- **
|
|
141
|
+
- **Configurable Reranking** — Single-pass generative reranking or two-stage Jev relation and passage scoring
|
|
120
142
|
- **Knowledge-Intensive Friendly** — Optimized for domains with dense factual content: legal, finance, medical, literature, etc.
|
|
121
143
|
- **Zero Configuration** — Uses Milvus Lite by default, works out of the box with a single file
|
|
122
144
|
- **Multi-hop Reasoning** — Subgraph expansion enables complex multi-hop question answering
|
|
123
|
-
- **State-of-the-Art Performance** —
|
|
145
|
+
- **State-of-the-Art Performance** — Two-stage Jev leads the compared baselines on MuSiQue and 2Wiki and reaches the quality–latency Pareto frontier. See the [latest results](evaluation/jev/README.md) and [historical three-dataset evaluation](docs/evaluation.md#historical-results).
|
|
124
146
|
|
|
125
147
|
## 📦 Installation
|
|
126
148
|
|
|
@@ -155,6 +177,17 @@ uv add "vector-graph-rag[all]"
|
|
|
155
177
|
|
|
156
178
|
</details>
|
|
157
179
|
|
|
180
|
+
<details>
|
|
181
|
+
<summary><b>With OpenTelemetry tracing</b></summary>
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
pip install "vector-graph-rag[observability]"
|
|
185
|
+
# or
|
|
186
|
+
uv add "vector-graph-rag[observability]"
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
</details>
|
|
190
|
+
|
|
158
191
|
## 🚀 Quick Start
|
|
159
192
|
|
|
160
193
|
```python
|
|
@@ -202,6 +235,8 @@ argument. The method replaces only that source's chunks and graph references.
|
|
|
202
235
|
Source-level writes are not transactionally atomic, but the same upsert/delete
|
|
203
236
|
operation can be retried after an interruption to converge the source back to a
|
|
204
237
|
consistent state.
|
|
238
|
+
See the [Incremental Updates guide](docs/guides/incremental-updates.md) for parser
|
|
239
|
+
integration, source key design, and retry recommendations.
|
|
205
240
|
|
|
206
241
|
```python
|
|
207
242
|
from langchain_core.documents import Document
|
|
@@ -211,7 +246,7 @@ rag.upsert_documents_by_source(
|
|
|
211
246
|
Document(
|
|
212
247
|
page_content="Einstein developed relativity at Princeton.",
|
|
213
248
|
metadata={
|
|
214
|
-
"source": "
|
|
249
|
+
"source": "file:file-123",
|
|
215
250
|
"triplets": [
|
|
216
251
|
["Einstein", "developed", "relativity"],
|
|
217
252
|
["Einstein", "worked at", "Princeton"],
|
|
@@ -222,7 +257,7 @@ rag.upsert_documents_by_source(
|
|
|
222
257
|
extract_triplets=False,
|
|
223
258
|
)
|
|
224
259
|
|
|
225
|
-
rag.delete_documents_by_source("
|
|
260
|
+
rag.delete_documents_by_source("file:file-123")
|
|
226
261
|
```
|
|
227
262
|
|
|
228
263
|
> **Migration note:** v0.1.5 exposed `upsert_documents(document_id=...)` and
|
|
@@ -236,6 +271,34 @@ for removal in v1.0.0. For explicit full refreshes, use `rebuild_texts()`,
|
|
|
236
271
|
|
|
237
272
|
</details>
|
|
238
273
|
|
|
274
|
+
<details>
|
|
275
|
+
<summary>📈 <b>OpenTelemetry tracing</b> — click to expand</summary>
|
|
276
|
+
|
|
277
|
+
Vector Graph RAG can emit OpenTelemetry spans for ingestion, loaders,
|
|
278
|
+
embeddings, Milvus operations, retrieval, and generation. Configure the
|
|
279
|
+
OpenTelemetry SDK/exporter in your application, then attach request context
|
|
280
|
+
around RAG calls:
|
|
281
|
+
|
|
282
|
+
```python
|
|
283
|
+
from vector_graph_rag import VectorGraphRAG, observability_context
|
|
284
|
+
|
|
285
|
+
rag = VectorGraphRAG(collection_prefix="my_project")
|
|
286
|
+
|
|
287
|
+
with observability_context(
|
|
288
|
+
request_id="req-123",
|
|
289
|
+
tenant_id="tenant-a",
|
|
290
|
+
graph_name="my_project",
|
|
291
|
+
source="file-123",
|
|
292
|
+
):
|
|
293
|
+
rag.upsert_documents_by_source(chunks, source="file-123")
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
The built-in spans avoid document text, prompts, query text, generated answers,
|
|
297
|
+
filters, and full URLs by default. See the
|
|
298
|
+
[Observability guide](docs/guides/observability.md) for setup details.
|
|
299
|
+
|
|
300
|
+
</details>
|
|
301
|
+
|
|
239
302
|
<details>
|
|
240
303
|
<summary>🌐 <b>Import from URLs and files</b> — click to expand</summary>
|
|
241
304
|
|
|
@@ -284,7 +347,7 @@ VGRAG_MILVUS_URI=http://localhost:19530
|
|
|
284
347
|
|
|
285
348
|
</details>
|
|
286
349
|
|
|
287
|
-
> 📖 Full Python API reference → [Python API docs](https://zilliztech.github.io/vector-graph-rag/python-api/)
|
|
350
|
+
> 📖 Full Python API reference → [Python API docs](https://zilliztech.github.io/vector-graph-rag/reference/python-api/)
|
|
288
351
|
|
|
289
352
|
## 🔬 How It Works
|
|
290
353
|
|
|
@@ -308,11 +371,13 @@ Question → Entity Extraction → Vector Search → Subgraph Expansion → LLM
|
|
|
308
371
|
4. **Single-pass LLM reranking** selects the most relevant passages
|
|
309
372
|
5. Generate answer from selected passages
|
|
310
373
|
|
|
311
|
-
> 📖 Detailed pipeline walkthrough with diagrams → [How It Works](https://zilliztech.github.io/vector-graph-rag/how-it-works/) · [Design Philosophy](https://zilliztech.github.io/vector-graph-rag/design-philosophy/)
|
|
374
|
+
> 📖 Detailed pipeline walkthrough with diagrams → [How It Works](https://zilliztech.github.io/vector-graph-rag/architecture/how-it-works/) · [Design Philosophy](https://zilliztech.github.io/vector-graph-rag/architecture/design-philosophy/)
|
|
312
375
|
|
|
313
376
|
## 📊 Evaluation Results
|
|
314
377
|
|
|
315
|
-
|
|
378
|
+
### Historical evaluation — before September 2026
|
|
379
|
+
|
|
380
|
+
Before introducing Jev, we evaluated Vector Graph RAG on three multi-hop QA benchmarks (Recall@5):
|
|
316
381
|
|
|
317
382
|
<p align="center">
|
|
318
383
|
<img src="https://github.com/user-attachments/assets/221a0c8d-a414-4234-ac8b-ba4223aaa2cc" alt="Recall@5: Naive RAG vs Vector Graph RAG" width="700">
|
|
@@ -329,6 +394,16 @@ Evaluated on three multi-hop QA benchmarks (Recall@5):
|
|
|
329
394
|
|
|
330
395
|
> 📖 Detailed analysis and reproduction steps → [Evaluation](https://zilliztech.github.io/vector-graph-rag/evaluation/)
|
|
331
396
|
|
|
397
|
+
### Latest evaluation — October 2026: two-stage Jev
|
|
398
|
+
|
|
399
|
+
**Two-stage Jev reaches the quality–latency Pareto frontier.**
|
|
400
|
+
|
|
401
|
+
**86.07% average Recall@5**, the highest among the compared methods, with **3.13 seconds of additional model-call latency**. On MuSiQue and 2Wiki (1,000 questions each), two-stage Jev reaches the Pareto frontier under the reference latency estimates. This two-dataset result is separate from the historical three-dataset average above.
|
|
402
|
+
|
|
403
|
+

|
|
404
|
+
|
|
405
|
+
See [Evaluation Results](evaluation/jev/README.md) for the gains over relation-only Jev and other baselines, timing details and reproduction instructions.
|
|
406
|
+
|
|
332
407
|
## 🗄️ Milvus Backend
|
|
333
408
|
|
|
334
409
|
Just change `milvus_uri` to switch between deployment modes:
|
|
@@ -397,13 +472,13 @@ cd frontend && npm install && npm run dev
|
|
|
397
472
|
|
|
398
473
|
See API docs at `http://localhost:8000/docs` after starting the server.
|
|
399
474
|
|
|
400
|
-
> 📖 Full endpoint reference → [REST API docs](https://zilliztech.github.io/vector-graph-rag/rest-api/) · [Frontend guide](https://zilliztech.github.io/vector-graph-rag/frontend/)
|
|
475
|
+
> 📖 Full endpoint reference → [REST API docs](https://zilliztech.github.io/vector-graph-rag/reference/rest-api/) · [Frontend guide](https://zilliztech.github.io/vector-graph-rag/guides/frontend/)
|
|
401
476
|
|
|
402
477
|
## 📚 Links
|
|
403
478
|
|
|
404
479
|
- [Documentation](https://zilliztech.github.io/vector-graph-rag/) — full guides, API reference, and architecture details
|
|
405
|
-
- [How It Works](https://zilliztech.github.io/vector-graph-rag/how-it-works/) — pipeline walkthrough with diagrams
|
|
406
|
-
- [Design Philosophy](https://zilliztech.github.io/vector-graph-rag/design-philosophy/) — why pure vector search, no graph DB
|
|
480
|
+
- [How It Works](https://zilliztech.github.io/vector-graph-rag/architecture/how-it-works/) — pipeline walkthrough with diagrams
|
|
481
|
+
- [Design Philosophy](https://zilliztech.github.io/vector-graph-rag/architecture/design-philosophy/) — why pure vector search, no graph DB
|
|
407
482
|
- [Milvus](https://milvus.io/) — the vector database powering Vector Graph RAG
|
|
408
483
|
- [FAQ](https://zilliztech.github.io/vector-graph-rag/faq/) — common questions and troubleshooting
|
|
409
484
|
|
|
@@ -17,20 +17,24 @@
|
|
|
17
17
|
<a href="https://discord.com/invite/FG6hMJStWu"><img src="https://img.shields.io/badge/Discord-chat-7289da?style=flat-square&logo=discord&logoColor=white" alt="Discord"></a>
|
|
18
18
|
</p>
|
|
19
19
|
|
|
20
|
-
> 💡 Encode entities and relations as vectors in [Milvus](https://milvus.io/),
|
|
20
|
+
> 💡 Encode entities and relations as vectors in [Milvus](https://milvus.io/), retrieve multi-hop evidence with single-pass generative reranking or two-stage Jev scoring, without an iterative search loop.
|
|
21
21
|
|
|
22
22
|
<p align="center">
|
|
23
23
|
<img src="https://github.com/user-attachments/assets/1185b651-ed72-4408-9dcd-25a74b12835b" alt="Vector Graph RAG Demo" width="800">
|
|
24
24
|
</p>
|
|
25
25
|
|
|
26
|
+
## What’s New
|
|
27
|
+
|
|
28
|
+
- **Two-stage Jev retrieval reaches the quality–latency Pareto frontier.** See the [evaluation results](evaluation/jev/README.md).
|
|
29
|
+
|
|
26
30
|
## ✨ Features
|
|
27
31
|
|
|
28
32
|
- **No Graph Database Required** — Pure vector search with Milvus, no Neo4j or other graph databases needed
|
|
29
|
-
- **
|
|
33
|
+
- **Configurable Reranking** — Single-pass generative reranking or two-stage Jev relation and passage scoring
|
|
30
34
|
- **Knowledge-Intensive Friendly** — Optimized for domains with dense factual content: legal, finance, medical, literature, etc.
|
|
31
35
|
- **Zero Configuration** — Uses Milvus Lite by default, works out of the box with a single file
|
|
32
36
|
- **Multi-hop Reasoning** — Subgraph expansion enables complex multi-hop question answering
|
|
33
|
-
- **State-of-the-Art Performance** —
|
|
37
|
+
- **State-of-the-Art Performance** — Two-stage Jev leads the compared baselines on MuSiQue and 2Wiki and reaches the quality–latency Pareto frontier. See the [latest results](evaluation/jev/README.md) and [historical three-dataset evaluation](docs/evaluation.md#historical-results).
|
|
34
38
|
|
|
35
39
|
## 📦 Installation
|
|
36
40
|
|
|
@@ -65,6 +69,17 @@ uv add "vector-graph-rag[all]"
|
|
|
65
69
|
|
|
66
70
|
</details>
|
|
67
71
|
|
|
72
|
+
<details>
|
|
73
|
+
<summary><b>With OpenTelemetry tracing</b></summary>
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
pip install "vector-graph-rag[observability]"
|
|
77
|
+
# or
|
|
78
|
+
uv add "vector-graph-rag[observability]"
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
</details>
|
|
82
|
+
|
|
68
83
|
## 🚀 Quick Start
|
|
69
84
|
|
|
70
85
|
```python
|
|
@@ -112,6 +127,8 @@ argument. The method replaces only that source's chunks and graph references.
|
|
|
112
127
|
Source-level writes are not transactionally atomic, but the same upsert/delete
|
|
113
128
|
operation can be retried after an interruption to converge the source back to a
|
|
114
129
|
consistent state.
|
|
130
|
+
See the [Incremental Updates guide](docs/guides/incremental-updates.md) for parser
|
|
131
|
+
integration, source key design, and retry recommendations.
|
|
115
132
|
|
|
116
133
|
```python
|
|
117
134
|
from langchain_core.documents import Document
|
|
@@ -121,7 +138,7 @@ rag.upsert_documents_by_source(
|
|
|
121
138
|
Document(
|
|
122
139
|
page_content="Einstein developed relativity at Princeton.",
|
|
123
140
|
metadata={
|
|
124
|
-
"source": "
|
|
141
|
+
"source": "file:file-123",
|
|
125
142
|
"triplets": [
|
|
126
143
|
["Einstein", "developed", "relativity"],
|
|
127
144
|
["Einstein", "worked at", "Princeton"],
|
|
@@ -132,7 +149,7 @@ rag.upsert_documents_by_source(
|
|
|
132
149
|
extract_triplets=False,
|
|
133
150
|
)
|
|
134
151
|
|
|
135
|
-
rag.delete_documents_by_source("
|
|
152
|
+
rag.delete_documents_by_source("file:file-123")
|
|
136
153
|
```
|
|
137
154
|
|
|
138
155
|
> **Migration note:** v0.1.5 exposed `upsert_documents(document_id=...)` and
|
|
@@ -146,6 +163,34 @@ for removal in v1.0.0. For explicit full refreshes, use `rebuild_texts()`,
|
|
|
146
163
|
|
|
147
164
|
</details>
|
|
148
165
|
|
|
166
|
+
<details>
|
|
167
|
+
<summary>📈 <b>OpenTelemetry tracing</b> — click to expand</summary>
|
|
168
|
+
|
|
169
|
+
Vector Graph RAG can emit OpenTelemetry spans for ingestion, loaders,
|
|
170
|
+
embeddings, Milvus operations, retrieval, and generation. Configure the
|
|
171
|
+
OpenTelemetry SDK/exporter in your application, then attach request context
|
|
172
|
+
around RAG calls:
|
|
173
|
+
|
|
174
|
+
```python
|
|
175
|
+
from vector_graph_rag import VectorGraphRAG, observability_context
|
|
176
|
+
|
|
177
|
+
rag = VectorGraphRAG(collection_prefix="my_project")
|
|
178
|
+
|
|
179
|
+
with observability_context(
|
|
180
|
+
request_id="req-123",
|
|
181
|
+
tenant_id="tenant-a",
|
|
182
|
+
graph_name="my_project",
|
|
183
|
+
source="file-123",
|
|
184
|
+
):
|
|
185
|
+
rag.upsert_documents_by_source(chunks, source="file-123")
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
The built-in spans avoid document text, prompts, query text, generated answers,
|
|
189
|
+
filters, and full URLs by default. See the
|
|
190
|
+
[Observability guide](docs/guides/observability.md) for setup details.
|
|
191
|
+
|
|
192
|
+
</details>
|
|
193
|
+
|
|
149
194
|
<details>
|
|
150
195
|
<summary>🌐 <b>Import from URLs and files</b> — click to expand</summary>
|
|
151
196
|
|
|
@@ -194,7 +239,7 @@ VGRAG_MILVUS_URI=http://localhost:19530
|
|
|
194
239
|
|
|
195
240
|
</details>
|
|
196
241
|
|
|
197
|
-
> 📖 Full Python API reference → [Python API docs](https://zilliztech.github.io/vector-graph-rag/python-api/)
|
|
242
|
+
> 📖 Full Python API reference → [Python API docs](https://zilliztech.github.io/vector-graph-rag/reference/python-api/)
|
|
198
243
|
|
|
199
244
|
## 🔬 How It Works
|
|
200
245
|
|
|
@@ -218,11 +263,13 @@ Question → Entity Extraction → Vector Search → Subgraph Expansion → LLM
|
|
|
218
263
|
4. **Single-pass LLM reranking** selects the most relevant passages
|
|
219
264
|
5. Generate answer from selected passages
|
|
220
265
|
|
|
221
|
-
> 📖 Detailed pipeline walkthrough with diagrams → [How It Works](https://zilliztech.github.io/vector-graph-rag/how-it-works/) · [Design Philosophy](https://zilliztech.github.io/vector-graph-rag/design-philosophy/)
|
|
266
|
+
> 📖 Detailed pipeline walkthrough with diagrams → [How It Works](https://zilliztech.github.io/vector-graph-rag/architecture/how-it-works/) · [Design Philosophy](https://zilliztech.github.io/vector-graph-rag/architecture/design-philosophy/)
|
|
222
267
|
|
|
223
268
|
## 📊 Evaluation Results
|
|
224
269
|
|
|
225
|
-
|
|
270
|
+
### Historical evaluation — before September 2026
|
|
271
|
+
|
|
272
|
+
Before introducing Jev, we evaluated Vector Graph RAG on three multi-hop QA benchmarks (Recall@5):
|
|
226
273
|
|
|
227
274
|
<p align="center">
|
|
228
275
|
<img src="https://github.com/user-attachments/assets/221a0c8d-a414-4234-ac8b-ba4223aaa2cc" alt="Recall@5: Naive RAG vs Vector Graph RAG" width="700">
|
|
@@ -239,6 +286,16 @@ Evaluated on three multi-hop QA benchmarks (Recall@5):
|
|
|
239
286
|
|
|
240
287
|
> 📖 Detailed analysis and reproduction steps → [Evaluation](https://zilliztech.github.io/vector-graph-rag/evaluation/)
|
|
241
288
|
|
|
289
|
+
### Latest evaluation — October 2026: two-stage Jev
|
|
290
|
+
|
|
291
|
+
**Two-stage Jev reaches the quality–latency Pareto frontier.**
|
|
292
|
+
|
|
293
|
+
**86.07% average Recall@5**, the highest among the compared methods, with **3.13 seconds of additional model-call latency**. On MuSiQue and 2Wiki (1,000 questions each), two-stage Jev reaches the Pareto frontier under the reference latency estimates. This two-dataset result is separate from the historical three-dataset average above.
|
|
294
|
+
|
|
295
|
+

|
|
296
|
+
|
|
297
|
+
See [Evaluation Results](evaluation/jev/README.md) for the gains over relation-only Jev and other baselines, timing details and reproduction instructions.
|
|
298
|
+
|
|
242
299
|
## 🗄️ Milvus Backend
|
|
243
300
|
|
|
244
301
|
Just change `milvus_uri` to switch between deployment modes:
|
|
@@ -307,13 +364,13 @@ cd frontend && npm install && npm run dev
|
|
|
307
364
|
|
|
308
365
|
See API docs at `http://localhost:8000/docs` after starting the server.
|
|
309
366
|
|
|
310
|
-
> 📖 Full endpoint reference → [REST API docs](https://zilliztech.github.io/vector-graph-rag/rest-api/) · [Frontend guide](https://zilliztech.github.io/vector-graph-rag/frontend/)
|
|
367
|
+
> 📖 Full endpoint reference → [REST API docs](https://zilliztech.github.io/vector-graph-rag/reference/rest-api/) · [Frontend guide](https://zilliztech.github.io/vector-graph-rag/guides/frontend/)
|
|
311
368
|
|
|
312
369
|
## 📚 Links
|
|
313
370
|
|
|
314
371
|
- [Documentation](https://zilliztech.github.io/vector-graph-rag/) — full guides, API reference, and architecture details
|
|
315
|
-
- [How It Works](https://zilliztech.github.io/vector-graph-rag/how-it-works/) — pipeline walkthrough with diagrams
|
|
316
|
-
- [Design Philosophy](https://zilliztech.github.io/vector-graph-rag/design-philosophy/) — why pure vector search, no graph DB
|
|
372
|
+
- [How It Works](https://zilliztech.github.io/vector-graph-rag/architecture/how-it-works/) — pipeline walkthrough with diagrams
|
|
373
|
+
- [Design Philosophy](https://zilliztech.github.io/vector-graph-rag/architecture/design-philosophy/) — why pure vector search, no graph DB
|
|
317
374
|
- [Milvus](https://milvus.io/) — the vector database powering Vector Graph RAG
|
|
318
375
|
- [FAQ](https://zilliztech.github.io/vector-graph-rag/faq/) — common questions and troubleshooting
|
|
319
376
|
|
{vector_graph_rag-0.2.1/docs → vector_graph_rag-0.3.0/docs/architecture}/design-philosophy.md
RENAMED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Design Philosophy
|
|
2
2
|
|
|
3
|
+
> The single-pass descriptions below cover the default generative reranker. Jev uses two-stage relation and passage scoring; see [models and reranking](../guides/reranking.md) for that pipeline and configuration.
|
|
4
|
+
|
|
3
5
|
Vector Graph RAG is built on a simple but powerful observation: **you do not need a graph database to do Graph RAG**. By encoding entities, relations, and passages as vectors in Milvus, and replacing iterative LLM agents with a single reranking pass, we achieve competitive retrieval quality at a fraction of the operational and computational cost.
|
|
4
6
|
|
|
5
7
|
This page explains the reasoning behind these choices, the trade-offs involved, and how the system compares to alternative approaches.
|
|
@@ -250,7 +252,7 @@ flowchart TB
|
|
|
250
252
|
| **Vector Graph RAG** | 73.0% | **96.3%** | **94.1%** | **87.8%** |
|
|
251
253
|
|
|
252
254
|
> [!INFO]
|
|
253
|
-
> Recall@5 on standard multi-hop QA benchmarks. Vector Graph RAG achieves the highest average score while using fewer LLM calls and no graph database. See [Evaluation](evaluation.md) for methodology details.
|
|
255
|
+
> Recall@5 on standard multi-hop QA benchmarks. Vector Graph RAG achieves the highest average score while using fewer LLM calls and no graph database. See [Evaluation](../evaluation.md) for methodology details.
|
|
254
256
|
|
|
255
257
|
### Key Differentiators
|
|
256
258
|
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# How It Works
|
|
2
2
|
|
|
3
|
+
> The single-pass descriptions below cover the default generative reranker. Jev uses two-stage relation and passage scoring; see [models and reranking](../guides/reranking.md) for that pipeline and configuration.
|
|
4
|
+
|
|
3
5
|
## Overview
|
|
4
6
|
|
|
5
7
|
Vector Graph RAG processes documents and answers questions through two main pipelines: **indexing** (offline) and **querying** (online).
|
|
Binary file
|